如前所述,領域驅動設計(DDD)是很是複雜的方法論,不過進行這裏的討論只須要理解DDD中的限界上下文(Bounded Context)安全
詞語的意義是由上下文決定的。例如,「角」這個詞語能夠出如今討論幾何學的上下文中,也能夠出如今零錢的上下文中,分別表示徹底不一樣的意思。在軟件開發中,軟件工程師使用得得心應手的命名空間也起到了上下文的做用。架構
DDD的設計者Eric Evans發現,在軟件的溝經過程中,軟件工程師每每不能理解領域專家(多是客戶)的專業領域,領域專家也看不懂軟件設計的相關文檔。DDD認爲,經過在軟件工程師和領域專家之間定義一致的上下文和上下文中的術語,能夠保證軟件設計者與領域專家的正確交流,以保證軟件邏輯正確和架構清晰。限界上下文之間經過仔細定義的接口通訊,從而實現低耦合。例如在聊天軟件中,可能有一個上下文處理用戶登陸,另外一個上下文處理用戶的聊天記錄,而這兩個上下文均可以定義稱爲Session的術語:前者中Session指用戶的認證信息,後者中的Session指兩個用戶的聊天進程。模塊化
這樣就解決了以前橫向擴展中代碼拆分的問題:每一個上下文均可以被安全地拆分出來,而且理由充分:每一個上下文每每對應着軟件想要解決問題的一個子問題,所以其內部代碼也必定是在集中解決這個問題。並且每一個上下文向外提供具備領域語義的接口,把上下文做爲切分軟件的界限,很天然地知足了軟件模塊化的高聚合低耦合原則。設計