Remoting和Webservice的详细介绍及区别
remoting和webservice区别:
其实现的原理并没有本质的区别,在应用开发层面上有以下区别:
1、remoting可以灵活的定义其所基于的协议,如果定义为http,则与web service就没有什么区别了,一般都喜欢定义为tcp,这样比web service稍为高效一些
2、remoting不是标准,而web service是标准;
3、remoting一般需要通过一个winform或是windows服务进行启动,而web service则需要iis进行启动。
4、在vs.net开发环境中,专门对web service的调用进行了封装,用起来比remoting方便
我建议还是采用web service好些,对于开发来说更容易控制
remoting一般用在c/s的系统中,web service是用在b/s系统中
后者还是各语言的通用接口
相同之处就是都基于xml
为了能清楚地描述web service 和remoting之间得区别,我打算从他们的体系结构上来说起:
web service大体上分为5个层次:
1. http传输信道
2. xml的数据格式
3. soap封装格式
4. wsdl的描述方式
5. uddi
总体上来讲,.net 下的 web service结构比较简单,也比较容易理解和应用:
一般来讲在.net结构下的webservice应用都是基于.net framework以及iis的架构之下,所以部署(dispose)起来相对比较容易点.
从实现的角度来讲,
首先webservice必须把暴露给客户端的方法所在的类继承于:system.web.services.webservice这个基类
其次所暴露的方法前面必须有[webmethod]或者[webmethodattribute]
webservice的运行机理
首先客户端从服务器的到webservice的wsdl,同时在客户端声称一个代理类(proxy class)
这个代理类负责与webservice服务器进行request 和response
当一个数据(xml格式的)被封装成soap格式的数据流发送到服务器端的时候,就会生成一个进程对象并且把接收到这个request的soap包进行解析,然后对事物进行处理,处理结束以后再对这个计算结果进行soap包装,然后把这个包作为一个response发送给客户端的代理类(proxy class),同样地,这个代理类也对这个soap包进行解析处理,继而进行后续操作。
这就是webservice的一个运行过程。
下面对.net remoting进行概括的阐述:
.net remoting 是在dcom等基础上发展起来的一种技术,它的主要目的是实现跨平台、跨语言、穿透企业防火墙,这也是他的基本特点,与webservice有所不同的是,它支持http以及tcp信道,而且它不仅能传输xml格式的soap包,也可以传输传统意义上的二进制流,这使得它变得效率更高也更加灵活。而且它不依赖于iis,用户可以自己开发(development)并部署(dispose)自己喜欢的宿主服务器,所以从这些方面上来讲webservice其实上是.net remoting的一种特例。
remoting的两种通道
remoting的通道主要有两种:tcp和http。在.net中,system.runtime.remoting.channel中定义了 ichannel接口。ichannel接口包括了tcpchannel通道类型和http通道类型。它们分别对应remoting通道的这两种类型
1. remoting 是marshbyreference的,可以传变量的引用,直接对服务器对象操作。速度快,适合intranet(企业内部互联网)。
webservice 是marshbyvalue的,必须传对象的值。速度慢,可以过firewall,配置比较简单,适合internet(因特网)。
2. 一般来说,remoting是和平台相关的,需要客户和服务器都是.net,但可配置特性比较好,可以自定义协议。web service可以做到跨平台通信,但必须采用soap协议。
3. soap消息有rpc和文档两种样式。 文档样式的body元素中包含一个或多个元素,可以是任何内容,只要接受者理解就行了。rpc样式的的body元素中包含调用的方法或远程过程的名称,以及代表方法参数的元素。
.net对这两种样式的实现就是web service 和remoting .
概括的说remoting与web services的区别是:
(1)既支持tcp信道又支持http信道,传输速度快
(2)即可传输xml的soap包又可传输二进制流,效率高
(3)remoteing主要用于c/s结构项目
(4)不一定要依赖iis服务器
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
推荐阅读
-
Remoting和Webservice的详细介绍及区别
-
Linux KVM的QCOW2 和 ROW的详解及区别介绍
-
js中apply和Math.max()函数的问题及区别介绍
-
Oracle中的Connect/session和process的区别及关系介绍
-
网页语言xhtml和html的概念与区别的详细介绍
-
简述WebS简述WebService与.NET Remoting的区别及适应场合
-
a85 a75 a55的区别及a75和a85的区别详细介绍
-
Apache和Tomcat服务器间的区别、联系、整合详细介绍
-
Python函数any()和all()的用法及区别介绍
-
Java线程中sleep和wait的区别详细介绍