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 輔助代碼生成工具,必備工具。具有大量的例子,入手容易,案例多,應用普遍。