|
检测:.NET中强大的检测选项让你有信心建立易管理的应用程序
原著:Jon Fancey
逆风者
翻译:linxh
[注]:本文发稿时,MSDN Magazine 已在本文中添加新的内容,具体信息参见文中“编辑更新”部分。
原文出处:MSDN Magazine April 2004(Instrumentation)
本文讨论的内容包括:
- 托管领域中的检测
- 什么样的检测可以帮助你测量
- 性能计数器,WMI,跟踪和其它一些测量技术
- 选择最佳检测手段实现自己的意图
- 安全考虑
应用系统一旦部署,检测可以使你确定系统的运行状态。这在当今是至关重要的,因为系统支持人员并不一定就是系统的开发人员。就像好的错误处理一样,检测最好在开发当初就完成。一个好的检测手段必须在开发过程的开始阶段就建立起来,
它要决定应该检测什么,如何检测,检测哪里,为什么要检测。
检测的实现有各种各样的技术可以利用,这些技术提供高质量的支持并且诊断信息来自应用程序自身内部。本文中所专注的技术将混合传统 Windows
核心工具——事件日志、调试跟踪、性能计数器 和 WMI。我还将讨论 Enterprise Instrumentation Framework(EIF)
以及 Microsoft® .NET Framework 提供的特性,比如跟踪和结构化异常处理(SEH)。 .NET Framework
使资源的开销最小化并使所有这一切都易于使用,这很关键,因为商业用户经常认为检测是一个不重要的过程。
前景
分布式应用程序已变得越来越复杂。从系统的整体上看,其复杂程度令人畏缩。在此,我将专注于企业设计者和建立复杂的分布式应用的开发人员所面对的挑战
。不论你是建立 Web 站点,还是服务,或者传统的客户端/服务器应用,你都将发现,因为其庞大的无形的体系架构,管理这些应用的任务将十分具有挑战性。
检测有助于你面对上述挑战,通过回答下面这样的一些问题:发生了什么错误?错误发生在哪里以及发生的频率?如何知道应用程序还在运行?每小时完成多少企业事务?能够处理的最大吞吐量是多少?不同活动的最繁忙的时间?应用程序是如何进行伸缩处理的?如何知道谁正在(试图)做什么?
这些问题最后归结为四个不同的范畴:性能、稳定性、可伸缩性和安全性。性能对于所支持的服务级别协议(SLAs)是至关重要的,稳定性是 Quality
of Service(QoS)的契约,尤其是与第三方的契约。可伸缩性对于业务增加是非常重要的,包括销售和市场机会。安全,当然总是不能忽视的。
你必须认识到的首要事情之一就是断定错误。决定如何处理它们并不是运行时的决策,而是设计时的决策。将它们留到编码阶段常常会导致脆弱以及不连贯的解决方案,它们对于提供良好的检测策略毫无益处。
检测什么及如何计划
当决定要对正在编写应用程序逻辑进行检测后,第二重要的事情就是明确决定需要检测什么。用户细节,日期/时间和线程/进程信息(对提供先后顺序极其重要)是绝对必要的。你
还会想包括程序名称以及在哪里写事件日志(类/方法名字)。其它常用信息包括状态信息,比如参数值和当前上下文值。你还应该小心避免一些用处不大的调用信息,例如
记录磁盘I/O活动日志,系统的线程总数等等。你还应该包括基本的以及任何代码正在执行的任务特定的信息,比如数据库连接细节(但注意这种方法暴露了敏感数据就创造了安全
风险)。
你必须决定项目要监测什么以及需要什么支持并形成文档。这个任务涉及到开发团队及测试和支持团队成员。然后根据这三个团队的需要确定在哪里包含检测。你必须
采用整体策略以便检测贯穿在整个设计中。任何错过的地方都会排除在监测之外而给你的项目带来负面影响。
本文章更多内容:1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 下一页>> |