2011年7月25日星期一

.NET業務框架開發實戰之四(中篇)—DAL的重構

.NET業務框架開發實戰之四(中篇)—DAL的重構

http://www.inspirr.com

核心提示:其實這個系列還是之前的".NET 分布式架構開發實戰 ",之所以改了名字,主要是因為文章的標題帶來了不少的歧義:系列文章中本打算開發一個簡化業務發的流程的Framework,然后用這個Framework再來實戰,開發一個分布式的應用。改了名字。給大家帶來了不便,敬請見諒。

前言:

其實這個系列還是之前的“.NET 分布式架構開發實戰 ”,之所以改了名字,主要是因為文章的標題帶來了不少的歧義:系列文章中本打算開發一個簡化業務發的流程的Framework,然后用這個Framework再來實戰,開發一個分布式的應用。改了名字。給大家帶來了不便,敬請見諒。

本篇的議題如下:

1. 確定DAL的接口的定義。

之前在開發DAL中,提出了一些思想,也設計了一些接口。現在就把DAL的一些設計完善起來。說是“完善”,并不是說把所有的代碼都實現,而是把該定義的接口,方法敲定下來。Richard認為,設計一個架構或者Framework的時候,開始是接口的定義,定義好各層之間交互的接口,然后才是具體代碼的實現。

因為在設計Framework的時候,首先要考慮這個Framework的使用者是誰,希望他們怎么樣來使用開發出來的這個Framework。在這里,Richard很明白:Framework的使用者就是自己公司里的開發人員。而且還要使得開發的使用盡量的方便,不要到處去配置一些文檔,最好就是把Framework引入進來,稍微配一下就使用。

在Richard設計的Framework中,就DAL而言,如果希望DAL返回DataTable,DataReader等給BLL,那么需要配置的僅僅只是指明數據庫的連接字符串;如果希望DAL返回的數據實體給BLL,那么就得把一張張的表映射成為實體,然后讓這些實體繼IDataEntity接口就行了。 Richard思考了之前對DAL的設計,在此他做了一些改進。

首先就是對于IDataContext的重新設計和理解:之前的設計是定義了IDataContext,然后用不同的方式實現這個接口,如LinqDataContext.Provider就是用Linq的方法來返回結果。現在Richard認為IDataContext其實就是用來操作數據庫的,所以返回的結果就應該是操作數據之后的結果,如Update操作就返回受影響的行數或者是否更新成功。至于是否要把一些額外的信息包裝返回給BLL,就不是IDataContext的實現者的事情了。而且Richard還考慮到了需要在一定程度上支持原生的ADO.NET,起碼給ADO.NET預留接口。

基于此,Richard就把IDataContext定義為一個接口聲明,然后再定義了IDataEntityContext,和IDataTableContext來繼承IDataContext,他們的關系圖如下:

其中IDataEntityContext使用Linq和Entity Framework來實現,而IDataTableContext就是用ADO.NET的方式來實現。

IDataEntityContext接口的和系列文章中定義的一些方法差不多,但是做了修改。其中有一點要提的就是:ICriteria就是所有條件對象要實現的接口。例如,可以根據相應的條件刪除,更新數據。

代碼

///


/// 所有的數據實體執行者實現這個借口
///

public interface IDataEntityContext:IDataContext
{
TEntity Add where TEntity : IDataEntity;
List Add where TEntity : IDataEntity;

bool Update where TEntity : IDataEntity;
bool Update where TEntity : IDataEntity;
bool Update;

bool Delete where TEntity : IDataEntity;
bool Delete where TEntity : IDataEntity;
bool Delete;

int GetCount;
List Query;
List Query where TEntity :

IDataEntity;
List Query;
}


Tag: 設計公司 | 網頁設計公司 | 廣告公司 | 網站設計 | 平面設計 | 互動媒體 | 網頁設計 | Web design | Website design | design house | 媒體公司 | Iphone app | 程式設計 | Flash 網頁 | Flash game | 動畫設計 | 後期製作 | 網上商店 | 網上宣傳 | 網頁服務 |

没有评论:

发表评论