内容转自于 http://www.mamicode.com/info-detail-585547.html
.NET 分布式技术比较
1. MSMQ(Microsoft Message Queue)
微软消息队列,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。
利用 MSMQ(Microsoft Message Queue),应用程序开发人员可以通过发送和接收消息方便地与应用程序进行快速可靠的通信。消息处理为您提供了有保障的消息传递和执行许多业务处理的可靠的防故障方法。
MSMQ与XML Web Services和.Net Remoting一样,是一种分布式开发技术。但是在使用XML Web Services或.Net Remoting组件时,Client端需要和Server端实时交换信息,Server需要保持联机。MSMQ则可以在Server离线的情况下工作,将Message临时保存在Client端的消息队列中,以后联机时再发送到Server端处理。
显然,MSMQ不适合于Client需要Server端及时响应的这种情况,MSMQ以异步的方式和Server端交互,不用担心等待Server端的长时间处理过程。
虽然XML Web Services和.Net Remoting都提供了[OneWay]属性来处理异步调用,用来解决Server端长方法调用长时间阻碍Client端。但是不能解决大量Client负载的问题,此时Server接受的请求快于处理请求。
扩展阅读: http://www.cnblogs.com/sk-net/archive/2011/11/25/2232341.html
http://www.codeproject.com/Articles/193611/DotNetMQ-A-Complete-Message-Queue-System-for-NET
扩展关键词: Message queue 消息中间件
思考: Message queue OR Web service
.NET Remoting
.Net Remoting技术,我们可以将其看作是一种分布式处理方式。作为应用程序之间通信的一种机制,.Net Remoting与MSMQ消息队列不同,它不支持离线脱机消息,另外只适合.Net平台间程序的通信.从微软的产品角度来看,可以说Remoting就是分布式组件DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下。.NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信IPC(Internet Process Connection)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界(参考MSDN)。
.NET Remoting 与 Web Service 实现的原理并没有本质的区别
服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
.net remoting与webservice都是用来通信的框架,它们最大的优点是可以像调用本地对象一样调用远程对象,比如:Uploader uploader = new Uploader();uploader.Save(file);可以用这样简洁而抽象的调用实现上传,不用自已对socket进行一系列的处理,可以把更多精力放在业务逻辑上;区别:1、webservice是用的应用层协议http封装的,所以它可以被很多其它语言调用,很多语言也都实现了webservice代理端封装以及工具,只要知道webservice的地址(比如:http://www.baidu.com/SomeService.asmx),就可以用,所以webservice的点特是好用、通用、效率一般;.net remoting是用传输层协议tcp封装的,所以可以以二进制传输数据,效率高;.net remoting基于.net的反射机制,只方便.net使用(其它语言反射机制实现不同,有的根本没有反射); 2、webservice能穿越防火墙,是因为http协议是现在广泛应用的协议,防火墙一般不会作屏蔽,并不说webservice有某功能穿越防火墙; 3、 只能在winform下用吗?如果你是用.net开发,任何类型的应用程序都可以使用.net remoting与webservice,包括winform,asp.net, wpf, silverlight...,只要能using ...就可以按它们的方式用了1).net Remoting的工作原理是什么?
答案:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
2) 使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别?
答案:Web服务使用的消息机制,而Remoting采用的RPC. Web Service能用于不同平台,不同语言,Remoting只适用于.Net。效率上Remoting高于Xml Web Service
Web服务是以消息来通信的,消息在调用方和服务端之间传递,而.NET Remoting是基于对象的,使得对象的方法可以跨网络调用
3)简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
答案:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。
4).概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。
答案:远程逻辑调用,remoing接口只能用在.net
remoting是.net 中用来跨越machine, process, appdomain 进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM
Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型。
相关推荐: http://www.cnblogs.com/DebugLZQ/archive/2012/07/30/2614815.html
https://msdn.microsoft.com/en-us/library/ms978420.aspx