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