首页 > 解决方案 > 如何在从 iris 设备读取时保持状态?

问题描述

我有一个中央 Web 应用程序,它在用户 PC 上启动虹膜扫描设备。我们的客户安装我们的扫描仪驱动程序,以便可以跟踪从他们的站点进出的人员。

  1. 用户登录网站并单击扫描链接。
  2. 有一个本地安装的 WebAPI 服务,用于处理来自网站的调用。
  3. WebAPI 服务激活启动扫描过程的 COM 组件。
  4. 一旦用户完成了虹膜扫描,它就会返回一个事件处理程序并返回结果。

这就是问题所在。为了完成扫描,必须有对 COM 对象的实时引用,直到完成为止。但是,一旦扫描开始,代码将继续执行并从本地服务调用返回。那时,上下文丢失了,很可能内存被标记为清理中断进程。

锁定 WebAPI 服务并在内部等待一些响应可能会锁定并导致 Web 应用程序崩溃,这似乎是个坏主意。

我如何构建它以稳健的方式处理流程,同时避免任何应用程序被锁定?

我正在考虑创建一个在后台持续运行的 Windows 服务,其中为每个扫描请求加载一个 AppDomain。当我的网络应用程序通过网络服务轮询状态更改时,请求可以处理。

标签: c#asp.net-web-apisynchronousiris-recognition

解决方案


我认为您只需将COM组件对象包装在一个Singleton只实例化一次的类中。(阅读这里了解更多关于 Singleton 的信息)。

此外,如果您使用 Windows 服务选项,我认为这是一个非常好的主意,我建议您使用SignlaR它在客户端和服务器之间推送消息。 Windows 服务作为信号器客户端


推荐阅读