技术开发 频道

.Net Remoting和Web Service大比拼



四、ASP.NET Web Services NET Remoting的对比
 
    现在我们已经理解了.NET remoting和Web Services的基本概念。现在让我们来看看这两种技术有什么具体的不同。为了这个目的,我将它们的不同分为性能、状态管理等方面进行阐述。
1.  性能
 
从性能方面,.NET remoting在使用TCP通道和二进制格式时拥有更快的通讯速度。而关于Web Services的主要焦点就集中在性能上。由于XML的冗长而使得用SOAP协议序列化出来的传输数据要比二进制数据流更慢。另外,处理字符串要比直接处理二进制更慢。然而,如果我们的Web service要进行的工作主要是计算操作,可以在服务端使用缓冲技术来增加web service的性能。
    如果我们使用一个SOAP格式的.NET remoting,我们会发现ASP.Net Web Service的性能会比使用SOAP协议的.NET remoting(可以使用http或tcp同道)更好。因此,.NET remoting技术只有在使用TCP通道和二进制格式时才比Web service的性能更高。

2. 状态管理
 
    Web services是一种无状态的编程模型,这就意味着需要单独处理每一个请求。另外,客户端每一次调用web services,服务端会为这个请求建立一个新的对象。这个对象在所有的方法调用完后销毁。为了在请求之间维护状态,我们可以使用和ASP.NET页同样的技术。如Session和Application对象,或是为我们的解决方案定制一个解决方案。但我们要清楚的是,在Web Service中维护状态的成本是非常高的。
    .NET remoting支持多种方式的状态管理。我们可以从中选择适当的解决方案。在前面提到过,SingleCall对象是无状态的,Singleton对象可以共享所有客户端的状态,并且客户对象在每一个客户端维护状态。如果我们不需要维护状态,可以使用singlecall对象,如果我们需要维护状态,可以一起使用singlecall和singleleton对象。
 
3.  安全
    .NET remoting并不支持跨平台的安全调用。但由于.NET remoting对象运行在IIS中,因此可以使用IIS的所有的安全特性。如果我们在其它的非IIS容器中使用TCP或HTTP通道,那么我们必须自已实现验证,授权等机制。
    web service和.NET remoting一样,也运行在IIS中,同样也可以使用IIS所提供的安全机制,如SSL、授权等。

4. 可靠性
    .NET remoting可以将任何程序作为远程对象,如Windows Form、服务程序、控制台或ASP.NET工作进程等。如果我们将Windows服务或控制台程序作为远程对象,那么我们需要确认所提供的服务特性是否符合远程对象的要求。然而如果我们在IIS中提供远程对象,那么我们可以利用ASP.NET工作进程的两个特性:自动开始和线程安全。对于ASP.NET Web service来说,可靠性并不是经常需要考虑的因素,因此它可以利用IIS在这方面的能力。
 
5. 可扩展性
 
    ASP.NET Web services.NET remoting框架都是可扩展的。我们可以过滤内部和外部的信息,控制各种类型的组件和元数据的产生。.NET remoting可以扩展到下一层,以允许我们实现自己的格式化程序和通道。
    ASP.NET Web services
依赖于System.Xml.Serialization.XmlSerializer类通过SOAP协议来发送和接收信息。我们可以非常容易地通过加入定制的属性来控制这一切。

1
相关文章