我有一个用于交付订单的基于 Web 的拣货/包装解决方案 (asp.net/c#)。订单在浏览器中被标记为已打包,然后标签信息立即添加到我们的数据库中,为下一部分做好准备……
标签打印是通过 Windows 应用程序(用 C# 编写)完成的,这样做是因为我找不到让浏览器自动打印标签的方法(即用户无需单击打印/确定等)。 )
问题:
Windows 应用程序每 10 秒轮询一次(可能会发生变化),以查看该拾取器/打包器是否有任何新标签。现在,如果我可以让浏览器与标签应用程序通信,那么轮询将是不必要的,因为拾取器/包装器只需单击“准备发货”并且将创建标签数据。
轮询过程提取的数据并不庞大,但我担心随着我们添加更多的picker/packer站,轮询过程可能会对Web服务器/数据库产生连锁反应(因为所有站都是轮询)。此外,拣货员/包装员不想等待标签,因此无法延长轮询时间(如果有什么我想尽快)
解决方案?
所以,理想情况下,我想要一种在浏览器和应用程序之间进行通信的方式(如果可能的话)。或任何无需轮询的方法。也许类似于 Comet,它允许服务器在添加新标签时向应用程序发送消息。
理想情况下,不需要特定浏览器的解决方案。但这可能要求太多了。
一个长期的解决方案是将基于网络的拣货-包装解决方案转移到标签应用程序中,但这将是很多工作!
我希望这很清楚,不要太罗嗦。让我知道我是否可以在此处添加任何其他详细信息。提前致谢。
编辑
我正在研究 websockets 作为一个想法。任何建议都将受到欢迎!
更新
感谢所有评论。我现在对如何解决这个问题有了一些想法:
- 网络套接字。可能与防火墙问题有关,因为我无法轻松访问系统(地理距离)
- 从应用程序中读取浏览器 cookie。可能的解决方案http://www.codeproject.com/Articles/330142/Cookie-Quest-A-Quest-to-Read-Cookies-from-Four-Pop。这涵盖了仓库中正在使用的所有浏览器。我可以轮询本地 cookie 值并查看是否已创建任何新标签,然后下载它们。因此在数据库服务器上没有轮询。
- ActiveX 控件。仅限于 IE,在每台 PC 上安装它可能会出现一些安全/设置问题。
- 保持代码不变。衡量数据库服务器上的负载是否过多或正常。