企業應用開發模式 ERP項目中應用到的技術和工具


一、基礎技術選型

C# .NET 3.5/4.0  這兩個版本的.NET已經相當方便(Linq, Lambda,Parallel),語法簡潔,配合WCF和WF兩項技術,可以滿足快速開發,維護方便的目標。

Win Form  因ERP項目涉及大量的表單(Entry),查詢(Enquiry),報表(Report),我以為WinForm仍然是首選技術。自定義控件,數據綁定,自定義窗體,這三項技術組合起來可產生無窮的威力。

SQL Server 2005  取兼容性最好的一個版本。2008/2008 R2/2012均不向后兼容,舊版本數據一旦附加到新版本中后,便不可以在舊版本的SQL Server中附加,備份集也不可以向后兼容。

 

二、五大核心模塊

為保持ERP產品的可配置性,可維護性,首先定義以下基礎模塊,構建基礎的ERP功能集合。這些基礎模塊是我從工作中接觸到的幾個ERP產品中總結出來,具備代表性。

菜單設計器 Menu Designer   ERP項目的菜單,導航應該具備可編輯,可調整的特性。菜單和導航數據一般保存於數據庫中,或是Xml文件中。

查詢設計器 Query Designer ERP項目涉及大量的數據表單,數據查詢的需求非常頻繁。SQL Server Management Studio是開發人員的查詢設計器,在此基礎上做一個封裝,限定可查詢的數據庫和資料表,考慮查詢權限,拒絕任意的數據修改和刪除語句片段以保護數據,最后將數據以列表或網格形式呈現。

報表設計器 Report Designer  同查詢的需求一樣,如果需要將數據打印成完整的格式,ERP項目應該具備增加自定義報表的特性。兼容當前流行的Crystal Report和Reporting Services。

工作流設計器 Workflow Designer  ERP項目有內建的約定的流程,同時也應該滿足批核,通知等特性。

窗體設計器 Form Designer ERP項目應該具備調整和自定義布局的特性。不同的權限和用戶,所看到界面應該有所差異。借助於此窗體設計器,調整窗體布局,滿足個性化布局的需要。

 

三、實體映射框架層模式

1  Entity Framework , LLBL Gen,NHibernate

ORM的基礎原理是在數據庫與面向對象編程中的對象之間做一層封裝,以簡化數據讀寫。在性能的反應上,ADO.NET是最好的,它直接工作在數據庫驅動層上。ORM則在ADO.NET上做一層封裝。關於可維護性,代碼生成器可彌補ORM對數據庫修改的感知。當發生數據庫變更時,直接以生碼生成工具重新生成實體代碼即可。關於可編程性,強類型的對象,可滿足數據綁定時的數據感知需求,節省開發和維護時的成本。

2 ORM高級查詢,SQL語句追蹤,性能優化

應用ORM做數據訪問層的難點在於數據查詢,拋棄現有的SQL語句知識,應用OOP語言來做查詢,十多行代碼是為達到一個子查詢的目的,一句SQL語句可替代。涉及數據問題時,還需要借助於SQL Server Profiler工具來診斷問題。

 

四、界面層模式

1 自定義控件,窗體基礎類型定義的原理與實現,數據綁定技術

以WinForm技術而言,繼承是為代碼重用的重要收益。定義以下幾個基礎窗體

Entry Form:數據輸入窗體,比如銷售單,采購單,工作單。

Enquiry Form:數據查詢窗體,比如銷售單日記帳查詢,采購送貨查詢。

Report Form:報表窗體,讀取報表的參數信息,從數據庫中抓取數據並呈現報表。

自定義控件是為滿足數據綁定的需要,還增加其它特性,比如限制輸入長度,只讀,可寫,大小寫,半角全角自動轉化等控制。

2 業務邏輯與業務驗證

應用ORM編程帶來的一大收益是界面與邏輯分離。OOP對象既可代表數據庫中的表在內存中的實體,也可包含豐富的自定義邏輯,再加上驗證框架,這二項內容的分離和耦合,極大的增強代碼的可維護性。

ASP.NET MVC已經強制模型M和界面V的分離,用控制器將它們聯系在一起,在數據呈現和數據邏輯方面,相對於Web Form無論是開發,還是維護都輕松很多。

 

五、功能開發模式

1  框架數據庫與業務邏輯數據庫,定義代碼模塊(Module),定義功能(Function)

因為多增加一個數據庫框架,與系統通用功能相關的信息都放置於框架數據庫中,比如帳套配置,比如查詢定義,比如菜單和導航信息。框架數據庫承擔系統方面的功能載體,與具體的業務功能分離。

2  窗體界面設計 查詢(Enquiry)和查找(Lookup)設計,業務邏輯,驗證

在第二項內容(五大核心模塊)的基礎上,ERP項目繼續以插件的方式,定義模塊,定義功能。一個模塊可以簡單的理解為一個Visual Studio 項目文件,相關的功能都聚集在其中。銷售Sales模塊中有報價單,銷售單,銷售送貨,銷售退貨等功能。

模塊中的功能,以第四項內容中提及的方法分三類Entry,Enquiry,Report三大基礎業務功能。

此項內容為ERP開發中的日常任務。以ERP的任務分類,Enhancement,Bug Fix,Data Fix三大分類,絕大多數的任務均在此目錄中。因Bug帶來的數據修復,會給ORM技術團隊帶來壓力。系統產生的數據問題,不再是可以簡單的從系統中拷貝一些SQL語句,ORM做為基礎的數據訪問沒有SQL。以我的體會,ORM並不是要你忘記SQL的存在,在應用ORM保存數據之后,我常會以SELECT * FROM table之類的語句去審查數據表中的記錄,以確保數據值和數據驗證,數據關聯為正確。

 

六、開發工具推薦

SQL Toolbet  SQL Server領域中的Intellisense,好比Visual Studio中的智能提示一樣,必備工具。

JetBrain Resharper  當實體與實體間的關系,接口與實現的關系日益復雜之后,Find Usage和Go to Implementation兩項功能,可幫助診斷問題,必備工具。

Resharper的Test功能也相當優秀,直接對一個測試方法啟動調試,我對單元測試的熱愛,源自於此功能。做好一個基礎功能,會同樣做一個測試方法,以此功能調試跟蹤,觀測代碼的執行。

Code Smith 輔助代碼生成工具,必備工具。具備大量的例子,入手容易,案例多,應用廣泛。


免責聲明!

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



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