.NET Remoting与Socket、Webservice和WCF的比较及优势 (转)
1:Socket VS Remoting
使用socket无疑是效率最高的。但是,在复杂的接口环境下,Socket的开发效率也是最低的。故在兼顾开发效率的情况下,可以使用Remoting来代替Socket开发。并且:
1、Tcp通道的Remoting速度非常快。
你可以通过端口查看工具,发现remoting比直接socket传输的内容,应该是属于同一个数量级的。我的另一个担心是,大客户端数量的情况下,remoting传输效率会不会很低,结果经过现场测试,同时对300个客户端进行数据通信,不存在信息丢失情况。
2、虽然是远程的,但是非常接近于本地调用对象。 也就是完全符合面向对象思想。
3、可以做到保持对象的状态
直接使用Socket传输机制,我们必须花大量的精力来处理异常、断网、死机等现象,使用remoting,这些工作会大大简化。
2:Remoting vs Webservice
1、webservice在framework2.0状态下只能寄宿于IIS等应用服务器中。微软直到3.0才提供了servicehost来寄宿
webservice,这就极大地限制了webservice在使用中的灵活性。在framework2.0环境下,如果你有一个应用要脱离IIS而存在,就不得不抛弃webservice。(除非你想代码实现一个WEB应用服务器)
2、Remoting可寄宿在你自己的代码中,也可寄宿在windows服务及IIS中。最大程度的提供了开发和部署的灵活性。
3、Remoting在使用http通道的时候,也如Webservice一样支持穿透路由。
4、Remoting与websercie相比,提供双向通信。哪怕是将Remoting寄宿在IIS中,也支持。
5、webservice客户端自动生成的代理类比较复杂。而Remoting一般来说,都是手动编写客户端代码。
6、将Remoting采用TCP通讯,比Web Service高效
7、当然,webservice最主要优势是,它是一个行业标准,而Remoting只是微软自己内部的标准,如果你的应用要脱离微软的平台,就只能使用webservice了。
3:和WCF的比较
WCF是一个技术集合体,WCF包含Remoting、Web Service等具体的技术。
一下是WCF的简介:WC就是微软对于分布式处理的编程技术的集大成者,它将DCOM、Remoting、Web Service、WSE、MSMQ集成在一起,从而降低了分布式系统开发者的学习曲线,并统一了开发标准。
1、统一性
前面已经叙述,WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合。由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。
2、互操作性
由于WCF最基本的通信机制是SOAP,这就保证了系统之间的互操作性,即使是运行不同的上下文中。这种通信可以是基于.Net到.Net间的通信。
可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如J2EE应用服务器(如WebSphere,WebLogic)。应用程序可以运行在Windows操作系统下,也可以运行在其他的 操作系统,如Sun Solaris,HP Unix,Linux等等。
3、安全与可信赖
WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。
在SOAP的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS-Coordination和WS- AtomicTransaction之上的基于SOAP格式交换的信息,则支持两阶段的事务提交(two-phase commit transactions)。
上述的多种WS-Policy在WCF中 都给与了支持。对于Messaging而言,SOAP是Web Service的基本协议,它包含了消息头(header)和消息体(body)。在消息头中,定义了WS-Addressing用于定位SOAP消息的 地址信息,同时还包含了MTOM(消息传输优化机制,Message Transmission Optimization Mechanism)。
4、兼容性
WCF充分的考虑到了与旧有系统的兼容性。安装WCF并不会影响原有的技术如ASMX和.Net Remoting。即使对于WCF和ASMX而言,虽然两者都使用了SOAP,但基于WCF开发的应用程序,仍然可以直接与ASMX进行交互。
.NET Remoting与Socket、Webservice和WCF的比较及优势 (转)的更多相关文章
- 现有分布式技术(socket、.net remoting、asp.net webservice、WSE、ES)和wcf的比较及优势
1:socket VS remoting 使用socket无疑是效率最高的.但是,在复杂的接口环境下,socket的开发效率也是最低的.故在兼顾开发效率的情况下,可以使用remoting来代替sock ...
- Fiddler捕捉ASP.NET WebSite调用WebService、WCF服务
Fiddler默认会注册一个代理,有时会发现WebSite调用的WebService或者WCF服务无法被捕捉到.其实是由于运行的站点关联的应用程序池使用的账号和我们当前登陆操作系统的用户不同,自然它们 ...
- .NET Remoting、WebService、WCF、WebApi一些简单描述
1. .NET Remoting是传输层协议TCP封装的,速度非常快,.NET Remoting基于.net反射机制,只方便.net使用,因此它有平台限制.(.NET Remoting的工作原理:服务 ...
- webservice和wcf和web.api简单介绍
转自:无废话的wcf等等 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Ser ...
- remoting与socket、web service的比较及实例
remoting基础 一种分布式处理方式,可以说是DCOM的一种升级 跨过应用程序域,与另外的应用程序域进行通信,即穿越边界 在remoting中是通过通道(channel)来实现两个应用程序域之间对 ...
- 动态调用webservice及WCF服务
动态调用web服务,该方法只针对Web service, WCF的服务不行,如果是WCF的就通过工具直接生产代理类,把代理类配置到调用的项目中,通过配置客户端的终结点动态的取实现: 通过Svcutil ...
- WebService及WCF获取客户端IP,端口
wcf获取客户端IP,端口 var context = OperationContext.Current; var properties = context.IncomingMessageProper ...
- WebService、WCF、WebAPI、MVC的区别
Web Service 1.它是基于SOAP协议的,数据格式是XML 2.只支持HTTP协议 3.它不是开源的,但可以被任意一个了解XML的人使用 4.它只能部署在IIS上 WCF 1.这个也是基于S ...
- WebService与WCF
5.Web Service和WCF的到底有什么区别 https://zhidao.baidu.com/question/1368120490988718179.html 6.VS 2010中使用C#创 ...
随机推荐
- 【动态规划】 Codeforces Round #416 (Div. 2) C. Vladik and Memorable Trip
划分那个序列,没必要完全覆盖原序列.对于划分出来的每个序列,对于某个值v,要么全都在该序列,要么全都不在该序列. 一个序列的价值是所有不同的值的异或和.整个的价值是所有划分出来的序列的价值之和. ...
- 【单调队列】POJ2823-Sliding Window
单调队列经典题之一. [思路] 设置两个单调队列分别记录最大值和最小值.对于每一个新读入的数字,进行两次操作(对于求最大值和最小值中的某一个而言),一是若队首不在滑窗范围内则删去:二是删去队末比当前值 ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 4) Neural Networks Representation
Andrew NG的Machine learning课程地址为:https://www.coursera.org/course/ml 神经网络一直被认为是比较难懂的问题,NG将神经网络部分的课程分为了 ...
- iptables最常用的规则示例
iptables v1.4.21 iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”.规则存储在内核空间的信息 ...
- 【Sets】使用Google Guava工程中Sets工具包,实现集合的并集/交集/补集/差集
获取两个txt文档的内容~存储进集合中求集合的并集/交集/补集/差集 package com.sxd.readLines.aboutDB; import java.io.BufferedReader; ...
- JAVA常见算法题(二十九)
package com.forezp.util; import java.util.Scanner; /** * 判断输入的5个字符串的最大长度,并输出 * * * @author Administr ...
- easyui datagrid 表格动态隐藏部分列的展示
1.一套代码中,可能不同的项目情况都在用,但是可能不同的项目要求展示的datagrid列的内容并不一致,所以能够动态的显示部分datagrid列的内容. 即datagrid的中的某一列,这个项目要求显 ...
- HDU3001 Travelling 状压DP
哭瞎啊,每一个城市能够经过至多两次,但没有要求必须经过两次.想用 两个状压来乱搞搞.结果自觉得会T.结果 WA了,搞了一下午.没想到用三进制啊.智商捉急,參考了 http://blog.csdn.ne ...
- android 启动socket 失败:socket(af_inet sock_stream 0) 返回-1
Android 启动socket 失败:socket(af_inet sock_stream 0) 返回-1 原因权限问题, 应该添加如下权限: <uses-permission android ...
- Struts2 中#、@、%和$符号的用途
一.#符号的用途一般有三种. “#”主要有三种用途: 1. 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext():下表有几个ActionContext中 ...