TCP/IP、HTTP、WEBSERVICE、SOAP、ICE都使用后才有感慨

简介:

TCP是TCP/IP的第三层传输层,对应OSI的第四层传输层;
IP是TCP/IP的第二层互联层,对应OSI的第三层网络层。

 

ICE(Internet Communications Engine)是ZeroC提供的一款高性能的中间件,基于ICE可以实现电信级的解决方案。前面我们提到过在设计网站架构的时候可以使用ICE实现对网站应用的基础对象操作,将基础对象操作和数据库操作封装在这一层,在业务逻辑层以及表现层(java,php,.net,python)进行更丰富的表现与操作,从而实现比较好的架构。基于ICE的数据层可以在未来方便的进行扩展。ICE支持分布式的部署管理,消息中间件,以及网格计算等等。 

大道理讲完,言归正传,最近育儿网新增了不少新服务,服务间经常会需要相互调用数据,例如用户中心要取博客系统里的文章啊,论坛里发文后要在积分系统里增加用户积分啊。由于设计时这些服务仅仅基于统一的用户中心,服务间基本是独立的,所以要实现这些调用只能在每个服务上新增为其它服务提供服务的服务-_-!。这个时候有几个可选方案,我们开始选择了xml-rpc,基于http和xml的选程调用,用了一段时间,发现维护成本和访问性能都存在问题。 

由于这些中间服务部署的时候是和各自所属的服务部署在一起的,对这些服务做整体的改动就非常困难,要维护起来就比较麻烦。另外由于是什么http和xml作为通信协议,由php实现业务逻辑,性能问题也很明显,而且这些http请求都会在http日志留下足迹,导致我们的日志分析很不精确。这个问题不是太大,但很郁闷,所以我们考虑使用ICE来解决这个问题,至于SOAP什么的就不考虑了,同样效率低下。 

实现的过程还是比较顺利,花了三天的时间用c++实现了大部分常用的接口,服务端采用deamon的方式运行,错误日志记在syslog里(/var/log/messages),客户端PHP,编译进去了IcePHP,调用的方法很简单。现在还存在一些问题,运行的时候会异常退出,还需要一段时间来解决,暂时加了只狗看着,一旦进程里没了就重新启动。 

既然要跨平台通讯,就涉及对象描述,ICE使用Slice来对结构,类,方法等进行定义。完了以后服务器端,客户端都按这个来调用和实现。ICE内置的Linux 下后台Deamon实现方案非常简单,只需要从Ice::Service里派生出一个类来,实现run方法,在这个方法里创建adapter对象,并在adapter对象里添加Servants,然后激活这个adapter就可以了,网络层的通信都由ICE接管了。由于是基于tcp/ip的直接通信,比更高层的http通信效率要高很多。 

在客户端实现时,我们也碰到了一些小麻烦。一个是内置的$ICE对象用的时候有时需要用global声明,否则可能会出错,另外由于默认情况下Slice中struct对应到php的类型是一个类的实例,而不是一个数组,所以在赋值给页面的时候,smarttemplate以及其它模板系统中可能都会存在问题,可以通过修改模板系统的数据赋值显示代码解决。 

我们做了一些性能的测试,同样运行1千次请求,使用xml-rpc实现需要28秒左右,使用ICE实现,只需要3秒多,性能的差距还是很大的,同时在这个过程中没发现有内存泄露的情况,效果还比较理想。 
//////////////////

WEBSERVICE   所遵循的SOAP协议 是建立在HTTP协议之上的协议 

简单对象访问协议(SOAP)是W3C组织的一个Note, 它描述了一种在分散的或分布式的环境中如何交换信息的轻量级协议。SOAP是一个基于XML的协议,它包括三个部分:SOAP封装(Envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(Encoding Rules),用于表示应用程序需要使用的数据类型的实例;SOAP RPC表示(RPC Representation),表示远程过程调用和应答的协定;SOAP可以和多种传输协议绑定(Binding),使用底层协议交换信息。在这个文档中,目前只定义了SOAP如何和HTTP以及HTTP扩展进行绑定的框架。

SOAP是个通信协议, SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数, 放在HTTP BODY上提交个WEB SERVICE服务器(SERVLET,ASP什么的) 处理完成后,结果也写成XML作为RESPONSE送回用户端, 为了使用户端和WEB SERVICE可以相互对应,可以使用WSDL作为这种通信方式的描述文件,利用WSDL工具可以自动生成WS和用户端的框架文件,SOAP具备把复杂对象序列化捆绑到XML里去的能力。

SOAP的前身是RPC, 就是远程呼叫处理的协议,这个协议安全性不是很好,多数防火墙都会阻挡RPC的通信包,而SOAP则使用HTTP协议作为基本的协议,使用端口80使得SOAP可以透过防火墙,完成RPC的功能。

SOAP协议和HTTP协议一样,都是底层的通信协议,只是请求包的格式不同而已,SOAP包是XML格式的,现在我们编写WEB SERVICE不需要深入理解SOAP也没关系。如果SERVICE和CLIENT在同样的环境下使用SOAP,由于一般情况下都有自动生成SOAP程序框架的工具,因此不知道细节也没关系. 可是, 如果CLIENT和SERVICE的环境不同,比如说JAVA的Client和.NET的SERVICE进行通信,或者是VB CLIENT和TOMCAT下的JAVA SERVICE通信,还是要知道一点细节为好. 特别是, WSDL或者UDDI都不是标准,如果不让用就只好手工配制SOAP MESSAGE啦。


本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/archive/2010/07/21/1782414.html,如需转载请自行联系原作者。



目录
相关文章
|
4月前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
79 4
|
3月前
|
开发框架 网络协议 Unix
【嵌入式软件工程师面经】Socket,TCP,HTTP之间的区别
【嵌入式软件工程师面经】Socket,TCP,HTTP之间的区别
52 1
|
3月前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
28天前
|
移动开发 监控 网络协议
在Linux中,如何查看 http 的并发请求数与其 TCP 连接状态?
在Linux中,如何查看 http 的并发请求数与其 TCP 连接状态?
|
14天前
|
网络协议
网络协议概览:HTTP、UDP、TCP与IP
理解这些基本的网络协议对于任何网络专业人员都是至关重要的,它们不仅是网络通信的基础,也是构建更复杂网络服务和应用的基石。网络技术的不断发展可能会带来新的协议和标准,但这些基本协议的核心概念和原理将继续是理解和创新网络技术的关键。
29 0
|
20天前
|
前端开发 C# 开发者
WPF开发者必读:MVVM模式实战,轻松构建可维护的应用程序,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离关注点,提高了代码的可维护性和可扩展性。本文详细介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定与逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种模式,开发者可以更高效地构建桌面应用程序。希望本文能帮助你在WPF开发中更好地应用MVVM模式。
48 0
|
26天前
|
网络协议 编译器 Go
揭秘!TCP、RPC、gRPC、HTTP大PK,谁才是网络通信界的超级巨星?一篇文章带你秒懂!
【8月更文挑战第25天】本文以教程形式深入对比了TCP、RPC、gRPC与HTTP这四种关键通信协议,并通过Go语言中的示例代码展示了各自的实现方法。TCP作为一种可靠的传输层协议,确保了数据的完整性和顺序性;RPC与gRPC作为远程过程调用框架,特别适合于分布式系统的函数调用与数据交换,其中gRPC在性能和跨语言支持方面表现出色;HTTP则是广泛应用于Web浏览器与服务器通信的应用层协议。选择合适的协议需根据具体需求综合考量。
101 0
|
28天前
|
网络协议 Linux
在Linux中,如何查看 http 的并发请求数与其 TCP 连接状态?
在Linux中,如何查看 http 的并发请求数与其 TCP 连接状态?
|
2月前
|
缓存 网络协议 网络性能优化
网络协议详解:TCP/IP与HTTP
【7月更文挑战第24天】TCP/IP协议和HTTP协议是现代互联网通信的重要基石。TCP/IP协议提供了计算机之间数据传输和通信的底层支持,而HTTP协议则在此基础上实现了超文本数据的传输。随着互联网的不断发展,TCP/IP协议和HTTP协议将继续发挥重要作用,为各种网络应用提供稳定、高效的通信服务。
|
3月前
|
网络协议 安全 网络性能优化
HTTP、HTTPS和TCP的特点和三者的区别
TCP提供连接、可靠性、流量和拥塞控制,HTTP基于请求-响应模型且无连接、无状态,HTTPS则通过数字证书确保服务器身份验证和加密通信。

热门文章

最新文章