ASP.NET 常見參考專案的 UI、BLL 、Model 、 DAL 分析(轉載CSDN)
應用/專案名稱 | UI層實現 | Business Model & Logic Layer 實現 | Data Access Layer 實現 |
Personal Web Site Starter Kit | 在ASP.NET頁面上直接利用 ObjectDataSource 來繫結 PhotoManager 中的方法來獲取資料、更新資料 | 兩個資料實體類(Album、Photo),一個管理類(PhotoManager) 自行解決資料庫連線、使用 SqlCommand 來呼叫儲存過程來完成 |
|
Club Web Site Starter Kit | 在ASP.NET頁面上直接利用 SqlDataSource 來獲取資料、更新資料 | 只有一些簡單的 Helper/Utility類,業務邏輯大多在頁面上實現 | 有一個DataSet,提取 Member表的資料,在自己的資料庫中擴充了 SqlMembershipProvider的欄位 |
Classifieds Site Starter Kit |
在ASP.NET頁面上,增/刪/改主要是利用FormView呼叫BLL中的ModelDB來實現,資料列表主要利用ModelCache的List和ModelDB返回的ModelDataTable來繫結 |
1) BLL中實現了 ModelDB的類,呼叫DAL中的DataSet來進行資料更新,如果是查詢資料(GetModelList),則得到 ModelDataComponent.ModelDataTable,這是資料集自動生成程式碼中的一個類 2) 在 App_Code 的Web目錄中,主要實現了部分實體在 HTTP Context中的Cache功能,建立了 CachedModel(資料實體類)及其管理物件 ModelCache,後者主要是將BLL層的ModelDB的Retrive結果DataTable轉成 List |
全是ASP.NET 2.0 中的DataSet,實現了所有表資料的獲取與更新,它是呼叫儲存過程來實現的 |
Commerce Starter Kit | 在ASP.NET頁面上,有一些是直接呼叫 ModelManager物件來完成使用者互動,有一些則是利用 ObjectDataSource 繫結 ModelManager 來達到同樣功能 對於某些操作,如果沒有對應的 ModelManager 則直接使用 SqlDataSource |
1) 在Objects目錄下,定義了資料實體類,包含所有屬性的Get/Set方法的定義,沒有例項化方法,而是使用 void Load(IDataReader)來初始化,其中有一個物件(ShoppingCartItems),則繼承至DataTable,利用BuildDataTable()來進行初始化 2) 利用數個 ModelProvider 將與資料庫的主要互動功能封裝起來,提供了實體層次的CRUD 3) 在 BLL 目錄下,有數個 ModelManager,提供從業務層面對 Model 的操作,其中主要是呼叫 ModelProvider來完成具體的操作 |
在 ModelProvider專案中中,先定義ModelProvider抽象類,再由 SqlModelProvider 來繼承,後者中利用 SqlHelper 來完成資料訪問,主要是呼叫儲存過程 |
Duwamish 7.1 (.NET 1.1) |
呼叫BusinessFacade中的 OrderSystem 和 ProductSystem 中的方法完成使用者互動,這主要是呼叫DAL層的相關物件來完成的 | 1) ModelData,繼承自System.Data.DataSet,在建構函式裡呼叫BuildDataTables()來初始化一個DataTable用來儲存Model資料 2) 在BusinessFacade和BusinessRule中,實現了與業務邏輯有關的內容,呼叫資料層的 Models 來完成資料訪問 |
實現了數個 Models物件,提供了對於 ModelData的CRUD方法,它也是呼叫 SqlHelper 來完成與資料庫的互動 |
Jobs Site Starter Kit | 利用 ObjectDataSource 繫結 Model 類,Command 主要是呼叫 Model 的 CRUD方法 | 在 Model 物件中定義了所有屬性和CRUD方法,實現時呼叫了 DAL 的 DBAccess 物件,也使用了諸如 SqlParameter 等物件 | 只有一個類 DBAccess ,屬於工具類,類似於 SqlHelper,它是利用 System.Data.SqlClient 來實現的,如果向其他資料庫移植,程式碼量不大 |
Timer Tracker Starter Kit | 利用 ObjectDataSource 繫結 Model 類,Command 主要是呼叫 Model 的 CRUD方法 | 在 Model 物件中定義了所有屬性和CRUD方法 | DataAccess:抽象類,定義了DAL層需要實現所有 Model 的 CRUD 對應的資料訪問方法 DataAccessHelper:工廠類,利用配置建立相應的 DataAccess 物件 SqlDataAccess:DataAccess 的 SQL Server 實現,其中也包含一些類似於SqlHelper 的通用方法以簡化程式碼 |
.Text 0.95 (.NET 1.1) |
大多數是呼叫 Model有直接呼叫 SqlDataProvider 來獲取資料、更新資料 | 在Dottext.Framework 的 Component 中定義了業務實體 Model 和 ModelCollection,在在Dottext.Framework定義了 Models 類,主要用提供 Model 的 CRUD 方法,其中的 R 返回 ModelCollection | 在Dottext.Framework 的 Data 中定義了 IDbProvider和 IDTOProvider 介面,然後提供了 DataDTOProvider 和 SqlDbProvider 的實現,其中呼叫了 SqlHelper 類 |
Community Server 2.1SDK (.NET 1.1 & 2.0) |
直接呼叫 Models 的方法來獲取資料、更新資料等 | 在 CommunityServerComponents 專案的 Components 中定義 Model 類,其中僅包含屬性定義及建構函式,另外定義了 Models 類,其中實現了 Model 的 CRUD 方法,它是呼叫 Provider 下的 CommonDataProvider 來完成資料訪問的 | 在 CommunityServerComponents 專案的 Proivder 中,利用抽象類CommonDataProvider 定義了所有 BLL & Model 層需要的資料訪問方法,然後在 SqlDataProvider 中專案中使用 SqlDataProvider 繼承此類,完成與 SQL Server 資料庫的互動 |
.Pet Shop 4.0 | 在 asp.net 的頁面上,大多是利用程式碼來呼叫 BLL 層的 Model 物件來獲取資料、更新資料 | Model 專案 中定義了所有的業務實體 ModelInfo BLL 專案中定義業務實體 Model ,其中包含業務視角的 CRUD 方法,它們是呼叫 IDAL 中的 IModel 的 CRUD 方法來實現的 |
IDAL 專案中有多個介面定義 IModel,其中定義了需要實現的 Model 的 CRUD 方法 SqlServerDAL 和 OracleDAL 分別在兩種資料庫上實現了 IDAL DALFactory 為工廠類,負責根據配置返回相應的 IDAL 的 IModel 實現類 DBUtility 是 SQL Server 和 Oracle 資料庫操作的工具類,主要是 SQLHelper 和 OracleHelper |
簡單個人評價:
- Personal Web Site Starter Kit:簡單,供初學者參考之用
- Club Web Site Starter Kit:對標準 MemberShip 的擴充值得一看
- Classifieds Site Starter Kit:結構較為清晰,利用 DataSet 簡化了大量 SQL 程式碼的編寫
- Commerce Starter Kit: 利用了 Provider 模型,有些小瑕疵,如界UI層有 SqlDataSource,Model 中有 DataTable
- Duwamish 7.1:架構比較清晰,但Model 繼承自 DataSet ,因此其 BuildDataTables 和 Models 中的CURD 方法較為麻煩,程式碼量較大
- Jobs Site Starter Kit:簡單實用,有些缺點,如 Model 的 CRUD 方法的 SqlParameter 造成 BLL 和 DAL 無法完全隔離
- Timer Tracker Starter Kit:一種架構清晰、較好的實現模式,只是程式碼量稍大
- Text 0.95:基於 .NET 1.1 ,因此 BLL 層稍顯複雜,DAL 層程式碼量也較大
- Community Server 2.1:它同時相容 .NET 1.1 和 .NET 2.0 ,因此沒有利用 .NET 2.0 的許多特性,但其 Provider 的模式較為清晰
- Pet Shop 4.0:架構清晰
相關文章
- js日常參考(常見事項)JS
- 軟體專案管理常見問題分析(轉)專案管理
- [轉]Oracle的異常控制編碼參考Oracle
- Asp.net中Cookie簡明參考 (轉)ASP.NETCookie
- mysqldump常見使用場景及引數參考MySql
- iOS常見基礎面試題(附參考答案)iOS面試題
- 專案管理常見問題解答(轉)專案管理
- [轉載] Oracle優化器參考Oracle優化
- 常見的UI框架UI框架
- 團隊專案選題參考
- asp.net 圖表使用參考ASP.NET
- Oracle分析函式參考手冊(轉)一Oracle函式
- Oracle分析函式參考手冊(轉)二Oracle函式
- 轉載--常見hints的基礎用法
- 【轉載】資料庫索引重建參考依據資料庫索引
- java集合中的常見考點Java
- iOS專案中Json轉Model的坑iOSJSON
- iOS常見面試題(block,runtime,runloop,類結構)附參考答案iOS面試題BloCOOP
- 常見的專案管理問題有哪些?專案管理
- react建立專案&&常見的三大HookReactHook
- Flask專案常見面試問題Flask面試
- Python常見專案部署流程Python
- 【UI】第五週 VI專案-CSDN就業班-專題視訊課程UI就業
- Quartz2入門參考資料(轉載收藏)quartz
- 常規管理法(檔案資料分析)(轉載)
- 專案經理和專案參與者(轉)
- Oracle 9i 分析函式參考手冊(轉)Oracle函式
- 常見的高可用MySQL解決方案轉載MySql
- SQL語法參考(轉)SQL
- C語言常見錯誤分析 (轉)C語言
- 購買生活用品時常見的一些執行標準參考
- MySQL配置檔案參考MySql
- 專案經理對成本的考慮(轉)
- 專案管理中四種常見的階段專案管理
- 實際專案中的常見演算法演算法
- 一個考過CCNA的朋友經驗參考(轉)
- CSDN專案:每日一題每日一題
- Vue專案打包常見問題整理Vue