这可能是一个初学者问题,但我想知道,
Remoting或WebServices之间的基本区别是什么?
哪一个更好?
答案 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服务。
特别是远程问题:
等
重新表现;远程处理使用二进制序列化,这在某些方面很有用,在其他方面有问题(见上面的项目符号)。 Web服务往往是基于xml的(虽然存在其他格式) - 并且基于契约(而不是基于实现) - 意味着客户端和服务器可以具有表示对象的不同类型,只要它们是类似的。
也可以在网络服务上使用二进制文件;例如,protobuf-net提供了一个WCF挂钩,可以在WCF服务上使用Google的“协议缓冲”二进制(基于合同)格式(需要注意的是:这是一个定制的协议,你需要两端的工具) )。
在系统之间还有其他的交谈方式,所有这些方式都可以说比遥控更好(即使它们不那么通用 - 有时候,极简主义是一种美德):