ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-21 11:02:39  阅读:146  来源: 互联网

标签:WebAPI Web Remoting HTTP Service 区别 XML SOAP


 

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元素中包含调用的方法或远程过程的名称,以及代表方法参数的元素;

 

 

标签:WebAPI,Web,Remoting,HTTP,Service,区别,XML,SOAP
来源: https://www.cnblogs.com/laokchen/p/13551556.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有