WCF模式是在Winform模式中的介面層和邏輯層之間加入了WCF中介軟體用來實現雙方的通訊,說得更簡單一點就是把Winform模式中的winController控制器給拆分為wcfController與wcfclientControlle兩個控制器並用WCF實現兩個控制器之間的通訊,雙方資料傳遞與Web模式一樣用Json資料格式;
還有一點就是我們一定要明白WCF模式並不是說把所有業務都封裝成wcf服務提供給介面層呼叫,wcfController跟webController一樣只是單純的業務控制器,而wcf服務在框架中也只有一個就是在WCFHosting服務主機中WCFHandlerService,用來實現通訊的;
工具/原料
visual studio 2013
方法/步驟
1.同樣是用書籍的管理作例項,實現對書籍的增、刪、改、查功能,我們先看介面效果
如下,請注意紅色框部分,點選介面的儲存按鈕後,第二張圖的WCF主機就會接收到儲存書籍的命令並執行,紅色框為執行過程;(其中WCF主機會再後續章節詳細說明)
解決方案目錄,其中紅色檔案為本章例項新增的檔案
2.開發步驟:
1)新增WCF控制器,如上(bookWcfController.cs)
2)新增WCFCient介面控制器,如上(bookwcfclientController.cs)
其中實體(Book.cs)、Dao(BookDao.cs)和介面(frmBookManager.cs)在上一章例項中已經完成,所以本章直接呼叫就行了,加上本章新增的bookWcfController.cs和bookwcfclientController.cs就可以讓WCF模式例項執行起來;
EnterpriseFrameWork框架中加入WCF開發模式就是基於這些方面的實際需求,所以怎樣才能最小代價的擴充套件成WCF模式,就是一直困擾我的問題,難道要把原有系統中的所有業務都重寫封裝成wcf服務?重寫的代價真的有點大,特別讓我接受不了的完全與框架的核心“簡潔”衝突了。也參考過其他公司的wcf框架,也是覺得可能把業務封裝成wcf服務太麻煩,所以乾脆就是對資料庫的操作也就是DbHelper物件給用wcf服務封裝了,用wcf服務的方式操作資料庫,我就傻眼了。直到今年才找到如今這種方式,把Winform模式的控制器給拆分為wcfController和wcfclientController,兩個控制器之間用wcf服務通訊。
這也是一次讓我非常得意的改進,不知道大家用wcf做專案是一種什麼樣的開發模式?
3.最後我們看下圖,整理一下以上程式碼檔案的呼叫關係