各种HTTP服务解决方案(WCF\Web API\Web Service)比较

.net中的HTTP服务解决方案:Web Service、WCF、Web API

参考一:
wcf是基于soap协议,数据格式是xml,而webapi是基于RESTful标准的,数据格式多样化,例如xml,json,ATOM。wcf配置繁琐,而webapi它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作。更重要的是它仅仅是一个URL链接,可以在不同的平台运转,同时支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮。

参考二:
Web Service
1、它是基于SOAP协议的,数据格式是XML
2、只支持HTTP协议
3、它不是开源的,但可以被任意一个了解XML的人使用
4、它只能部署在IIS上

WCF
1、这个也是基于SOAP的,数据格式是XML
2、这个是Web Service(ASMX)的进化版,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.
3、WCF的主要问题是,它配置起来特别的繁琐
4、它不是开源的,但可以被任意一个了解XML的人使用
5、它可以部署应用程序中或者IIS上或者Windows服务中

WCF Rest
1、想使用WCF Rest service,你必须在WCF中使用webHttpBindings
2、它分别用[WebGet]和[WebInvoke]属性,实现了HTTP的GET和POST动词
3、要想使用其他的HTTP动词,你需要在IIS中做一些配置,使.svc文件可以接受这些动词的请求
4、使用WebGet通过参数传输数据,也需要配置。而且必须指定UriTemplate
5、它支持XML、JSON以及ATOM这些数据格式

Web API
1、这是一个简单的构建HTTP服务的新框架
2、在.net平台上Web API 是一个开源的、理想的、构建REST-ful 服务的技术
3、不像WCF REST Service.它可以使用HTTP的全部特点(比如URIs、request/response头,缓存,版本控制,多种内容格式)
4、它也支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮
5、它可以部署在应用程序和IIS上
6、这是一个轻量级的框架,并且对限制带宽的设备,比如智能手机等支持的很好
7、Response可以被Web API的MediaTypeFormatter转换成Json、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

参考三:
Web api
支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作
请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。
应用场景:
如果服务需要在http协议上,并且希望利用http协议的各种功能,
如果服务需要被各种客户端(特别是移动客户端)调用,选择Web API

WCF
分布式通信框架的集大成者
应用场景:
1.SOAP Services:这是因为WCF服务是基于消息的通讯机制,而它的消息是被封装为一个SOAP Envelope(SOAP 信封的)
2.WebHttp Services:是在传统的SOAP Services基础上的一个增强,它仍然是基于操作(Operation)的,只不过这些Operation可以直接通过Uri访问到,而无需客户去编写一个特殊的客户端。(ps: 实质是webservice,用的最多的)
同时,WebHttp Services提供了两种不同的消息格式,第一种是XML,第二种是Json。这将更加有利于诸如Javascript这种客户端来访问服务。
要实现WebHttp,我们首先要添加一个引用
3.WCF Data Service:支持两种数据模型,一种是LINQ to SQL, 一种是ADO.NET Entity Frmawork。
4. Workflow Services:这是一个很有意思的服务。这是在.NET Framework 4.0中开始出现的,也就是随着Workflow Foundation升级到4.0之后,提供了一种全新的服务类型,简单地来说,它是可以直接与Workflow Foundation(工作流)想结合的一种服务。
5.RIA Services:RIA的意思是,Rich Internet Application。在微软平台上,Silverlight就是RIA战略中的核心产品,所以很显然,RIA Service主要就是为Silverlight服务的。这个是.NET Framework 4.0中才有的功能,并且还需要安装RIA Service Toolkit。

参考四:
Web service
    Web Service的主要目标是跨平台的可互操作性。
    
    基于SOAP协议,数据格式是XML?不能是Json吗?
    支持HTTP协议
    不是开源的,可以被任何了解XML的人使用
    只能部署在IIS上

WCF
    WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合
    Address:每一个WCF的Service都有一个唯一的地址。这个地址给出了Service的地址和传输协议(Transport Protocol)
    Binding:封装好的通信方式
    契约(Contact) 数据契约,消息契约,操作契约...----------Service Contract, Data Contract, Fault Contract和Message Contract

    统一性,面向对象得方式创建面向服务的应用程序;
    互操作性,跨进程,跨平台,跨机器的通信
    安全与信赖,
    兼容性,版本之间的兼容
    
    基于SOAP协议(数据交换协议),数据格式是XML
    web service 进化版,支持HTTP,HTTPS, TCP ,Named Pipes,MSMQ(资源访问协议
    配置繁琐
    部署在应用程序,IIS,windows 服务中。
    
Web API
    简单的HTTP服务的新框架
    在.net平台上可以Web API 是一个开源的,理想的可以构建Rest-ful服务的技术
    可以使用HTTP的全部特点(比如uris,缓存,Request/response头,多种内容格式,版本控制)
    也支持MVC特征(路由,控制器,Filter,模型绑定,控制反转IOC ,依赖注入DI,单元测试),这些使程序更简单,更健壮
    可以部署在应用程序???(如何部署在应用程序上)和IIS上
    轻量级框架,支持限制宽带的设备(智能手机)支持较好
    Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。

posted @ 2018-08-17 10:45  skybirdzw  阅读(271)  评论(0编辑  收藏  举报