当前位置: 首页 > news >正文

简述WebService与.NET Remoting的区别及适应场合

为了能清楚地描述Web Service 和Remoting之间的区别,我打算从他们的体系结构上来说起: 
Web Service大体上分为5个层次: 
1. Http传输信道 
2. XML的数据格式 
3. SOAP封装格式 
4. WSDL的描述方式 
5. UDDI
 
总体上来讲,.NET 下的 Web Service结构比较简单,也比较容易理解和应用: 
一般来讲在.NET结构下的WebService应用都是基于.net framework以及IIS的架构之下,所以部署(Dispose)起来相对比较容易点.

从实现的角度来讲,
 
首先WebService必须把暴露给客户端的方法所在的类继承于:System.Web.Services.WebService这个基类 
其次所暴露的方法前面必须有[WebMethod]或者[WebMethodAttribute]
WebService的运行机理 
首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class) 
这个代理类负责与WebService服务器进行Request 和Response 
当一个数据(XML格式的)被封装成SOAP格式的数据流发送到服务器端的时候,就会生成一个进程对象并且把接收到这个Request的SOAP包进行解析,然后对事物进行处理,处理结束以后再对这个计算结果进行SOAP包装,然后把这个包作为一个Response发送给客户端的代理类(Proxy Class),同样地,这个代理类也对这个SOAP包进行解析处理,继而进行后续操作。
 
这就是WebService的一个运行过程。
 
下面我们对.net Remoting进行概括的阐述:

.net Remoting 是在DCOM等基础上发展起来的一种技术,它的主要目的是实现跨平台、跨语言、穿透企业防火墙,这也是他的基本特点,与WebService有所不同的是,它支持HTTP以及TCP信道,而且它不仅能传输XML格式的SOAP包,也可以传输传统意义上的二进制流,这使得它变得效率更高也更加灵活。而且它不依赖于IIS,用户可以自己开发(Development)并部署(Dispose)自己喜欢的宿主服务器,所以从这些方面上来讲WebService其实上是.net Remoting的一种特例。
 
比较

再次我们对WebService 以及Remoting做一个比较 
WebService的特点是:平台独立性(Platform-independent)、跨语言(只要能支持XML的语言都可以) 以及穿透企业防火墙;
net   webservice是基于http的是无状态的;
但是它的缺点也很明显,就是需要部署一台Web Server;而且速度比较慢;
.net Remoting的特点是 
他的优点是用户既可以使用TCP信道方式进行二进制流方式通信,也可以使用HTTP信道进行SOAP格式的性通信 
效率相对WebService要高不少;
remoting可以用于有状态的情况;
但是它的缺点也很明显,.net remoting只能应用于MS 的.net framework之下。
 
使用场合

 如果互动双方都是支持   .NET技术的环境,并且在操作系统上能提供一致的验证机制,而且很重视沟通双方作业的效率,就是   .NET   Remoting上场的时机。相反的,如果沟通双方是异质环境,又或沟通的模式就是无状态的情况,持续进行的互动作业前后是没有关联的,Web   Service就是理想选择了。
 













本文转自周金桥51CTO博客,原文链接:http://blog.51cto.com/zhoufoxcn/166990  ,如需转载请自行联系原作者



相关文章:

  • Java开源报表JasperReport、iReport4.5.1使用详解(二)
  • 本公司信息发布系统的优点
  • 判断元素是否可见的jQuery 新窗口打开图片
  • Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析【转】
  • Revit参数族之ZP系列消声器
  • 漫游Kafka设计篇之数据持久化
  • LVS+Keepalived实现高可用集群
  • 互联网领袖高峰对话实录:马云李彦宏等激烈碰撞
  • 从91移动应用发展趋势报告看国内应用现状
  • 用户和组管理权限及文件访问控制
  • Android模拟器启动选项 (转发)
  • 解决 window server2008 r2 没有注册Ofiice组件的方法
  • 20171110_allow_read_only_corruption参数
  • 手机震动效果--ios
  • AD DS最佳实践分析程序(BPA)应用实例---扫描并归档结果
  • JS 中的深拷贝与浅拷贝
  • 30秒的PHP代码片段(1)数组 - Array
  • CAP 一致性协议及应用解析
  • ES6系列(二)变量的解构赋值
  • ES6之路之模块详解
  • React-Native - 收藏集 - 掘金
  • web标准化(下)
  • WePY 在小程序性能调优上做出的探究
  • 对JS继承的一点思考
  • 多线程事务回滚
  • 飞驰在Mesos的涡轮引擎上
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 给第三方使用接口的 URL 签名实现
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 码农张的Bug人生 - 初来乍到
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何合理的规划jvm性能调优
  • 什么软件可以剪辑音乐?
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 问题之ssh中Host key verification failed的解决
  • 我看到的前端
  • Spring Batch JSON 支持
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​ArcGIS Pro 如何批量删除字段
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​香农与信息论三大定律
  • #if 1...#endif
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (三)elasticsearch 源码之启动流程分析
  • (转)树状数组
  • .net下的富文本编辑器FCKeditor的配置方法
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @Transactional 详解
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [20180224]expdp query 写法问题.txt