程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> ERP/MIS開發 工作多年後積累的五種信息化軟件開發模式

ERP/MIS開發 工作多年後積累的五種信息化軟件開發模式

編輯:關於C#
 

工作幾年後的積累,經歷大大小小的數個項目開發,積累了以下幾種軟件開發的模式和方法。
全部以Northwind數據庫為例子,來比較幾個開發方式的主要區別和著重點,更詳細的內容請參看博客文章。
這裡的開發模式,僅僅以代碼的書寫方式來比較。比如使用LLBL Gen框架,則大部分的時間在開發業務邏輯;
基於ASP.NET應用代碼生成器的方式,適合於項目初期,一點點的加表,加字段,與數據讀寫相關的代碼則可以直接的從代碼生成器中拷貝代碼;基於Repository Factory的方式,會大量應用到存儲過程;基於Code Smith的方式,先拷貝一分標准的項目的demo代碼,以獲取項目的基礎結構,再根據需要,從需求中分離出數據讀寫要求,拷貝代碼。
 

1 基於LLBL Gen的ORM開發方式

創建SQL Server的數據庫連接,使用集成認識方式

image

添加需要進行數據讀寫的實體,建立實體與數據庫表的映射關系。

image

新建立一個Windows Forms的項目,給窗體添加一個DataGridView控件,在窗體的FormLoad事件中寫如下代碼
DataAccessAdapter adapter=new DataAccessAdapter();
EntityCollection<CustomersEntity> customer = new EntityCollection<CustomersEntity>();
adapter.FetchEntityCollection(customer,null);
dataGridView1.DataSource = customer;

項目結構圖如下

image

 

2 基於代碼生成器的開發方式

這種方式是基於單個文件或數據表來設計的,所以需要自己手動添加項目結構。

image

項目的結構如下

image

這一步驟要求可以用企業庫配置文件編輯工具編輯配置文件。

這種模式,本質上還是Db-script 的方式,拼湊SQL語句,發送到數據庫中以進行數據讀寫。

 

3  微軟輕量級代碼生成器 Repository Factory

有微軟的企業庫,再配上這款代碼生成工具,開發速度也很快.

最終的數據訪問代碼,看起來是這個樣子

ICustomersRepository repository = RepositoryFactory.Create<ICustomersRepository>("Northwind");
List<Customers> customers = repository.GetAllFromCustomers();
dataGridView1.DataSource = customers;  

請參考文章《微軟輕量級代碼生成器 Repository Factory》來了解這種模式的開發步驟。

 

4  基於Code Smith模板的開發方法

自己手寫的代碼生成器,ASP.NET應用代碼生成器,常常經不起需求的變化,升級生成的模板代碼也會遇到阻礙。
比如,要給生成的實體加上序列化支持,則需要改動代碼並重新編譯,自認識Code Smith後,才明白模板生成的威力
image

這是一套ERP/MIS的模板,Build All.cst可以生成所有項目所需要的文件,從Model實體,到數據訪問接口Contract和SqlClient實現,再到Web UI和Windows UI,可以自動化生成的地方都用模板來生成。
曾經在ERP/MIS開發中,寫過一個批量生成模板的插件工具,Smith Builder
image
這種模式需要一個非常標准的demo,來表達模板中的各個方法的含義和作用。通過改善template或者改善demo,從兩方面來改進項目開發的效率,也值得推薦。
如果對Smith Builder的源代碼感興趣,可到epn.codeplex.com的Source Code中下載它的源代碼。
 

 

5  基於Mindscape NHibernate Designer的NHibernate開發方式

在項目中應用了NHibernate作為ORM框架讀寫數據,再配合Mindscape NHibernate Designer提供的Model-First或Database-First開發方式,也能達到快速開發。
image_thumb12
Mindscape NHibernate 使用標准的NHibernate方法來開發數據庫應用,作為可視化工具,它改進了數據庫字段與實體屬性的映射方法,沒有用xml文件存儲,而直接內嵌到代碼中。請參考文章《ERP MIS開發 Mindscape NHibernate + MySQL 快速開發入門》了解更多的細節。
再到後來接觸LLBL Gen後,也了解它提供的NHibernate框架
image_thumb6

因為已經熟悉了LLBL Gen Runtime的API接口和方法,所以並沒有實際應用LLBL Gen 的NHibernate框架到項目開發中。把代碼從一種ORM框架移植到另一種ORM框架,應該說是一種惡夢。何況現在還有更流行的Entity Framework。
請參考文章《ERP MIS開發 LLBL Gen NHibernate + MySQL 快速開發入門》了解更多細節。
 


總結:我故意打亂了我使用這些模式開發項目的順序,也就是無法看出它是什麼時候應用到項目中去的。不同的學習階段有不同的理解,探索,於是會努力尋找一些開發的模式,供自己的團隊成員參考。還有更多的技術,比如Entity Framework沒有應用過,更新的太快了;Linq to SQL也沒有應用到項目中就out了;ASP.NET MVC也一直沒有在項目中使用過……故意把這些我並不了解和熟悉技術引出來,打擊一下自己,是為了引出最後一句結論:無論應用何種技術或方法,把公司的任務按時做完,及時交付項目,就是應用了最好的技術和方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved