Time of Update: 2018-12-06
領域模型是應用程式的核心,它包括了領域對象、狀態、方法、事件、商務邏輯以及對象之間的關係。現在,我們來為Tiny Library CQRS建立一個領域模型項目。在 Solution Explorer 下,按右鍵TinyLibraryCQRS項目,單擊 Add | New Project… 菜單,這將開啟 Add New Project 對話方塊 在 Installed Templates 選項卡下,選擇 Visual C# | Windows,然後選擇 Class Library
Time of Update: 2018-12-06
在領域驅動設計的案例中,倉儲的設計是很具有爭議性的話題,因為倉儲這個角色本身就與領域模型和基礎結構層對象相關,它需要序列化領域對象(應該說是彙總),然後將其儲存到基礎結構層的持久化機制。於是,在領域驅動設計的社區中,存在兩種觀點:1、領域模型不能訪問倉儲,理由是:倉儲需要跟技術架構層打交道,在領域模型中訪問倉儲就會破壞領域模型的純淨度。需要使用倉儲的,需要在領域模型上加上一層,比如Application層,在該層中擷取倉儲執行個體並處理持久化邏輯2、領域模型可以訪問倉儲,但僅僅是通過倉儲介面和I
Time of Update: 2018-12-06
今天比較鬱悶,想修改下NHibernate設定檔以最佳化下效能,於是想跟蹤下各個操作下產生的產生的 sql 唉,我這麼懶的人首先想到的就是在網上找下已有的方法,結果讓人失望的很啊。網上能給出答案的還真沒被我看到,都是些沒思考過就亂回答的人,什麼show_sql=“true”,我靠,這隻能從控制台看到撒,嗎的,現在還有幾個應用是控制台應用啊? 於是就只能自己找方法了,終於,在我翻閱NHibernate
Time of Update: 2018-12-06
這段時間一直在忙工作,已經有一個月沒更新部落格了。從現在開始,我將繼續討論Microsoft NLayerApp案例,希望各位愛好Microsoft NLayerApp案例、架構設計以及DDD的朋友們能夠繼續關注。從架構上看,Microsoft
Time of Update: 2018-12-06
在Apworks架構發布Alpha版本的時候,我已經針對其開發案例:Tiny Library
Time of Update: 2018-12-06
今天,看jeffery的架構設計時,發現原來在CLR的編譯器中有一種叫做類型構造器的東西,可以實現單一實例模式,很簡單只要在類中加上一個靜態建構函式就可以實現單一實例模式了,不用像通常設計模式中講的那樣,些一大堆的關於安全執行緒的代碼,編譯器會幫我們做好這些工作,真的很智能。當然啦在類中寫的這個靜態建構函式,編譯器也會自動幫你加上private的修飾符,同時編譯器還不會允許你自己加上存取修飾詞,例如:如果你顯示的將該函數生命成Private,哪麼編譯時間就會報一個錯誤。
Time of Update: 2018-12-06
上篇中我們討論了Ext.window的簡單使用,今天我們要看看強大的FormPanel,也是繼承panel組件的使用。首先弄清楚這個問題,建立的時候://查看原始碼便知,兩種方法是一樣的Ext.form.FormPanel = Ext.FormPanel;我們還是從最簡單的代碼執行個體開始吧:<!--html代碼--><body><div id="form1"></div></body>//js代碼var form1 = new Ext
Time of Update: 2018-12-06
1. Table per concrete class:每一個具體的類對應一張表,從關聯式模式中完全拋棄多態和繼承關係;2. Table per class hierarchy:每一個繼承體系對應一張表,通過不規則的關聯式模式支援多態,用一個辨識器列(discriminator column)來標識類型資訊;3. Table per subclass:每一個子類對應一張表,通過外鍵關係來表示出繼承關係。下面對這三種映射策略的優缺點逐一加以說明:1. Table per concrete
Time of Update: 2018-12-06
在對NLayerApp實際項目進行討論之前,讓我們首先學習一下(或者應該說重溫一下)分層/多層架構與應用系統設計原則。很多朋友會認為這些都是老掉牙的內容,只要是軟體從業人員,都會對這些內容非常熟悉。然而,果真如此嗎?我在這裡整理這部分內容,一方面是為介紹NLayerApp打下基礎,而另一方面,則是希望藉此機會將這些理論性的東西做個歸納,也希望讀者朋友能夠認真閱讀,畢竟溫故知新嘛。 需要說明的是,從本章節開始,大多數理論性的東西都源自Microsoft
Time of Update: 2018-12-06
寫在前面也許在閱讀了上篇文章中我列出的那部分資料後,還是有很多朋友對領域驅動設計不瞭解。正如上文評論中有網友提到微軟西班牙團隊也做了一個面向領域的分布式應用系統架構的案例,地址是http://microsoftnlayerapp.codeplex.com/。在這個網站的首頁上,又對領域驅動設計做了詮釋,我覺得總結的很好,特地將其翻譯成中文寫在這裡,供大家參考:DDD is much more than this!We're talking about complex apps…, all
Time of Update: 2018-12-06
為了能清楚地描述Web Service 和Remoting之間的區別,我打算從他們的體繫結構上來說起: Web Service大體上分為5個層次: 1. Http傳輸通道 2. XML的資料格式 3. SOAP封裝格式 4. WSDL的描述方式 5. UDDI 總體上來講,.NET 下的 Web Service結構比較簡單,也比較容易理解和應用: 一般來講在.NET結構下的WebService應用都是基於.net
Time of Update: 2018-12-06
上篇中我們簡單的談到了FormPanel中的fieldset和ComboBox,今天我們繼續把這個話題說下去,說全一點,說深一點。3.可選的fieldset執行個體 其實就是帶個chechbox,有點像論壇註冊時有一部分是選填資訊的那種效果,主要知識點://因為覺得這個參數特別,特舉一例以說明1.checkboxToggle:true//true則呈現一個帶checkbox的fieldset,選中則展開,否則相反,預設為false2.checkboxName:string//當上面為true
Time of Update: 2018-12-06
寫在前面有段時間沒有更新部落格了,一方面因為工作繁忙,另一方面則是我最近一直在堅持設計和完善基於DDD的應用系統開發架構Apworks。讀過我《領域驅動設計案例:Tiny Library》這一系列文章的朋友一定聽說過Apworks架構,雖然這個架構至今仍未成熟到能夠用在真正的系統開發上,但它已經實現了CQRS體繫結構模式,已經可以用於軟體架構設計的示範上了。從這一講開始,我將逐步介紹如何採用CQRS架構實現Tiny Library的業務。你可能會聽得煩了:又是Tiny
Time of Update: 2018-12-06
項目簡介Microsoft – Spain團隊有一個很不錯的“面向領域多層分布式項目”案例:Microsoft – Domain Oriented N-Layered .NET 4.0 App
Time of Update: 2018-12-06
應廣大網友的要求,我最近抽空基於ASP.NET MVC + WCF + Entity Framework做了一個案例,該案例以圖書館圖書管理、讀者借書、還書為業務背景,以領域驅動設計為思想指導,全程採用Microsoft技術進行實踐,希望能夠給Microsoft技術的狂熱者以及領域驅動設計的學者提供實踐參考。本案例選用的商務邏輯非常簡單,所以項目取名上我選用了“Tiny
Time of Update: 2018-12-06
工作繁忙,很久沒有更新部落格了。下面言歸正傳,簡單介紹一下Tiny Library的使用者介面實現。如前所述,Tiny Library採用ASP.NET MVC架構實現了基於瀏覽器的使用者介面。回顧一下《商務邏輯與系統結構》一文,從層次架構圖中我們可以清楚地看到,使用者介面層是通過WCF Services與系統互動的。為了快速簡單地實現Tiny Library,我只是簡單地使用了ASP.NET MVC,因此沒有對其做更深入的挖掘,有關ASP.NET
Time of Update: 2018-12-06
3.1伺服器推送技術(Server
Time of Update: 2018-12-06
“序列化”可被定義為將對象的狀態儲存到儲存媒介中的過程。在此過程中,對象的公用欄位和私人欄位以及類的名稱(包括包含該類的程式集)都被轉換為位元組流,然後寫入資料流。在以後“還原序列化”該對象時,建立原始對象的精確複本。一、為什麼要選擇序列化 一個原因是將對象的狀態保持在儲存媒體中,以便可以在以後重新建立精確的副本; 另一個原因是通過值將對象從一個應用程式定義域發送到另一個應用程式定義域中。 例如,序列化可用於在 ASP.NET 中儲存工作階段狀態並將對象複製到
Time of Update: 2018-12-06
今天學習了一下asp.net ajax調用webservice的方面的知識,主要是看了趙劼webcast課程,然後自己練習了一下,在練習課程中第四個執行個體的時候,發現我單獨運行webservice報錯,而在用戶端調用webservice居然可以返回正確結果。錯誤資訊如下:無法序列化介面 System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral,
Time of Update: 2018-12-06
Tiny Library使用應用服務層向使用者介面層提供服務,具體實現是採用Microsoft WCF Services。在Tiny