1. 程式人生 > >業務邏輯層與中介軟體

業務邏輯層與中介軟體

中介軟體是什麼,主要職責是什麼

  1. 企業中介軟體看作是處理平臺和系統之間的計算機通訊的一種模型。
  2. 中介軟體軟體的職責就是對使用服務的系統進行抽象,使得它們不必知道自己所呼叫系統的技術細節。

  3. 例子:通過使用中介軟體伺服器,基於Java的系統得以呼叫Window伺服器上的服務,中介軟體伺服器處理互相分離的平臺之間的轉換。

業務邏輯層的真正目的是什麼

  1. 業務邏輯層是一個抽象層,包含第一和處理複雜業務功能的所有規則、工作流、和驗證邏輯,設計軟體以滿足這些複雜的功能。
  2. 業務邏輯層通常位於使用者介面、服務或表示層與資料訪問層之間。
  3. 將業務邏輯與應用程式中的其他層分離,就可以分離關注點,保持程式碼的鬆散耦合性。
  4. 業務邏輯層允許基於業務邏輯層進行不同的實現。例如,將UI從Web應用程式變為WPF應用程式。

業務邏輯層所在的位置

  1. 資料來源—->資料訪問層—–>業務邏輯層——>服務層——>(WPF Windows窗體;Web 窗體,其他服務)

業務邏輯層中存在的三種主要模式

  1. 事務指令碼(Transaction Script): 一種非常簡單的業務設計模式,遵循面向過程的開發方式,而不是面向物件的方法。它為每個業務事務建立一個過程,
    每個過程都包含完成業務事務所需的所有業務邏輯,包括從工作流、業務規則和驗證檢查到在資料庫中持久儲存的所有內容。
    事務指令碼模式的優點,它非常簡單,很易於理解,不需要任何關於該模式的前期知識(設計模式,依賴注入,控制反轉),就很容易明白它的作用。如果有新的業務用例
    需要處理,那麼可以直接新增新方法來處理它,該方法將包含所有相關的業務邏輯。
    如果有一個包含最少量業務邏輯的簡單程式,該應用程式並不適合完全的面向物件方法,那麼事務指令碼模式可能是一個不錯的選擇。

  2. 活動記錄(Active Record): 一個非常流行的模式,當底層的資料庫模型與您的業務模型相匹配時,這種模式尤其有效。
    特點:對於資料庫中的每一個表都存在一個對應的業務物件,業務物件代表資料表中的一行,在業務物件中包含資料和行為,同時包含用於持久化業務
    物件的方式以及新增新例項和查詢資料集合的方法。在活動記錄模式中,每個業務物件都負責它自身的持久化和相關的業務邏輯。
    缺點:

  3. 領域模型(Domain Model): 看作代表我們操作的領域的概念層。比如:如果我們在建立一個貸款應用程式,那麼該內容就代表貸款人、貸款、資產、債務。
    領域模型與它所要表示的實際領域越接近越好,因為這可以使我們更容易理解和複製的業務邏輯、規則和驗證過程。領域模型與活動記錄模式之間的主
    要差異是,領域模型的業務實體存在於領域模型之中,它們不知道如何持久化自身,且資料模型和業務模型之間並不一定要存在一對一的對映關係。

    領域模式的優點:領域模式不包含資料訪問程式碼,所以可以容易地對其進行單元測試,而不必模擬和存根這類資料訪問層的依賴。

如何選擇事務指令碼、活動記錄、領域模式

  1. 事務指令碼: 對於一個具有很少邏輯或沒有邏輯的簡單應用程式,作為一種直接的解決方案,事務指令碼就是一種絕佳選擇,並且後續的開發人員
    很容易理解這種解決方案。

  2. 活動記錄:如果業務層只是在資料庫之上的一個小型封裝介面,那麼活動記錄就是一種不錯的模式,有很多程式碼生成工具可以基於資料庫架構自動建立業務物件。

  3. 領域模型:當需要對豐富的複雜業務領域進行建模時,領域模型就非常適合。領域模型是一個完全面向物件的方法,該方法需要為實際業務領域建立
    一個抽象模型;當處理複雜的邏輯和工作流時,該模式非常有用。領域模型是持久化透明的,它依賴於對映器類(AutoMapper)和儲存庫模式來持久化和檢索業務實體。

領域驅動設計簡介

  1. 實體: 需要標識的物件,該標識存在於實體的整個生命週期內。
  2. 值物件: 他只有值沒有標識。
  3. 聚合與聚合根: 可以用於對邏輯實體和值物件進行分組。