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

时间:2010-01-30 09:36:49  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:类(base class)利用面相对象技术和.NET框架组件基础结构,使类容易继承,在决定显示方法和外部界面前仔细地检验需求。        如果你正在建立以数据为中心(data-centric)的.NET框架组件应用程序,你最终必须建立数据访问层。也许你知道在.NET框架组件中建立自己的代码有很多好处。因为它支持实现和接口(interface)继承,你的代码更容易重复使用...
  正文:摘要:大多数使用.net框架组件工作的开发人员的一个核心工作是实现数据访问功能,他们建立的数据访问层(data Access layer)是应用程序的精华部分。本文概述了使用Visual Studio .NET和.NET框架组件建立数据访问层需要考虑的五个想法。这些技巧包括通过使用基类(base class)利用面相对象技术和.NET框架组件基础结构,使类容易继承,在决定显示方法和外部界面前仔细地检验需求。
  
    如果你正在建立以数据为中心(data-centric)的.NET框架组件应用程序,你最终必须建立数据访问层。也许你知道在.NET框架组件中建立自己的代码有很多好处。因为它支持实现和接口(interface)继承,你的代码更容易重复使用,特别是被使用不同的框架组件兼容(Framework-compliant)语言的开发人员使用。本文我将概述为基于.NET框架组件的应用程序建立数据访问层的五条规则。
  
    开始前,我必须提醒你建立的任何基于本文讨论的规则的数据访问层必须与传统Windows平台上开发人员喜欢的多层或者n层应用程序兼容。在这种结构中,表现层包含Web窗体、Windows窗体、调用与数据访问层的工作相应的事务层的XML服务代码。该层由多个数据访问类(data access classe)组成。换句话说,在事务处理协调不是必要的情况下,表现层将直接调用数据访问层。这种结构是传统的模型-视列表-控制程序(Model-View-Controller,MVC)模式的变体,在多种情况下被Visual Studio .NET和它暴露的控件采用。
  
    规则1:使用面向对象特性
  
    最基础的面向对象事务是建立一个使用实现继承的抽象类。这个基类可以包括你的所有数据访问类通过继承能够使用的服务。如果那些服务足够了,它们就能通过在整个组织的基类分布实现重复使用。例如最简单的情况是基类能够为衍生类处理连接的建立过程,如列表1所示。
  
  
  Imports System.Data.SqlClient
  
  Namespace ACME.Data
  Public MustInherit Class DALBase : Implements IDisposable
  Private _connection As SqlConnection
  
  Protected Sub New(ByVal connect As String)
  _connection = New SqlConnection(connect)
  End Sub
  
  Protected ReadOnly Property Connection() As SqlConnection
  Get
  Return _connection
  End Get
  End Property
  
  Public Sub Dispose() Implements IDisposable.Dispose
  _connection.Dispose()
  End Sub
  
  End Class
  End Namespace
  列表1.简单基类
  
  
    在列表中可以看到,对DALBase类作了MustInherit标记(C#中的抽象),以确保它在继承关系中使用。接着该类在公共构造函数中包括了一个实例化的私有SqlConnection对象,它接收连接字符串作为一个参数。当来自IDisposable接口的Dispose方法确保连接对象已经被配置了的时候,受保护的(protected)Connection属性允许衍生类访问该连接对象。
  
    即使在下面简化的例子中你也能开始看到抽象基类的用处:
  
  
  Public Class WebData : Inherits DALBase
  Public Sub New()
  MyBase.New(ConfigurationSettings.Apphotoshop/ target=_blank class=infotextkey>psettings("ConnectString"))
  End Sub
  
  Public Function GetOrders() As DataSet
  Dim da As New SqlDataAdapter("usp_GetOrders", Me.Connection)
  da.SelectCommand.CommandType = CommandType.StoredProcedure
  Dim ds As New DataSet()
  
  da.Fill(ds)
  Return ds
  End Function
  End Class
  
  
    在这种情况下,WebData类继承自DALBase,结果就是不必担心实例化SqlConnection对象,而是通过MyBase关键字(或者C#中的基关键字)简单地把连接字符串传递给基类。WebData类的GetOrders方法能使用Me.Connection(在C#中是this.Connection)访问受保护的属性。虽然这个例子相对简单,但是你将在规则2和3中看到基类也提供了其它的服务。

设计.NET应用程序数据访问层五大原则》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/12641.html

 1/7    1 2 3 4 5 6 下一页 尾页


关键字:

关于《设计.NET应用程序数据访问层五大原则》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td