【问题标题】:WCF - using multiple bindings including REST (WebHttpBinding) on one service library?WCF - 在一个服务库上使用多个绑定,包括 REST (WebHttpBinding)?
【发布时间】:2009-12-08 05:50:27
【问题描述】:

我想公开我的服务层(目前使用 POCO 编写为标准类库)以供外部和内部使用。外部客户端将通过 REST 样式 API 使用它,而在内部我的 MVC 应用程序将通过 net.tcp 绑定使用它以获得更好的性能。

如何优雅地做到这一点?我可以使用 VS2010 Beta 2 REST 功能和其他使用标准 WCF 绑定为 REST 编写 2 个包装器。

我可以在一个包装器中执行此操作吗?或者更好地将我现有的服务重构为 WCF,并使用不同的绑定(如 WebHTTPBinding、WsHttpBinding 等)在各种端点上公开。

问候,

阿杰

【问题讨论】:

    标签: wcf rest visual-studio-2010 .net-4.0-beta-2


    【解决方案1】:

    您的服务库将仅包含服务的实现 - 您的服务(和数据)合同应位于它们自己单独的“合同”程序集中。

    托管问题和使用什么协议由您的服务主机处理 - 这可以是 IIS 或单独的 NT 服务或控制台应用程序或其他东西。这完全独立于您的服务类和服务库。

    所以是的 - 您可以轻松创建一个服务库,然后通过服务主机中的多个端点公开该服务 - 这两件事应该完全分开。

    【讨论】:

    • "这完全独立于您的服务类和服务库。"在实践中,这不一定是全部。例如。如果您想通过两个不同的 SVC 文件公开服务。这将要求您提供专门的实现,即使它们只是从共享实现中派生的。没有它就无法引用服务配置。你同意吗?
    • @Alex:同意,但这对我来说似乎有点极端。为什么你会想要通过两个单独的 *.svc 文件公开相同的服务?另外:生产中的任何东西,我都会自行托管......
    • 我需要在几个 IIS 托管服务中使用它,这些服务由在各种不同技术堆栈(PHP、Java、.NET)上实现的客户端使用。
    【解决方案2】:

    当然,您可以将更多它们添加到配置文件或使用代码。

    【讨论】:

      【解决方案3】:

      VS 2010 Beta 2 的 REST 功能本身是建立在 WCF 之上的,因此如果您想使用它们,无论如何您都必须将您的服务重构为 WCF 服务。到那时,正如 Dani 和 marc_s 所说,您可以非常轻松地通过配置文件向服务添加额外的端点。

      【讨论】:

        猜你喜欢
        • 2012-01-11
        • 2013-04-15
        • 1970-01-01
        • 2011-02-08
        • 2013-06-16
        • 2012-12-29
        • 2014-01-07
        • 2013-08-23
        • 2010-11-14
        相关资源
        最近更新 更多