WCF与Web API 区别(应用场景)

来源:互联网 发布:捷豹系统彩票源码 编辑:程序博客网 时间:2024/06/15 03:45

如果服务需要在http协议上,并且希望利用http协议的各种功能,

如果服务需要被各种客户端(特别是移动客户端)调用,选择Web?API

?应用场景:

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。

现在我们拥有了2个服务框架,一个基于RPC(远程过程调用(Remote?Procedure?Call)?)机制的WCF和一个基于HTTP的ASP.NET?Web?Api。

在我们的开发实践中如何进行选择呢??可以参照知名互联网企业,无论是google,facebook,baidu,新浪还是腾讯。他们对外开放的接口都是基于Http的Web?API,在服务内部框架都是基于SOA架构设计的,通讯机制都是采用RPC机制的,例如Google?Protocol?Buffers?,Facebook?thift。?我们完全也可以这样搭配,在内部通讯采用WCF?+?Protobuf-NET,参看《WCF服务上应用protobuf》,对外的服务采用ASP.NET?WEB?API。WCF的?TCP、Named?Pipes,甚至UDP(在WCF?4.5中)绑定的性能要比HTTP强很多倍,这里有一个几年前的微软的测试报告《WCF?性能基准报告》,对外提供的服务采用Web?API同时也是一个业界标准问题,用WebAPI就很容易的跨越ios,android,wp等移动终端平台,同时有很成熟的OAuth?解决安全问题

 

0 0
原创粉丝点击