需要 WCF 或 Windows 服务建议

标签 wcf c#-4.0 windows-services

我需要一些关于如何开展我正准备开始的项目的建议。

我们有一个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/

相关文章:

.NET Windows服务需要使用STAThread

jquery - Azure 托管的 WCF 服务导致错误 400

c# - 如何在 WCF 中使用缓存

.net - 的确,对于长时间运行的进程,最好手动执行线程而不是线程池?

silverlight - 在 silverlight 中使用 mvvm 进行异步调用

c# - 将信号从一台计算机上的 ASP.NET 应用程序传递到另一台计算机上的 .NET Windows 服务的最佳方法是什么?

c# - 将 Windows 服务作为 "Local System"运行有哪些安全风险?

c# - 如何仅在同一用户的登录 session 中使用 WCF NetNamedPipesBinding 进行进程间通信?

ios - 从 iOS 应用程序调用 WCF 服务

c# - 如何声明和使用字符串数组列表?