原创 EntityFramework之領域驅動設計實踐(四)

存儲過程 - 領域驅動的反模式 EntityFramework(EF)中有一項功能,就是能夠根據數據庫中的存儲過程生成實體的行爲(或稱方法,以下統稱方法)。我在本系列的第一篇博文中就已經提到,這種做法並不可取!因爲存儲過程是技術架

原创 EntityFramework之領域驅動設計實踐(三)

案例:一個簡易的銷售系統 從現在開始,我們將以一個簡易的銷售系統爲例,探討EntityFramework在領域驅動設計上的應用。爲了方便討論,我們的銷售系統非常簡單,不會涉及客戶存在多個收貨地址的情況,也不會包含任何庫存管理的內容

原创 EntityFramework之領域驅動設計實踐(十)

規約(Specification)模式 本來針對規約模式的討論,我並沒有想將其列入本系列文章,因爲這是一種概念性的東西,從理論上講,與EntityFramework好像扯不上關係。但應廣大網友的要求,我決定還是在這裏討論一下規約模

原创 EntityFramework之領域驅動設計實踐(五)

聚合 聚合(Aggregate)是領域驅動設計中非常重要的一個概念。簡單地說,聚合是這樣一組領域對象(包括實體和值對象),這組領域對象聯合起來表述一個完整的領域概念。比如,根據Eric Evans《領域驅動設計》一書中的例子,一輛

原创 EntityFramework之領域驅動設計實踐【擴展閱讀】:服務(Services)

服務(Services) 從本講開始,所涉及的DDD話題可能與EntityFramework關係不大了。網友千萬別罵我是標題黨,呵呵。由於這部分內容並非是特定於EntityFramework的,更多的是在介紹模式及實踐心得,所以E

原创 EntityFramework之領域驅動設計實踐(六)

模型對象的生命週期 - 工廠 首先應該認識到,是對象就有生命週期。這一點無論在面嚮對象語言還是在領域驅動設計中都適用。在領域驅動設計中,模型對象生命週期可以簡要地用下圖表示: 通過上圖可以看到,對象通過工廠從無到有創建,創建

原创 EntityFramework之領域驅動設計實踐【擴展閱讀】:CQRS體系結構模式

CQRS體系結構模式 本文將對CQRS(Command Query Responsibility Segregation,命令查詢職責分離)模式做一個相對全面的介紹。可以這麼說,CQRS打破了經典的領域驅動設計實踐,在應用CQRS

原创 EntityFramework之領域驅動設計實踐(七)

模型對象的生命週期 - 倉儲 上文中已經提到了管理領域模型對象生命週期的兩大角色,即工廠與倉儲,並對工廠的EntityFramework實踐作了詳細的描述。本節主要介紹倉儲的概念,由於倉儲的內容比較多,我將在接下來的兩節中具體講解

原创 C#網絡編程(訂立協議和發送文件) - Part.4

文件傳輸 前面兩篇文章所使用的範例都是傳輸字符串,有的時候我們可能會想在服務端和客戶端之間傳遞文件。比如,考慮這樣一種情況,假如客戶端顯示了一個菜單,當我們輸入S1、S2或S3(S爲Send縮寫)時,分別向服務端發送文件Client0

原创 EntityFramework之領域驅動設計實踐(九)

倉儲的實現:深入篇 早在年前的時候就已經在CSAI博客發表了上一篇文章:《倉儲的實現:基礎篇》。苦於日夜奔波於工作與生活之間,一直沒有能夠抽空繼續探討倉儲的實現細節,也讓很多關注EntityFramework和領域驅動設計的朋友

原创 簡單工廠模式

解讀設計模式----簡單工廠模式(SimpleFactory Pattern),你要什麼我就給你什麼 一、模式概述      從設計模式的類型上來說,簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(Static Factory Me

原创 EntityFramework之領域驅動設計實踐(八)

倉儲的實現:基本篇 我們先從技術角度考慮倉儲的問題。實體框架(EntityFramework)中,操作數據庫是非常簡單的:在ObjectContext中使用LINQ to Entities即可完成操作。開發人員也不需要爲事務管理而

原创 EntityFramework之領域驅動設計實踐 (一)

EntityFramework EntityFramework是微軟繼LINQ to SQL之後推出的一個更爲完整的領域建模和數據持久化框架。初見於.NET Framework 3.5版本,4.0的.NET Framework已經集成

原创 EntityFramework之領域驅動設計實踐(二)

分層架構 在引入實例以前,我們有必要回顧,並進一步瞭解分層架構。“層”是一種體系結構模式[POSA1],也是被廣大軟件從業人員用得最爲廣泛而且最爲靈活的模式之一。記得在CSDN上,時常有朋友問到:“分層是什麼?爲什麼要分層?三層

原创 C#網絡編程(同步傳輸字符串) - Part.2

服務端客戶端通信 在與服務端的連接建立以後,我們就可以通過此連接來發送和接收數據。端口與端口之間以流(Stream)的形式傳輸數據,因爲幾乎任何對象都可以保存到流中,所以實際上可以在客戶端與服務端之間傳輸任何類型的數據。對客戶端來說,