Silverlight and Duplex WCF Service

本文关键字:Service WCF Duplex and Silverlight | 更新日期: 2023-09-27 18:12:01

我已经添加了一个WCF服务引用到Silverlight应用程序,这是从web绑定的内容。我的配置看起来像

<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()来创建一个服务客户端实例,这似乎很理想。我有什么办法可以解决这个问题吗?我不能更改绑定设置。

谢谢

Silverlight and Duplex WCF Service

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

这是许多方法中的一种:

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

Info是一个单例对象,Instance是一个单例对象的实例,ServiceUrl是一个字符串属性,来自…无论在哪里。数据库,配置文件,硬编码启动等…

注:注意Singleton模式,但是作为配置信息实体,它们是非常有用的。