2009-07-19 54 views
2

我有一个使用各种外部资源(Web服务,文件系统,数据库)的应用程序,因此可能很难配置。该计划是为应用程序添加一个自我诊断工具,以便它可以报告配置问题并允许用户纠正它。在设计这样一个功能时,我应该考虑哪些设计模式,库,例子等?我将如何构建可在运行时自行诊断的应用程序?

该应用程序是用C#和ASP.NET编写的。

回答

1

一种方法是在您的站点的管理区域中拥有一组报告这些外部资源状态的页面。例如,它可能会告诉你它被配置为连接到的数据库(以及它是否可以建立连接),它在哪个服务器上运行(如果负载平衡),等等)。

对于Web服务,我有一个运行的小服务,每隔几分钟“ping”Web服务以查看它是否仍然存在。如果不是,我会在手机上(通过其他第三方服务顺便)收到短信和电子邮件中的详细错误报告 - 您可能更愿意选择检查网站上的网页。

我不知道是否有任何特定的设计模式,我只是将此报告元素添加到应用程序中的常规图层。

-2

您可能会考虑使用规则引擎 - 专家系统长期以来一直用于诊断和故障排除。这允许修改和扩展规则,而不是更改代码库,因为您很可能会忽略许多情况,并且环境可能会发生变化,需要添加新规则。

1

如果他们能看到你,你可以看到他们

添加一个图层到你的(外部)应用程序发送异步执行“Ping”出某种形式。可以是消息传递,类似主题的中间件工具。

如果您无法控制外部系统,可能需要添加一个sep-A-RAT-e“门面”应用程序来执行诊断(例如,以超时方式调用http连接),然后发送ping命令代表外部应用程序。

使用远程应用程序(消息类型)的可配置列表向您的中央应用程序添加一个侦听程序,这些应用程序预计可以ping通并在其中一个未能这样做时发出警报。

只要确保在单独的线程和异步运行所有这些。您不想阻止UI线程或太多等待超时的开放网络连接。

这样你的中央应用程序的开销很小。它不需要进行轮询本身,只是坐在那里有一个队列监听器和一个应用程序的地图,当他们最后一次调用时。如果其中一个达到最近没有调用的阈值,那么你有一个问题,你的应用程序有一些方法可以让你知道。

+0

从我以前的英语老师的拼写技巧:请记住,单独有一个RAT(Squeek!Squeek):sep-A-RAT-e :) – 2009-07-20 01:36:38

0

假设你仅仅意味着静态配置,

添加一个客户acessible单元测试演习的所有系统的接口。 你已经有一个,对吧?

称之为“验证配置”。或者其他的东西。

希望这会有所帮助。

相关问题