语言无关 – 通知非Web应用程序有关网页更改的最佳方法是什么?

语言无关 – 通知非Web应用程序有关网页更改的最佳方法是什么?,第1张

概述假设我有两个必须在一定程度上协同工作的应用程序. > Web应用程序(PHP,Ruby on Rails,…) >桌面应用程序(Java,C,…) 必须从Web应用程序通知桌面应用程序,并且发送和接收通知之间的延迟必须很短. (< 10秒) 有什么方法可以做到这一点?我可以想到以10秒的间隔进行轮询,但如果必须通知许多桌面应用程序,则会产生大量流量.在局域网上我会使用UDP广播,但不幸的是,这里不 假设我有两个必须在一定程度上协同工作的应用程序.

> Web应用程序(PHP,Ruby on Rails,…)
>桌面应用程序(Java,C,…)

必须从Web应用程序通知桌面应用程序,并且发送和接收通知之间的延迟必须很短. (< 10秒) 有什么方法可以做到这一点?我可以想到以10秒的间隔进行轮询,但如果必须通知许多桌面应用程序,则会产生大量流量.在局域网上我会使用UDP广播,但不幸的是,这里不可能…… 我很感激你能给我的任何想法.

解决方法 我认为这里的“最佳实践”取决于您期望服务的桌面客户端的数量.如果只有一个桌面需要通知,那么轮询可能是一个很好的方法 – 是的,轮询比基于事件的通知要多得多,但它肯定是最容易实现的解决方案.

如果轮询的开销真的不可接受,那么我会看到两个基本的选择:

>在桌面和Web服务器之间保持持久连接(可以是“彗星”式Web请求或原始套接字连接)
>从桌面应用程序中公开服务,并使用Web服务器注册服务的地址.这样,Web服务器可以根据需要调用桌面.

但要注意 – 两种选择都充满了陷阱.一些亮点:

>保持连接打开可能很棘手,因为您希望您的Web服务器可以热插拔
>从Web服务器调用外部服务(例如,您的桌面)是危险的,因为此请求可能会挂起.您需要将此通知移至单独的线程以避免占用Web服务器.

为了缓解一些问题,您可以通过引入中间通知服务器将不可靠桌面与Web服务器分离 – Web服务器可以在某处发布更新,桌面可以轮询/连接/注册那里以通知.为了避免在这里重新发明轮子,这可能涉及某种MessageQueue系统……当然,这增加了需要维护新中介的复杂性.

同样,所有这些方法都可能非常复杂,所以我认为投票可能是最好的选择.

总结

以上是内存溢出为你收集整理的语言无关 – 通知非Web应用程序有关网页更改的最佳方法是什么?全部内容,希望文章能够帮你解决语言无关 – 通知非Web应用程序有关网页更改的最佳方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存