使用WCF实现服务器向客户端的信息推送

前断时间的一个项目中需要实时提醒待办事项,而客户又不想花钱买MAS 机(电信服务商提供的企业短信接口)。所以我们打算将OA中的待办事项通过桌面客户端来进行提醒,但是客户端如果采用定时刷新的方式直接在OA系统中进行查询的话,服务器压力可想而知。于是想到了由服务器将待办任务推送到客户端。

客户端和待办服务之间的关系大概这样的:


其中,每个应用中都会有提供一个接口,该接口返回当前应用中所有待办任务。TodoServer每时间段获所有应用的待办,并将获取到的信息分别分发给当前已经登录到TodoServer的客户端。


客户端使用的是WPF,待办任务是Wcf,其宿主可以是IIS,也可以是一个窗体,也可以是一个Windows服务。我们使用的是Windows服务,因为服务器是2003 server ,IIS6.0还并不支持net.tcp绑定。各个应用使用到的语言不一样。

在本文中我们主要是了解下如何使用WCF进实现服务器推送:


一、首先我们新建一个解决方案,添加以下几个项目:

Todo

TodoServer --wcf 服务库

TodoClient --wpf应用程序

WebApp --web应用程序


二、在使WebApp能返回一个新的信息, 因为不是重点所以基本略过:



三、TodoServer 

1、 定义服务接口该接口包含了客户端上线,下线功能,实际项目中,还需要传一些参数。需要注意的是,该接口的标记和默认的多了(CallbackContract = typeof(ITodoServiceCallback))



来看看这个回调契约是什么



2、TodoServiceCallback 类实现 ITodoServiceCallback接口


3、修改App.config 下的system.serviceModel节点


紫色框中为添加,黄色为修改

注意:在添加的地址中,必须使用一个新的端口地址(防火墙需要打开该端口)



运行WCF服务库看到这个界面就表示已经搞定服务(错误信息请无视)


三、待办客户端实现

1、添加服务引用



2、实现服务契约的回调接口、添加上线功能




四:最后来运行看下效果

在网站中发送内容后,客户端就会收到 该消息的推送。因为在此案例中WCF服务并没有宿主应用,所以在调试时,需要将WCF的测试客户端打开。





最后来看下项目目录


 



文章中若有不正确之处,还请指教,谢谢。



源代码下载   http://download.csdn.net/detail/fengchun_doff/7538865





  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值