今天看了個社區,了解了一下該產品的架構設計,做一下分享。
內容來源:http://www.jinhusns.com/Document/FrameworkDocument/?type=cc
一、 架構使用說明 > 引言 >
l 所有菜單用[…]->[…]表示,例如[設置]->[外觀]表示菜單“設置”的子級菜單項“外觀”。
l 所有按鈕或超鏈接用“…”表示,如“確定”按鈕。
l 注意事項用“注意:…” 表示,給出一些容易忽略的但是在某個地方比較重要的因素,例如:
注意:
1.TabPanel的TargetID屬性需要關聯到某個<div>的id;
2.TabPanel的HeaderText屬性指定標簽頁的頭部文字;
3.可以設置TabPanel的Href屬性,使Tab頁的內容從另一個頁面獲取;
l 提示用“提示:”來表示:
提示:
- 1. 提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息;
- 2. 提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息;
l 警告用“警告:”來表示:
警告:
- 1. 警告信息警告信息警告信息警告信息警告信息警告信息警告信息警告信息;
- 2. 警告信息警告信息警告信息警告信息警告信息警告信息警告信息警告信息警告信息;
l 提示事項用“提示:…”表示,用於給出簡明短小的建議或竅門。
l 提示事項用“警告:…”表示,用於提醒用戶重視程序可能帶來的潛在問題、不正確的結果以及要避免的錯誤。
l 類成員說明示例:
方法名稱 |
成員修飾 |
說明 |
備注 |
Insert(TEntity entity) : void |
public virtual |
把實體entity添加到數據庫 |
|
l 代碼塊表示為:
/// <summary>
/// 處理訪客計數的任務
/// </summary>
public class UserVisitsTask : TaskBase
{
/// <summary>
/// TaskBase方法
/// </summary>
public override void ExecuteTask(XElement node)
{
UserVisits.SaveQueue();
}
……
}
二、 架構使用說明 > 整體說明 >
圖表1分層設計說明
- 1. 各層職責:
層 |
職責 |
說明 |
表現層 |
負責向用戶顯示信息和處理用戶指令。(這里的用戶也可能是其他計算機系統,不一定是使用用戶界面的人) |
可能包括asp.net mvc、winform、移動客戶端程序 |
應用層 |
定義軟件要完成的任務,並且指揮領域層來解決問題。應用層要盡量簡單,不包含業務規則或者知識,而只為領域層協調任務,分配工作,使它們互相協作。 |
一般包括Web Service、WCF、REST。 在我們目前的架構中應用層占的比重非常小,通常可以忽略。 |
領域層 |
負責表達業務概念,業務狀態信息以及業務規則。盡管具體存取業務狀態技術細節由基礎設施層實現的,但是反映業務情況的狀態是由本層控制和使用的。 |
領域層是業務軟件的核心,一般包括:實體、值對象、領域層Service。 |
基礎設施層 |
為以上各層提供通用的技術能力:為應用層傳遞消息,為領域層提供持久化機制,為用戶界面提供呈現控件等。 |
|
- 2. 從上向下,層中元素僅依賴本層或其下層的元素,而不能依賴上層。
- 3. 各層在產品中的對應:
1) 基礎設施層對應於Tunynet.Platform中的Infrastructure、MvcExtensions;
2) 領域層主要存在於Tunynet.Platform中的BusinessComponents、E2的Enterprise以及各應用模塊項目中;
3) 應用層很少用到,如果有則存在於Tunynet.Platform中的BusinessComponents、E2的Enterprise及Common、Spacebuilder的Common、各應用模塊項目;
4) 表現層對應於E2的Common、Spacebuilder的Common、各應用模塊項目;
- 4. 項目內的目錄組織
1) 在BusinessComponents等項目中由於業務構件眾多,而每個構件的文件數並不多,建議以構件名稱來作為目錄組織,例如:Tag、PrivateMessage;
2) 在各應用模塊項目中建議采用類的類型來作為目錄組織,例如:Models、Repositories、Services;
- 5. 命名約定:
1) Repository命名::=實體名稱+Repository
2) Service命名::=實體名稱+Service
三、架構使用說明 > 運行環境 > 使用說明 >
四、 架構使用說明 > 數據訪問 > 使用說明 >
類圖
功能介紹
IEntity:Entity接口,所有實體都應該實現該接口;
IRepository<TEntity>:用於處理Entity持久化操作;
PagingDataSet:用於分頁數據封裝;
PagingEntityIdCollection:封裝用於分頁的實體Id;
Repository<TEntity>:數據倉儲實現類,所有自定義數據倉儲類都從此類派生;
常用方法介紹
Repository<TEntity>:
方法名稱 |
成員修飾 |
說明 |
備注 |
Insert(TEntity entity) : void |
Public virtual |
把實體entity添加到數據庫 |
|
Update(TEntity entity) : void |
public virtual |
把實體entiy更新到數據庫 |
|
Delete(TEntity entity) : int |
public virtual |
從數據庫刪除實體 |
|
DeleteByEntityId(object entityId) : int |
public virtual |
從數據庫刪除實體(by 主鍵) |
|
Exists(object entityId) : bool |
public virtual |
依據主鍵檢查實體是否存在於數據庫 |
|
Get(object entityId) : TEntity |
public virtual |
依據主鍵獲取單個實體 |
|
GetAll() : IEnumerable<IEntity> |
public virtual |
獲取所有實體(僅用於數據量少的情況) |
自動對進行緩存(緩存策略與實體配置的緩存策略相同) |
GetAll(string orderBy) : IEnumerable<IEntity> |
public virtual |
獲取所有實體(僅用於數據量少的情況) 可設置排序字段(多個排序字段用逗號分隔) |
自動對進行緩存(緩存策略與實體配置的緩存策略相同) |