.net的远程调用

.Net远程调用(转自:http://www.cnblogs.com/omilan/articles/3191378.html)

看到了这.net远程调用的讲解,觉得不错,拿来分享!!

.Net对于远程调用提供了两种方式:WebService 和 Remoting。

其实现的原理并没有本质的区别,在应用开发层面上有以下区别:

  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方便。

Remoting一般用在C/S的系统中,Web Service是用在B/S系统中。后者还是各语言的通用接口,相同之处就是都基于XML。

为了能清楚地描述Web Service 和Remoting之间得区别,我打算从他们的体系结构上来说起:

Web Service大体上分为5个层次:

  1. Http传输信道
  2. XML的数据格式
  3. SOAP (Simple Object Access Protocol)封装格式
  4. WSDL(Web service Description Language)的描述方式
  5. UDDI (Universal Description, Discovery and Integration)

总体上来讲,.NET 下的 Web Service应用都是基于.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包进行解析处理,继而进行后续操作。

.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通道的这两种类型。

综上,WebService 和 Remoting两种远程调用在体系结构上的区别如下:

  1. remoting 是MarshByReference的,可以传变量的引用,直接对服务器对象操作,速度快,适合intranet(企业内部互联网)。而webservice 是MarshByValue的,必须传对象的值,速度慢,可以过FIREWALL,配置比较简单,适合internet(因特网)。
  2. 一般来说,remoting是和平台相关的,需要客户和服务器都是.NET,但可配置特性比较好,可以自定义协议。web service可以做到跨平台通信,但必须采用SOAP协议。
  3. Soap消息有rpc和文档两种样式。 文档样式的body元素中包含一个或多个元素,可以是任何内容,只要接受者理解就行了。rpc样式的的body元素中包含调用的方法或远程过程的名称,以及代表方法参数的元素。

概括的说Remoting与Web Services的区别是:

  • 既支持TCP信道又支持HTTP信道,传输速度快
  • 即可传输XML的SOAP包又可传输二进制流,效率高
  • Remoteing主要用于C/S结构项目
  • 不一定要依赖IIS服务器
时间: 2024-11-10 03:24:06

.net的远程调用的相关文章

Sql Server远程调用失败

这篇文章主要为大家介绍了SQL server服务显示远程过程调用失败的解决方法,还为大家提供了解决SQL SERVER 2008 R2配置管理器出现"远程过程调用失败"(0x800706be)错误提示的方案,感兴趣的小伙伴们可以参考一下 刚刚打开SQL Server 2008,想要新建一个数据库,却发现出现了一个问题,这个问题由于之前没有遇到过,所以下面整理解决SQL server服务远程调用失败的几个方法,供大家参考,具体内容如下 先看看出现的问题: 出现上面这个错误的原因可能是由于

C#远程调用技术WebService葵花宝典

一.课程介绍 直接开门见山吧,在学习之前阿笨想问大家一句,关于WebService远程过程调用技术(RPC) 你真的会了吗?不要跟老夫扯什么WebService技术已经过时,如果你的内心有在偷偷告诉你其实我是真的不会WebService的话,那么恭喜你,因为你在这茫茫的IT编程世界里找到了这本<C#远程调用技术WebService葵花宝典>!曾经有一位不知名的讲师说过这么一句名言: 一门RPC技术不会,那么千万万门RPC技术将都不会! 本次阿笨的分享课包含以下知识点. 1.C# WebServ

RHEL6-X Window System-8.图形桌面的本地调用与远程调用解析

Linux的X或X11 (X Window System)是一个基础的图形框架接口,拥有基本的图形显示.在此框架基础之上,有诸如GNOME/KDE之类的图形桌面窗口管理应用软件(Window manager).而且图形框架X11包括两大部分X Client与X Server,采用C/S主从架构.所以它是一个system而不单单只是一个组件. Linux图形桌面的本地调用与远程调用解析如图 说明: 通过图形还是文本控制台传递命令,经过内核处理后,返回相应的数据给对方 本地情况: 1.如果是图形,则

远程调用方式概述

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB. Burlap.Hessian.SOAP.EJB和JMS 等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那 深入了解这些技术背后的机制就是必须的了,本文中我们将来一探究竟,抛砖引玉,欢迎大家提供更多的实现远程通讯的技术和原理的介绍. 基本原理 要实现网络机器间的通讯

如何基于Vert.x实现远程调用?

Vert.x的微服务 最近关于微服务的概念到处都在宣传,而Vert.x的verticle本身就是很好的一种服务定义,你可以把verticle看成一个service,也可以把verticle看成一个actor.这样你的视角会切到Actor模型里.本文我们将讨论如何基于Vert.x实现远程调用. 传统Java开发人员受EJB以及Spring的影响比较深,所以对面向接口编程了解的比较多.哪怕跨JVM也可以通过接口来调用对方提供的方法.这是非常友好方便的开发方式,因为框架层面做了服务发现以及服务生命周期

JBOSS EAP 6.2 -EJB远程调用-客户端的配置

EJB访问方式分为远程客户端访问.本地客户端访问和WebService客户端. 所谓的EJB的远程调用是说客户端与服务端的EJB对象不在同一个JVM进程中. 本地客户端是说客户端与服务端的EJB对象在同一个JVM进程中. WebService客户端可以访问无状态会话Bean的接口,只有在业务逻辑方法被标识为@WebMethod的时候,webService客户端才可以访问到. 远程调用 在没有远程调用的时候,我们需要用到别人的数据了,就直接把别人的接口和实现都拿过来了,接着打到自己的包中,这样做一

玩转PowerShell第二节——【利用PsExec进行远程调用】-技术&amp;分享

概述 PowerShell用的最多的地方就是远程调用,在远程机器上执行脚本,监控远程机器的状态,如NLB状态,EventLog,SqlServer DataBase状态等. 本篇将讲到用PsExec.exe这个工具进行远程调用. 1.首次运行PowerShell.exe 双击PowerShell.exe,同意licence条款. 2.查看PowerShell帮助 3.常用参数 computer   计算机名称,如果省略,则在本机执行,如果是\\*,则在域里面的所有的机器上执行脚本 -u 远程机器

EC应用之多平台接口远程调用

在传统的网络应用编写中都是通过接收消息处理然后应答,但在.net 3.0后提供了一个基于业务接口调用的网络交互体系WCF.基于WCF .NET程序可以通过接口调用的方式进行远程业务调用处理.由于WCF是MS提供的体系,所以在mono和xamarin所支持的其他平台都没有良好地被支持.但随便着mono和xamarin的迅速发展,基于业务接口远程调用的服务体系该提供给更多平台提供通讯的便利性;为了解决这些问题EC组件提供了一套基于业务接口远程调用方法实现,借助于mono和xamarin可以使些功能简

使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务(讲述了RTC的特点,其底层通讯协议是自己封装SOCK 库,与kbmmw 的适合场合不完全一样)

    RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高,深受很多人的追捧.由于RTC 是从底层通讯做起的,因此通讯层的 功能非常强,但是在中间层数据库功能虽然有所实现,但是没有kbmmw 和RO 强,但是对于普通的远程调用做的非常优雅. 同时它重点在于使用http 协议实现功能调用,因此与kbmmw 的适合场合不完全一样. 由于RTC 可以非常快速的建立

bos 第5天(定区的添加、定区的分页查询、hessian远程调用实现获取客户信息)

BOS项目笔记 第5天 今天内容安排: 1.添加定区功能 2.定区分页查询 3.hessian入门----远程调用技术 4.基于hessian实现定区关联客户 1. 添加定区 定区可以将取派员.分区.客户信息关联到一起. 页面:WEB-INF/pages/base/decidedzone.jsp 第一步:使用下拉框展示取派员数据,修改combobox的URL地址,发送请求 第二步:在StaffAction中提供listajax方法,查询没有作废的取派员,返回json数据 第三步:在StaffSe