【问题标题】:Multiple Service Address Configs in WCF Silverlight AppWCF Silverlight 应用程序中的多个服务地址配置
【发布时间】:2010-04-01 05:50:05
【问题描述】:

我的团队正在使用 3 层架构和 WCF 构建我们的第一个重要的 Silverlight 应用程序。到目前为止,我们已经在中间层开发了大约 10 个独立的 WCF 服务,而且这个数字只会增长。

通常,表示层(即 Silverlight 应用程序)指向托管在我们的开发服务器上的服务。但是,有时我希望它从 localhost 访问服务 - 即。开发者机器。

有没有一种简单的方法可以更改表示层在哪里寻找服务?有什么方法可以在这里轻松切换选项吗?

【问题讨论】:

    标签: .net wcf silverlight


    【解决方案1】:

    比更新客户端配置文件还要简单??

    您可能会考虑将客户端配置放在一个单独的文件中,并创建一个供“正常”使用,另一个供“开发机器”使用。

    然后在您的 WCF 配置中,使用外部化配置文件:

    <system.serviceModel>
      <client configSource="client.normal.config" />
    </system.serviceModel>
    

    如果您需要切换到“开发机器”使用,请使用

    <system.serviceModel>
      <client configSource="client.localhost.config" />
    </system.serviceModel>
    

    这两个外部化配置文件将如下所示:

    [client.normal.config]

    <?xml version="1.0" encoding="utf-8" ?>
    <client>
        <endpoint name="...." address="http://YourServer/Service1" ...... />
        <endpoint name="...." address="http://YourServer/Service2" ...... />
        ....
        <endpoint name="...." address="http://YourServer/ServiceX" ...... />
    </client>
    

    [client.localhost.config]

    <?xml version="1.0" encoding="utf-8" ?>
    <client>
        <endpoint name="...." address="http://localhost/Service1" ...... />
        <endpoint name="...." address="http://localhost/Service2" ...... />
        ....
        <endpoint name="...." address="http://localhost/ServiceX" ...... />
    </client>
    

    这样,您创建一次配置文件用于正常使用,一次用于本地主机使用 - 您可以轻松地在两者之间切换基本配置。

    这不是 WCF 特定的功能 - 它是 .NET 配置功能。 任何配置节(但不是配置节组)可以外部化到单独的 *.config 文件中。您可以将 WCF 配置的其他部分放入外部配置文件中(但您不能将整个 &lt;system.serviceModel&gt; 节点外部化,因为这是一个配置节组 - 不是配置节)。

    【讨论】:

      【解决方案2】:

      我遵循一种方法,如果在 ServiceReferences.ClientConfig 文件中指定了地址,则使用它,否则我根据主机地址和托管 Web 应用程序中的已知位置重建目标端点,as detailed here .

      另一种方法是在 Web 应用程序的 web.config 中设置目标端点 url,然后将这些配置设置作为其 initParams 的一部分传递给 silverlight 控件。获得目标地址后,您就可以按照上面链接中的说明以编程方式构建端点。

      【讨论】:

        猜你喜欢
        • 2017-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-26
        • 1970-01-01
        • 2012-01-12
        • 2011-12-14
        • 1970-01-01
        相关资源
        最近更新 更多