本系列隨筆的主旨在於讓一個具有.NET程序編寫基礎的人通過使用平台提供的SOP中間件,快速、專業的搭建出屬於自己的.NET企業級應用。我將會從EAS框架的構成和方案的建立開始,最終的目的是提供一個以分布式通信的方式連接數據庫的解決方案構建思路,作為我對於博客園各位前輩的回報以及自己學習經歷的總結和概括。
1、准備工作
首先,你當然需要下載一個最新的AgileEAS.NET的開發程序包,100m的樣子很快就下好了,看一下里面的內容:
下面說明一下各個文件夾都是個啥東西:(最外面有李哥寫的發布步驟,想直接看如何發布的請下載完畢后Alt+F4)
AgileLab.CN是一個使用AgileEAS開發web平台的案例,內容就是AgileEAS的官方網站,由於我這里重點說的是cs架構的winform解決方案,所以pass
AppServer,這個很重要,這將是你放在你服務端的唯一的也是最重要的內容,它配置的正確與否將會直接影響你是否能夠正常的實現分布式通信以及SmartUpdate的自動更新功能,請各位主動把它放在一個穩妥的地方保存好備用。
Bin,和上面的一樣,可以理解為這個文件夾將承載你的客戶端,也可以說他是你項目調試、發布等功能實現的場所,內容構成是所有的依賴DLL文件以及SOP中間件(快速開發工具),同樣,備份好,一會有用。
Data,EAS平台需要一坨坨的基礎數據庫來支撐他的正常工作,登錄你的服務器,在你的數據庫里執行相應的sql語句,建立好eas的基礎數據庫之后這里的東西沒啥用(恢復不算。。。),數據庫內容無非是一些賬戶啊角色啊權限啊菜單啊流程啊審批啊模塊啊啥啥的,說道模塊在這bytheway一下,EAS平台采用模塊化的加載方式,也就是說,最終你所開發出來的所有winform頁面(usercontrol)都將以模塊(module)的形式被平台引用和加載,所以你的引用程序集需要集中在一個統一的位置,哪里呢?剛才不是有個Bin的備用文件夾么,就這里。
DLL,請無視
Documents里面是針對葯店系統的案例所作的詳細的說明,詳細程度令人發指,對於希望采用DrugShop作為學習參考資料的同學請一定仔細研讀,本文所采用的案例和技巧也有很多是通過DrugShop學習總結而來,如果你看不懂,那么恭喜你,回來繼續這個吧。
Drugshop-src,葯店系統的源碼,參考價值100w,不得不看。
WF.Demo,連下面的都無視掉即可(我就這么做的)
2、建立一個項目
了解了程序包的內容,我們需要建立自己的案例了,首先,相信我,為了將來省心,請按照我下面的圖示建立你的項目構成:
找個舒服的位置按照上述圖形建立自己的解決方案吧,IronMES是我自己的項目,你們叫啥請自便,但是源碼文件夾里得有東西啊對不?不然不是坑人么,接下來就是如何快速的建立一個簡單的項目,方便起見,案例將以本人項目中的方案來進行說明,不是現場建立的,中間難免有跳步請見諒!
首先打開Bin文件夾——DotNet4.0(silverlight無視掉即可),找到這么一個東西
這個叫做ORM設計器,功能是通過數據庫(一般都用數據庫)來創建一個用來承載所有對數據表CRUD操作的實體類庫,你沒看錯,通過EAS,所有的CRUD操作都是可以從實體類直接獲得,讓你把更多的時間和精力放在復雜業務的構思和設計中去。
打開orm設計器,一上來啥都沒有沒關系,點擊 工具——從數據庫生成,
看到了么親,這是多么的親切啊,我們在vs里畫報表建dataset的時候不就是他么?選擇SQL2005(我自己用2008會報錯),速度寫上你的鏈接字符串,下一步吧
在這里選擇自己需要的數據表(選擇視圖也是可以的,只是通過視圖生產的實體類是無法進行增刪改操作的),然后下一步,PS:由於為了照顧數據的通用性,EAS在處理Guid的時候使用的是String形式,所以在MSSql數據庫中使用Uid的同學,請改成varchar(36)后在建立自己的orm類庫!
往往數據表的建立是會隨着你項目的進展而進行的,所以orm生成器保存的SDM文件,請對應存在剛才的SDMs文件夾中,方便管理,最后你的SDM應該是這樣的
下面那個“模型”倆字請無視掉
我們打開一個實體類看一下都有些啥
其中的內容和我們在數據庫建表時候看到的很類似,在代碼,ddl和文檔選項卡中對應的是這個數據表結構的對於項內容,你自己點開就明白了,其中文檔很方便你寫數據庫說明書時候用,當然有細心的朋友可以在“標題”列改成對應字段的中文Desc,我這種比較懶的向來是不改的。。。改完了之后別忘了保存
接下來很關鍵,通過在“解決方案”節點上右鍵,來設定項目的基本參數,這個一定要和你自己的項目一致(沒項目的話好辦以這個為主即可),規范的命名空間可以省去你以后修改的時間
數據目錄你們看到我吧所有的輸出代碼都放在Assets文件夾作為整理,這樣需要時候比較好找
設置好后繼續在“解決方案“節點上右鍵,生成代碼,生成后的代碼文件夾如圖
然后復制這個Entities文件夾到一開始說的用來存放源碼的文件夾里,新建一個空的解決方案或者其他解決方案把這個項目添加到方案里,形成這么一個效果
好吧。。。我承認我比較懶這個是現在項目的截圖,你看紅顏色圈圈的部分就是這個類庫,這個解決方案的結構和DrugShop是一樣的,這種結構是EAS項目構建的標准結構,既然說到這里就順便講一下這些項目的構成和作用好了(IronMES一下略),上面那些事服務端。。。。
BLL.Contract 這個是接口類庫,分布式通信的時候詳細說
BLL.Host 服務類庫,繼承接口,分布式通信詳細說,個人認為不使用分布式通信的時候沒有必要用ServiceContainer來實現數據庫業務(關於ServiceContainer是什么以后詳細說。。。)
Entities 這個是核心,EAS實體類庫,通過這些和數據庫同步的實體類庫可以直接實現Insert(),Update(),Delete()方法
Entities.xxx 這個是我自己由於連不同數據庫生成的不同實體類(方便管理)
AsposeExcelTools 這個是excel報表導出的操作類。。。aspose.cell這個東西很好用(題外話)
-------------------------------客戶端的分界線------------------------------------------------------------
AppStart,這個是啟動項,為什么呢?因為他的AppConfig文件里我會把數據庫連接方式配置為數據庫直連的方式,在調試的時候使用直連數據庫的方式比較便於調試
Hellowang的是測試的請無視
Main,這個項目是客戶端的啟動項目,你在制作SetUp安裝包的時候用這個來作為Desktop上的快捷方式,為啥呢?這個和appstart一樣的,就是appconfig用的是分布式通信。。。不用分布式通信的可以刪掉
Res,這個項目純copy自drugshop,他存在的唯一意義(極其重要)就是替換AgileEAS里面的登錄界面啊、圖標啊、bottom條啊啥啥啥的。。。你肯定要換的。。。換法以后將,忘了提醒我下
WinUI,這里承載了所有的UI模塊,界面業務,也是最重要的一部分,下面正好接着說如何制作我們的UI模塊
wpf這個無視
-----------------------------廢話---------------------------------------------------------
PS:重點,所有項目的OutPutPath必須都指向..\..\Bin\DotNet4.0\目錄,對,也就是之前准備好的Bin文件夾(目的是所有的dll都在一個文件夾發布后直接可用),如圖:
3、制作一個標准化的模塊界面
接下來是關鍵的如何通過SDM文件快速的建立一個UI界面,如果對這里的描述不太明白,官方包里面的pdf也有詳細的說明
列表里面代表的是表的數據查詢主界面,也就是winform中的Usercontrol,窗體中的是對應每一條數據的明細信息窗口,對應的是winform中的window,在這里打開你的sdm文件(就是你剛才使用orm設計器保存好的那個),在“列表”的節點上點擊右鍵——新建,這里面就是你添加到entities里面的所有數據表了,找到你要進行crud業務的數據表(只能選一個),點擊下一步:
這個界面就是用來設計住要查詢ui的了,通常字段都是要顯示的,右鍵可以全選,后面的這個是否查詢項是用來標識那些字段將作為Linq查詢中的where條件出現滴,當然在界面上也會有對應的條件數據控件,PS:如果條件錄入控件的類型不是textbox,你就需要在“空間類型”里面選擇一下控件的類型,常用的有下拉框,時間日期(千萬不要用年月日期不解釋)。
添加之后的界面設計器如下
界面設計器和我們在vs中的界面設計器是一樣的,使用方法當然也是一樣的,這里除了必要的名字修噶和dataGird的字段修改,其他的建議都在把模塊添加在VS中之后修改。
下面在“窗口”節點右鍵,新建,選擇同樣的數據表Entity,界面如下:
這里的技巧是不要把主鍵自增和記錄時間,uid之類的不需要用戶手動錄入的信息展示出來(特殊需求除外),是否新增和是否顯示同步即可,由於我們之前對於本smd文件的參數都有設置,所以不需要在創建頁面的時候修改命名空間,保持每一個項目的不同模塊的命名空間的一致性很重要。對於字段比較多的數據表,可以在多行多列出勾選,設置自己需要的列數,最終的window效果如下:
在設計了幾個基礎界面和表單界面之后,我們的這個sdm文件構成成了下面這個樣子(list和editor不一定非要一一對應,你看你自己的需求,比如我有個視圖查詢界面的話就不需要對應編輯器了)
4、將代碼導入解決方案
在UI設計器的項目根節點上右鍵,
生成解決方案,看一下我們生產的方案結構
,Entities里面的是實體類庫的項目,WinUI里面的是UI界面層的項目,將UI里面的cs文件拷貝到你項目對應的目錄下,在項目中雙擊查看(vs會自動提示轉成Usercontrol和window的):
Module中第二第三個屬性分別是名稱和描述,名稱將會在EAS平台添加模塊后顯示在菜單中
這里對UI界面的代碼修改做過多陳述,一些中間件生成時帶的bug都很好改(類似多個=啊,DateTime寫成Datetime之類的),關鍵前面在ui設計器里注意改好dateTimePiker的Name即可。。。(嘮叨鬼)
這樣即可形成了,一個查詢界面對應一個明細單編輯界面的界面組合了,接下來是重頭戲啊,你總要調試一下的
5、如何調試
首先,各位回頭看一下我項目與的構成,中間有2個很關鍵的項目AppStart和Main,我將的是一樣的東西僅僅是AppConfig不同對吧,那么,請你們可恥的,在DrugShop中把這個Copy到你的項目里吧。。。。(有需要的RES也一起copy了,不過這篇不會說道如何改RES),看下代碼,把里面數據庫直連的連接字符串改成你需要的:
設置appstart為啟動項,調試。。。。
注釋掉的那行看到么?你的項目叫啥寫上即可直接進入調試模式,如果寫成下面這個,就會啟動平台的登錄界面,登錄平台了
6、模塊的安裝和菜單的設定
這個最沒啥可說的,登錄之后在系統管理——模塊管理——安裝,找到你Bin/DotNet4.0里面承載你模塊的WinUI.dll文件,里面是不是出現你的模塊了?如果真有不明白的在葯店系統的說明文檔中,他寫的實在是很詳細,看下就明白了,在這就不對這一項做贅述了
由於EAS平台已經將用戶權限和角色的設定設計好了,我們只需要按照相應的權限對模塊進行綁定即可實現權限管理,當真是很方便啊。。。。。
大概就這些。。。這些看起來多其實就是流水帳啊,打字打的我都有點惆悵了。。。。寫的沒啥章法,但是也應該大概指出了些問題,希望我以后的同志少走彎路吧,有啥問題跟貼或直接找我都可以,希望更多的人通過這樣一個免費的平台開發出更多優秀的產品,這第一發就這樣吧。。。倉促成文,毫無章法,各位見諒!
不出意外你會報錯吧,貌似忘了說添加引用了,引用的添加很容易哈,還是在Bin/DotNet4.0里面,首先,所有跟EAS有關的項目都加上EAS.Data和MicroKernal這兩個,這是基礎啊,然后在界面層看你需要啥就加個啥即可,推薦你按照葯店系統的案例進行添加,當然項目之間的引用也別忘了加,這個沒啥可說的,UI要引用Entities之類的啊
不出意外的話這樣你就應該可以順利的搭建出一個簡單的解決方案了,下一次會說一下如何修改Res定制自己的圖標登錄框和歡迎界面之類的,或者是分布式通信的內容
btw:由於官方的發出版本是5.0,此版本的linq不支持分組查詢,初級用戶或者對linq不感冒這可以無視,linq控可等下個版本出來(功能不斷完善中),或者找下敏捷EAS平台開發團隊尋求技術支持!



















