首页 新闻 搜索 专区 学院

asp.net 怎么和 winform 通信?

0
悬赏园豆:15 [已解决问题] 解决于 2014-03-03 11:24

a)例如有人在淘宝网页下订单,怎么通知使用winform的店主(通知内容:有人下单了)

a)想解决asp.net和winform通信的问题, 

a)网页和winform 都是打开状态,不用开新窗口, 就像网页和客户端winform对话一样,

a)不能定期查询数据库,那样会挂掉数据库的, 也不能用javascript去打开winfrom窗口,

  因为 winform 已经打开主界面了.

a)我想过 webservice 但不知道怎么通知winform有订单了 ,

a)传说wcf可以通信,但不知道如果有1个web网页下单,要通知10个 winform 客户端,有新消息,怎么做?

mick100ey的主页 mick100ey | 初学一级 | 园豆:75
提问于:2014-02-14 10:30
< >
分享
最佳答案
0

一个双工解决问题,前提是你的客户端跟服务器用的是WCF通信

收获园豆:10
cenlo | 小虾三级 |园豆:583 | 2014-02-14 11:08

这哥们貌似说的靠谱点,能详细点吗? 现在的情况是 asp.net 下订单后通知到winform客户端,有解吗? 

是要实现asp.net的服务器到winform客户端, 不是 winform和winform的服务器哦. 如果设立中间层或中间服务器,考虑到效率或稳定性...

mick100ey | 园豆:75 (初学一级) | 2014-02-14 13:05

@mick100ey: 首先,你的ASP.net和winform可以使用一个WCF服务,WCF服务采用单线实例,当asp.net下订单后,在服务中触发通知接口,再由接通接口中的双工来提醒订阅了这个通知的客户端,winform要做的就是订阅通知就行了

cenlo | 园豆:583 (小虾三级) | 2014-02-14 13:25
其他回答(6)
0

主动通知winform这个比较难实现,不如改成winform主动去查询订单状态,可以隔一段时间就查询一次。

会长 | 园豆:9692 (大侠五级) | 2014-02-14 10:34

主动查询不可取,多久查一次? 5分钟? 10分钟? 数据库会有压力的, 

支持(0) 反对(0) mick100ey | 园豆:75 (初学一级) | 2014-02-14 13:01

定期查, 不能做到实时哦, 如果 你隔10分钟查一次, 太不及时了, 而且客户端数量多,服务器和数据库压力增长的厉害.

支持(0) 反对(0) mick100ey | 园豆:75 (初学一级) | 2014-02-14 13:17

@mick100ey: 如果服务器主动推数据的话,那服务器需要记录所有的客户端的ip地址,岂不是更麻烦。客户端定时查询订单对数据库的压力能有多大呀,不知道你的客户端有多少。客户端可以定时查询订单,如果有更新,则做进一步操作,如果没更新,就什么都不做。为了体现实时性,可以把间隔时间设置的小一些。

支持(0) 反对(0) 会长 | 园豆:9692 (大侠五级) | 2014-02-14 15:40
0

楼上所言极是

魔多 | 园豆:1011 (小虾三级) | 2014-02-14 10:48
0

才不是,你这winform不跟服务器建立连接的吗

不要因为做了b/c就忘记C/S怎么做的```

你客户端既然有连接,那服务器为什么不能实时通知客户端?

吴瑞祥 | 园豆:28891 (高人七级) | 2014-02-14 11:04

winform 有没有连接无所谓, 只想实现asp.net 服务器通知 winform 功能. 求解

支持(0) 反对(0) mick100ey | 园豆:75 (初学一级) | 2014-02-14 13:02

 这里虽然是asp.net服务器 但web是无状态的么, 怎么做到通知winform客户端呢?

支持(0) 反对(0) mick100ey | 园豆:75 (初学一级) | 2014-02-14 13:19
1

可以仿照B/S中对实时通知的处理,客户端HTTP长链接GET请求,服务器阻塞请求直到有数据变化或超时返回,客户端处理数据并再次发起GET请求。

这个是在websocket还未出的时候用来处理实时数据的方式,比定时轮询节省服务器资源。好多AJAX都是这么用的。

winform中模拟一个HTTP client,用HTTP长链接,winform向服务器发出请求,服务器阻塞改请求直到有数据变化时将变化的数据返回winform client,winform接收到数据后,抛到其他线程处理,并再次发起HTTP长链接GET请求。

收获园豆:5
hailants | 园豆:750 (小虾三级) | 2014-02-14 14:42
0

简单的可以使用socket

lucika.zh | 园豆:59 (初学一级) | 2014-02-14 17:04

正解

支持(0) 反对(0) 空明流光 | 园豆:62 (初学一级) | 2014-02-16 11:30
0

除了socket你也可以做监视浏览器的winform程序,如迅雷,做一个BHO插件。

空明流光 | 园豆:62 (初学一级) | 2014-02-16 11:31

你怎么能有这样的想法呢, 浏览器和winform不在同一处,你监控谁呢?  客户在上海下单,坐在北京的店主要想得到 有人下单的消息, 你BHO 监控啥呢?

支持(0) 反对(0) mick100ey | 园豆:75 (初学一级) | 2014-02-16 11:59

@mick100ey: 如果是这样的需求,我告诉你,除了客户端去主动查询数据,不可能有其它方式通知到客户端的。

支持(0) 反对(0) 空明流光 | 园豆:62 (初学一级) | 2014-02-16 12:05

@mick100ey: websocket出来之后,服务器可以通过websocket进行实时数据推送,更容易实现你需要的要求,在C#下就有相应的库:superwebsocket,服务器和客户端都可以使用。

支持(0) 反对(0) hailants | 园豆:750 (小虾三级) | 2014-02-18 14:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册