ITPub博客

首页 > 大数据 > 数据分析 > 设计.NET应用程序数据访问层(b)

设计.NET应用程序数据访问层(b)

数据分析 作者:aroudme 时间:2013-10-18 15:43:00 0 删除 编辑

作为选择之一,你可以看一看MSDN上发布的"Exception
Management Application Block Overview"。该框架组件通过一系列对象结合了异常和应用程序日志记录。实际上,通过从.NET
框架组件提供的BaseApplicationException类衍生的自定义异常类能够简单地插入该框架组件。

规则2:坚持设计指导

  随Visual
Studio.net一起发布的在线文档中有一个叫"类库开发人员的设计指导(Design
Guidelines for Class Library
Developers)"的主题,它覆盖了类、属性和方法的名字转换,是重载的成员、构造函数和事件的补充模式。你必须遵循名字转换的主要原因之一是.NET框架组件提供的跨语言(cross-language)继承。如果你在Visual
Basic
.NET中建立一个数据访问层基类,你想确保使用.NET框架组件兼容的其它语言的开发人员能继承它并容易理解它怎样工作。通过坚持我概述的指导方针,你的名字转换和构造就不会是语言特定的(language
specific)。例如,你可能注意到在本文例子的代码中第一个词小写,并加上intercaps是用于方法的参数的,每个词大写是用于方法的,基类使用Base标志来标识它是一个抽象类。

  可以推测.NET框架组件设计指导都是普通设计模式,像Gang
of Four (Addison-Wesley, 1995)写的Design
Patterns记载的一样。例如.NET框架组件使用了Observer模式的一个变体,叫做Event模式,在类中暴露事件时你必须遵循它。  规则3:利用基础结构(Infrastructure)

  .NET框架组件包括一些类和构造,它们能辅助处理通常的与基础结构相关的事务,例如装置和异常处理。通过基类把这些概念与继承组合起来将非常强大。例如,你能考虑一下System.Diagnostics名字空间中暴露的跟踪功能。除了提供Trace和Debug类外,该名字空间还包括衍生自Switch和TraceListener的类。Switch类的BooleanSwitch和TraceSwitch能被配置用于打开和关闭应用程序和配置文件,在TraceSwitch中可以暴露多层次跟踪。TraceListener类的TextWriterTraceListener和EventLogTraceListener分别将Trace和Debug方法的输入定位到文本文件和事件日志。

  这样作的结果是给基类添加了跟踪功能,使衍生类记录消息日志更简单。接着应用程序能使用配置文件控制是否允许跟踪。你能包括一个BooleanSwitch类型的私有变量并在构造函数中实例化它来给列表1中的DALBase添加这个功能:

Public
Sub New(ByVal connect As String)_connection
= New SqlConnection(connect)_dalSwitch
= New BooleanSwitch("DAL", "Data Access Code")End
Sub

  传递给BooleanSwitch的参数包括名字和描述。接着你能添加一个受保护的属性打开和关闭开关,也能添加一个属性使用Trace对象的WriteLineIf方法格式化并写入跟踪消息:

Protected
Property TracingEnabled() As BooleanGetReturn
_dalSwitch.EnabledEnd
GetSet(ByVal
Value As Boolean)_dalSwitch.Enabled
= ValueEnd
SetEnd
Property

Protected
Sub WriteTrace(ByVal message As String)Trace.WriteLineIf(Me.TracingEnabled,
Now & ": " & message)End
Sub

  通过这种途径,衍生类自己并不知道开关(switch)和监听(listener)类,当数据访问类产生一个有意义的信号时能够简单地调用WriteTrace方法。

version="1.0" encoding="utf-8" ?>name="DAL" value="1" />autoflush="true" indentsize="4">name="myListener"type="System.Diagnostics.TextWriterTraceListener"initializeData="DALLog.txt"
/>
列表3.跟踪的配置文件  为了建立一个监听器并打开它,需要使用应用程序配置文件。列表3显示了一个简单的配置文件,它能够打开刚才显示的数据访问类开关,并通过myListener调用TextWriterTraceListener把输出定位到文件DALLog.txt中。当然,你能通过从TraceListener类衍生程序化地建立监听器并把该监听器直接包含在数据访问类中。

Public
Class DALException : Inherits ApplicationExceptionPublic
Sub New()MyBase.New()End
Sub

Public
Sub New(ByVal message As String)MyBase.New(message)End
Sub

Public
Sub New(ByVal message As String, ByVal innerException AsException)MyBase.New(message,
innerException)End
Sub'在这儿添加自定义成员Public
ConnectString As StringEnd
Class列表4.自定义异常类

  你从中收益的第二个基础结构是结构化异常处理(SEH)。在最基本的层次,数据访问类能够暴露它的衍生自System.ApplicationException
的Exception(异常)对象并能进一步暴露自定义成员。例如,列表4中显示的DALException对象能用于包装数据访问类中的代码产生的异常。接着基类能暴露一个受保护的方法包装该异常,组装自定义成员,并把它发回给调用程序,如下所示:

Protected
Sub ThrowDALException(ByVal message As String, _ByVal
innerException As Exception)Dim
newMine As New DALException(message, innerException)

newMine.ConnectString
= Me.Connection.ConnectionStringMe.WriteTrace(message
& "{" & innerException.Message & "}")Throw
newMineEnd
Sub

  使用这种方法,衍生类能简单地调用受保护的方法,传递进去一个特定的数据异常(典型的有SqlException或者
OleDbException),该异常被截取并添加了从属于特定数据域的消息。基类在DALException中包装该异常并把它发回到调用程序。这就允许调用程序用一个Catch语句轻易地捕捉所有来自数据访问类的异常。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21112989/viewspace-1110966/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-03-14