加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice与remoting

发布时间:2020-12-17 02:41:22 所属栏目:安全 来源:网络整理
导读:从体系结构上说webservice有5个层次 : ? 1. Http传输信道 ? 2. XML的数据格式 ? 3. SOAP封装格式 ? 4. WSDL的描述方式 ? 5. UDDI ? 从传输方式上 :Web? Service和remoting传输协议不一样? 。 Web? Service是http方式,可以穿透防火墙? 。 remoting是通过so
从体系结构上说webservice有5个层次: ? 1. Http传输信道 ? 2. XML的数据格式 ? 3. SOAP封装格式 ? 4. WSDL的描述方式 ? 5. UDDI

?从传输方式上:Web? Service和remoting传输协议不一样? 。 Web? Service是http方式,可以穿透防火墙? 。 remoting是通过socket方式传输数据 。

从运行原理上: ? 1.web service.首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class) 这个代理类负责与WebService服务器进行Request 和Response .当一个数据(XML格式的)被封装成SOAP格式的数据流发送到服务器端的时候,就会生成一个进程对象并且把接收到这个Request的SOAP包进行解析,然后对事物进行处理,处理结束以后再对这个计算结果进行SOAP包装,然后把这个包作为一个Response发送给客户端的代理类(Proxy Class),同样地,这个代理类也对这个SOAP包进行解析处理,继而进行后续操作 ? 2..net remoting .net Remoting 是在DCOM等基础上发展起来的一种技术,它的主要目的是实现跨平台、跨语言、穿透企业防火墙,这也是他的基本特点,与WebService有所不同的是,它支持HTTP以及TCP信道,而且它不仅能传输XML格式的SOAP包,也可以传输传统意义上的二进制流,这使得它变得效率更高也更加灵活。而且它不依赖于IIS,用户可以自己开发(Development)并部署(Dispose)自己喜欢的宿主服务器,所以从这些方面上来讲WebService其实上是.net Remoting的一种特例. 从两者的特点看: WebService的特点是: 平台独立性(Platform-independent)、跨语言(只要能支持XML的语言都可以) 以及穿透企业防火墙 但是它的缺点也很明显,就是需要部署一台Web Server;而且速度比较慢;? .net Remoting的特点是: 他的优点是用户既可以使用TCP信道方式进行二进制流方式通信,也可以使用HTTP信道进行SOAP格式的性通信 效率相对WebService要高不少;但是它的缺点也很明显,.net remoting只能应用于MS 的.net framework之下。 从性能上来讲Remoting的效率和传统的DCOM、COM+的性能很相近!

?? Remoting的优缺点 优点: 1、能让我们进行分布式开发 2、Tcp通道的Remoting速度非常快 3、虽然是远程的,但是非常接近于本地调用对象 4、可以做到保持对象的状态 5、没有应用程序限制,可以是控制台,winform,iis,windows服务承载远程对象 缺点: 1、非标准的应用因此有平台限制 2、脱离iis的话需要有自己的安全机制。

Remoting功能详解: ? Remoting的两大功能在于:   1)不同进程间的通信。   2)不同应用域(AppDomain),不同进程的对象之间的通信(可以使用多种通信协议)。 ? 通常用到的Remoting的概念有:   Remoting Channel:这是指客户端和服务器端的通信协议,如我们可以使用TCP,HTTP协议。   Serializer:这是指在传输时采用何种格式来传输数据,如我们可以采用Binary,也可以采用SOAP来传输XML格式的数据. ??? .NET力图简化这些概念的编程,所以上面所述的协议和格式都可以通过更改配置文件切换。这也是编程人员不用担心的问题。如一段典型的客户端配置文件的内容是: <CONFIGURATION> <SYSTEM.RUNTIME.REMOTING> ?<APPLICATION> <CHANNELS> <CHANNEL ref="http" clientConnectionLimit="200"> ?<CLIENTPROVIDERS> <FORMATTER ref="binary"> ?</CLIENTPROVIDERS> </CHANNEL> </CHANNELS> </APPLICATION> </SYSTEM.RUNTIME.REMOTING> </CONFIGURATION> 另如: 配置文件举例—服务端 <configuration> ?<system.runtime.remoting> ??<application> ???<service> ???<wellknown mode="Singleton" objectUri="SayHello" ????type="RemotingSamples.HelloServer,General" /> ???</service> ???<channels> ????<channel port="8086" ref="http"/> ???</channels> ??</application> ?</system.runtime.remoting> </configuration> 配置文件举例——客户端 <configuration> ?<system.runtime.remoting> ??<application> ???<client> ???<wellknown url="http://localhost:8086/SayHello" ???type="RemotingSamples.HelloServer,General" /> ???</client > ???<channels> ????<channel port=“0" ref="http"/> ???</channels> ??</application> ?</system.runtime.remoting> </configuration>

? 关键术语: --远程对象:1.操作远程对象,对象运行在远程,客户端向他发送消息。MarshalByRefObject 2.传递远程对象,将远程的对象拿到本地,或者将本地对象发送过去。对副本进行操作[Serializable] 或ISerializable --激活方式:1.服务器激活(WellKnown)Singleton?SingleCall 2.客户端激活 ----通道(Channels)1.一个远程对象使用通道发送和接收消息1.1服务器选择一个通道来监听请求(request)1.2客户端选择通道来和服务器通讯 2.Remoting提供了内置的通道2.1TCP通道和HTTP通道2.2也可以编写自己的通道 ? 开发步骤:(分三步) 1.创建远程对象2.创建一个应用程序作为“宿主(host)”,以接收客户请求 3.创建一个客户端调用远程对象 第一步:创建远程对象 继承System.MarshalByRefObject ?public class HelloServer : MarshalByRefObject ?{ ??…… ?} 第二步:创建宿主应用程序 注册通道 内置通道:TCP,HTTP 注册服务器激活的远程对象 (WellKnown) Singleton,SingleCall URL 运行宿主程序 第三步:建立客户端程序 注册通道 内置通道:TCP,HTTP 根据URL得到对象代理 使用代理调用远程对象 ? 传递参数: 1.传递简单类型 int,doulbe,string,enum……2.传递可序列化的类型 ArrayList,Hashtable,DataSet…… 3.传递自定义类型 [Serializable]

最后,两者的一般的用处: 一般如果你的产品在局域网里使用的话就用.net? remoting? 如果是提供远程访问的话就用web? service. 当然也不是绝对的,可以根据你的需要,来适当的选择用那个。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读