Web 服务和远程处理有啥区别?
Posted
技术标签:
【中文标题】Web 服务和远程处理有啥区别?【英文标题】:What is the difference between web service and remoting?Web 服务和远程处理有什么区别? 【发布时间】:2010-11-28 09:57:58 【问题描述】:我了解 Web 服务并且对远程处理有一定的了解。 这两个概念都在客户端机器上调用方法,那么区别在哪里??
通过remoting,我们也可以在远程机器上执行该方法,同样的功能也可以通过web service来实现..
如果这是显而易见的问题,请原谅..
【问题讨论】:
好问题大多相同。 【参考方案1】:两者都支持分布式应用程序。
Web 服务是跨平台的,使用通用标准并通过防火墙工作。他们还考虑消息,而不是对象 - 您向服务发送消息,然后您得到回复。
Remoting 是一种仅限 MS 的技术,它不是跨平台的,并且以二进制格式进行对话。它从对象的角度考虑,您在远程服务器上创建一个对象并使用它。它不适用于防火墙。这些天远程处理也死了,MS 偏爱 WCF(包括 Web 服务)
【讨论】:
Remoting 还没有死(还),只是被弃用了。 好吧,那它病得很重:)【参考方案2】:.NET Remoting concept 是 Microsoft/.NET 特定的进程间通信技术。
“Web 服务”这个词由于其炒作而非常分散。但我认为W3C definition 在大多数情况下都是有意的。定义使用WSDL作为接口描述,SOAP作为消息协议。
根据Microsoft .NET Remoting: A Technical Overview on MSDN,Remoting 使用二进制或XML 编码。而 XML 编码使用 SOAP。但据我所知,它不遵守WS-I Basic Profile。因此,它提供了极其有限的 Web 服务互操作性。
这两个概念都允许进程间通信。如果您的应用程序只使用 .NET,那么使用 .NET Remoting 是一个不错的选择。
但是,如果您打算提供与其他编程语言的互操作性,那么您应该使用 Web 服务。
【讨论】:
【参考方案3】:基于 ASP.NET 的 Web 服务只能通过 HTTP 访问。 .NET Remoting 可以跨任何协议使用。
Web 服务在无状态环境中工作,其中每个请求都会导致创建一个新对象来为请求提供服务。 .NET Remoting 支持状态管理选项,可以关联来自同一客户端的多个调用并支持回调。
Web 服务通过 SOAP 消息中包含的 XML 序列化对象,因此只能处理可以完全用 XML 表示的项目。 .NET Remoting 依赖于包含有关数据类型的信息的公共语言运行时程序集的存在。这限制了必须传递的有关对象的信息,并允许通过值或引用传递对象。
Web 服务支持跨平台的互操作性,适用于异构环境。 .NET Remoting 需要使用 .NET 或其他支持 .NET Remoting 的框架构建客户端,这意味着同构环境。
【讨论】:
【参考方案4】:Remoting 和 Web Services 都是应用程序之间的通信方式。
远程处理 - 在远程处理中,通信过程中涉及的应用程序可能位于同一台计算机上,也可能位于同一或不同网络中的不同计算机上。在远程处理中,两个应用程序相互了解。在另一个应用程序上创建应用程序对象的代理。
Web 服务 - 使用 Web 服务的应用程序之间的通信独立于平台和编程。使用 Web 服务的应用程序只需访问它,而无需知道该 Web 服务实际上是如何实现和创建的。
【讨论】:
【参考方案5】:WebServices 是一种远程处理形式,因为您在 AppDomain 之外的其他地方或同一台机器上有效地执行代码。
在同一台机器上或通过网络进行远程处理(InterProcess)是不同的,因为您通过透明代理和序列化在 AppDomain/平台边界之间编组您的对象。远程处理具有复杂性,并且很容易变得非常复杂。 WCF 使事情变得更容易维护。性能方面,我没有比较这两种方法,并且肯定有兴趣看看这两种方法在 InterProcess 上下文中的表现如何。由于 WCF 可以与二进制绑定进行通信,并且不限于 HTTP 协议。
WCF 使用管道进行进程间通信使这变得更加简单。
最终,用于通过端口 80(标准)HTTP 和 Remoting 进行通信的 WebServices 可以使用不同的序列化格式化程序通过预定义的端口和通道进行通信。
它们现在已由 WCF 升级,现在为这些类型的通信提供方法。
【讨论】:
【参考方案6】:Remoting 正在模拟作为本地方法调用的外部方法,接受相同类型的参数,因此它所需要的只是对对象进行序列化并调用远程方法(使用相同的语言或平台),并提供响应。
Web 服务(SOAP 服务)处理 RPC 术语中的跨平台方法调用,但可以使用 Document 样式服务进一步改进,这里语言或平台不是障碍,因为 XML 将通过编组和解组本机充当中间体和 XML 表示。
【讨论】:
【参考方案7】:WebService 是通过 HTTP 实现的,而 Remoting 是通过 TCP/UDP 实现的。 因此,Remoting 在速度方面表现更好。
【讨论】:
Web 服务不是通过 HTTP 实现的,除非您参考了一个非常具体的实现。 W3C 定义的 Web 服务独立于传输协议。事实上,许多 Web 服务框架也提供基于 TCP、SMTP 的传输(例如 Metro) 嗯,我确定这家伙说的是 .net 网络服务以上是关于Web 服务和远程处理有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章