Web api 

主要功能:

支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作

请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。

.请求的回复通过Http Status Code表达不同含义,并且客户端可以通过Accept header来与服务器协商格式,例如你希望服务器返回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。

总结:

现在我们拥有了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 解决安全问题。

参考:

http://www.cnblogs.com/developersupport/p/3305458.html

http://www.cnblogs.com/shanyou/archive/2012/09/26/2704814.html http://www.cnblogs.com/chenxizhang/archive/2011/06/21/2085979.html

【转】WCF与Web API 区别(应用场景)相关推荐

  1. WCF VS Web API

    微软官方链接:https://docs.microsoft.com/en-us/dotnet/framework/wcf/wcf-and-aspnet-web-api? 基本名词解释 SOAP: &q ...

  2. WEB API系列(一):WEB API的适用场景、第一个实例

    在我前一篇博客<WebAPI前置知识:HTTP与RestfulAPI>中已经给各位简单介绍了HTTP协议与RestFul API的关系,以及一些基本的HTTP协议知识,在这些知识的铺垫下, ...

  3. WCF 和 ASP.NET Web API

    地址:https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/wcf-and-aspnet-web-api WCF 是 Microsoft 为生成面 ...

  4. 如何选择Web Service/WCF/Web API

    在.net平台下,有很多的技术选择来构建一个HTTP Services. Web Service 1.它是基于SOAP协议的,数据格式是XML 2.只支持HTTP协议 3.它不是开源的,可被任意一个了 ...

  5. Entity Framework 6 Recipes 2nd Edition(9-1)译-用Web Api更新单独分离的实体

    第九章 在N层结构的应用程序中使用EF 不是所有的应用都能完全地写入到一个单个的过程中(就是驻留在一个单一的物理层中),实际上,在当今不断发展的网络世界,大量的应用程序的结构包含经典的表现层,应用程, ...

  6. 浅谈web api和Webservice

    浅谈web api和Webservice webapi用的是http协议,webservice用的是soap协议 webapi无状态,相对webservice更轻量级.webapi支持如get,pos ...

  7. WEB API 系列(二) Filter的使用以及执行顺序

    在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don't Repeat Yourself)思想 ...

  8. ASP.NET Web Api 教程

    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[七]--实现资源的分页 摘要: 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.h ...

  9. API的应用场景设计和实现

    概述 WEB API的应用场景设计和实现非常丰富,例如:将已有系统的功能或数据开放给合作伙伴或生态圈:对外发布可嵌入到其他网页的微件:构建前后端分离的WEB应用:开发跨不同终端的移动应用:集成公司内部 ...

最新文章

  1. Dreamweaver——如何使网页中的第一个DIV水平居中
  2. vux 组件打造手机端项目
  3. android内存优化方法,Android开发内存优化注意事项和方法
  4. ArcMap导出属性表为Excel文件
  5. 最简单的 java 防反编译技巧
  6. html5表单实现简单计算器
  7. 数据结构---关键路径
  8. 【DIY贴片机】基于opencv识别定位电子元件
  9. pc电脑上浏览手机网站在线wap浏览器或模拟器软件
  10. 985,211,双一流,34所,C9,国防七子,五虎四小龙,五院四系,东南西北中傻傻分不清
  11. 推荐新唐工业级ARM9(NUC972DF62Y),集成64M DDR2,多至11个串口
  12. 华为OD机试 - 勾股数元组
  13. Android破解九宫格密码
  14. 停车场web项目(内含有数据库)
  15. 彻底解决The last packet successfully received from the server was * milliseconds ago问题
  16. qt.modbus: (RTU client) Discarding response with wrong CRC, received: 16448 , calculated CRC: 49303
  17. 站内搜索案例:提高商品成交率,创造卓越业绩
  18. 计算机基础知识试题答案6,计算机基础知识试题及答案
  19. java 匿名类_浅谈Java的匿名类
  20. 简单又详细的网页爬虫案例

热门文章

  1. hdu 1253 胜利大逃亡 (广搜)
  2. iis10 HTTP 错误 500.19 - Internal Server Error
  3. Linux下捕捉信号
  4. Bootstrap页面布局10 - BS表格
  5. div隐藏select显示的解决办法(就死select挡住了div) 不是网上找到的那五种
  6. explicitWidth与width,和用setActualSize()方法有什么区别?
  7. Spring、Struts整合
  8. project文件_移动和发出时通过UploadsReWriter读取的任意文件
  9. Java中 == 和 equals 的区别是什么?
  10. 传统动态代理实现计算器类日志功能