您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:12 来源:vckbase.com

本文章共14643字,分10页,当前第8页,快速翻页:
 

   显式事件是你可以自己定义的,像下面这样:
<System.ComponentModel.RunInstaller(true)>

Public Class EIFEvent

Inherits Microsoft.EnterpriseInstrumentation.Schema.BaseEvent

	Public MyProperty as String ''field

End Class

  正如你所看到的,它和前面的 WMI 例子几乎一样。这是因为该类派生自 BaseEvent,有效的替代了 BaseEvent,当开发你自己的事件源时,你就可以在 WMI 中使用它了,就如我所讨论的那样。定义的属性确保在运行 InstallUtil.exe 时,你的事件被安装在 WMI 中,而不是 .exe 或 .dll中。
逆风编程技术
   需要两个配置文件将所有东西联系起来。在安装时产生的 EnterpriseInstrumentation.config 文件允许你定义源和接收器的关系,也可以用 范围来过滤基于对象类型的事件。当你使用 Windows 跟踪接收器时,要用 TraceSessions.config 来定义跟踪的细节。稍后我将详细讲解 TraceSessions.config,但首先看一下其它比较突出的特点,见 Figure 4
   Figure 4 中的代码有四部分。第一,有一个<eventCategory>调用所有事件。而<event>元素把 System.Object 定义为类型,它包括了由 System.Object 或派生类型引发的所有标签事件——这意味着一切。第二个元素是<filter>。它定义了为所有事件目录包装的事件接收器。一个引发的事件将会被所提供的所有的三个接收器所处理。<eventSource>元素定义了要被检测的程序的名字。这允许你通过 <filterBinding> 把程序的事件连接到一个或多个事件接收器。它定义了源和接收器的关系。这个例子使用了隐式的 Application 事件源,它是 EIF 为整个应用程序提供的。它使用了先前代码例子中同样源。
   缺省文件 TraceSessions.config 驻留在 [EI_DIR]\Bin\Trace Service 目录,EI_DIR 是你安装EIF 的位置。你可以使用缺省的会话名字 TraceSession,或者加入你自己的会话名字。更多细节参考EIF 文档。
   配置 WMI 和 EIF 应用并让它们正常工作并不太容易。开发期间 你还会发现,由于涉及了托管/非托管之间的交互,你会 碰到几个致命异常。
   通过提供开发者需要的公用工具,Logging Application Block 建立在 WMI 和 EIF 之上,比如数据库和基于队列的日志。更多细节参考 Patterns and Practices

策略

   通过对 WMI 及其相关技术处理行为进行抽象提取。EIF 比 WMI更进一步。它不仅将源和接收器分离,而且为公共请求提供了标准的接收器。 没有 EIF,你 就必须自己决定要使用的检测类型以及自己要专门为此编写代码。比如,如果你想要 记录事件日志,就必须像前面所讲的那样用 System.Diagnostics.EventLog。但是如果你的程序大小增加了,并想把检测日志移到数据库时怎么办?你必须 自己做许多手工查找替换操作。有了 EIF,你只需要修改一下 EnterpriseInstrumentation.config 配置文件,用不同的事件接收器即可——如果你使用 Logging Application Block,你甚至可以不必自己编写的 此事件接收器,因为已经提供了一个。
   你需要考虑如何最好地利用每一个可用的工具。在 Windows 中,它们的每一个特性都很明确,为了效率你需要所有的一切。这好像要做许多工作,即使有了.NET Framework,其实不然。明智地使用每一个工具会事半功倍。Figure 5 给出了每一个工具的使用指南。
   第一件事就是顺序。任意写异常代码和跟踪是绝对没有效率的。当你编码时你必须考虑需要加入什么样的检测。错误和异常处理 完全是一样的,你从中完不出什么新花样。写代码时,你应该明确自己的意图是什么——指语义上的。保持清醒的头脑, 实现手头的任务。这是添加异常、错误处理和检测的最佳时机,因为你在考虑每一行代码是否会出错。你也在考虑测量什么最有用。这些在设计和建模阶段做会更好,但 这些细节标准常常在开始编码之前很难做到,所以你必须要务实一点。
 
本文章更多内容<<上一页 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 下一页>>
相关文章

一个生成公章图片的简易工具
KVIP考勤系统
Windows SDK笔记(七):创建MDI窗口
基于 SSL 的 ASP.NET Web 应用测试自动化
层叠式窗体控件指南
连接 COM 与 .NET 的桥梁(一)——预备知识
在Visual C 中定制AppWizard (一)
VC中调用EXECL模板生成报表
Brew 后台应用开发
浅谈PDFlib中文输出(二)如何在PDFlib中使
谈谈软件项目管理的重要性
简单快速的哈夫曼编码
自己编的SQL服务端加客户端
多功能标签CLabelEx
IE 控件一些高级使用方法
用VC 创建自定义向导程序
如何在 Windows NT、Windows 2000 和 Windo
对C#中的TreeView加背景图
static_cast<>揭密
自己写 FILTER 改变画面颜色

相关评论


本文章所属分类:首页 VC++

  热门关键字: