首页 新闻 会员 周边

winform消息推送问题

0
悬赏园豆:20 [待解决问题]

一个winform客户端,当有任务分配到某用户的时候,用户的客户端进行消息框提醒。这种从服务端推送的解决方案,用socket好用吗?signalR貌似也能解决,求解答最适合的解决方案

comingback的主页 comingback | 初学一级 | 园豆:7
提问于:2014-09-24 20:25
< >
分享
所有回答(4)
0

用socket是能解决,但是,必须在客户端开socket侦听,还要服务器端记录客户端的信息。这个方案优点是绝对及时,缺点是:服务器端要维护一些数据,而且客户端如果因为某种原因网络故障之类的,会导致意外,这个要做好,并且客户端开socket侦听,真心的说不赞成。

既然socket这个方案不赞成,那解决问题的办法就是由客户端不间断的想服务器发送请求查询数据信息。这个方案的好处是不需要服务器端去维护什么数据表之类的,坏处也很明显,所谓不间断自然还是有时间间隔的,间隔多少?太长,信息不及时,太短,不仅仅浪费网络带宽,更浪费服务器资源。

从目前的情况来说,signalR是相对来说最合理的方案了,建议使用。

至于其它的推送方案,我想也无外乎是使用定时的不间断请求或i类似signalR来达成目的的。

519740105 | 园豆:5810 (大侠五级) | 2014-09-25 09:19
0

用 WCF 。

Launcher | 园豆:45045 (高人七级) | 2014-09-25 09:42
0

既然你要最适合的解决方案,我的经验是看预算。

通常的Winform客户端,与服务器的关系,大部分是与数据库服务器的关系。

1、如果是小规模应用,项目费用低于50万,客户端低于100个来说。

可以考虑直接用计时器轮询数据库的方式。

2、如果是三层应用,Client <-->Application <-->Database,则应该你已经在Client 和Application之间有通讯机制的建立,但有可能还是类似Client to Database一样,必须客户端主动询问,无法由服务端发出的。

3、不管是使用WCF还是SOCKET或是signalR,这本质上是另外一件事,而这事其实真心不简单,要实现可能手快一点,半小时~半天可能就实现了,但是出错处理,多线程处理,错误调试,最终有可能陷这里面一个月不止。

类似问题很多ERP客户问过我,希望在系统里面实现简单QQ的,基本被我用成本击退了。

因为他们以为是顺手,我以为是10万。

 

说得有点乱了,

1、Client to Database, 这是最简单的。 加一个功能,不考虑服务器承载能力,加一个功能只需要考虑UI,快的话不用一天,相对于项目成本(超过30天),可以说基本没有变化。

2、Client to Server communication + Client to Database 这是两件事

Client to Server Communication 是一个需要学习的课题,相对于Client to Database,需要了解更多底层,另外调试很麻烦。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-09-25 10:18
0

你好,我的项目中使用的websocket技术。我感觉还是比较靠谱。

于为源 | 园豆:956 (小虾三级) | 2014-09-25 20:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册