欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Remoting和Webservice的详细介绍及区别

程序员文章站 2023-11-14 14:01:58
remoting和webservice区别: 其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1、remoting可以灵活的定义其所基于的协议,如果定义...

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服务器

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!