我也不會發現第一篇中關于“充血實體”的錯誤說法(至少~我寫文章的時候~内心的想法是錯的~)
我個人不是很喜歡領域驅動設計~感覺這種思路(我們暫且叫它思路~雖然它有一些既有的原則和模式)
重點要求架構師深入到業務領域中去~
但是在國内往往很難真正的與領域專家做深入交流~
架構師劃分的領域模型和聚合往往與真實的情況差别較大~
即使劃分的較好~新的業務和變化的業務也另設計師非常頭疼~
另外
設計師很難将龐大複雜的業務抽象成領域模型
往往需要引入更為複雜的模型以對真實業務進行模組化
-----------
我看你們都是娈童癖~這玩意還沒發育成熟~就拿過去搞~有啥意思~
我下一章打算寫“登入;閃屏;用戶端資料緩存;WCF安全驗證”
(這些東西的代碼還沒個影子)
----------------------
問題一:關于調試
如果你的跟着我的章節在做練習~
那麼你可能會遇到從用戶端單步調試進入到WCF端的過程
我的WCF是直接用的IIS7.5的虛拟目錄
單步跳入WCF之前會提示

直接點[附加]就可以調試了~
問題二:關于建立動态WCF服務不完善的地方
在本系列第一篇中,我們使用了衆多servicefactory來建立服務;這樣是不好的
我對那段代碼做了修改
好吧!言歸正傳
一:架構窗體
先看圖檔
架構窗體分管布局的隻有四個Panel;
上、下、左、右。(搞過EXTJS的人比較喜歡說成東、南、西、北)-_-!
最上面的Panel是存放頂級菜單用的 (top menu)
最下面的panel是存放狀态資訊和系統版本用的
左邊的Panel又分為兩個panel
上面的是sub menu header
下面的是sub menu
當點選一個top menu之後,sub menu中将出現所有此top menu下的子菜單
sub menu header就是這個top menu的名字
(因為我們的top menu沒有選中狀态;是以這裡做一個sub menu header;讓使用者知道他點的是哪個頂菜單;sub menu就有選中狀态了)
右側的Panel也分為兩個Panel
上面的是tabs
下面的是child form
tabs是為了存放使用者打開過的業務窗體的标題;當使用者點選某個tab,将激活該窗體(在child form中顯示)
child form是目前正在操作的業務窗體
(這裡有例子會容易了解一些)
左右panel中間夾着一個splitter
此splitter可以拖動改變左右panel的寬度
這裡需要注意一點
應該先把左側panel拖進窗體,設定Dock left,
再拖一個splitter進窗體,他是天然的Dock left,
再拖右側panel進窗體,設定Dock fill
這樣splitter才會起作用
至于怎麼把其他panel拖動到這個窗體中來~我就不多說了
二:動态建立頂部菜單
現在我們就準備在界面上顯示菜單
IsInDesignMode是為了判斷目前的窗體是不是出于設計狀态
(設計狀态會執行一些代碼~如果不進行處理~窗體就無法設計)
代碼如下~
由于建立菜單~和響應菜單的點選事件需要很多代碼
我們把這些與菜單相關的代碼統一放在一個partial類裡
如你所見~我已經對上一章中寫的PrepareMenus做了一些修改~這些修改是為下一章服務~現在先不講
先看CreateTopMenu
對啦!頂部菜單就是一個label!
這些label建立出來之後,全部把他們放到TopMenuP這個panel了
這個panel就是頂部panel
tm.Left = index * 68 + index * 12 + 12;
這一句的作用是把這些頂級菜單依次排開~避免覆寫~
另外我把MenuModel的執行個體指派給這個label的Tag屬性了~後面有用
我為這些label注冊了同樣的滑鼠劃入、劃出、彈起 事件
現在就看看這些事件
頂部菜單劃出和劃入都沒有什麼特别的
隻不過是改變了這個label的背景顔色和文字顔色
注意:這些顔色的值~應該放到資源或者緩存裡去~
滑鼠彈起事件~就說明客戶點選了這個lable
我們把tag屬性轉換成MenuModel
然後就開始建立子菜單了
三:動态建立子菜單
代碼如下
建立子菜單和建立頂部菜單~在原理上是一樣的
也是用的label
sm.Anchor = (System.Windows.Forms.AnchorStyles)(AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right);
有了這一句子菜單的寬度會根着Left Panel的寬度的變化而變化
同時也注冊了滑鼠的滑入、滑出、彈起事件
彈起事件就是我們動态建立業務窗體的事件
我們放到後一節内容介紹
滑入和滑出的代碼如下:
再次強烈要求
喜歡這篇文章或者喜歡我這個人的朋友~點推薦~點推薦~點推薦~點推薦~