为什么WCF客户端依赖于app.config文件?
就像很多事情一样,我相信这有一个很好的理由,所以请帮助我理解 默认情况下,为什么WCF服务在app.config中存储设置? 尝试使用多个Silverlight类库是非常令人沮丧的。这些类库应该彼此完全独立,而这种对app.config的依赖似乎会导致以下问题:为什么WCF客户端依赖于app.config文件?,wcf,silverlight,web-services,.net-3.5,Wcf,Silverlight,Web Services,.net 3.5,就像很多事情一样,我相信这有一个很好的理由,所以请帮助我理解 默认情况下,为什么WCF服务在app.config中存储设置? 尝试使用多个Silverlight类库是非常令人沮丧的。这些类库应该彼此完全独立,而这种对app.config的依赖似乎会导致以下问题: 单一责任原则-我应该能够添加对类库的引用并执行。如果类库使用了服务引用,那么在我开始编写代码之前,这个想法就已经过时了 Muddy Configuration-为了让其他库正常工作,我必须将服务配置复制并粘贴到“主”应用程序配置中。如果
一定有更好的办法。为什么WCF不至少将服务配置分离为ServiceName.config或复制到输出目录的内容。我错过了什么?你如何处理这个问题?因为备选方案也不太好。“ServiceName.config”的问题是ServiceName还需要可配置
根本问题是在库中有服务引用。库组件不能为应用程序指定绑定。所以您的SRP参数不成立。我同意@Henk-库程序集不应该有WCF引用。如果出于某种原因它确实需要依赖注入,我将使用依赖注入,并将服务引用传递给库函数——这对于最大限度地提高测试效益至关重要 我也不相信你所说的“以编程方式创建端点不漂亮”。创建和分配端点只需几行代码,这是我在Silverlight组件中几乎完全使用的一种技术(例如,如果ServiceReferences.ClientConfig文件中没有指定地址,那么我会返回到宿主应用程序中的已知服务位置,在这种情况下,这些端点是通过编程方式创建的) 基本上,如果您不介意以编程方式创建端点所需的几行代码,那么您可以将地址详细信息存储在任何配置文件中的任何位置。如果您使用纯声明性方法,则只需要将地址存储在app.config中