remoting与webservice的区别

Remoting简介

         remoting的两大功能在于:1,不同进程间的通信。2不同应用域,不同进程的对象之间的通信(可以使用多种通信协议)

.NET Remoting框架

Remoting Channel:这是指定客户端和服务器端的通信协议,例如TCP/HTTP协议

Serializer: 这是指在传输时采用何种格式来传输数据,例如,Binary,也可以采用SOAP来传输XML格式的数据。

Remoting的一个典型示例

有一个服务器程序Server.exe和一个客户端程序CAOClient.exe。客户端程序会通过http channel调用服务器端RemotingType.dll的对象和方法。我们来检查在几种不同的Server对象下这些调用会有什么不同的结果。

       服务器端代码:

       Server.cs

      using System;

      using System.Runtime.Remoting;

      public class Server{

       public static void Main(string[] Args){

              .//Load the Configuration file

                  RemotingConfiguration.Configure("server.exe.config");

                    Console.WriteLine("The server is Listening .Press Enter to exit....");

                  Console.ReadLine();

              

               Console.WriteLine("GC'ing.");

              GC.Collect();

                 GC.WaitForPendingFinalizer();

 

       }

                }


        表1 : Server.cs源代码

         Server..exe.config

        <system runtime.remoting>

           <application>

            <Service>

            <activated type="ClientAcTivateType, RemoteType">

             </service> 

             <channels>

             <channel ref="http" port="8088">

           </channels>

             </application>

               </system.runtime.remoting>

       </configuration>

表2:Server.exe.config源代码 


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就是理想选择了。
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值