从虹膜设备读取数据时如何保持我的状态活跃?

时间:2018-07-18 21:01:00

标签: c# asp.net-web-api synchronous iris-recognition

我有一个中央Web应用程序,用于启动用户PC上的虹膜扫描设备。我们的客户安装了我们的扫描仪驱动程序,以便可以跟踪来自其站点的人员。

  1. 用户登录网站并单击扫描链接。
  2. 有一个本地安装的WebAPI服务,可以访问来自网站的呼叫。
  3. WebAPI服务激活一个COM组件,该组件开始扫描过程。
  4. 用户完成虹膜扫描后,它将返回到事件处理程序并显示结果。

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

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

我该如何设计它以健壮的方式处理流程,同时避免任何应用程序被锁定?

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

1 个答案:

答案 0 :(得分:0)

我认为您只需要将COM组件对象包装在Singleton类中,该对象仅被实例化一次。 (阅读this了解有关Singleton的更多信息。

如果您使用Windows服务选项(我认为这是一个很好的主意),我建议使用SignlaR在客户端和服务器之间推送消息。 Windows service as a signalr client