我过去使用WCF WebAPI做了一些工作,并且非常喜欢它的很多功能,我现在只是玩ASP.NET Web API而且看起来完全不同(IE完全从WCF)。
有谁知道ASP.NET 4 Web API中包含WCF WebAPI的哪些功能?
答案 0 :(得分:22)
我已经对此进行了一些阅读,并在MS上发现了几页:
WCF Web API抽象映射到ASP.NET Web API大致如下
WCF Web API - > ASP.NET Web API
和http://wcf.codeplex.com/discussions/319671
集成堆栈支持以下功能:
答案 1 :(得分:14)
据我所知,微软在这里做了一些命名混淆。
我假设您知道WCF的全部内容,这个基于XML的大型框架允许用户使用各种技术(从SOAP到REST再到MSMQ等)构建分布式服务。
很难使用(至少对我来说)并且需要大量的引导来使它工作,最终他们意识到这一点并开始为简单的http服务提供一些默认配置(任何人都可以使用WCF REST入门套件?)。 ASP.NET MVC正在获得动力,它提供的一些功能(例如自动参数匹配)开始出现在WCF中。
现在情况如此:
公告:WCF Web API现在是ASP.NET Web API! ASP.NET Web API 与ASP.NET MVC 4 Beta一起发布。 WCF Web API和WCF支持 本网站上的jQuery内容将于2012年底删除。
http://wcf.codeplex.com/wikipage?title=Getting%20started:%20Building%20a%20simple%20web%20api
那就更好了。
我很确定应该可以在WCF之上托管asp.net mvc4 webapi(如果你需要的话),但我找不到可以证明我正确(或错误)的文档。
更新(不能作为评论): 等等,“将通信技术的子集从库/框架移动到另一个”和“替换WCF”之间存在巨大差异。我个人认为WCF是为某种通信概念设计的,它有一个相当酷的设计,但分布式计算有点转向新的(和更简单的)解决方案(看看功能丰富的SOAP与精益灵活的REST,虽然很多人仍然以RPC方式使用REST),我认为这种编程模式比WCF更适合MVC架构。努力设计了一些在WCF之上构建/使用Web服务的简单方法,但他们最终发现它不是正确的解决方案。
更不用说许多开发人员现在使用ASP.NET MVC并希望为他们的Web应用程序做休息Web服务,弄乱WCF对于这类事情来说往往有点过头了,而且我已经在我自己的皮肤上经历过这种情况。
我认为路由机制很棒且是正确的方法,如果仔细观察,它们会在WCF中包含部分内容(具有不同的名称和类型,但模式在那里)。所以,是的,我认为如果MS不解雇WCF WE 的那部分应该这样做。要严格回答,不,我认为你永远不会在asp.net mvc *中找到WebGet / WebInvoke,它只是不适合。
是的,自主机可能是目前ASP.NET MVC4中唯一包含的WCF。
答案 2 :(得分:14)
看起来WCF本身在某种程度上已经死亡或者至少变得不那么重要了,因为它本身也没有更多的开发工作量。 New features in WCF本身更具美感。
WCF被设计为进程间通信的独立于传输/协议的方式。即使这个想法是独立的抽象,它主要建立在SOAP堆栈之上。当WCF 3.5为REST提供支持时,它主要被黑客入侵,因为REST完全是关于传输依赖性的。使用传输独立API来支持通过直接使用传输功能完成的进程间通信显得不方便。结果MS首次发布了从未到达RTM的WCF Rest API Starter Kit,但它是后来包含在WCF 4中的功能的预览,最后是.NET 4.5或WCF Web API。因为REST依赖于传输并且目前仅用于HTTP(即使理论上可以使用其他传输协议),API也被移动到更适合HTTP处理的.NET部分 - 当前非常流行的ASP.NET MVC。
答案 3 :(得分:9)
WCF Web API由ASP.NET Web API取代,后者从WCF Web API获取功能,并将它们与ASPNet MVC的功能合并。 ASP.NET Web API是用于构建和使用HTTP服务的新(02/2012)框架,以及用于构建RESTful服务的平台。
虽然不在最初的问题中,但似乎值得注意的是,当您拥有必须支持的现有SOAP(WS- *)服务但希望添加REST以接触更多客户端时,WCF仍然存在并且其REST支持仍然有用。 / p>
参考
答案 4 :(得分:1)
this MSDN page上的以下摘录总结了这种困境。
使用WCF创建可通过各种传输访问的可靠,安全的Web服务。使用ASP.NET Web API创建可从各种客户端访问的基于HTTP的服务。如果要创建和设计新的REST样式的服务,请使用ASP.NET Web API。 尽管WCF为编写REST样式的服务提供了一些支持,但ASP.NET Web API中对REST的支持更加完善,所有未来的REST功能都将在ASP.NET Web API中进行。如果你拥有现有的WCF服务,并且您希望公开其他REST端点,使用WCF和WebHttpBinding。
答案 5 :(得分:1)
以下是关于Web服务,WCF和Web API http://goo.gl/T29A5B
的好文章网络服务
<强> WCF 强>
Web API(Web API 2.0)
答案 6 :(得分:0)
ASP.net web api是轻量级的,内置REST支持。它更适合移动应用程序.WCF臃肿,有更多选项。这取决于系统的复杂性来选择其中之一。