3

我有兴趣在.Net 3.5/4 Winforms(也许是WPF)中获取有关软(硬)实时应用程序的全面信息。谷歌的结果很差 - 一些仅关于并行性的问题......问题是我如何为某些医疗器械编写实时患者健康监控客户端?或具有实时股票数据的经纪人应用程序?还是火车的导航系统?还是负责打开/关闭门的房屋自动化软件?等等......所以这种实时应用程序是目标。

到目前为止,我还没有找到任何关于它的书,除了 Windows 上的并发编程 - 这基本上不是关于这个,而是并行处理......

提前致谢

4

4 回答 4

5

我个人的感觉是,如果您的要求是实时软件,您不应该使用 .net

.net 使用不适合实时应用程序的虚拟机。例如,您无法预测垃圾收集器何时运行,或者需要多长时间。如果这发生在关键时刻,您的实时软件将不再是实时的。

[编辑:对不起,我知道这并没有真正回答你的问题,但我认为这可能是你在查找相关信息时遇到困难的原因——因为没有人这样做。如果您正在编写实时软件,您可能应该改用 C 或 C++。取决于它的重要性,一个专用的确定性实时操作系统。甚至是为实时设计的特定语言]

于 2009-06-23T09:34:29.087 回答
2

在我的公司,我们用 C# 和 C++/CLI 开发了一个电话 IVR 服务器。它每年处理数百万个呼叫,24/7 全天候运行,从不崩溃,并且通常像我们希望的那样强大。它没有什么花哨的,它只是常规的 Windows 服务,虽然速度、效率和响应时间显然是我们的目标,但它并没有做任何深奥的事情,比如试图控制 GB 等。

但是有一个很大的但是。由我们的应用程序控制的硬件驱动程序显然不是.Net。因此,在最低级别,我们不会担心不需要的 GBC 等等,所有与毫秒相关的东西,例如 IP 电话数据包的转发或语音流,都由我们电话板上的固件处理。

所以总结一下:我什至不会考虑在 .Net 中编写驱动程序或非常低延迟的代码,但我肯定会在 .Net 中编写控制代码/逻辑。

不幸的是,我无法为您指出任何有用的资源,因为我也从未遇到过任何有用的资源,但我希望这个用例将帮助您就是否应该为您的实时项目考虑 .Net 做出明智的决定。

于 2009-06-23T10:10:24.460 回答
1

我不同意@Simon,您可以使用 Windows 和 .NET 构建实时系统。您可能无法构建非常具体的困难时间系统,但通过适当的设计和测试,您可以,我也可以。

有许多技术可以将硬时间要求推向软件解决方案或硬件,例如运动/IO 控制器。Windows/.NET 使系统的大部分开发比 RTOS 开发更容易,并且可以解决少数时间关键要素。我的方法是首先解决这些时间紧迫的问题并进行测试。

于 2009-06-23T10:10:05.600 回答
1

并行和线程是 .NET 提供的一些工具来帮助您编写实时应用程序,但实时系统的体系结构与语言无关。

这篇MSDN 文章有一些很好的并行计算链接。

也许智能客户端软件工厂可能是您开始调查的一个很好的参考。

于 2009-06-23T10:19:35.703 回答