1.領域驅動簡介.2.領域.子域.限界上下文.3.上下文映射圖

来源:http://www.cnblogs.com/Gao1234/archive/2016/10/19/5957245.html
-Advertisement-
Play Games

1.領域驅動簡介 領域驅動本身是一款古老的軟體建模思想 領域驅動兩大特性:通用語言.限界上下文 1.通用語言是一種思想.解釋是:團隊共用的術語.便於交流.//比如行業的術語或者.一個圈子內通俗的名稱如開發者們對Visual Studio 的簡稱:VS. 2.限界上下文是整個應用程式之內一種概念性邊界 ...


1.領域驅動簡介

領域驅動本身是一款古老的軟體建模思想

 

領域驅動兩大特性:通用語言.限界上下文

 

1.通用語言是一種思想.解釋是:團隊共用的術語.便於交流.//比如行業的術語或者.一個圈子內通俗的名稱如開發者們對Visual Studio 的簡稱:VS.

 

2.限界上下文是整個應用程式之內一種概念性邊界.這個邊界內的領域術語.片語或句子.都是通用語言.都有確定的上下文含義.//限界上下文就像一個圈.包含了內部的術語.也能和其他限界上下文交互.

 

限界上下文和通用語言屬於一對一關係.限界上下文能容納一個獨立的業務領域所使用的通用語言.

註意當整個團隊工作在同一個限界上下文中通用語言才是通用.

雖然我們只工作在一個限界上下文中.但是我們通常需要和其他限界上下文交互.這時候可以通過上下文映射圖集成.

每個限界上下文都有自己的通用語言.但是語言間的通用術語會有很多重疊.

如果試圖將一種通用語言運用在整個企業中.難免會失敗.//以燃料為例.汽車的柴油和航空煤油.

 

2.領域.子域.限界上下文

 

領域是一個團體所做的事和他包含的事物.商業機構通常會確定一個市場.然後在這個市場上銷售產品.每個團體都有他的業務範圍和行為.這個業務範圍就是領域.當你為某個公司開發軟體時.你面對的就是這個公司的領域.

 

 

假設物流是一個領域.物流領域應該有四個子域.產品.訂單.發票.物流.假設這套領域開始運轉.零售商用產品向客戶展示.達成購買意向.出現訂單.最後生成發票.安排物流.

產品.訂單.發票.物流這四個子域構成了物流領域.

 

常規的產品在銷售後必應存在需求量大或者小的情況.量大就容易脫銷.量小就容易過剩.都會對利潤造成損傷.

所以就需要一個核心域:銷量預測系統.通過歷史銷售記錄或者.市場調研等方式.採購正確的數量.

 

舉個慄子.解釋限界上下文中通用語言的含義.

 

每一個子域的業務範圍就是一個限界上下文.含有通用語言.

 

在產品的限界上下文中.客戶的含義只需要:購買歷史.對此產品的忠誠度.購買能力.

在下單的限界上下文中.客戶含義只需要:名字.購買產品.寄送地址.價格.

客戶在每個限界上下文中屬於通用語言.但是只限於此限界上下文使用.

 

 

3.上下文映射圖

 

一個公司的上下文映射圖可以抽象的理解為.一個簡單的框圖.表示若幹限界上下文的映射關係.

 

上下文映射圖表現的是公司架構當前的狀態.可以直白的看出公司中系統的上下游關係.以及平行關係.

 

相比傳統的開發思想.大泥球.瀑布.領域驅動設計一般採取敏捷.

系統間明確統一上下游系統交互協議.

單個系統註意解耦合.

 

以物流為例.一位客戶瀏覽產品系統確定訂購.首先產品系統和庫存系統交互.提供產品.然後產品系統和訂單交互生成訂單.付款後和發票系統交互生成發票.最後通過物流系統交付客戶.最終將此銷售記錄提交預測系統.

預測控制產品系統中能展示的用品.

看起來就像一個金字塔結構.底層的庫存系統最龐大.各種用品.

上一層金字塔產品.只展示有效.能盈利的用品.

在上一層訂單.只有達成購買意向的用品.

在上一層發票.已經付款的用品.不包含購買後未處理客戶就申請退款的用品.

金字塔頂.雙方達成共識.貨物交付.

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 國際慣例,本文寫於本人使用《大話設計模式》一書學習設計模式的路上,適用於初學設計模式的道友交流之用,大神誤入,請留下您寶貴的意見,感激不盡; 《大話設計模式》這本書名字太長,此篇之後統一稱呼《大設》; 單一職責原則 定義 就一個類而言,應該僅有一個引起它變化的原因 理解 類級別的單一職責 我們 ...
  • 下麵是總結的幾個使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/Writer/Excel5.php'; 用於輸出.xls的 創建一個excel $objPHPExc ...
  • 最近再學習Libevent由於自己使用的是windows系統,遺憾的是有關在vs下可以參考的程式少之又少。在參考了許多的博客文章後。自己摸索寫了一個簡單的Libevent Server程式。並且在網上找了一個簡單的客戶端程式,測試該代碼成功。今天在此做一個記錄。 Libevent的確是一個非常好用的 ...
  • 本節介紹TreeMap,相比HashMap,它有什麼不同?除了Map介面,它還實現的SortedMap和NavigableMap介面有哪些方法?TreeMap具體是如何實現的?... ...
  • String str = "str"; str.length(); //3 返回字元串長度 str.indexOf("s"); //0 返回s所在下標0開始; 沒有則返回-1 str.trim(); //"str" 去除str的前後空格 str.substring(0,1); //"s" 含首不含尾 ...
  • 加 ^$ 整個字元串滿足要求 不加部分字元串滿足要求即可通過 \:轉義字元 \d:任意一個數字 (digit:數字) \w:任意一個單詞字元( 數字,字母,下劃線)(word:單詞) \s:任意一個空白字元(\t \r \n \f \x0B) (space:空) \D:任意一個非數字字元 \W:任意 ...
  • 1.查看id生成策略,2.查看是否是手動設置的id ;3.查看實體對象映射配置是否正確. 例如: public Emplopes(String name, char gender) { super(name, gender); // TODO Auto-generated constructor s ...
  • 一、滑鼠控制角色行走(每一步固定距離) 1.首先,要理解角色移動的原理。 2.現在來定義所需變數,在main窗體模塊中最頂端輸入以下代碼。 3.在main窗體中繪製一個timer時間控制項,將其Enabled(啟動)設為false,Interval(間隔)設為30(這個可以自定義,是用來調整角色移動速 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...