艾伟:Remoting和Webservice的区别

本系列文章导航

创建一个示例和WebMethod特性解析

WebService特性和数组类型解析

类和结构体解析

利用YAHOO公开API做天气预报Web服务

Webservice 的设计和模式

Remoting和Webservice的区别

其实现的原理并没有本质的区别,在应用开发层面上有以下区别:
1、Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这样比Web Service稍为高效一些
2、Remoting不是标准,而Web Service是标准;
3、Remoting一般需要通过一个WinForm或是Windows服务进行启动,而Web Service则需要IIS进行启动。
4、在VS.net开发环境中,专门对Web Service的调用进行了封装,用起来比Remoting方便

我建议还是采用Web Service好些,对于开发来说更容易控制
Remoting一般用在C/S的系统中,Web Service是用在B/S系统中
后者还是各语言的通用接口
相同之处就是都基于XML

为了能清楚地描述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的一种特例。
Remoting的两种通道
  Remoting的通道主要有两种:Tcp和Http。在.Net中,System.Runtime.Remoting.Channel中定义了 IChannel接口。IChannel接口包括了TcpChannel通道类型和Http通道类型。它们分别对应Remoting通道的这两种类型

1. remoting 是MarshByReference的,可以传变量的引用,直接对服务器对象操作。速度快,适合intranet(企业内部互联网)。
 webservice 是MarshByValue的,必须传对象的值。速度慢,可以过FIREWALL,配置比较简单,适合internet(因特网)。 

2. 一般来说,remoting是和平台相关的,需要客户和服务器都是.NET,但可配置特性比较好,可以自定义协议。web service可以做到跨平台通信,但必须采用SOAP协议。 

3. Soap消息有rpc和文档两种样式。 文档样式的body元素中包含一个或多个元素,可以是任何内容,只要接受者理解就行了。rpc样式的的body元素中包含调用的方法或远程过程的名称,以及代表方法参数的元素。  

.net对这两种样式的实现就是web service 和remoting .

概括的说Remoting与Web Services的区别是:
(1)既支持TCP信道又支持HTTP信道,传输速度快
(2)即可传输XML的SOAP包又可传输二进制流,效率高
(3)Remoteing主要用于C/S结构项目
(4)不一定要依赖IIS服务器

时间: 2024-09-17 16:18:03

艾伟:Remoting和Webservice的区别的相关文章

Remoting和Webservice的详细介绍及区别_实用技巧

Remoting和Webservice区别: 其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这样比Web Service稍为高效一些 2.Remoting不是标准,而Web Service是标准: 3.Remoting一般需要通过一个WinForm或是Windows服务进行启动,而Web Service则需要IIS进行启动. 4.在VS.net开

c# 怎么调用http服务, http服务和webservice的区别?

问题描述 大神好,我会调webservice服务,但http服务是啥都还不清楚,但是现在要用到,请懂的帮我下! 解决方案 解决方案二:webservice基于http和soap协议,数据格式为xml,而http服务可以是纯文本.调用http服务一般只要用httpwebrequest去请求返回结果就可以了.解决方案三:webservice就属于http服务,而handler.webapi之类的也属于web服务,只要是web服务,都代表可以通过http访问解决方案四:HTTP服务可以象webserv

WebService特性和数组类型解析

本系列文章导航 创建一个示例和WebMethod特性解析 WebService特性和数组类型解析 类和结构体解析 利用YAHOO公开API做天气预报Web服务 Webservice 的设计和模式 Remoting和Webservice的区别 现在开始学习Web服务,写下自己学习过程中的一些感受,拿出来与大家分享,欢迎批评指正.希望能给跟我一样初学Web服务的朋友一些帮助. 昨天我写了前段时间的一些心得:http://www.cnblogs.com/VisualStudio/archive/200

利用YAHOO公开API做天气预报Web服务

本系列文章导航 创建一个示例和WebMethod特性解析 WebService特性和数组类型解析 类和结构体解析 利用YAHOO公开API做天气预报Web服务 Webservice 的设计和模式 Remoting和Webservice的区别 学了一段时间的Web服务,今天做了一个Web服务,利用YAHOO的公开天气API做自己的Web服务,主要是想练练手.现在把过程和心得分享给大家. 求教:这个Web服务还有个不完善的地方,Web服务的CityNameToCityNum方法,这个最重要,他是把省

类和结构体解析

本系列文章导航 创建一个示例和WebMethod特性解析 WebService特性和数组类型解析 类和结构体解析 利用YAHOO公开API做天气预报Web服务 Webservice 的设计和模式 Remoting和Webservice的区别 现在开始学习Web服务,写下自己学习过程中的一些感受,拿出来与大家分享,欢迎批评指正.希望能给跟我一样初学Web服务的朋友一些帮助. 今天学习了Web服务的类和结构体一节,晚上写下自己所理解的内容,跟大家一起分享了.请批评指正. Web服务能够把用户定义的类

结合Direct Web Remoting使用AJAX

ajax|web [导读]本文介绍通过结合Direct Web Remoting使用AJAX,把从 JavaScript 客户代码对服务器端 Java 对象进行远程调用的能力正式化. DWR 简介 从最简单的角度来说,DWR 是一个引擎,可以把服务器端 Java 对象的方法公开给 JavaScript 代码.使用 DWR 可以有效地从应用程序代码中把 Ajax 的全部请求-响应循环消除掉.这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应.不再需要编写对象的

通常C#面试题

1.在C#中,string str = null 与 string str = "" 请尽量使用文字或图象说明其中的区别. 回答要点:说明详细的空间分配.(10分) 答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间. 2.请详述在dotnet中类(class)与结构(struct)的异同:(10分) 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,

asp.net面试题收集

asp.net 1.new有几种用法 第一种:new Class(); 第二种:覆盖方法 public new XXXX(){} 第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数. 2.如何把一个array复制到arrayList里 foreach( object o in array )arrayList.Add(o); 3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview] dataset,datat

.net面试题大全(有答案)

1 (1)面向对象的语言具有__继承性_性._封装性_性._多态性 性. (2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型.1.c#中的三元运算符是__?:__ 2.当整数a赋值给一个object对象时,整数a将会被__装箱___? 3.类成员有__3__种可访问形式? 4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static 5.