【问题标题】:Can a WCF service be modular like a WEB API service?WCF 服务能否像 WEB API 服务一样模块化?
【发布时间】:2015-05-10 20:46:00
【问题描述】:

我已经看到的所有 WCF 服务都是带有一堆方法的单一“上帝”接口/类。如果我想拥有另一个模块,我总是创建一个新服务。

使用 WEB API 我不必这样做,因为我可以开发几个负责不同功能的控制器。

WCF 服务真的是这样一个拥有许多方法的“神”类吗?还是我错过了什么?

我已经阅读了许多 WCF 与 WEB API 之间的比较,但我没有看到其中任何一个提到这一点。

【问题讨论】:

    标签: .net wcf asp.net-web-api


    【解决方案1】:

    您可以使用 c# partial 修饰符在 WebAPI 中模拟一组控制器。但这可能会使项目中的文件数量增加一倍,因为需要在 WCF 中有一个接口及其实现(如果你将它们分开的话)。

    【讨论】:

      【解决方案2】:

      我假设当您说“WCF 服务”时,您指的是 SOAP 服务。因为 WCF 还支持 REST 样式的服务。

      您可以随意开发 WCF 服务。

      一个区别是 WEB API 服务不公开关于它们自己的元数据。如果您添加(或删除)控制器,那么它不会影响发送给请求客户端的元数据,因为 没有。

      如果您添加或删除服务合同,或者从现有服务合同添加或删除操作,那么您会更改客户端可用的元数据。其中一些客户端可能会中断(像 PHP 这样在运行时使用元数据的客户端),或者可能根本无法使用新的服务合约(因为它们没有与之匹配的代理类)。

      【讨论】:

        【解决方案3】:

        从体系结构来看,WCF 服务比 WEB API 服务更“模块化”。您已经看到了具有一堆方法的单个“上帝”接口/类,可能是因为以前的开发人员通常可能存在以下弊端。

        1. 一个接口适用于所有方法
        2. 在同一个程序集中混合接口和实现

        如果软件架构设计得当,大部分或全部业务逻辑都应该封装在与WCF或Web API没有耦合的模型类中,所以你的Web Api或WCF代码应该是精简的。

        【讨论】:

        • @John,这是设计使然,尽管在实践中,越来越多的 B2B Web 服务是通过 Web API / RESTful 实现的。更准确地说,是您的商业模式和运营模式决定了使用哪些技术。我提到 B2B 和 B2C 的目的是提高对商业模式和运营模式的认识,尽管在此类问答论坛中这可能与上下文无关。
        • 你是对的,约翰。刚刚删除了提及 b2b b2c。
        猜你喜欢
        • 2011-05-28
        • 2011-04-25
        • 2012-05-30
        • 2015-03-20
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        相关资源
        最近更新 更多