2009-02-14 66 views

回答

8

REST是Web的建筑风格,没有结束HTTTP只是XML文件,而无需SOAP。

WCF是一个framweork,其唯一目的就是将开发人员从底层平台/协议/栈规范中抽象出来。 WCF REST对于暴露POX服务的工具箱来说是一个不好的补充。

RESTfulness需要分发,缺少会话,设计自定义媒体类型或重新使用现有媒体类型以及其他许多您需要考虑的属性。设计一个REST体系结构与设计一个SOA是关于有一个肥皂信封的xml ove rhttp一样多。

1

为了简单起见,HTTP传输将是最广泛使用的传输用的挠性最大量。它也可能适用于几乎所有情况。请注意,有涉及的开销,所以它不是最快的。总是有权衡。

0

我在一段时间内没有看过Indigo,但据我所知,有一些RESTful HTTP不支持并且没有类似的东西,比如WS-Transactions,WS-Security和其他一些。如果你需要这些,你必须切换到SOAP。如果没有,REST应该足够适合您的公司。

还有的性能问题。通过TCP或命名管道提供的编码为二进制XML的SOAP比基于HTTP的文本XML要快一些。

另一方面,为大多数部分添加TCP和命名管道几乎是微不足道的,成本主要围绕应用服务器的部署和配置。

所以,我不排除这两个了从一开始就问题。直到需要时,我也不会将它们添加为特征。我要做的是确保SOAP和REST over HTTP都可以正常使用该服务,以便我可以根据需要在未来扩展。

+0

支持SOAP和RESTful HTTP会使我的代码过于复杂吗?我不确定我将如何实现每个用户和状态管理。 – 2009-02-14 06:18:55

0

一般而言,您的WCF组件不应与任何传输,安全和其他协议和技术耦合。最终目标(可能不是100%可能)将是编写您的服务接口和实现一次,然后能够在任何类型的环境中以任何安全性的任何协议使用它们。所有这些都可以在配置文件和客户端应用程序中定义。

1

你已经问了两个不同的问题而没有意识到它。

第一个问题是,我应该使用什么传输 - 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绑定,请考虑使用其他样式之一。

相关问题