每一次面试都是提升(一)

面试被问WCF与WebApi的区别,顿时汗如雨下,之前还真没太了解过,特记录一下!

一、WebService、WCF、WCFRest、WebApi的异同

 WebService:

基于SOAP,返回Xml数据。

只支持HTTP协议。

不开源,但是可以被任何识别Xml的客户端调用。

只能寄宿在IIS下。

WCF:

基于SOAP,返回Xml数据。

是WebService(ASMX)的进化版,支持TCP、HTTP、HTTPS、Named Pipes、MSMQ等各种的协议。

WCF最大的问题是它繁琐和大量的配置。

不开源,但是可以被任何识别Xml的客户端调用。

可以寄宿在应用程序、IIS或者服务中。

WCF Rest:

想使用WCF Rest service,必须使用webHttpBindings。

通过使用[WebGet]和[WebInvoke]属性,实现HTTP的GET和POST。

要想使用其他的HTTP请求方式,需要在.svc文件中做一些配置,使IIS可以接受这些特殊的请求。

使用WebGet通过参数传输数据,也需要配置,而且必须指定UriTemplate。

支持XML、JSON以及ATOM等数据格式。

Web API:

这是一个可以简单、容易构建HTTP服务的新框架。

WebAPI是在 .NET Framework上构建REST-ful服务开源的理想平台。

与WCF Rest serivce不同,WebAPI具有Http所有的特点(像 URIs,Requet/response headers/caching/versioning/various content formats)。

WebAPI 也支持一些MVC的特性,像routing,controller,action,results,filter,model binders,IOC container or DI,unit testing,使得它更简单、健壮。

可以寄宿在应用程序或IIS中。

它是轻量级的架构,对具有有限宽带的设备比较友好,比如智能手机。

二、选择WCF还是WebAPI?

1.当你想创建一个支持像消息、消息队列、双工通信等特殊情况的服务时,选择WCF

2.当你想创建一个可以使用快速传输通道(如TCP、命名管道、甚至UDP(WCF4.5),当其他传输通道禁用的时候也能支持HTTP)的服务时,选择WCF 

3.当你想创建一个基于HTTP,可以使用HTTP的全部功能(如URI,请求/响应标头,缓存,版本控制,各种格式的内容)的面向资源的服务时,选择WebAPI

4.当你想把你的服务暴露给包括浏览器、手机、iphone和平板电脑等比较广泛的调用端时,选择WebApi

参考文章:Difference between WCF and Web API and WCF REST and Web Service

原文地址:https://www.cnblogs.com/hetring/p/4493137.html