为了能清楚地描述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就是理想选择了。

以上文章转载自互联网
更多详情

简述WebS简述WebService与.NET Remoting的区别及适应场合相关推荐

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

    为了能清楚地描述Web Service 和Remoting之间的区别,我打算从他们的体系结构上来说起: Web Service大体上分为5个层次: 1. Http传输信道 2. XML的数据格式 3. ...

  2. 简述Android操作系统和IOS系统的区别;

    软件测试面试题中: 简述Android操作系统和IOS系统的区别: 1.两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制. 2.两者后台制度不同:IOS中任何第三方程序都不能在 ...

  3. 简述a.Equals(b)和a=b的区别

    简述a.Equals(b)和a=b的区别 a==b:当a和b指向同一对象时为true,即a和b指向内存和内存地址的内容都相同时才为true:(地址相同,内容必相同) a.equals(b):当a和b的 ...

  4. 简述Python中的break和continue的区别

    众所周知在Python中,break是结束整个循环体,而continue则是结束本次循环再继续循环. 但是作为一个新手的你,还是不明白它们的区别,这里用一个生动的例子说明它们的区别,如下: 1.con ...

  5. 简述C/S和B/S模式的区别

    C/S结构 ,即 Client/Server (客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的 ...

  6. 简述单机,集群,分布式架构区别及联系

    单机结构 我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了.整个项目所有的服务都由这台服务器提供.这就是单机结构. 那么 ...

  7. 简述 C语言 有和 C++ 的基本区别,你真的懂吗?(新手面试必学)

    1.c和c++的头文件不同 c的头文件------#include c++的头文件---#include 2.输入输出不同 输入: int i = 10; c:scanf("%d" ...

  8. datetime默认当前时间_简述Python培训之time和datetime的区别

    今天扣丁学堂给大家来详细介绍一下Python中提供了对时间日期的多种多样的处理方式,主要是在time和datetime这两个模块里.今天扣丁学堂小编给为大家整一下Pyrthon视频教程之两个模块在使用 ...

  9. 简述python_简述Python语言经验总结

    Python语言是不被大多数人知道的东西,这里就简单概述下Python语言,顺便闲谈一下Python 标准库."俗话"说:库即是语言,语言即是库.由此可见拥有一套高质量.具备良好可 ...

  10. linux内核和发行版本的关系,简述Linux内核和Linux发行版的区别

    做服务器运维工作,要经常和Linux的版本号打交道,但一直搞不明白Linux内核和Linux发行版到底是个啥东西.其实要理解Linux内核和Linux发行版之间的关系,只要能理解下面的关系就可以了: ...

最新文章

  1. linux环境下快速配置hadoop集群免密登录
  2. MySql 密码忘记了,不用重装
  3. 技术系列课|AI驱动的超分辨技术应用现状
  4. 使用React,Spring Boot和用户身份验证构建CRUD应用程序
  5. [翻译]API Guides - Bound Services
  6. Google 资深软件工程师 LeetCode 刷题笔记首次公开
  7. Js Vue 对象数组的创建方式
  8. html%3c arial%3e,【博客园】样式美化+网站统计访问+添加网易云背景音乐
  9. Delphi视频教程第二季
  10. matlab 神经网路,matlab神经网络的工程实例(超级详细)
  11. undo歌词中文音译_undo的中文谐音歌词
  12. html网页中加入音乐播放器,如何在网页中插入音乐播放器
  13. 植树节|晓一叶之理,种一树美好
  14. Python实现电报加密(字母后移一位)
  15. dubbo使用带有密码的redis注册中心完整配置及遇到问题解决、RestTemplate配置【持续更新】
  16. Ubuntu与开发板上的NFS安装与使用
  17. 上海中考分数线爬虫及使用plotly数据可视化
  18. 上海“网红流浪汉”你站住!To B人有话对你说~~~
  19. 医学图像 .nii文件格式详解
  20. 六顶思考帽与单一职责

热门文章

  1. 语音信号处理、语音特征提取
  2. 支持DX11游戏对硬件的要求
  3. 有人给我留言要电源软件,于是就有了这篇软件合集
  4. 拼音搜索函数(C# and java)
  5. rs232接口_各类PLC都支持RS232和485通讯,原理和方法普及一下
  6. EXCEL VBA批量下载URL链接地址图片、URL链接地址图片转为图片
  7. 【高数】高数第八章节——向量代数与空间解析几何空间直角坐标系
  8. 《机器人动力学与控制》第九章——动力学 9.4 欧拉-拉格朗日方程法应用举例(上)
  9. 官方rom提取原签名工具_ROM修改工具:Dragonface+昂达OTA签名工具
  10. jconsole远程连接linux,JConsole远程连接