WebAPI 和 WebService的区别,Remoting 和 Web Service的区别

 

webapi用的是http协议,webservice用的是soap协议 
webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作

http soap关系

http:是一个客户端和服务器端请求和应答的标准(TCP)。http协议其目的是为了提供一种发布和接收htttp页面的方法

一http协议的客户端与服务器的交互:由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如”HTTP/1.1 200 OK”,和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

soap 协议:它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。soap在http协议的基础上,一个基于XML的协议。

不同:都是底层的通信协议,请求包的格式不同而已,soap包是XML格式,http纯文本格式。

关系:SOAP是个通信协议, SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数, 放在HTTP BODY上提交个WEB SERVICE服务器(SERVLET,ASP什么的) 处理完成后,结果也写成XML作为RESPONSE送回用户端, 为了使用户端和WEB SERVICE可以相互对应,可以使用WSDL作为这种通信方式的描述文件,利用WSDL工具可以自动生成WS和用户端的框架文件,SOAP具备把复杂对象序列化捆绑到XML里去的能力。 
  

WCF和WEB API我该选择哪个? 
  1、当你想创建一个支持消息、消息队列、双工通信的服务时,你应该选择WCF 
  2、当你想创建一个服务,可以用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他传输通道不可用的时候也可以支持HTTP。 
  3、当你想创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API 
  4、当你想让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API

SOAP:Simple Object Access Protocol 
简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。

HTTP协议: 应用层 
TCP协议 : 传输层

 

 

简单的说,Web Service 主要是可利用HTTP,穿透防火墙;而 Remoting 可以利用 TCP/IP ,二进制传送提高效率;

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)起来相对比较容易点。
从实现的角度来讲,首先 Web Service 必须把暴露给客户端的方法所在的类继承于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)自己喜欢的宿主服务器,所以从这些方面上来讲 Web Service 其实上是 .Net Remoting 的一种特例。
1、Remoting 是 MarshByReference 的,可以传变量的引用,直接对服务器对象操作。速度快,适合Intrane(企业内部互联)。Web Service 是 MarshByValue 的,必须传对象的值。速度慢,可以过Firewall,配置比较简单,适合Internet(因特网);
2、一般来说,Remoting 是和平台相关的不跨平台的,需要客户和服务器都是.Net,但可配置特性比较好,可以自定义协议。Web Service 可以做到跨平台通信,但必须采用SOAP协议;
3、SOAP 消息有 RPC 和文档两种样式。文档样式的body元素中包含一个或多个元素,可以是任何内容,只要接受者理解就行了。RPC样式的的body元素中包含调用的方法或远程过程的名称,以及代表方法参数的元素;

 

 

posted on 2022-01-21 10:51  一个小目标一次坑记录  阅读(496)  评论(0编辑  收藏  举报