当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  设计.NET应用程序数据访问层五大原则 2

 设计.NET应用程序数据访问层五大原则 2

点击次数:22 次 发布日期:2008-11-26 10:38:21 作者:源代码网
源代码网推荐      规则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 Boolean
源代码网推荐  Get
源代码网推荐  Return _dalSwitch.Enabled
源代码网推荐  End Get
源代码网推荐  Set(ByVal Value As Boolean)
源代码网推荐  _dalSwitch.Enabled = Value
源代码网推荐  End Set
源代码网推荐  End Property
源代码网推荐  
源代码网推荐  Protected Sub WriteTrace(ByVal message As String)
源代码网推荐  Trace.WriteLineIf(Me.TracingEnabled, Now & ": " & message)
源代码网推荐  End Sub
源代码网推荐  
源代码网推荐  
源代码网推荐    通过这种途径,衍生类自己并不知道开关(switch)和监听(listener)类,当数据访问类产生一个有意义的信号时能够简单地调用WriteTrace方法。
源代码网推荐  
源代码网推荐  
源代码网推荐  <?XML version="1.0" encoding="utf-8" ?>
源代码网推荐  <configuration>
源代码网推荐  <system.diagnostics>
源代码网推荐  <switches>
源代码网推荐  <add name="DAL" value="1" />
源代码网推荐  </switches>
源代码网推荐  <trace autoflush="true" indentsize="4">
源代码网推荐  <listeners>
源代码网推荐  <add name="myListener"
源代码网推荐  type="System.Diagnostics.TextWriterTraceListener"
源代码网推荐  initializeData="DALLog.txt" />
源代码网推荐  </listeners>
源代码网推荐  </trace>
源代码网推荐  </system.diagnostics>
源代码网推荐  </configuration>
源代码网推荐  列表3.跟踪的配置文件
源代码网推荐  
源代码网推荐    为了建立一个监听器并打开它,需要使用应用程序配置文件。列表3显示了一个简单的配置文件,它能够打开刚才显示的数据访问类开关,并通过myListener调用TextWriterTraceListener把输出定位到文件DALLog.txt中。当然,你能通过从TraceListener类衍生程序化地建立监听器并把该监听器直接包含在数据访问类中。
源代码网推荐  
源代码网推荐  
源代码网推荐  Public Class DALException : Inherits ApplicationException
源代码网推荐  Public 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 As
源代码网推荐  Exception)
源代码网推荐  MyBase.New(message, innerException)
源代码网推荐  End Sub
源代码网推荐  "在这儿添加自定义成员
源代码网推荐  Public ConnectString As String
源代码网推荐  End 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.ConnectionString
源代码网推荐  Me.WriteTrace(message & "{" & innerException.Message & "}")
源代码网推荐  Throw newMine
源代码网推荐  End Sub
源代码网推荐  
源代码网推荐  
源代码网推荐    使用这种方法,衍生类能简单地调用受保护的方法,传递进去一个特定的数据异常(典型的有SqlException或者 OleDbException),该异常被截取并添加了从属于特定数据域的消息。基类在DALException中包装该异常并把它发回到调用程序。这就允许调用程序用一个Catch语句轻易地捕捉所有来自数据访问类的异常。
源代码网推荐  
源代码网推荐    作为选择之一,你可以看一看MSDN上发布的"Exception Management Application Block Overview"。该框架组件通过一系列对象结合了异常和应用程序日志记录。实际上,通过从.NET 框架组件提供的BaseApplicationException类衍生的自定义异常类能够简单地插入该框架组件。
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华