我需要一些关于如何开展我正准备开始的项目的建议。
我们有一个Windows 应用程序用户界面,其中包含 20 个图表控件,每个控件都有自己的选项卡控件。
这些图表显示了零件通过工厂输送线时的数据。
每个图表显示来自输送线不同区域的不同传感器的数据。
传感器都与黑匣子接口(interface)通信,黑匣子接口(interface)又发送出字节[]流。
我从服务器上的套接字连接连接到字节流并将数据读入我的程序。
连接到该套接字时,字节流会发送最后 100 条记录来更新图表。
在第一个初始 100 条记录之后,字节流仅发送更新的数据。
该字节流每隔几秒就会不断变化。
我无法对字节流的工作方式进行任何更改。
在 Windows 应用程序中,我将该字节流分开,将其转换回可读数据并将该信息存储到内存中的表中。
表中仅存储最后 100 条记录。
使用后台 worker ,我不断地读取字节流并更新表, 并从那里更新图表。
所有这些工作都是在Windows 应用程序中完成的。
我想创建一个服务来完成所有这些工作。
我想让该服务仅发送序列化的图表数据并创建一个 GUI,该 GUI 将读取客户端的图表并将图表更新给用户。
当服务器从字节流更新时,我必须能够更新客户端。因此所有更新都必须通过服务器发起。
我看过 WCF,但似乎使用后台 worker 是不受欢迎的。
仅考虑使用 Windows 服务似乎是可能的,但是,客户端必须定期发起对服务的回调,而这并不是真正实时的。
我考虑过将两者结合起来,但这似乎有点过分,但也许不是——这就是我在这里寻求建议的原因!
如有任何帮助或建议,我们将不胜感激!谢谢!
最佳答案
我会这样做:
[黑匣子] -> [ -> [服务] -> [数据存储] -> [wcf 服务] ] -> [您的应用]
主要架构:
- Windows服务[服务]定期从盒子中提取数据
- [服务] 获取数据并将其存储在本地存储中的某个位置:数据库、时间序列、平面文件
- [service] 也封装了黑匣子,基础设施的其余部分不再与 [black box] 通信,仅与您的 wcf 服务通信。这很好,因为您可以按照您认为合适的方式制作界面。
- [wcf 服务] 是满足您的应用程序数据需求的唯一接口(interface),它通常托管在其他东西下:您的应用程序、Windows 服务或 iis。 Iis 是最简单的选择。
- [your app] 是 wcf 服务数据的最终消费者,它对黑匣子一无所知。
关于需要 WCF 或 Windows 服务建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9415958/