c# - 与 Windows 应用程序的客户端通信

标签 c# asp.net browser polling

我有一个用于交付订单的基于 Web 的拣选/包装解决方案 (asp.net/c#)。订单在浏览器中标记为已打包,然后标签信息立即添加到我们的数据库中,为下一部分做好准备...

标签打印是通过 Windows 应用程序(用 C# 编写)完成的,之所以这样做是因为我找不到让浏览器自动打印标签的方法(即用户不必单击“打印/确定”等)

问题:

Windows 应用程序每 10 秒(可能会发生变化)轮询一次,以查看是否有该分拣机/包装机的任何新标签。现在,如果我能让浏览器与标签应用程序通信,那么轮询就没有必要了,因为拣货员/包装员只需单击“准备发货”,标签数据就会被创建。

轮询过程提取的数据并不多,但我担心随着我们添加更多的拣货/打包站,轮询过程可能会对网络服务器/数据库产生链式 react (因为所有站将进行投票)。此外,拣货员/包装员不想等待标签,因此无法延长轮询时间(如果有的话,我希望尽快完成)

解决方案?

因此,理想情况下,我想要一种在浏览器和应用程序之间进行通信的方式(如果可能)。或者任何不需要轮询的方法。也许类似于 Comet,它允许服务器在添加新标签时向应用程序发送消息。

理想情况下,一个不需要特定浏览器的解决方案。但这可能要求太高了。

一个长期的解决方案是将基于 Web 的分拣包装解决方案转移到标签应用程序中,但这将是大量的工作!

我希望这很清楚,不要太冗长。如果我可以在此处添加任何其他详细信息,请告诉我。提前致谢。

编辑

我正在研究 websockets 作为一个想法。我们非常欢迎任何建议!

更新

感谢所有评论。我现在对如何解决这个问题有了一些想法:

  1. 网络套接字。可能是防火墙问题,因为我无法轻松访问系统(地理距离)
  2. 从应用程序中读取浏览器 cookie。可能的解决方案 http://www.codeproject.com/Articles/330142/Cookie-Quest-A-Quest-to-Read-Cookies-from-Four-Pop .这涵盖了仓库中使用的所有浏览器。我可以轮询本地 cookie 值并查看是否已创建任何新标签,然后下载它们。因此不对数据库服务器进行轮询。
  3. ActiveX 控件。仅限于 IE,在每台 PC 上安装它可能会出现一些安全/设置问题。
  4. 保持代码不变。衡量数据库服务器上的负载是否过大或正常。

最佳答案

您可以在 C# 应用程序中创建一个本地 WebSocket 服务器,然后让浏览器连接到它并发送您需要打印的数据。

不过,我不确定这是否是您所需要的。正如我所见,您需要将图形数据传递给您的应用程序,这可能真的很难仅使用 javascript 来完成。

关于c# - 与 Windows 应用程序的客户端通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11594424/

相关文章:

javascript - 未捕获的安全错误 : Failed to execute 'replaceState' on 'History' in Chrome

javascript - jQuery html 元素创建在 IE/Edge 中非常慢?有什么我可以做的吗?

c# - 接受列表参数的 odata 操作始终为 null

c# - 为什么我不能将 C# 方法声明为虚拟和静态?

c# - 为什么通用列表索引器显示两种行为

c# - 如何停止 MVC5 RenderAction 寻找 .aspx 文件

c# - WPF DataGrid - 如果该列的绑定(bind)数据中的第一个、第二个或第三个最佳值,则为单元格着色

c# - 单击按钮后,工具提示计算了 asp 按钮的链接

asp.net - 创建对象的成本是多少

java - 从浏览器将网络摄像头视频录制到本地文件系统