我什至不知道如何问这个问题,但我会试一试。
我在 c# 中有一个程序,它从生产线上的传感器读取值,这些值指示生产线的健康状况。这些值每 500 毫秒更新一次。我有四行已经完成。我想编写一个“概述”程序,该程序将能够通过网络访问这些值,以很好地总结工厂的运作情况。我的问题是如何从在线的 c# 程序实时获取 c# 概述程序的值?
如果我的问题没有多大意义,请告诉我,我会尝试改写它。
谢谢!
我什至不知道如何问这个问题,但我会试一试。
我在 c# 中有一个程序,它从生产线上的传感器读取值,这些值指示生产线的健康状况。这些值每 500 毫秒更新一次。我有四行已经完成。我想编写一个“概述”程序,该程序将能够通过网络访问这些值,以很好地总结工厂的运作情况。我的问题是如何从在线的 c# 程序实时获取 c# 概述程序的值?
如果我的问题没有多大意义,请告诉我,我会尝试改写它。
谢谢!
你有几个选择:
将消息写入 MSMQ(Microsoft 消息队列)。这是用于在机器之间传输消息的(可选)持久且快速的存储。既然您说您需要近乎实时的其他应用程序中的消息,那么使用 MSMQ 是有意义的,因为您不想在该应用程序中编写逻辑来处理大量传入消息。将 MSMQ 放在中间,尽可能取出您需要的东西,最重要的是。
另一个应用程序可以公开 WCF 服务,每次有可用数据时,您的实时应用程序都可以调用该服务。端点可能在 net.tcp 上,这意味着开销较低,尤其是在您发送小消息时。
其他选项包括之前所说的:数据库、文件等。因此您可以在多种选项之间做出选择。
您可以使用命名管道(请参阅http://msdn.microsoft.com/en-us/library/bb546085.aspx)在两个进程之间进行快速通信。
一个数据库。将您的值放入数据库,然后其他应用程序将它们从同一个数据库中提取出来。这是解决这个问题的一个非常常见的解决方案,并开辟了新场景的世界。
参见:关系数据库
我会说,这取决于很多事情。首先,对于“概述”应用程序来说,它只是每行的最后一个值,还是您需要多个值来确定行的健康状况,或者您可能想要拥有值的历史记录?
如果您只对最后一个值感兴趣,我会直接将此值传达给概览应用程序。正如其他人所建议的那样,您在这里有很多可能性:
如果您需要一些值的历史记录,或者您需要多个值来确定线路健康状况,我会选择数据库解决方案。然后您必须再次选择:是每个客户端写入数据库还是每个客户端发布到概览应用程序(使用上述任何通信方式)以及概览应用程序是否写入数据库。
在不了解您的情况的任何更多限制的情况下,很难在其中任何一个之间做出决定。