惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
Jina AI
Jina AI
H
Help Net Security
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
L
LangChain Blog
Recorded Future
Recorded Future
F
Full Disclosure
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ
GbyAI
GbyAI
B
Blog RSS Feed
T
The Blog of Author Tim Ferriss
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
M
MIT News - Artificial intelligence
爱范儿
爱范儿
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Y
Y Combinator Blog
B
Blog
WordPress大学
WordPress大学
Blog — PlanetScale
Blog — PlanetScale
W
WeLiveSecurity
MongoDB | Blog
MongoDB | Blog
Cloudbric
Cloudbric
N
News and Events Feed by Topic
The Cloudflare Blog
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
D
DataBreaches.Net
博客园 - 【当耐特】
T
Troy Hunt's Blog
V
Visual Studio Blog
V2EX - 技术
V2EX - 技术
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google Online Security Blog
Google Online Security Blog
The GitHub Blog
The GitHub Blog

博客园 - ringwang

【转】 软件需求分析的工作步骤和流程 【转】软件需求分析方法 大网站安全防护措施解读【转】 互联网金融安全1【转】 python环境下载地址 批处理脚本学习 自动复制部署 苹果系统里面部署ASP.NET 23种设计模式的基本介绍 .NET MVC控制器分离到类库的方法 MYSQL临时表创建索引 【转】MySQL 性能优化的最佳20多条经验分享 【转】ASP.NET MVC IOC 之AutoFac攻略 windows系统命令服务安装卸载 Mysql字段操作—增加字段、删除字段、修改字段名、修改字段类型(约束条件) 【转】 使用lftp传输文件的shell脚本 Oracle异常处理,动态游标 java读取文件批量插入记录 linux vmstat 系统结果说明
【转】WCF与Web API 区别(应用场景)
ringwang · 2015-01-12 · via 博客园 - ringwang

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