BS与CS的消息交换

时间:2022-02-12 03:32:01
需求如下,给客户提供一个Webservice,用于数据的上传。当Webservice接收到数据后,需要根据规则,马上推送给某个客户端(winform),请问,这怎么处理呢?哪位大侠处理过类似的问题,请指教。

34 个解决方案

#1


就是写个webservice接口,带返回值就可以了

#2


引用 1 楼 bdmh 的回复:
就是写个webservice接口,带返回值就可以了


我的处理过程是这样:
1客户——》 2Webservice——》3消息处理器——》4客户端
从2到4,不知道怎么处理,用什么技术解决呢

#3


webservice有返回值的啊......


比如你请求一个接口 有参数或者没有参数..

调用的时候 他是给你返回值的.

比如返回成功或者失败 客户端1是能接收到的....

#4


1到2就是Webservice本身,2到4可以用socket

#5


引用 3 楼 diaodiaop 的回复:
webservice有返回值的啊......


比如你请求一个接口 有参数或者没有参数..

调用的时候 他是给你返回值的.

比如返回成功或者失败 客户端1是能接收到的....


我的描述可以有些问题,修改一下。
我的处理过程是这样:
1外部系统——》 2Webservice——》3消息处理器——》4技术人员客户端
从2到4,不知道怎么处理,用什么技术解决呢

#6


引用 4 楼 xdashewan 的回复:
1到2就是Webservice本身,2到4可以用socket


Webservice的数据存档数据库里面,那么需要消息处理器定时扫描数据库才行。
我的意思是,能不能在Webservice传输数据时,直接触发消息处理器去推送消息呢?

#7


你的外部系统跟技术人员客户端 是不是一个东西 ?

还是2个exe...不同的人操作.. 我的意思你能明白吗?

#8


引用 7 楼 diaodiaop 的回复:
你的外部系统跟技术人员客户端 是不是一个东西 ?

还是2个exe...不同的人操作.. 我的意思你能明白吗?

不是同一个东西

#9


怎么把外部系统传过来的消息(使用Webservice),及时处理,推送到内网的客户端。
关键就在于“消息处理器”,我想用JMS或者WCF来实现,但是做个实验。

#10


不是一个东西 可以用2个方式来解决..

既然那2个都是客户端 可以用数据库来实现..webservice操作之后 insert一个记录

然后客户端会接收到了(当然了不用刷.有现成的东西)

第二个方式就是在服务器上建立连接 那个客户端连接服务器

 webservice操作完成之后 给服务器发送一个信息 服务器收到之后 找到客户端 转发下就行了

#11


this,webbrower1.objectForScripting=this;
可以调用JS
JS也可以调用winfrom windows.extema("KK");//kk方法名

#12


引用 6 楼 jjyy3696 的回复:
Quote: 引用 4 楼 xdashewan 的回复:

1到2就是Webservice本身,2到4可以用socket


Webservice的数据存档数据库里面,那么需要消息处理器定时扫描数据库才行。
我的意思是,能不能在Webservice传输数据时,直接触发消息处理器去推送消息呢?



启用服务器端进行推送

#13


你这需求刚好就是SignalR啊
http://www.cnblogs.com/shanyou/archive/2012/07/28/2613693.html

#14


不是一个东西 可以用2个方式来解决..

#15


1.可以采用SignalR
2.可以再开一个Tcp,客户端长连接
3.客户端轮询

#16


Mark
 以后用的着

#17


该回复于2014-10-04 09:44:48被版主删除

#18


我是来支持的  BS与CS的消息交换

#19


winform 做成一个守护进程,每 3s 或 5s 去调用你的  WebService 所提供的 url 。

实时,我想不到好办法!

#20


看不懂,支持下~

#21


client -> server (web service) -> server (windows service or any windows program) -> another client

UDP

#22


该回复于2014-08-08 09:21:30被管理员删除

#23


该回复于2017-05-01 00:03:30被版主删除

#24


一切皆socket BS与CS的消息交换

#25


需要根据规则,马上推送给某个客户端(winform),这个用socket

#26


靠,开始还没看明白,这么简单的需求问什么.
搞半天是两个不同的客户端嘛,也不说清楚.

这个的难点就是S=>B2的过程,即主动推送,
要么长连接,要么轮询(心跳),
和web service没关系了

#27


还要有监听吧

#28


该回复于2014-08-10 14:46:09被管理员删除

#29


我是来支持的 

#30


标记 帮顶

1客户——》 2Webservice——》3消息处理器——》4客户端

2、WebService也算服务端的吧 
3、也算作服务端的吧

客户A 和 客户B(客户端)先确定和服务器建立连接 用UDP,客户端隔段时间发消息给服务器,通知我在线,服务端根据接收到的消息刷新和自己建立连接的客户端列表,当服务端需要给客户端下发数据的时候,先从自己的列表中找在不在线,在就发个UDP,然后客户端与服务端建立TCP链接接收数据???

#31


知不知道一个叫做长连接的东西?

你可以在客户端做个一套长连接到你的中间键,

当你数据库发生变化的时候,

这个连接将被Response。(比如Response一段json)

由于这个Request是客户端发出的,那么当Response的时候,客户端立刻就会得到,然后就可以进行接下来的操作了。

#32


你查一下: 双工。

#33


该回复于2014-08-14 09:36:55被管理员删除

#34


winform  socket 监听端口  webser 收到消息往这个端口推信息

#1


就是写个webservice接口,带返回值就可以了

#2


引用 1 楼 bdmh 的回复:
就是写个webservice接口,带返回值就可以了


我的处理过程是这样:
1客户——》 2Webservice——》3消息处理器——》4客户端
从2到4,不知道怎么处理,用什么技术解决呢

#3


webservice有返回值的啊......


比如你请求一个接口 有参数或者没有参数..

调用的时候 他是给你返回值的.

比如返回成功或者失败 客户端1是能接收到的....

#4


1到2就是Webservice本身,2到4可以用socket

#5


引用 3 楼 diaodiaop 的回复:
webservice有返回值的啊......


比如你请求一个接口 有参数或者没有参数..

调用的时候 他是给你返回值的.

比如返回成功或者失败 客户端1是能接收到的....


我的描述可以有些问题,修改一下。
我的处理过程是这样:
1外部系统——》 2Webservice——》3消息处理器——》4技术人员客户端
从2到4,不知道怎么处理,用什么技术解决呢

#6


引用 4 楼 xdashewan 的回复:
1到2就是Webservice本身,2到4可以用socket


Webservice的数据存档数据库里面,那么需要消息处理器定时扫描数据库才行。
我的意思是,能不能在Webservice传输数据时,直接触发消息处理器去推送消息呢?

#7


你的外部系统跟技术人员客户端 是不是一个东西 ?

还是2个exe...不同的人操作.. 我的意思你能明白吗?

#8


引用 7 楼 diaodiaop 的回复:
你的外部系统跟技术人员客户端 是不是一个东西 ?

还是2个exe...不同的人操作.. 我的意思你能明白吗?

不是同一个东西

#9


怎么把外部系统传过来的消息(使用Webservice),及时处理,推送到内网的客户端。
关键就在于“消息处理器”,我想用JMS或者WCF来实现,但是做个实验。

#10


不是一个东西 可以用2个方式来解决..

既然那2个都是客户端 可以用数据库来实现..webservice操作之后 insert一个记录

然后客户端会接收到了(当然了不用刷.有现成的东西)

第二个方式就是在服务器上建立连接 那个客户端连接服务器

 webservice操作完成之后 给服务器发送一个信息 服务器收到之后 找到客户端 转发下就行了

#11


this,webbrower1.objectForScripting=this;
可以调用JS
JS也可以调用winfrom windows.extema("KK");//kk方法名

#12


引用 6 楼 jjyy3696 的回复:
Quote: 引用 4 楼 xdashewan 的回复:

1到2就是Webservice本身,2到4可以用socket


Webservice的数据存档数据库里面,那么需要消息处理器定时扫描数据库才行。
我的意思是,能不能在Webservice传输数据时,直接触发消息处理器去推送消息呢?



启用服务器端进行推送

#13


你这需求刚好就是SignalR啊
http://www.cnblogs.com/shanyou/archive/2012/07/28/2613693.html

#14


不是一个东西 可以用2个方式来解决..

#15


1.可以采用SignalR
2.可以再开一个Tcp,客户端长连接
3.客户端轮询

#16


Mark
 以后用的着

#17


该回复于2014-10-04 09:44:48被版主删除

#18


我是来支持的  BS与CS的消息交换

#19


winform 做成一个守护进程,每 3s 或 5s 去调用你的  WebService 所提供的 url 。

实时,我想不到好办法!

#20


看不懂,支持下~

#21


client -> server (web service) -> server (windows service or any windows program) -> another client

UDP

#22


该回复于2014-08-08 09:21:30被管理员删除

#23


该回复于2017-05-01 00:03:30被版主删除

#24


一切皆socket BS与CS的消息交换

#25


需要根据规则,马上推送给某个客户端(winform),这个用socket

#26


靠,开始还没看明白,这么简单的需求问什么.
搞半天是两个不同的客户端嘛,也不说清楚.

这个的难点就是S=>B2的过程,即主动推送,
要么长连接,要么轮询(心跳),
和web service没关系了

#27


还要有监听吧

#28


该回复于2014-08-10 14:46:09被管理员删除

#29


我是来支持的 

#30


标记 帮顶

1客户——》 2Webservice——》3消息处理器——》4客户端

2、WebService也算服务端的吧 
3、也算作服务端的吧

客户A 和 客户B(客户端)先确定和服务器建立连接 用UDP,客户端隔段时间发消息给服务器,通知我在线,服务端根据接收到的消息刷新和自己建立连接的客户端列表,当服务端需要给客户端下发数据的时候,先从自己的列表中找在不在线,在就发个UDP,然后客户端与服务端建立TCP链接接收数据???

#31


知不知道一个叫做长连接的东西?

你可以在客户端做个一套长连接到你的中间键,

当你数据库发生变化的时候,

这个连接将被Response。(比如Response一段json)

由于这个Request是客户端发出的,那么当Response的时候,客户端立刻就会得到,然后就可以进行接下来的操作了。

#32


你查一下: 双工。

#33


该回复于2014-08-14 09:36:55被管理员删除

#34


winform  socket 监听端口  webser 收到消息往这个端口推信息