1

我正在为我公司的 CRM 软件开发基于 WCF 的 API。未来,它将用于在多个平台上开发应用程序。我知道 WCF 提供命名管道、TCP 和 HTTP 传输,但是当现在一切似乎都在使用 RESTful HTTP 时,我是否应该为支持所有这三种传输的复杂性而烦恼?

4

5 回答 5

8

REST 是 Web 的架构风格,而不仅仅是没有 SOAP 的 html 文件。

WCF 是一个框架,其生活的唯一目的是将开发人员从底层平台/协议/规范堆栈中抽象出来。WCF REST 是对工具包的一个糟糕的补充,无法让您公开 POX 服务。

RESTful 需要分发、缺少会话、设计自定义媒体类型或重用现有媒体类型,以及您需要考虑的许多其他属性。设计 REST 架构与 rhttp 之上的 xml 一样,就像设计 SOA 架构与拥有一个肥皂信封一样。

于 2009-02-15T10:00:49.933 回答
1

为简单起见,HTTP 传输将是使用最广泛且灵活性最大的传输。它也可能适用于几乎所有情况。请注意,涉及开销,因此它不是最快的。总会有取舍。

于 2009-02-14T06:04:07.807 回答
1

你在没有意识到的情况下问了两个不同的问题。

第一个问题是,我应该使用哪种传输方式——HTTP、TCP 或命名管道?由于您正在从头开始构建新服务,因此我建议使用 HTTP 作为传输,因为您的服务将更容易通过防火墙。其他传输类型主要用于简化与可能不理解 HTTP 的其他服务和客户端的通信。

第二个问题是,我应该使用哪种风格的 HTTP Web 服务?我应该采用WS-*堆栈、XML-RPC模式、普通旧 XML (POX) 还是RESTful方法?这是一个更复杂的问题。

WCF 使 ws-* 和 XML-RPC 样式变得简单。使用 WCF 配置 Web 服务的 POX 样式有些棘手。使用 WCF 构建一个真正的 RESTful 服务非常困难——您必须了解 WCF 如何工作的基础知识并禁用它为您执行的一些“魔法”。

我认为 RESTful 架构风格简单且经过验证,是一个不错的选择。但是很难配置 WCF 以正确支持它。如果您将 WCF 作为您的平台,请考虑使用其他样式之一。

于 2009-02-17T14:54:34.783 回答
0

我有一段时间没有看 Indigo,但据我记得,有些东西是 RESTful HTTP 不支持的,也没有类似的东西,比如 WS-Transactions、WS-Security 和其他一些东西。如果您需要这些,则必须切换到 SOAP。如果没有,REST 对您的公司来说应该已经足够好了。

还有性能问题。SOAP 编码为 TCP 上的二进制 XML 或命名管道提供将比 HTTP 上的文本 XML 快一点。

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

所以,我不会从一开始就排除这两个问题。在需要之前,我也不会将它们添加为功能。不过,我要做的是确保 SOAP 和 REST over HTTP 都能为服务正常工作,这样我就可以在未来需要时进行扩展。

于 2009-02-14T06:11:33.873 回答
0

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

于 2009-02-14T17:46:14.687 回答