【问题标题】:Why do WCF clients depend on the app.config file?为什么 WCF 客户端依赖于 app.config 文件?
【发布时间】:2011-01-28 08:33:45
【问题描述】:

就像很多事情一样,我确信这是有充分理由的,所以请帮助我理解...

为什么默认情况下 WCF 服务会在 app.config 中存储设置?

尝试与多个 Silverlight 类库一起工作非常令人沮丧。这些类库本来应该是完全相互独立的,而这种对app.config的依赖似乎会引起以下的头疼:

  1. 单一职责原则 - 我应该能够添加对类库的引用并继续。如果该类库使用服务引用,我什至在开始编写代码之前就提出了这个想法。
  2. Muddy 配置 - 要让其他库正常工作,我必须将服务配置复制并粘贴到“主”应用程序配置中。如果端点发生任何变化,我不能只担心该类 DLL 的新版本 - 我也必须担心使用它的任何东西。
  3. 复杂的替代方案 - 以编程方式创建端点并不漂亮。期间。

必须有更好的方法。为什么 WCF 至少不将服务配置分离到 ServiceName.config 或复制到输出目录的内容中。我错过了什么?你是怎么处理的?

【问题讨论】:

    标签: wcf silverlight web-services .net-3.5


    【解决方案1】:

    我同意@Henk - 库程序集不应该有 WCF 引用。如果由于某种原因它确实需要一个,我会使用依赖注入,并将服务引用传递给库函数 - 这对于最大化测试收益至关重要

    我也不认同您关于“以编程方式创建端点并不漂亮”的论点。创建和分配端点只是几行代码,并且是我几乎专门用于我的 Silverlight 组件的一种技术(例如,如果在 ServiceReferences.ClientConfig 文件中没有指定地址,那么我会失败返回到托管应用程序中的已知服务位置,在这种情况下,这些端点是通过编程方式创建的)。

    基本上,如果您不介意以编程方式创建端点所需的几行代码,那么您可以将地址详细信息存储在任何配置文件中的任何位置。如果您要采用纯声明式方法,则只需将地址存储在 app.config 中。

    【讨论】:

      【解决方案2】:

      因为替代品也不漂亮。 “ServiceName.config”的问题在于 ServiceName 也需要可配置。

      根本问题是首先在库中有服务引用。并且库组件不能指定应用程序的绑定。所以你的 SRP 论点不成立。

      【讨论】:

        猜你喜欢
        • 2021-01-15
        • 2013-07-04
        • 1970-01-01
        • 2023-03-10
        • 2011-12-03
        • 1970-01-01
        • 2011-12-03
        • 1970-01-01
        相关资源
        最近更新 更多