【问题标题】:Exposing data from WCF services as oData将 WCF 服务中的数据公开为 oData
【发布时间】:2011-10-16 02:19:34
【问题描述】:

是否可以将 oData 与 WCF 服务应用程序一起使用但不使用 WCF 数据服务?

如果有人能更深入地了解 oData,那就太好了。我已经对此主题进行了一些谷歌搜索,但每当我搜索“wcf odata”时,我都会获得有关 WCF 数据服务的信息。

任何帮助/链接将不胜感激。

【问题讨论】:

    标签: wcf wcf-data-services odata


    【解决方案1】:

    WCF 数据服务 是通用 OData 协议的 Microsoft 实现。因此,只有 WCF 数据服务是/支持/实现 OData - “正常” WCF 服务(并且可以)。

    您可能需要详细说明为什么您觉得需要或强烈要求使用 OData 但不使用 WCF 数据服务。该设置有什么问题/问题? 为什么您只想使用“普通”WCF 服务??

    更新: 好的,所以您希望拥有以不同方式和不同方法公开数据的服务。您可以做的是创建一个常规的 WCF 服务,该服务同时公开 SOAP 端点和 webHttpBinding REST 端点。这将起作用 - 但它是一个“常规”WCF 服务,其方法接受参数并返回一些数据结构。这不是 WCF 数据服务 (OData)。

    OData 更像是一种“这是我的数据集合,您可以在其中浏览”的方法 - 它更多的是使用 REST 向外部世界公开整个数据模型。这不会与 SOAP 混合和匹配——后者更面向过程,例如LoadCustomerSaveInvoice 等等。

    因此,虽然绝对有可能让面向过程的 WCF 服务同时公开 SOAP 和 REST 端点,但我真的不明白如何混合和匹配“公开此资源”类型的方法带有 SOAP 绑定的 WCF 数据服务/OData - 我相信这不起作用。

    因此,如果您必须公开 WCF 数据服务 (OData) 的数据模型,您将需要为 SOAP 客户端创建第二个外观完全不同的常规 WCF 服务,最终可能基于相同的数据 (例如访问同一个数据库),但它的“脸”看起来会完全不同。

    【讨论】:

    • 实际上,我们正在寻求开发以不同格式公开数据的服务,所以我只是在想,如果我们可以将所有内容合二为一。不是我想用普通的 wcf 服务,只要符合要求。
    • 数据应该通过 oData 公开,并且应该是 restful。客户也可能需要 SOAP。如果有任何信息可以用 wcf 清除我对 oData 的概念,用它可以做什么,那将是非常棒的。
    • 这就是我的想法,在阅读了有关内容之后,拥有两种不同的服务。我还是想确认一下。谢谢!
    • @marc_s 感谢您对 odata 和 WCF 进行了相当不错的简要介绍。您能否将我引导到一个信息更丰富的链接,该链接详细讨论了集成 odata 和 WCF REST 的内容?
    • @JeganKunniya:我会以MSDN WCF REST developer center 为起点
    【解决方案2】:

    Microsoft 有一个名为WCF WebApi (NuGet Package) 的新(ish)项目,它简化了 RESTful WCF。它确实需要关注REST 的“表示”部分,因此您可以基于内容协商(或可选的任何您想要的约定)以多种表示形式(JSON、XML、oData、PNG 等)公开您的数据。相同的服务合同操作。目前融入框架的是支持oData GET queries的能力,只需返回一个集合.AsQueryable()

    虽然这不是一个纯粹的 WCF/oData 解决方案,但正如您所说的那样,我想我会提到该项目,以防它符合您的特定要求。当前的 Go-Live 许可可能被证明是令人望而却步的,该代码的“预览”状态也是如此;但如果没有,这可能是您的解决方案。

    * 更新 * 该项目已纳入 ASP.NET(通常与 ASP.NET MVC 结合使用),不再属于 WCF 团队。新产品名为ASP.NET WebAPI

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      相关资源
      最近更新 更多