WCF Web Api与WebHttpBinding哪个好?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

我是WCF RESTFull服务开发新手,我正在寻找一些有用的信息,以及有关使用webHttpBinding与新的WCF Web API http://wcf.codeplex.com/相比的体验反馈。

我在寻找的是了解webHttpBinding的缺点,以及为什么要使用新的Web API,特别是新API解决的问题。如果可以指向我比较两者的一些博客文章,或只是谈论使用webHttpBinding时的问题,我将不胜感激。先谢谢你。

提问于
用户回答回答于

我想说的主要缺点是webhttpbinding很难处理HTTP特定的问题。如果您所做的只是通过HTTP传递一个对象,而该对象被序列化为XML或JSON,并且可以通过不同的格式传输,那么它会很好用。

HTTP不仅仅是XML和JSON的简单传输协议,它是一种具有丰富语义的应用层协议。Web API特别针对那些希望通过HTTP构建系统的人充分提升HTTP的丰富性。

  1. Web API支持HTTP资源可以根据不同客户端的需求进行多种表示。该频谱的一端可能是一个愚蠢的浏览器,只使用表单URL编码的帖子和GET与服务对话,而另一端可能是使用Atom / OData或基于超媒体的媒体类型的更丰富的客户端。
  2. Web API认为还有其他HTTP特定问题,例如conneg,etags等,它们可以更好地利用中间Web服务器。
  3. Web API的设计考虑了更多的可测试性,因此您可以通过更易测试的方式解决HTTP消息或其他问题。
  4. Web API具有更简化的配置故事。

你可以在这里阅读更多关于基本原理的内容:http : //blogs.msdn.com/b/endpoint/archive/2010/11/01/wcf-web-apis-http-your-way.aspx

用户回答回答于

对我来说最重要的区别是编程模型的改变。您不再编写暴露HTTP操作绑定到HTTP惯例(GET,POST等)的'services'。借助Web API,可以创建客户可以与之交互的“资源”(POCO)。

Web API在处理各种自定义媒体类型(例如PNG图像)方面似乎更好。

最后但并非最不重要的一点,Web API更适合自动化测试。例如,不再需要使用静态上下文类来访问HTTP概念,例如响应代码。您可以使用POCO请求和响应类,这些类可以使用旧式new()运算符在自动化测试中轻松实例化。

现在的Web API只是一个预览版,而在其上构建应用程序可能会受到许可协议方式的风险和禁止(但我没有检查过)。

你有没有考虑过@ serialseb的OpenRasta?它非常稳定,为构建RESTful服务提供了非常好的编程模型。

扫码关注云+社区