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)即可传输XML的SOAP包又可传输二进制流,效率高
    (3)Remoteing主要用于C/S结构项目
    (4)不一定要依赖IIS服务器

  • 2. 一般来说,remoting是和平台相关的,需要客户和服务器都是.NET,但可配置特性比较好,可以自定义协议。web service可以做到跨平台通信,但必须采用SOAP协议。

    3. Soap消息有rpc和文档两种样式。 文档样式的body元素中包含一个或多个元素,可以是任何内容,只要接受者理解就行了。rpc样式的的body元素中包含调用的方法或远程过程的名称,以及代表方法参数的元素。

    .net对这两种样式的实现就是web service 和remoting .

  • 概括的说Remoting与Web Services的区别是:
    (1)既支持TCP信道又支持HTTP信道,传输速度快

    一般如果你的产品在局域网里使用的话就用.net  remoting  
    如果是提供远程访问的话就用web   service.  
    当然也不是很绝对,你可以自己根据需要判断!  
    ---------------------------------------------------------------  

    Web   Service和remoting传输协议不一样      
    Web   Service是http方式,可以穿透防火墙  
    remoting是通过socket方式传输数据  
    ---------------------------------------------------------------  
    首先,.net  remoting也可以采用Http,也能跨越firewall,当然这样效率上肯定有所影响。web   service最大的优势是跨平台,web   service决不是MS一家的技术(尽管csdn的论坛将它列在.net技术下),在其他平台上一样可以开发和使用web   service,而.net  remoting完全是捆绑于.net平台之上的,也就是说remoting的双方都一定要有.net   framework。  
    总结一下,.net  remoting应用范围比web   service小,仅限于.net平台。但是它的效率比web   service要高。  
    ---------------------------------------------------------------  
    MS的说法:  

    ASP.NET   Web   服务基础结构通过将   SOAP   消息映射到方法调用,为   Web   服务提供了简单的   API。通过提供一种非常简单的编程模型(基于将   SOAP   消息交换映射到方法调用),它实现了此机制。ASP.NET   Web   服务的客户端不需要了解用于创建它们的平台、对象模型或编程语言。而服务也不需要了解向它们发送消息的客户端。唯一的要求是:双方都要认可正在创建和使用的   SOAP   消息的格式,该格式是由使用   WSDL   和   XML   架构   (XSD)   表示的   Web   服务合约定义来定义的。  

    .NET  Remoting   为分布式对象提供了一个基础结构。它使用既灵活又可扩展的管线向远程进程提供   .NET   的完全对象语义。ASP.NET   Web   服务基于消息传递提供非常简单的编程模型,而   .NET  Remoting   提供较为复杂的功能,包括支持通过值或引用传递对象、回调,以及多对象激活和生命周期管理策略等。要使用   .NET  Remoting,客户端需要了解所有这些详细信息,简而言之,需要使用   .NET   建立客户端。(或者使用支持   .NET  Remoting   的其他框架,我们所知道的唯一一个框架是   Intrinsyc   的用于   Java   的   Ja.NET。).NET  Remoting   管线还支持   SOAP   消息,但必须注意这并没有改变其对客户端的要求。如果  Remoting   端点提供   .NET   专用的对象语义,不管是否通过   SOAP,客户端必须理解它们。 

    为了能清楚地描述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的一种特例。

    比较
    再次我们对WebService 以及Remoting做一个比较
    WebService的特点是:平台独立性(Platform-independent)、跨语言(只要能支持XML的语言都可以) 以及穿透企业防火墙;
    net webservice是基于http的是无状态的;
    但是它的缺点也很明显,就是需要部署一台Web Server;而且速度比较慢;

    .net Remoting的特点是
    他的优点是用户既可以使用TCP信道方式进行二进制流方式通信,也可以使用HTTP信道进行SOAP格式的性通信
    效率相对WebService要高不少;
    remoting可以用于有状态的情况;
    但是它的缺点也很明显,.net remoting只能应用于MS 的.net framework之下。

    使用场合
    如果互动双方都是支持 .NET技术的环境,并且在操作系统上能提供一致的验证机制,而且很重视沟通双方作业的效率,就是 .NET Remoting上场的时机。相反的,如果沟通双方是异质环境,又或沟通的模式就是无状态的情况,持续进行的互动作业前后是没有关联的,Web Service就是理想选择了。
    原文地址:https://www.cnblogs.com/chenbg2001/p/1370631.html