我之前用过WCF WebAPI做一些工作,很喜欢它的很多特点,现在我只是在测试ASP.NET Web API,但是它似乎和WCF完全不同。(也就是说它与WCF完全不相关)
有没有人知道ASP.NET 4 Web API包含了WCF WebAPI的哪些特性?
我之前用过WCF WebAPI做一些工作,很喜欢它的很多特点,现在我只是在测试ASP.NET Web API,但是它似乎和WCF完全不同。(也就是说它与WCF完全不相关)
有没有人知道ASP.NET 4 Web API包含了WCF WebAPI的哪些特性?
我对此进行了更多阅读,并找到了一些微软员工写的页面:
WCF Web API 的抽象大致映射到 ASP.NET Web API 如下:
WCF Web API -> ASP.NET Web API
还有 http://wcf.codeplex.com/discussions/319671
集成堆栈支持以下功能:
据我所知,微软在这里有点名字混乱。
我假设您知道WCF是什么,它是一个构建在XML之上的大型框架,允许用户使用各种技术(从SOAP到REST到MSMQ等)构建分布式服务。
对我来说,它太难用了,需要很多引导才能工作,最终他们意识到了这一点,并开始为简单的http服务提供一些默认配置(WCF REST starter kit?)。ASP.NET MVC正在获得动力,它提供的一些功能(例如自动参数匹配)开始出现在WCF中。
现在情况是这样的:
公告:WCF Web API现在是ASP.NET Web API!与ASP.NET MVC 4 Beta一起发布的ASP.NET Web API。本网站上的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),而这种编程模式更适合MVC架构,而不是WCF。虽然他们曾经努力设计一些基于WCF的简单的构建/消费Web服务的方法,但他们最终发现这不是正确的解决方案。更不用说现在许多开发人员都使用ASP.NET MVC,并希望为其Web应用程序创建REST Web服务,而与WCF混淆通常对这些事情来说过于繁琐,我也亲身经历过。
我认为路由机制非常棒,是正确的方法,如果你仔细观察,它们在WCF中包含了部分内容(名称和类型不同,但模式在那里)。所以是的,我认为如果微软不放弃WCF的那部分 我们 应该去做。严格回答,不,我认为在asp.net mvc*中永远不会找到WebGet / WebInvoke,它只是不适合。
是的,自托管可能是目前ASP.NET MVC4中包含的唯一WCF部分。
看起来WCF本身正在消亡,或者至少变得比它应该的重要性要低得多,因此也没有太多的开发工作放到它的特性集中。WCF的新特性本身更多是为了表面功夫。
WCF旨在作为跨进程通信的传输/协议独立方式。即使这个想法是独立的抽象,但它基本上是构建在SOAP堆栈之上。当WCF 3.5引入对REST的支持时,它主要是被“hack”进去的,因为REST完全依赖于传输。使用传输独立的API来支持通过直接使用传输特性进行的进程间通信似乎很不方便。因此,微软首先发布了WCF Rest API Starter Kit,但它从未达到RTM,而只是预览功能,这些功能后来包括在WCF 4和最终的.NET 4.5或WCF Web API中。由于REST依赖于传输,并且目前仅与HTTP一起使用(尽管理论上可以使用其他传输协议),因此该API已移动到.NET部分,它更适合处理HTTP - 目前非常流行的ASP.NET MVC。
WCF Web API已被ASP.NET Web API所取代,后者将WCF Web API的功能与ASPNet MVC的特性合并。ASP.NET Web API是一个新的(02/2012)框架,用于构建和消费HTTP服务,并为构建RESTful服务提供平台。
尽管原问题中没有提到,但值得注意的是,WCF仍然存在,其REST支持在您必须支持现有SOAP(WS-*)服务但希望添加REST以达到更多客户端时仍然有用。
参考资料
这里有一篇关于Web Service、WCF和Web API的好文章 http://goo.gl/T29A5B
Web Service
WCF
Web API(Web API 2.0)
ASP.net Web API 是轻量级的,内置 REST 支持。它更适合移动应用程序。WCF 带有更多选项,比较臃肿。选择其中之一取决于系统的复杂性。