今天看了個社區,瞭解了一下該產品的架構設計,作一下分享。node
內容來源:http://www.jinhusns.com/Document/FrameworkDocument/?type=cc數據庫
1、 架構使用說明 > 引言 > 緩存
l 全部菜單用[…]->[…]表示,例如[設置]->[外觀]表示菜單「設置」的子級菜單項「外觀」。架構
l 全部按鈕或超連接用「…」表示,如「肯定」按鈕。mvc
l 注意事項用「注意:…」 表示,給出一些容易忽略的可是在某個地方比較重要的因素,例如:asp.net
注意:ide
1.TabPanel的TargetID屬性須要關聯到某個<div>的id; ui
2.TabPanel的HeaderText屬性指定標籤頁的頭部文字; spa
3.能夠設置TabPanel的Href屬性,使Tab頁的內容從另外一個頁面獲取;.net
l 提示用「提示:」來表示:
提示:
l 警告用「警告:」來表示:
警告:
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();
}
……
}
2、 架構使用說明 > 總體說明 >
圖表1分層設計說明
層 |
職責 |
說明 |
表現層 |
負責向用戶顯示信息和處理用戶指令。(這裏的用戶也多是其餘計算機系統,不必定是使用用戶界面的人) |
可能包括asp.net mvc、winform、移動客戶端程序 |
應用層 |
定義軟件要完成的任務,而且指揮領域層來解決問題。應用層要儘可能簡單,不包含業務規則或者知識,而只爲領域層協調任務,分配工做,使它們互相協做。 |
通常包括Web Service、WCF、REST。 在咱們目前的架構中應用層佔的比重很是小,一般能夠忽略。 |
領域層 |
負責表達業務概念,業務狀態信息以及業務規則。儘管具體存取業務狀態技術細節由基礎設施層實現的,可是反映業務狀況的狀態是由本層控制和使用的。 |
領域層是業務軟件的核心,通常包括:實體、值對象、領域層Service。 |
基礎設施層 |
爲以上各層提供通用的技術能力:爲應用層傳遞消息,爲領域層提供持久化機制,爲用戶界面提供呈現控件等。 |
|
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、各應用模塊項目;
1) 在BusinessComponents等項目中因爲業務構件衆多,而每一個構件的文件數並很少,建議以構件名稱來做爲目錄組織,例如:Tag、PrivateMessage;
2) 在各應用模塊項目中建議採用類的類型來做爲目錄組織,例如:Models、Repositories、Services;
1) Repository命名::=實體名稱+Repository
2) Service命名::=實體名稱+Service
3、架構使用說明 > 運行環境 > 使用說明 >
4、 架構使用說明 > 數據訪問 > 使用說明 >
類圖
功能介紹
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 |
獲取全部實體(僅用於數據量少的狀況) 可設置排序字段(多個排序字段用逗號分隔) |
自動對進行緩存(緩存策略與實體配置的緩存策略相同) |