摘要: 大多数使用.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.AppSettings("ConnectString")) End Sub
Public Function GetOrders() As DataSet
上一篇:如何编写高质量软件需求说明书
下一篇:浅析校校通工程中项目管理
复制本页网址和标题,发送给你QQ/Msn的好友一起分享