我正在为我公司的CRM软件开发基于WCF的API。将来,它将用于在多个平台上开发应用程序。我知道WCF提供了命名管道,TCP和HTTP传输,但是现在什么事情似乎都在使用RESTful HTTP,我是否应该支持所有这三种复杂的支持?我应该甚至打扰支持除RESTful HTTP之外的任何内容吗?
回答
REST是Web的建筑风格,没有结束HTTTP只是XML文件,而无需SOAP。
WCF是一个framweork,其唯一目的就是将开发人员从底层平台/协议/栈规范中抽象出来。 WCF REST对于暴露POX服务的工具箱来说是一个不好的补充。
RESTfulness需要分发,缺少会话,设计自定义媒体类型或重新使用现有媒体类型以及其他许多您需要考虑的属性。设计一个REST体系结构与设计一个SOA是关于有一个肥皂信封的xml ove rhttp一样多。
为了简单起见,HTTP传输将是最广泛使用的传输用的挠性最大量。它也可能适用于几乎所有情况。请注意,有涉及的开销,所以它不是最快的。总是有权衡。
我在一段时间内没有看过Indigo,但据我所知,有一些RESTful HTTP不支持并且没有类似的东西,比如WS-Transactions,WS-Security和其他一些。如果你需要这些,你必须切换到SOAP。如果没有,REST应该足够适合您的公司。
还有的性能问题。通过TCP或命名管道提供的编码为二进制XML的SOAP比基于HTTP的文本XML要快一些。
另一方面,为大多数部分添加TCP和命名管道几乎是微不足道的,成本主要围绕应用服务器的部署和配置。
所以,我不排除这两个了从一开始就问题。直到需要时,我也不会将它们添加为特征。我要做的是确保SOAP和REST over HTTP都可以正常使用该服务,以便我可以根据需要在未来扩展。
一般而言,您的WCF组件不应与任何传输,安全和其他协议和技术耦合。最终目标(可能不是100%可能)将是编写您的服务接口和实现一次,然后能够在任何类型的环境中以任何安全性的任何协议使用它们。所有这些都可以在配置文件和客户端应用程序中定义。
你已经问了两个不同的问题而没有意识到它。
第一个问题是,我应该使用什么传输 - HTTP,TCP或命名管道?由于您从头开始构建新服务,因此我建议使用HTTP作为传输方式,因为您的服务通过防火墙获得更为简便。其他传输类型主要用于简化与可能不理解HTTP的其他服务和客户端的通信。
第二个问题是,我应该用什么样的风格HTTP Web服务的?我应该采取WS-*栈,一个XML-RPC模式,plain old XML(POX),或RESTful的方法吗?这是一个更复杂的问题。
WCF使ws- *和XML-RPC样式变得容易。Web服务的POX风格在使用WCF进行配置时有点窍门。使用WCF构建真正的RESTful服务非常困难 - 您必须了解WCF如何工作的基本原理,并禁用它为您执行的某些“魔术”。
我认为REST风格的架构风格很简单且经过验证,是一个不错的选择。但是很难配置WCF来正确支持它。如果您作为平台与WCF绑定,请考虑使用其他样式之一。
- 1. iOS支持HTTP Live Streaming以外的任何内容吗?
- 2. Angular 2和Ionic 2 - 如何让他们工作,我应该甚至打扰?
- 3. MySQL:我应该打扰整理吗?
- 4. 如何在SQL-Server中删除表变量?我应该甚至这样做吗?
- 5. -dealloc应该执行除释放内存之外的任何操作吗?
- 6. 我应该用缩进来打扰我的同事吗?
- 7. 我应该支持ASP.NET 1.1吗?
- 8. 我应该支持.NET 2.0吗?
- 9. 我应该担心javascript支持吗?
- 10. 我甚至需要libusb吗?
- 11. RecyclerView中的高度包装内容甚至无法运行Android支持库23.2
- 12. 基本上持久化的单元测试代码 - 我应该打扰吗?
- 13. 甚至在我使用甚至委派之后,元素还没有被删除
- 14. 甚至当我没有使用任何
- 15. Akka-http-json“不支持的内容类型,支持:application/json”
- 16. 一些建议,如果我甚至应该消除消除通知Joomla错误
- 17. android复制保护向前锁定 - 我应该不打扰吗?
- 18. ASP.NET MVC我应该先打扰学习webforms吗?
- 19. 如何加密我网站上的用户内容,以至于我甚至无法访问内容?
- 20. 水线查询 - startWith除字母之外的任何内容?
- 21. 是::用于除“global ::”之外的任何其他内容
- 22. 除'bar'图表之外的任何其他内容highcharts.js
- 23. HTTP:当Range不受支持时,我应该如何回复“Range:bytes =”?
- 24. 是Char.ConvertFromUtf32(0x20)除字符串('')以外的任何内容吗?
- 25. RESTFul - 我应该使用XMLSchema验证吗?
- 26. ExtJS TreePanel RESTful支持
- 27. Angular为什么不看作品,我应该甚至使用它?
- 28. 帮我验证url甚至应该接受.me域名
- 29. 我应该将aspnetdb用于除用户,角色等之外的其他内容吗?
- 30. 除了DirectShow之外,.NET还支持WebCam界面吗?
支持SOAP和RESTful HTTP会使我的代码过于复杂吗?我不确定我将如何实现每个用户和状态管理。 – 2009-02-14 06:18:55