sns社區架構設計案例分享

今天看了個社區,瞭解了一下該產品的架構設計,作一下分享。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   提示用「提示:」來表示:

提示:

  1. 1.         提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息
  2. 2.         提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息

l   警告用「警告:」來表示:

警告:

  1. 1.   警告信息警告信息警告信息警告信息警告信息警告信息警告信息警告信息;
  2. 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();

}

……

}

2、 架構使用說明 > 總體說明 >


 

 

圖表1分層設計說明

 

  1. 1.         各層職責:

職責

說明

表現層

負責向用戶顯示信息和處理用戶指令。(這裏的用戶也多是其餘計算機系統,不必定是使用用戶界面的人)

可能包括asp.net mvc、winform、移動客戶端程序

應用層

定義軟件要完成的任務,而且指揮領域層來解決問題。應用層要儘可能簡單,不包含業務規則或者知識,而只爲領域層協調任務,分配工做,使它們互相協做。

通常包括Web Service、WCF、REST。

在咱們目前的架構中應用層佔的比重很是小,一般能夠忽略。

領域層

負責表達業務概念,業務狀態信息以及業務規則。儘管具體存取業務狀態技術細節由基礎設施層實現的,可是反映業務狀況的狀態是由本層控制和使用的。

領域層是業務軟件的核心,通常包括:實體、值對象、領域層Service。

基礎設施層

爲以上各層提供通用的技術能力:爲應用層傳遞消息,爲領域層提供持久化機制,爲用戶界面提供呈現控件等。

 

 

  1. 2.         從上向下,層中元素僅依賴本層或其下層的元素,而不能依賴上層。
  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、各應用模塊項目;

  1. 4.         項目內的目錄組織

1)         在BusinessComponents等項目中因爲業務構件衆多,而每一個構件的文件數並很少,建議以構件名稱來做爲目錄組織,例如:Tag、PrivateMessage;

2)         在各應用模塊項目中建議採用類的類型來做爲目錄組織,例如:Models、Repositories、Services;

  1. 5.         命名約定:

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

獲取全部實體(僅用於數據量少的狀況)

可設置排序字段(多個排序字段用逗號分隔)

自動對進行緩存(緩存策略與實體配置的緩存策略相同)

相關文章
相關標籤/搜索