【问题标题】:Alternative to start thread inside of an mvc .net core application?在 mvc .net 核心应用程序中启动线程的替代方法?
【发布时间】:2017-10-25 06:08:16
【问题描述】:

目前我们的制造工厂内有多个仪器以不同的速度将数据插入到数据库内的多个表中。

每条生产线上都有一台计算机连接到一个网页,操作员在该网页上输入分配的作业编号并显示一些相关信息。

我们的目标是根据工厂设备插入的数据显示指示。状态与原材料可用性、仓库存储可用性、温度范围等有关。

我最初的想法是修改当前的 MVC 应用程序,方法是在每条生产线中生成一个线程,该线程每 10 秒扫描一次插入的信息,并可能通过signarlR 将数据推送给建议操作员。我读到在 MVC 应用程序中启动线程是一种不好的做法,它可能会干扰 IIS 管理线程的方式。

如果不使用单独的线程,我想知道如何在 MVC 中托管独立于快速循环的进程?

感谢您的宝贵时间!

【问题讨论】:

    标签: c# asp.net-mvc multithreading iis asp.net-web-api


    【解决方案1】:

    是的,在这里启动轮询线程可能不是最好的方法。我可能建议的另一种解决方案是将您所谓的 instruments(当前正在插入数据)修改为 SignalR 客户端,并在每次插入一些数据时向服务器广播一条消息。然后,SignalR 服务器可以简单地将此消息广播到与其连接的 javascript SignalR 客户端。通过这种方式,您可以在生成数据的仪器和可以实时显示该数据的浏览器客户端之间实现直接通信(通过 SignalR 服务器)。

    【讨论】:

    • 对不起,我会补充更多信息。这些设备使用在梯形图中编程的 PLC,这是工业和实时的。它确实支持对数据库的 CRUD 操作。
    • 另外,我想将业务规则计算保留在服务器上,因为我们越来越多地使用将数据集成到其他系统,如 ERP。
    • 那么您可能希望在您的设备将调用的某些 API 后面抽象出 CRUD 操作,以便您可以轻松地通知 SignalR 服务器有关传入的更新。相信我,您完全不想在 ASP.NET 应用程序中产生轮询线程。这就像想朝自己的脚开枪一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多