前面幾篇介紹了Web API的基礎資訊,以及如何基于混合架構的方式在WInform界面裡面整合了Web API的接入方式,雖然我們看似調用過程比較複雜,但是基于整個架構的支援和考慮,我們提供了代碼生成工具的整合,使得開發整套應用是非常友善和高效的。本文主要介紹如何利用代碼生成工具Database2Sharp,如何迅速生成基于Web API的Winform應用。
代碼生成工具Database2Sharp,是我為整個開發過程開發的一款核心軟體,已經走過了10個年頭,随着開發項目的多樣化,這個工具也逐漸整合更多的功能,以期提高我們的開發效率。
Database2Sharp能夠支援Winform開發架構、WCF開發架構、混合式Winfrom開發架構、Entity Framework實體架構、基于MVC4+EasyUI的Web開發架構、基于Metronic的Bootstrap的Web項目等開發架構的代碼生成和整合工作;可以生成各種架構代碼、生成Web界面代碼、Winform界面代碼,導出資料庫文檔等功能。軟體生成的架構代碼具有統一的架構風格和統一調用規則,并在多年的軟體開發應用中得到實踐驗證,具有非常高的生産效率。
該軟體的目的在整合、簡化各種架構的開發流程,并統一整個開發的繼承和結構關系,提高開發效率。

為了生成整個基于Web API的Winform應用,我們選擇Enterprise Library的架構生成混合式架構項目進行簡單的介紹,希望大家對代碼生成有一個初步的了解。
首先選擇資料庫需要生成代碼的表,操作如下所示。
接着我們選擇架構的主命名空間,如我們實體類的整個命名空間為WHC.CloudMember.Entity,那麼主命名空間就是前面部分WHC.CloudMember了。
最後會讓我們确認整個生成過程的,如下所示。
這樣單擊【完成】按鈕後,我們就可以順利生成我們所需的項目代碼了。為了快速開發一個完善的項目,我們一般基于各種不同的架構基礎上,增量開發一些不同的業務子產品,這樣就可以快速整合到我們的項目裡面進行使用了。
前面随筆,我介紹了整個混合架構中基于Web API 的Winform界面的整合過程,其中大的方面設計圖如下所示。
而對應的從Winform界面調用Web API的過程則如下所示。
但是這兩個可能沒有項目結構檢視的話,對整體的了解可能還是有所欠缺,本文繼續以實際項目的結構,也就是我以Web API方式改造的會員管理系統項目結構進行展示,以實踐的項目開發過程來闡述整個開發過程,希望讀者對這些有更好的了解和更直覺的認識。
整個會員管理系統項目結構如下所示。
項目結構的總體說明如下所示。
項目名稱
項目說明
WHC.CloudMember.ClientDx
基于Web API的WInform界面項目
WHC.CloudMember.Caller
接口調用封裝類子產品
CloudMemberApi
Web API的服務釋出項目
WHC.CloudMember.Core
業務邏輯子產品的項目,包含資料通路層、接口、實體類等
我們在Winform界面裡面調用的最終服務就是Web API服務,那麼我們需要圍繞這個内容進行介紹,首先介紹其中的Web API項目CloudMemberApi,它的詳細内容就是包含前面幾篇關于Web API随筆介紹的内容,包括服務接口的定義、異常的處理、令牌權限認證及識别、Web API用戶端的調用的知識點。
在控制器裡面,通過不同的檔案來區分不同的業務應用,當然如在必要的時候,也可以考慮引入Area的概念,對不同業務進行歸類處理。
在上面的API項目裡面,主要的内容就是控制器的生成了,利用代碼生成工具的Web API控制器的生成功能,可以快速生成相關的代碼。
代碼生成後,會生成對應類的繼承關系,以及部分接口的執行個體代碼,友善我們進行使用。
在Caller項目裡面,就是為用戶端提供一緻的調用方式,不管是WCF方式、直接通路資料庫方式,還是目前介紹的Web API方式,我們通過Caller項目類的封裝處理,就能屏蔽他們之間的差異,使得我們的界面調用實作統一性,并且也友善在各個方式的調用中進行切換。利用在這個項目裡面,Web API的Caller層項目結構如下所示。
這個項目裡面包含了門面層的接口定義層Facade接口層,由于我們考慮了WCF的接入方式,是以需要增加一些WCF的接口辨別,如果僅僅是考慮Web API的接入,則可以不用[ServiceContract]和[OperationContract]的聲明内容。
對于Web API的調用,我們一般通過繼承基類的方式,可以直接使用基類定義的增删改接口的封裝處理,這樣可以極大簡化我們所需的代碼,同時降低代碼編寫的複雜度,正常的功能我們也不用重複編寫了。
同時,我們一般都保留直接調用資料庫的包裝類項目代碼【WinformCaller】,這樣我們可以在開發的時候,先着重調試好直接通路資料庫的模式,然後在調試基于Web API的方式,這樣可以避免很多低層次的錯誤,同時也可以快速調試跟蹤代碼,為我們後面的Web API接入排除更多的錯誤,提高開發效率和代碼品質。
在各個架構以及Web API的服務裡面,資料庫通路的核心邏輯都在Core項目裡面的,這個項目其實包含了BLL層、DAL層、IDAL層、Entity層的子產品内容,封裝了多種資料庫的通路方式,預設架構支援SQLServer、Oracle、MySql、SQLite、Access、達夢等資料庫的支援,我們在DAL層進行相應的擴充處理即可,一般情況下,我們為了友善,也可以僅僅設定我們所需要的資料通路層即可。如會員管理子產品的Core項目截圖如下所示。
如之前的架構設計圖,介紹如下所示。
我們先來了解下基于Web API接口的雲會員管理系統的總體界面效果。整個系統采用的是混合式的Winform結構,但是資料的來源采用基于Web API的提供方式,也就是我們目前常用到的一種資料提供方式。所有的子產品都是基于混合式架構的基礎上,對各種接口進行了基類封裝,結合代碼生成工具,可以生成整體的架構代碼:包括Core層業務代碼;Web API層控制器代碼;以及對Web API調用進行封裝的Caller層代碼;還有就是最為重要的,Winform界面的動态生成,界面的生成可以省卻大量的低效率工作,并且可以綁定一緻的通路代碼,使得我們開發效率有了質的提高,并且能夠和整個架構有更好的整合和一緻性。
基于這個基礎上我們開發了很多業務系統,并且也為客戶向相同領域擴充了很多資訊管理系統,擁有了豐富的Winform項目建設經驗。下面是雲會員管理系統的界面截圖。
系列文章如下所示:
<a href="http://www.cnblogs.com/wuhuacong/p/4838220.html">Web API應用架構在Winform混合架構中的應用(1)</a>
<a href="http://www.cnblogs.com/wuhuacong/p/4843422.html">Web API應用架構在Winform混合架構中的應用(2)--自定義異常結果的處理</a>
<a href="http://www.cnblogs.com/wuhuacong/p/4902950.html">Web API應用架構在Winform混合架構中的應用(3)--Winfrom界面調用WebAPI的過程分解</a>
<a href="http://www.cnblogs.com/wuhuacong/p/4910240.html">Web API應用架構在Winform混合架構中的應用(4)--利用代碼生成工具快速開發整套應用</a>
<a href="http://www.cnblogs.com/wuhuacong/p/4915935.html">Web API應用架構在Winform混合架構中的應用(5)--系統級别字典和公司級别字典并存的處理方式</a>