零基礎30分鍾開啟你快速開發之旅
1. 前言
接觸AgileEAS.NET SOA 中間件平台(以下簡稱EAS.NET平台)有4個多月時間,經過試用認為可以把它作為一個開發的基礎平台,開發團隊可以把開發的重點放在需求的把控和項目的交付上,從而節省大量的時間,提高項目的開發、交付效率,降低對項目團隊的深層技術要求,更重要的一點是EAS.NET平台的開發團隊持續不斷地維護和改進平台以及對反饋問題的快速反應,使我對平台的持續發展充滿信心。(由於文章較長,不習慣的朋友可以下載PDF版)
由於EAS.NET平台的資料比較多,需要花費較多的時間才能夠初步了解平台並能夠使用平台開始開發,所以,在此,我把學習EAS.NET平台的過程總結了一下,形成本篇短文,希望能夠讓初次接觸EAS.NET平台的朋友能夠用30分鍾時間,跟着本文案例實際操作一遍,對EAS.NET平台有一個真實的體驗,節省大家的時間,也算對EAS.NET平台的一點回報,希望有更多的人了解它的優勢並真正用好它,為EAS.NET平台的使用者帶來價值,也為EAS.NET平台的開發者帶來效益,最終實現合作共贏的美好結局。
說明:此平台由此平台來自魏瓊東開發所有,可免費進行商業化開發,不開源,可有償提供源碼和提供個性化定制服務。詳細內容見作者網站http://www.smarteas.net/
注意:本文中涉及平台的功能操作,是通過運行Publish目下的平台客戶端EAS.WinClient.Start.exe,以Administrator賬戶、密碼sa登錄系統進行操作的,如輸入字典、函數管理、報表管理、角色管理、賬戶管理、模塊管理、導航分組等。
2. 基礎環境
開發環境:windows server 2008 64位、SQL SERVER 2008R2
開發工具:VS 2012
以上為本人的開發測試環境,如果與以上環境不同,遇到問題時請與平台作者聯系。
在正式開始開發之前,首先下載案例代碼及相關程序包,下載地址:
直接下載:http://42.121.30.77/downloads/eas/Northwind.rar。
SVN更新:http://42.121.30.77:8080/svn/Northwind,登錄用戶:eas,密碼eas.
在開始工作之前,首先對VS2012添加EAS平台需要的控件。
在工具箱中添加選項卡【EAS】
通過【選擇項】添加EAS.Windows、EAS.Data.Controls、EAS.GridReport.Controls三個組件中的控件。如下圖所示:
案例測試環境配置:
1、 在E盤新建目錄code
2、 在E盤code目錄下新建目錄Northwind2
3、 把下載的壓縮包解壓到Northwind2下(如果是用svn更新獲取,則把相應目錄內容復制到此處),此時項目目錄結果如下:
4、 在VS中打開案例
進入目錄code,雙擊Northwind.sln
在每個項目上右鍵/屬性,修改生成頁簽下的目標平台為Any CPU,輸出路徑為E:\code\Northwind2\Publish,如下圖所示:
右鍵Northwind.AppStart,選擇【設為啟動項目】,便於調試。
打開Northwind.AppStart下的app.config配置文件,修改數據庫名稱為實際的數據庫名稱,此處為demo_x2。
恢復數據庫:解壓Data目錄下的Northwind.rar文件到當前目錄,獲得數據庫備份文件Northwind.bak。
打開sql server管理器,新建數據庫demo_x2。
右鍵demo_x2,選擇任務/還原/數據庫
選擇源設備,添加E:\code\Northwind2\Data下的Northwind.bak
選中選項標簽,選中【覆蓋現有數據庫】,然后開始還原。
完成數據庫還原。
分別在各個項目上右鍵進行重新生成,順序為:
Northwind.Entity
Northwind.BLL.Contracts
Northwind.BLL.Host
Northwind.WinUI
Northwind.AppStart
完成后,啟動程序進行調試。
用戶名:james,密碼:sa
進入系統后,左上角有調試模塊,點擊后展開案例所有功能。
測試采購入庫:在名稱框中按空格鍵,彈出商品選擇框,選中需要的商品,錄入數量后回車,則入庫單明細增加一條,如下圖所示:
錄入完成后,點擊入庫按鈕,完成采購入庫單。
測試產品管理:
在此模塊進行產品資料的維護,新增、修改、刪除等。
進入模塊后,首先點擊查詢按鈕,系統會把已有的產品列出。
選中一條可以對其進行修改或刪除。
3. 開始開發
建立開發目錄:新建E:\code\Northwind目錄,然后在Northwind下新建以下目錄:
AppServer 系統程序發布目錄
Code 程序代碼
把案例代碼Northwind2目錄下的eas.publish.cmd、EAS.Publisher.exe復制到Northwind目錄下;
把案例代碼Northwind2目錄下的Documents、Publish目錄整個復制到Northwind目錄下。
Documents 文檔
Publish 引用的dll、系統工具文件及開發編譯后的程序文件
完成后的目錄結構如下:
3.1. 生成數據實體代碼
進入publish目錄,雙擊EAS.MetaDesigner.exe,打開領域模型設計器,在領域模型設計器中打開documents目錄下的Northwind.sdm領域設計文檔,如下圖所示:
領域模型設計器可以展示各數據實體間的邏輯關系
通過設計器可以設定數據對象的詳細內容
可以設定數據對象之間的引用關系,如銷售訂單上引用的員工、客戶等
可以設定數據對象之間的父子關系,如銷售訂單和銷售訂單明細
鼠標右鍵點擊解決方案,點擊【參數設定】
設定項目名稱、項目標題都為Northwind,程序語言選擇C#,選定自動屬性,命名空間:Northwind,設定輸出目錄為E:\code\Northwind\code
點擊輸出/生成代碼/EAS或在解決方案上右鍵,選擇生成代碼
選中生成解決方案,點擊生成。
3.2. 生成數據庫腳本
點擊【生成腳本】按鈕,創建數據庫結構創建腳本。
3.3. 生成窗體代碼
平台提供了窗體設計工具EAS.FormDesigner,可以輔助快速生成列表類單據和錄入類單據。案例中附帶有例子,有興趣的可以研究一下,本文操作采用手工創建窗體,手工編寫代碼方式,便於讀者能夠把握使用平台時程序代碼和普通程序代碼的區別。
3.3.1. 列表窗體
啟動FormDesigner,打開documents下的Northwind.sdm,結果如下:
3.3.2. 編輯窗體
平台支持生成winform、webform、wpf、silverlight四種不同的界面代碼。
界面代碼為系統自動生成:
在此可以進行業務代碼的編寫,完成后,
代碼完成后,通過文件/輸出代碼,然后在VS中打開解決方案進行代碼的調試和修改。
3.4. 創建數據庫
3.4.1. 新建數據庫
通過sql server管理器創建新數據庫Northwind。
3.4.2. 維護數據庫
啟動平台數據庫初始化工具EAS.DbInitializer
系統支持四種數據庫系統,這里我們選擇sql server,下一步:
指定服務器,如果是本機則輸入.即可。選中集成身份驗證,點擊測試鏈接,系統提示測試連接成功。然后,通過數據庫下拉框選中新創建的Northwind。也可以使用該工具直接建立新的數據庫。點擊完成,系統開始對數據庫進行初始化。
在查詢分析其中執行3.2.生成的數據庫腳本,執行前注釋掉第3、4行。
3.5. 打開解決方案
進入e:\code\Northwind\code,雙擊Northwind.sln打開解決方案。
3.5.1. 設定項目編譯生成路徑
右鍵項目Northwind.Entities,選擇屬性
設定生成/配置為所有配置
設定輸出路徑為:e:\code\Northwind\Publish
右鍵Northwind.Entities,對項目進行重新生成。
3.5.2. 維護數據字典
在進行進一步的編碼工作之前,首先進行系統配置,並定義開發需要的輸入字典。
運行平台系統配置工具EAS.Configure,設定連接數據庫的方式等。
選擇【生成客戶端配置(數據庫直連)】項,同時選中【保存配置信息到AgileEAS.NET SOA平台相關配置文件】。下一步
指定數據庫服務器、身份驗證信息、數據庫名稱等。完成后,點擊下一步
點擊完成結束配置設置。
雙擊EAS.WinClient.Start.exe啟動平台客戶端,用戶名:Administrator,密碼:sa
登錄系統后選擇菜單開發相關/輸入字典
新建輸入字典
名稱為產品分類,設定數據類型:
點擊瀏覽,選擇剛剛編譯的Northwind.Entities.dll
選擇產品分類數據對象
確定
選中【啟用緩存】,設定緩存屬性為LMTime
設定碼值屬性CategoryID
設定顯示屬性CategoryName
顯示設置:設定哪些項目在字典中顯示
設定搜索條件
確定后完成,同樣增加商品字典、客戶字典、產品庫存三個輸入字典,具體可以參考案例中的輸入字典進行設置。
商品字典對應Northwind.Entities.Product數據對象,客戶字典對應Northwind.Entities.Customer數據對象,產品庫存對應Northwind.Entities.Stock數據對象。
在進行正式的編碼工作之前,還需要建立啟動項:
在解決方案中添加項,類型為winform應用程序,名稱為Northwind.AppStart
刪除form1.cs
修改app.config
把案例相同文件中的內容復制過來,修改數據庫名稱為Northwind
修改Program.cs,從案例對應文件復制過來即可。
添加引用類庫EAS.Data、EAS.MicroKernel、EAS.WinClient、EAS.Windows,路徑為e:\code\Northwind\Publish。添加引用前后的不同。
把Northwind.AppStart設為啟動項目。
注意:以下2步,所有新添加的項目都要進行設置。
Northwind.AppStart鼠標右鍵,屬性,設置目標框架為.net4(VS2012默認為.net4.5)
設置輸出路徑為e:\code\Northwind\Publish,編譯。
3.5.3. 兩層(無業務層)模式開發、打印及按鈕級權限控制
添加項目Northwind.WinUI,類型為類庫,刪除class1.cs文件
添加引用類庫EAS.Data、EAS.MicroKernel、EAS.Data.Controls、EAS.Windows、EAS.Explorer、EAS.Explorer.Entities、EAS.GReport.Controls、EAS.Report.Controls、Northwind.Entities
3.5.3.1. 用戶控件類型窗體
在項目Northwind.WinUI添加用戶控件CategoryAddIn,產品分類
該類窗體可以作為平台插件,添加到平台功能樹上,有2段代碼為平台約定,必須添加。
在窗體上添加控件(可以直接從案例對應窗體上復制,減少操作時間)
設定dataGridView1的datasource為categoryBindingSource
dataGridView1上鼠標右鍵,選擇編輯列
在代碼模式下添加引用
using EAS.Modularization;
using EAS.Data.Access;
using EAS.Data.ORM;
using EAS.Data.Linq;
using Northwind.Entities;
using EAS;
增加以下一行代碼,此為平台約定的格式,必須有。
[Module("0A1745F3-7F95-4898-8E51-539818DAB95C", "產品分類", "")]
選中GUID字符串,然后選擇工具、生成GUID,生成新的GUID,替換原GUID:
替換后的結果如下:
添加以下代碼到指定位置
//以下代碼為平台約定內容
[ModuleStart]
public void StartEx()
{
}
//以上代碼為平台約定內容
在Northwind.Entities數據對象Category中添加以下代碼:
public int GetMaxID()
{
ParameterCollection pc = new ParameterCollection();
pc.Add("ITEMKEY", this.DbTableName);
return (int)this.DataAccessor.Query("exec GetIdentityValue @itemkey=?", pc);
}
public override string ToString()
{
return this.CategoryName;
}
3.5.3.2. 普通windows窗體
此類型窗體的編程與普通程序相同,沒有特殊要求。
在Northwind.WinUI增加ProductEditor,產品錄入/修改界面
界面控件和代碼從案例中復制過來即可。
3.5.3.3. 輸入字典設置
平台提供了輸入字典通用組件,可以很方面的實現軟件數據錄入界面中常見的選擇錄入方式(例如在入庫單上選擇倉庫、部門、人員、產品等),輸入指點我們在4.2.2中已經維護,這里直接調用即可。
以下重點說明輸入字典的設置:
選中產品種類后的文本框,把前面通過開發相關設置的產品分類輸入字典的GUID(上圖紅框中的內容)復制到文本框的屬性【textBoxAutoComplete1上的MetadataID】,如下圖所示。
選中textBoxAutoComplete1組件,設置其Enabled屬性為true,這樣,就可以通過幫助字典的方式輸入產品種類。
3.5.3.4. 打印設置
平台提供的打印功能使用起來非常的便捷,只需要2步就能夠實現單據或報表的打印,而且打印可以在使用過程中進行修改,不需要重新修改代碼及重新編譯程序。
1、 通過平台的報表管理工具設計打印格式;(詳細操作參見4.2.5.報表及數據導出)
2、 在需要打印的地方通過報表名稱直接調用(案例中提供了打印的樣例代碼)。
這里我們通過報表管理定義了一張打印格式【產品列表】,然后,把報表名稱填入打印按鈕對應的代碼中即完成了打印的調用,如下:
this.Report.Name = "產品列表"; //在此處修改報表名稱
3.5.3.5. 按鈕級權限控制
處理功能模塊級的控制外,平台還提供了更加嚴格的權限控制——按鈕級權限控制。
平台以函數管理的形式提供了按鈕級的權限控制,具體操作如下:
1、通過平台系統管理/函數管理增加需要進行管理的按鈕權限控制函數。
2、添加函數【刪除權限控制】
對產品管理列表的刪除按鈕權限進行控制,如無權限則提示無權限,不允許刪除。
函數的調用時通過GUID進行的,在需要控制的按鈕相應的代碼中把GUID填入。
完成后,確定。然后選中函數並點擊屬性:
選擇【安全】頁簽進行函數的授權。
也可以通過角色管理進行授權。如下圖所示:
設置完成后,在需要控制的按鈕代碼中增加如下2行代碼即完成按鈕級權限控制的設計開發。
3.5.3.6. 程序測試
啟動程序,登錄系統,用戶名:Administrator,密碼:sa
錄入產品分類
錄入產品:
在產品種類文本框單擊空格鍵,彈出產品分類輸入字典,選擇對應的分類即可。
錄入測試數據
打印測試:點擊【打印】按鈕,系統彈出打印預覽窗口
刪除按鈕權限控制測試:在未經授權的情況下結果如下圖所示:(此功能在調試模式下無效,需要進行模塊安裝、授權后才能夠正常)
3.5.4. 多層(有業務層)模式開發
參照案例代碼,添加兩個項目
Northwind.BLL.Contracts作為服務端與客戶端的接口
Northwind.BLL.Host 服務端業務處理邏輯
設定目標框架為.net 4.0,目標平台為Any CPU,輸出路徑為Northwind下的Publish
3.5.4.1. 接口層開發
Northwind.BLL.Contracts:
添加類庫引用:EAS.Data、EAS.MicroKernel、Northwind.Entities
新建接口IInService,處理采購入庫業務。
添加代碼
using Northwind.Entities;
其它代碼如圖所示,詳見案例對應代碼:
編譯生成Northwind.BLL.Contracts.dll
3.5.4.2. 業務邏輯層開發
對應的,在Northwind.BLL.Host中添加類庫引用EAS.Data、EAS.MicroKernel、Northwind.Entities、Northwind.BLL.Contracts
修改屬性文件Properties目錄下的AssemblyInfo
修改前: 修改后增加了紅框中的2行內容:
添加InService類,具體實現Northwind.BLL.Contracts中定義的接口
添加類庫引用代碼
using EAS.Data.Linq;
using EAS.Data.ORM;
using Northwind.Entities;
using EAS.Services;
修改代碼如下:
到此就完成了接口層和業務邏輯層的開發。
3.5.4.3. UI層開發
首先在Northwind.WinUI中添加對Northwind.BLL.Contracts的應用
添加用戶組件ProductInAddIn,用於錄入采購入庫單
界面參照案例設計、布局(可以直接復制過來,以節省時間)
參照案例添加對應的代碼
參照案例,在Northwind.Entities的數據對象InBill、InBillDetail添加GetMaxID(),完成重新編譯。
參考案例添加LoginInfo類。
為文本框tbName的屬性【textBoxAutoComplete1上的MedaDataID】填入4.2.3.3中設置的輸入字典【商品字典】的編碼。
為文本框控件tbNumber綁定tbNumber_KeyDown事件;
為按鈕控件btnOK綁定btnOK_Click事件;
為數據字典控件textBoxAutoComplete1綁定textBoxAutoComplete1_InputComplete事件。
完成后重新編譯UI層。
運行測試:
采購入庫菜單已經出現,點擊開始錄入數據
到此,所有的開發和編碼工作基本完成。
其它功能模塊的開發可以參考上述步驟及案例全部做一遍,以加強對平台的掌握。
3.5.5. 報表及數據導出設計開發
平台提供了強大的打印設計、報表設計及自定義報表。
為了前面我們測試的打印功能,我們在此設計【產品列表】報表,以Administrator賬戶進入系統,選擇開發相關/報表管理(注意:此處是報表管理而不是GR報表管理):
點擊添加,新建報表
錄入報表名稱:產品列表(平台要求報表名稱必須唯一,作為打印調用的標識),查詢語句、查詢參數在此不做處理,確定
選中報表然后點擊設計按鈕,進行報表內容和格式的設計,在文件/新建/選擇對象報表
在報表信息頁簽錄入報表名稱:產品列表及其他信息
在數據對象頁簽程序集選擇e:\code\Northwind\Publish\Northwind.Entities.dll
對象選擇Product,如下圖所示
調整格式后,結果如下:
保存,完成報表的設計。
報表實際效果。報表支持4中數據導出格式:Excel、Word、Html、Pdf。
如導出為excel:
導出后格式如下:
4. 正式運行系統
4.1. 系統部署
4.1.1. 模塊安裝
4.1.2. 建立導航
4.1.3. 發布為分布式模式
修改E:\code\Northwind下的eas.publish.cmd批處理文件,把以下內容添加到文件后面:
運行E:\code\Northwind下的EAS.Publisher.exe完成服務端及客戶端程序文件的發布
配置服務端
運行E:\code\Northwind\AppServer\Bin下的EAS.Configure.exe,配置為分布式模式,選擇第三項【生成SOA分布式服務配置】如圖
運行同目錄下的soaserver.start.bat文件,啟動SOA服務,如圖所示
配置客戶端
運行E:\code\Northwind\AppServer\xClient\files下的EAS.Configure.exe進行客戶端配置
運行同目錄下的EAS.WinClient.Start.exe,啟動客戶端,登錄系統,運行正常
4.2. 角色維護
以Administrator賬戶登錄,進行角色維護
建立角色
分配權限
分配成員
4.3. 賬戶維護
新建賬戶
制定隸屬角色
單獨權限分配
4.4. 權限分配
平台既可以在角色管理中對角色統一授權
平台又可以在賬戶管理中對賬戶單獨授權,管理比較靈活方便。
5. 應用領域
結合我對平台的理解,我認為平台適用面還是很廣的,總結為以下四個方面:
5.1. 全新軟件項目的快速開發平台
對於全新的軟件項目,無論是產品化開發還是項目化開發,都可以考慮用EAS.NET平台,可以減少系統管理方面的開發。
5.2. 已有系統的快速二次開發平台
對於在已有成熟系統上進行二次開發來講,平台更有價值,特別是平台的輸入字典可以充分利用原有系統的數據字典,只需要開發新增的錄入單據即可,單據上的所有參照項只需要通過平台設置輸入字典就可以實現與原有系統的數據字典共享了,報表既可以用原有系統的報表工具(如果有的話)也可以用系統的GR報表管理設計報表並發布為功能模塊,實現快速二次開發。
5.3. 老舊系統的快速升級開發平台
對於一些技術相對落后、維護工作量大、客戶應用較深的系統,也可以在EAS.NET平台的基礎上,分模塊逐步升級,所有的業務邏輯仍然可以保持與老系統一致,但系統的擴展性、穩定性、可維護性方面則有很大的改進。
另一種系統由於原來主要是針對sql server開發的,現在有項目需要支持oracle數據庫,也可以考慮使用EAS.NET對老系統進行擴展升級,如果原來就是基於.net技術,用C#開發的,整體開發工作量相對比較小。
5.4. 多系統應用快速整合開發平台
對於一些大型集團企業,內部使用了許多系統,但作為集團領導經常需要結合多個系統的綜合數據,通過EAS.NET平台可以搭建企業內部的數據交換中心和數據倉庫,並可以在此基礎上建立一套決策分析系統。如果能夠充分發揮EAS.NET工作流平台的優勢,還可以通過工作流把各個系統有機聯系起來。
6. 適用對象
此處的分類方式以對.net開發技術掌握的程度為標准。
6.1. 零基礎
主要針對那些小微軟件企業的老板們,他們多數擅長業務,不懂技術,或者只是簡單的了解技術,沒有實力建立一個強大的開發隊伍,多數只有1~2名技術人員,這些既負責一些簡單的開發工作,還要負責大量的客戶服務。這些公司可以考慮使用EAS.NET平台作為基礎開發平台,技術人員只要能夠會用C#寫窗體和簡單的業務邏輯即可。
6.2. 初級水平
主要針對一些解除開發1~3年的開發人員,已經基本能夠做一個模塊級的開發,但由於沒有時間積累,沒有自己的整體開發框架。這類人員也可以考慮把EAS.NET平台掌握后跳槽到新的公司做他們的技術負責人,把EAS.NET平台作為公司的開發平台,為公司快速帶來效益,也可以使自己的收入在短期內實現翻番。
6.3. 中級水平
主要針對已經從事開發工作多年的開發人員或者項目團隊的負責人,他們多數有一定的技術水平,也形成了自己的開發框架,但框架存在着這樣或者那樣的不足,為解決框架問題而忙碌不休。建議這些朋友可以考慮選擇EAS.NET平台作為自己或者項目組的開發平台,提高開發交付效率,解放自己,用更多的時間去休閑,去陪陪家人、朋友。
7. 結束語
以上為個人對EAS.NET平台的認識和理解,EAS.NET平台還有可以改進提高的地方,希望喜歡這個平台以及使用這個平台的朋友們能夠發揮各自的優勢,讓平台更強大、更好用、更有效,為我們大家帶來更大的回報。在此謝謝作者的無私奉獻,最后,預祝EAS.NET平台發展的越來越好。
歡迎大家交流溝通,QQ:709565426;郵箱:wy_erp@126.com