代码之家  ›  专栏  ›  技术社区  ›  Tim Booker

我该如何构建一个可以在运行时自我诊断的应用程序?

  •  2
  • Tim Booker  · 技术社区  · 17 年前

    4 回复  |  直到 17 年前
        1
  •  1
  •   Colin Mackay    17 年前

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

    对于web服务,我有一个正在运行的小服务,每隔几分钟“ping”一次web服务,看看它是否还在。如果不是这样,我会在手机上收到一条短信(顺便通过另一个第三方服务),并在电子邮件中收到一份详细的错误报告——你可能更喜欢这样,而不是必须知道才能检查网站上的网页。

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

        2
  •  1
  •   raoulsson    17 年前

    如果他们能看见你,你也能看见他们

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

    如果你无法控制外部系统,可以添加一个sep-a-RAT-e“facade”应用程序来进行诊断(例如调用超时的http连接),然后代表外部应用程序发送ping。

    只要确保在单独的线程中异步运行所有这些。您不希望阻塞UI线程或等待超时的打开的网络连接太多。

        3
  •  0
  •   Tim Williscroft    17 年前

    你已经有一个了,对吧?

    称之为“验证配置”。或者别的什么。

    希望这能有所帮助。

        4
  •  -2
  •   Larry Watanabe    17 年前

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

    推荐文章