Welcome

首页 / 软件开发 / Silverlight / Silverlight与WCF之间的通信(2)利用WCF的双工通信“推送”给SL数据

Silverlight与WCF之间的通信(2)利用WCF的双工通信“推送”给SL数据2011-09-29 博客园 翁玉礼一,Duplex简介

上一个随笔记录了SL利用Timer定时去WCF上取数据再绑定到界面上的问题,今天尝试用了WCF的Duplex 双工通信来做这个事情,也以这个例子来说明WCF中Duplex的使用。

双工通信的原理很简单,我们平时用的是客户端调用服务端的方法来获取数据,而Duplex是将客户端 也当作了服务器,客户端上的方法也可以被调用,以聊天功能为例子,用户A连接到服务器后,之前的做 法是客户端定时取数据,而Duplex是在服务端定时检测数据变化,如果发现了发送给A的信息,那么立即 会调用客户端的方法来推送信息到A。

二,建立Duplex模式的WCF服务

这里以一个简单的聊天功能来说明,WCF提供了三个方法,连接到服务器方法,发送信息方法和接收信 息方法。从服务契约上来说分为两个接口,分别是为客户端提供发送信息和开始聊天方法的IChatService 接口和服务器调用客户端方法的IChatServiceCallBack接口

IChatService.cs文件

namespace ChatWCF
{
[ServiceContract(CallbackContract=typeof(IChatServiceCallBack))]//这里需要定义 IChatService接口的回调接口IChatServiceCallBack
public interface IChatService
{
[OperationContract]
bool SendMessage(MessageInfo msg); //发送信息
[OperationContract]
bool LoginChat(string User,string Partner);//开始聊天模式
}
[ServiceContract]
public interface IChatServiceCallBack //供服务端回调的接口
{
[OperationContract(IsOneWay=true)]
void ReceiveMessages(List<MessageInfo> listMessages);//客户端被服 务端回调后接收信息
}
}