【请教】超过业务时间后停止winform的使用,该如何考虑

Diza1986 2019-07-16 11:05:57
(水平有限,望耐心指导)

概要:winform+API+DB的一个系统,DB中会有业务停止的标志,API中处理前会check是否已经停止服务。
现在考虑的是,如何把业务停止的消息通知给客户端

下面是一些想法:
1,就通过API的错误信息
--》及时性差,调用了API才知道已经停止了

2,轮询,长轮询(多线程循环访问API检查是否停止)
--》开销太大了吧

3,websocket
--》js的简单使用过,查了下C#也有对应的技术,API的语言是不确定的应该没关系吧?
(以前用过C#socket通信,是不是需要前后台都是C#?)
--》有什么其他缺点吗?

我知道怎么来做还是取决于想搞成什么样子(没定呢),
希望有经验的可以提供些想法,指导一下!
对webcocket的理解也比较肤浅winform上是不是不一样啊,自己也会试一下。
...全文
215 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2019-07-23
  • 打赏
  • 举报
回复
当然正常情况下,是提前发消息,玩网游的都知道,系统会提示你“本服务器将在半小时后重启,请及时退出”
wanghui0380 2019-07-23
  • 打赏
  • 举报
回复
比如一个redis可以把,你监控缓存没问题他 比如mq你发个消息没问题把 比如zookeeper,你丢就全局同步状态没问题把 比如etcd,consel,你更改一个全局监控的node节点没问题把 比如tcp,你给全体发个消息没问题把 比如websocket,你给全体发个消息没问题把 比如kafaka,我丢个下线消息没问题把 比如Orleans,我发个全体消息没问题 双工wcf,你们能连上查我,我也能反向主动调用 就像你自己说的,那怕最低级的,轮询查库也成把
wanghui0380 2019-07-23
  • 打赏
  • 举报
回复
别问,直接做就是。你用什么都可以做。udp广播,tcp,轮询,singlR,websocket,mq,kafaka,Orleans,双工wcf,zookeeper,etcd,consol ------------------- 你们就是喜欢不做,只要选定一个,怎么都能做。就是光讨论,不做
assky124 2019-07-23
  • 打赏
  • 举报
回复
WCF 好像有个广播的功能,如果在内网,用用应该没啥问题
Diza1986 2019-07-23
  • 打赏
  • 举报
回复
引用 8 楼 胖叔叔写代码 的回复:
关于socket,并不是要全部同样语言,了解一下“thrift/gRPC”等扩平台通信。


谢谢!
对于自己的无知深感无力。。
Diza1986 2019-07-23
  • 打赏
  • 举报
回复
引用 7 楼 Diza1986 的回复:
另外,看到一个Java项目没有用timer定时器,而是启动了一个新的进程进行轮询,
不明白了,这里用进程比timer多线程有什么好处吗?进程之间还需要交互,小白的我完全不理解。。。


新的进程模块注明是P2P连接,这个是所谓的好处?
又是个知道名字不了解详情的东西,弱爆。。。
  • 打赏
  • 举报
回复
关于socket,并不是要全部同样语言,了解一下“thrift/gRPC”等扩平台通信。
Diza1986 2019-07-23
  • 打赏
  • 举报
回复
先谢谢各位,暂时考虑就timer了。 另外,看到一个Java项目没有用timer定时器,而是启动了一个新的进程进行轮询, 不明白了,这里用进程比timer多线程有什么好处吗?进程之间还需要交互,小白的我完全不理解。。。 (也可能只是有一个现成的模块直接用了。。)
FainSheeg 2019-07-18
  • 打赏
  • 举报
回复
sqlserver数据库的话,可以考虑sqldependency
datafansbj 2019-07-16
  • 打赏
  • 举报
回复
数据库如果没有回调或消息机制,只能使用轮询。这种需求应该实时性不高,轮询不会有太大的开销。
XBodhi. 2019-07-16
  • 打赏
  • 举报
回复
timeout 就可以了啊。
palhotel 2019-07-16
  • 打赏
  • 举报
回复
不要求立即停止的,就是你说的API报错了停止。也可以定时器几十秒一次查询一次,做个专门的检查的API。如果想实时控制就一定要维护长连接。为什么要想到websocket呢?因为浏览器不能用socket,才会在html5增加了websocket支持,现在能用scoket了还用啥websocket。 如果我们想杀鸡用牛刀,可以用上消息队列,点对点模式、订阅发布模式都可以。
Diza1986 2019-07-16
  • 打赏
  • 举报
回复
引用 1 楼 datafansbj 的回复:
数据库如果没有回调或消息机制,只能使用轮询。这种需求应该实时性不高,轮询不会有太大的开销。
引用 2 楼 双手暴皮 的回复:
使用timer方式,定时检查DB标志不就行了……
谢谢! 异步轮询是能想到的可行的方式, 其他系统应该会有类似的需求,想来问问怎么实现的,好参考一下。 (不是问代码,理论就好)
沉默老曹 2019-07-16
  • 打赏
  • 举报
回复
使用timer方式,定时检查DB标志不就行了……

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧