SystemFrameWork项目
SystemFrameWork项目是一个能直接移植到别的应该程序的项目,可以不修改或很少的修改代码而直接使用。
项目主要为3个类。
1.ApplicationConfiguration类
此类为应用级的配置类,实现IConfigurationSectionHandler接口。与前面讲的DuwamishConfiguration类实现方法类同。主要方法为Create(),OnApplicationStart(),ReadSetting()。
如果要使用此类,需于Global.asax的Application_OnStart事件中调用ApplicationConfiguration.OnApplicationStart(Context);
public static void OnApplicationStart(String myAppPath)
{
appRoot = myAppPath;
System.Configuration.ConfigurationSettings.GetConfig("ApplicationConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("DuwamishConfiguration");
System.Configuration.ConfigurationSettings.GetConfig("SourceViewer");
}
此方法通用调用ConfigurationSettingis.GetConfig()方法通过Web.Config中的取得对应的解析类,调用相应的Create()方法。如果没有对应的配置解析类则可直接调用System.Configuration.NameValueSectionHandler类解析,GetConfig("SourceViewer")即是如此。
2.ApplicationAssert类
此类主要用来帮忙开发人员进行错误检查,日志记录等。主要有Check(),CheckCondition(),GenerateStackTrace()三方法和LineNumber属性。
[ConditionalAttribute("DEBUG")]应用于Check(),和GenerateStackTrace()方法,如果Debug常量被定义,此方法可以被调用。
3.ApplicationLog类
此类主要用来进行日志记录。
定义Error(1)、Warning(2)、Info(3)、Verbose(4)四个TraceLevel级别记录日志调试和跟踪信息.具体设置于Web.Config的配置节中定义。此类中所有方法均为static方法,是主要的为static void WriteLog(level,messageText)
如果写入的TraceLevel不大于配置中定义的级别,则把对应的调试、跟踪信息按定义的级别写入Windows 事件日志中和定义的跟踪文件中.
ApplicationLog类的构造函数声明为private static,在对ApplicationLog类进行第一次调用时从配置文件中取得配置信息进行初始化。
疑问:
1.在 static ApplicationLog()中运用了System.Threading.Monitor,保证多线程操作的安全性。为什么对ApplicationLog要进行锁的控制?
2.对System.Diagnostics命名空间中某些类理解不太清楚。
MSDN帮助:
1.Monitor 类
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemthreadingmonitorclasstopic.htm
2.System.Diagnostics 命名空间(提供特定的类,使您能够与系统进程、事件日志和性能计数器进行交互)
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdiagnostics.htm