在.NET中哪一个更好Remoting或WebServices?

时间:2009-04-06 07:08:47

标签: .net web-services remoting

这可能是一个初学者问题,但我想知道,

Remoting或WebServices之间的基本区别是什么?

哪一个更好?

3 个答案:

答案 0 :(得分:1)

“更好”在这里非常有用。

Remoting使用二进制序列化,因此通过线路占用的空间更少,通常速度更快,但两端只能使用.net。您的dll版本必须匹配,您可以在应用程序中托管服务器端点,而无需IIS。

Webservices在使用XML时更加灵活,旨在与其他提供程序(Java,Python等)进行互操作。

或者,看看WCF(Windows Communication Foundation),因为它是.net世界中的事物。它允许您编写一次代码,然后将其托管在各种端点上

答案 1 :(得分:0)

“哪个更好”是相对比较,只能由您的方案决定。这两种实现分布式应用程序的机制存在的原因各不相同,因此选择最适合您设置的机制非常重要。

请记住,整个Webservices框架都是基于Remoting框架构建的。 IOW,Webservices是一个从Remoting创建的抽象。因此,虽然ASP.NET Web服务提供了更简单的编程模型和更强的互操作性,但Remoting提供了System.Net.Remoting命名空间的完全灵活性和强大功能,需要更多的技术知识并且具有较低的互操作性。也就是说,使用TCP的Remoting无疑比HTTP上的Webservices表现更好。

这是一个MSDN article,解释了在哪种情况下你应该选择哪一个。 And another阐述了内在的差异。

答案 2 :(得分:0)

这取决于你想做什么;对于真正的“远程”场景,远程控制正在失宠;通常,对于系统之间的通信,最好使用服务接口,例如通过WCF。

远程处理对于在单个应用程序中的AppDomain之间进行通信仍然很有用。

请注意,远程处理并非适用于所有.NET框架 - 例如,Silverlight不支持远程处理,但WCF和http /(原始)套接字之类的东西都可以。

如果可以,请查看WCF。如果不能选择WCF,请查看常规Web服务。

特别是远程问题:

  • 它将客户端和服务器绑定到.NET
  • 它将客户端和服务器绑定到相同的二进制实现
  • 它往往导致边界考虑不周(很容易通过电线泄漏错误的物体,这可能导致大的延迟问题)

重新表现;远程处理使用二进制序列化,这在某些方面很有用,在其他方面有问题(见上面的项目符号)。 Web服务往往是基于xml的(虽然存在其他格式) - 并且基于契约(而不是基于实现) - 意味着客户端和服务器可以具有表示对象的不同类型,只要它们是类似的。

也可以在网络服务上使用二进制文件;例如,protobuf-net提供了一个WCF挂钩,可以在WCF服务上使用Google的“协议缓冲”二进制(基于合同)格式(需要注意的是:这是一个定制的协议,你需要两端的工具) )。

在系统之间还有其他的交谈方式,所有这些方式都可以说比遥控更好(即使它们不那么通用 - 有时候,极简主义是一种美德):

  • 套接字(自定义通信)
  • http(简单的POX消息等)
  • 中间件(msmq,biztalk等)