首页 / 软件开发 / Silverlight / 稳扎稳打Silverlight(23) - 2.0通信之调用WCF的双向通信(Duplex Service)
稳扎稳打Silverlight(23) - 2.0通信之调用WCF的双向通信(Duplex Service)2010-04-26 cnblogs webabcd介绍Silverlight 2.0 调用 WCF 的双向通信服务(Duplex Service) 。开发一个服务端主动向客服端发送股票信息的程序,首先客户端先向服务端发送需要监控的股票的股票代码,然后服务端在该股信息发生变化的时候将信息推送到客户端。服务端:定义服务契约及回调接口从当前上下文获取回调的客户端信道需要的话则向客户端信道“推”消息客户端:构造 PollingDuplexHttpBinding 并在其上创建 IDuplexSessionChannel 的信道工厂异步方式打开信道工厂异步方式打开信道构造需要发送到服务端的消息 System.ServiceModel.Channels.Message异步向服务端发送消息监听指定信道,用于异步方式接收服务端返回的消息不需要再接收服务端的消息则关闭信道示例服务端:IDuplexService.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Channels;
/**//// <summary>
/// IDuplexService - 双工(Duplex)服务契约
/// CallbackContract - 双工(Duplex)服务的回调类型
/// </summary>
[ServiceContract(Namespace = "Silverlight20", CallbackContract = typeof(IDuplexClient))]
public interface IDuplexService
{
/**//// <summary>
/// 客户端向服务端发送消息的方法
/// </summary>
/// <param name="receivedMessage">客户端向服务端发送的消息 System.ServiceModel.Channels.Message</param>
[OperationContract(IsOneWay = true)]
void SendStockCode(Message receivedMessage);
}
/**//// <summary>
/// 双工(Duplex)服务的回调接口
/// </summary>
public interface IDuplexClient
{
/**//// <summary>
/// 客户端接收服务端发送过来的消息的方法
/// </summary>
/// <param name="returnMessage">服务端向客户端发送的消息 System.ServiceModel.Channels.Message</param>
[OperationContract(IsOneWay = true)]
void ReceiveStockMessage(Message returnMessage);
}