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