Web API應用架構在Winform混合框架中的應用(4)--利用代碼生成工具快速開發整套應用


前面幾篇介紹了Web API的基礎信息,以及如何基於混合框架的方式在WInform界面里面整合了Web API的接入方式,雖然我們看似調用過程比較復雜,但是基於整個框架的支持和考慮,我們提供了代碼生成工具的整合,使得開發整套應用是非常方便和高效的。本文主要介紹如何利用代碼生成工具Database2Sharp,如何迅速生成基於Web API的Winform應用。

1、代碼生成工具的功能介紹

代碼生成工具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了。

最后會讓我們確認整個生成過程的,如下所示。

這樣單擊【完成】按鈕后,我們就可以順利生成我們所需的項目代碼了。為了快速開發一個完善的項目,我們一般基於各種不同的框架基礎上,增量開發一些不同的業務模塊,這樣就可以快速整合到我們的項目里面進行使用了。

 

2、基於WebAPI接入的Winform項目結構

1)框架總體介紹

前面隨筆,我介紹了整個混合框架中基於Web API 的Winform界面的整合過程,其中大的方面設計圖如下所示。

而對應的從Winform界面調用Web API的過程則如下所示。

但是這兩個可能沒有項目結構查看的話,對整體的了解可能還是有所欠缺,本文繼續以實際項目的結構,也就是我以Web API方式改造的會員管理系統項目結構進行展示,以實踐的項目開發過程來闡述整個開發過程,希望讀者對這些有更好的了解和更直觀的認識。

整個會員管理系統項目結構如下所示。

項目結構的總體說明如下所示。

 
項目名稱 項目說明
WHC.CloudMember.ClientDx 基於Web API的WInform界面項目
WHC.CloudMember.Caller 接口調用封裝類模塊  
CloudMemberApi Web API的服務發布項目
WHC.CloudMember.Core 業務邏輯模塊的項目,包含數據訪問層、接口、實體類等

 

2)Web API服務項目介紹

我們在Winform界面里面調用的最終服務就是Web API服務,那么我們需要圍繞這個內容進行介紹,首先介紹其中的Web API項目CloudMemberApi,它的詳細內容就是包含前面幾篇關於Web API隨筆介紹的內容,包括服務接口的定義、異常的處理、令牌權限認證及識別、Web API客戶端的調用的知識點。

在控制器里面,通過不同的文件來區分不同的業務應用,當然如在必要的時候,也可以考慮引入Area的概念,對不同業務進行歸類處理。

在上面的API項目里面,主要的內容就是控制器的生成了,利用代碼生成工具的Web API控制器的生成功能,可以快速生成相關的代碼。

代碼生成后,會生成對應類的繼承關系,以及部分接口的實例代碼,方便我們進行使用。

 

3)服務調用包裝項目Caller項目

在Caller項目里面,就是為客戶端提供一致的調用方式,不管是WCF方式、直接訪問數據庫方式,還是目前介紹的Web API方式,我們通過Caller項目類的封裝處理,就能屏蔽他們之間的差異,使得我們的界面調用實現統一性,並且也方便在各個方式的調用中進行切換。利用在這個項目里面,Web API的Caller層項目結構如下所示。

這個項目里面包含了門面層的接口定義層Facade接口層,由於我們考慮了WCF的接入方式,因此需要增加一些WCF的接口標識,如果僅僅是考慮Web API的接入,則可以不用[ServiceContract]和[OperationContract]的聲明內容。

對於Web API的調用,我們一般通過繼承基類的方式,可以直接使用基類定義的增刪改接口的封裝處理,這樣可以極大簡化我們所需的代碼,同時降低代碼編寫的復雜度,常規的功能我們也不用重復編寫了。

同時,我們一般都保留直接調用數據庫的包裝類項目代碼【WinformCaller】,這樣我們可以在開發的時候,先着重調試好直接訪問數據庫的模式,然后在調試基於Web API的方式,這樣可以避免很多低層次的錯誤,同時也可以快速調試跟蹤代碼,為我們后面的Web API接入排除更多的錯誤,提高開發效率和代碼質量。

4)業務模塊核心項目Core項目

在各個框架以及Web API的服務里面,數據庫訪問的核心邏輯都在Core項目里面的,這個項目其實包含了BLL層、DAL層、IDAL層、Entity層的模塊內容,封裝了多種數據庫的訪問方式,默認框架支持SQLServer、Oracle、MySql、SQLite、Access、達夢等數據庫的支持,我們在DAL層進行相應的擴展處理即可,一般情況下,我們為了方便,也可以僅僅設置我們所需要的數據訪問層即可。如會員管理模塊的Core項目截圖如下所示。

如之前的架構設計圖,介紹如下所示。

 

 

4)基於Web API接口的雲會員管理系統

我們先來了解下基於Web API接口的雲會員管理系統的總體界面效果。整個系統采用的是混合式的Winform結構,但是數據的來源采用基於Web API的提供方式,也就是我們目前常用到的一種數據提供方式。所有的模塊都是基於混合式架構的基礎上,對各種接口進行了基類封裝,結合代碼生成工具,可以生成整體的框架代碼:包括Core層業務代碼;Web API層控制器代碼;以及對Web API調用進行封裝的Caller層代碼;還有就是最為重要的,Winform界面的動態生成,界面的生成可以省卻大量的低效率工作,並且可以綁定一致的訪問代碼,使得我們開發效率有了質的提高,並且能夠和整個框架有更好的整合和一致性。

基於這個基礎上我們開發了很多業務系統,並且也為客戶向相同領域擴展了很多信息管理系統,擁有了豐富的Winform項目建設經驗。下面是雲會員管理系統的界面截圖。

 

 系列文章如下所示:

Web API應用架構在Winform混合框架中的應用(1)

Web API應用架構在Winform混合框架中的應用(2)--自定義異常結果的處理

Web API接口設計經驗總結 

Web API應用架構在Winform混合框架中的應用(3)--Winfrom界面調用WebAPI的過程分解

 Web API應用架構在Winform混合框架中的應用(4)--利用代碼生成工具快速開發整套應用

Web API應用架構在Winform混合框架中的應用(5)--系統級別字典和公司級別字典並存的處理方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM