如何传递一些"统计数据"从c#程序到另一个程序?

时间:2011-06-24 19:11:05

标签: c#

我有“做很多工作”的命令行程序并产生“很多统计数据”。它的股票交易软件对延迟,错误等等至关重要,所以我不想为它添加GUI。 (有时需要GUI,但应始终启动控制台应用程序)

我需要GUI来友好地显示收集的统计信息(在只读模式下)。如何转移统计数据?每秒刷新它就足够了。我需要将一堆数据从一个控制台c#程序转移到另一个GUI(可能不是c#)程序,将来可能是通过网络,但现在在本地。

统计就像“传感器数据”,每秒测量一次。有很多(数百个)传感器。 (实际上,它有很多不同的价值,比如“利润”,“每秒订单数量”等。)

我应该使用普通文件,数据库还是其他内容以及如何使用?

5 个答案:

答案 0 :(得分:5)

您可以使用任何形式的IPC(进程间通信)。

由于您计划将来通过网络,我建议使用WCF。如果GUI程序不是.NET,那么您可能需要使用较低级别的解决方案,例如命名管道或套接字。

答案 1 :(得分:2)

您可以尝试将数据库与排队系统或消息设备一起使用。服务器可以接收消息到队列,然后GUI可以“订阅”消息。

Microsoft Message Queuing

您还可以查看内存映射文件:

Memory-mapped file

如果配置正确,这些可以在应用程序之间共享。

希望有所帮助,

Jeffrey Kevin Pry

答案 2 :(得分:1)

让“服务器”将其信息存储在数据库中并让“客户端”在需要时对其进行轮询可能会更有效率和弹性。

答案 3 :(得分:1)

我建议你看一下像DDS这样的技术。没有涉及数据库,并且实施起来并不困难。我最近开始关注OpenSplice DDS。那里有许多不同的实现。

答案 4 :(得分:0)

当然,这超出了单一评论。您最终需要的是一种调度机制,用于通知订户有关数据记录更新的信息。由于数据量巨大,您可能不希望选择持久性存储。如果到目前为止调度到多个订阅者看起来势不可挡,您可以使用简单的interproc(通过共享对象(也称为命名管道),以使消费者提供者在同一台机器上,或者更分散的东西)。