WEB开发网
开发学院图形图像Flash Silverlight(23) - 2.0通信之调用WCF的双向通信(D... 阅读

Silverlight(23) - 2.0通信之调用WCF的双向通信(Duplex Service)

 2008-12-18 11:54:25 来源:WEB开发网   
核心提示: PollingDuplexServiceHostFactory.csusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ServiceModel;usin

PollingDuplexServiceHostFactory.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
  
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Activation;
  
/**//* 以下部分摘自文档 */
  
// 服务 svc 文件的 Factory 要指定为此类
public class PollingDuplexServiceHostFactory : ServiceHostFactoryBase
{
  public override ServiceHostBase CreateServiceHost(string constructorString,
    Uri[] baseAddresses)
  {
    return new PollingDuplexSimplexServiceHost(baseAddresses);
  }
}
  
class PollingDuplexSimplexServiceHost : ServiceHost
{
  public PollingDuplexSimplexServiceHost(params System.Uri[] addresses)
  {
    base.InitializeDescription(typeof(DuplexService), new UriSchemeKeyedCollection(addresses));
  }
  
  protected override void InitializeRuntime()
  {
    // 配置 WCF 服务与 Silverlight 客户端之间的 Duplex 通信
    // Silverlight 客户端定期轮询网络层上的服务,并检查回调信道上由服务端发送的所有新的消息
    // 该服务会将回调信道上的由服务端发送的所有消息进行排队,并在客户端轮询服务时将这些消息传递到该客户端
  
    PollingDuplexBindingElement pdbe = new PollingDuplexBindingElement()
    {
      // ServerPollTimeout - 轮询超时时间
      // InactivityTimeout - 服务端与客户端在此超时时间内无任何消息交换的情况下,服务会关闭其会话
  
      ServerPollTimeout = TimeSpan.FromSeconds(3),
      InactivityTimeout = TimeSpan.FromMinutes(1)
    };
  
    // 为服务契约(service contract)添加一个终结点(endpoint)
    // Duplex 服务仅支持 Soap11
    this.AddServiceEndpoint(
      typeof(IDuplexService),
      new CustomBinding(
        pdbe,
        new TextMessageEncodingBindingElement(
          MessageVersion.Soap11,
          System.Text.Encoding.UTF8),
        new HttpTransportBindingElement()),
        "");
  
    base.InitializeRuntime();
  }
}

上一页  1 2 3 4  下一页

Tags:Silverlight 通信 调用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接