Silverlight和Duplex WCF服务

时间:2011-10-21 03:30:04

标签: c# silverlight wcf silverlight-4.0 pollingduplexhttpbinding

我已经为Silverlight应用程序添加了一个WCF服务引用,这里是我看起来像web.config的绑定

<bindings>
  <wsDualHttpBinding>
    <binding name="wsDualHttpBinding">
      <security mode="None" />
    </binding>
  </wsDualHttpBinding>
  <pollingDuplexHttpBinding>
    <binding name="multipleMessagesPerPollPollingDuplexHttpBinding"
      duplexMode="MultipleMessagesPerPoll" />
  </pollingDuplexHttpBinding>
</bindings>

我有这个片段来创建服务客户端实例

var serviceClient = new DuplexCallerIdServiceClient(
         new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll),
      new EndpointAddress("http://localhost:51445/Service/MyService.svc"));

我担心的是为什么我必须在代码中提供绝对URL。我有一个使用相同服务的winforms应用程序,我可以new DuplexCallerIdServiceClient()创建一个看似理想的服务客户端实例。有什么方法可以解决它。我无法更改绑定设置。

由于

1 个答案:

答案 0 :(得分:0)

您不必对服务URL进行硬编码。替换作为参数传入的硬编码字符串或进行函数调用(或获取某些对象的属性)以使用有效的服务URL填充构造函数。

这是许多人中的一种方式:

var serviceClient = new DuplexCallerIdServiceClient(
     new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll),
  new EndpointAddress(Info.Instance.ServiceURL));

在Info是单个对象的情况下,Instance获取单例的实例,而ServiceUrl是来自......的字符串属性。数据库,配置文件,硬编码启动等...

P.S。小心使用Singleton模式,但作为配置信息实体,它们非常有用。