长时间运行应用程序

时间:2010-07-05 19:41:15

标签: c# .net vb.net

我将设计一个使用.NET Framework运行很长时间的应用程序(C#或VB.NET)。它可能每年重新启动甚至更多......

在设计“在.NET中长时间运行应用程序”时,我必须关注哪些(使用特殊设计模式)?

.NET是否是这类应用程序的良好平台,或者我应该使用其他平台,如J2SE?

(这不是网络应用程序。)

3 个答案:

答案 0 :(得分:6)

我实际上会说使用.NET非常适合长时间运行的应用程序。通常,托管代码在这种情况下往往表现相当不错,因为压缩GC有助于防止因内存碎片而导致的问题。

话虽如此,很难提供很多指导,因为问题本身的信息非常少。 “每年或更多”运行时间并不足以说明特定框架或语言选择会带来好处 - 任何语言都可以工作,因为长时间运行的应用程序产生的问题往往是更多的设计问题,而且框架更少/语言/工具集/等

我编写了一些基于.NET的应用程序,这些应用程序作为服务运行并且持续运行很长时间,并且从未对应用程序产生任何问题(至少与技术本身无关)。

答案 1 :(得分:5)

我不再担心让应用程序保持运行,而是更多地关注当它不可避免地停止时会发生什么 - 并且毫无疑问,它会停止。

有许多因素可能出错;崩溃,服务器故障,网络故障或只是停止应用程序的人。真正的工作是在重启后重新启动应用程序的任务。

答案 2 :(得分:3)

.NET的垃圾收集器非常好,所以只要你没有任何非明显的内存泄漏,那应该没问题。 “非显而易见”包括在你真正完成它们时不释放事件处理程序。在其他类中使用lambda表达式处理事件处理程序,等等。

确保您正在捕获并记录所有未处理的异常。如果它确实死了,你会想知道原因。

此外,请查看Windows 7中的应用程序重新启动支持。这可以重新启动您的应用程序,以防它失败。虽然它是为非托管代码编写的,但它可以在Windows 7 API code pack中访问.net。