(原創) 為什麼PetShop要分成這麼多的Project? (.NET) (PetShop) (N-Tier)
2006-09-26 21:40
274 查看
<原載於藍色小舖Blog 阿森的學習筆記 2006/08/30 Tue 03:16 PM>
很多人看到PetShop的Source Code之後,第一個反應就是,為什麼要分這麼多的Project?不是一個Project就可以搞定嗎?為什麼要弄得這麼複雜?
回想物件導向的目的在哪裡?就是為了日後重複使用(Reuse),PetShop將Data Access Layer,Business Logic Layer,Model....等使用獨立的Project,就是為了日後重複使用。
舉個公司內活生生的例子,像我寫的Forum和Support兩個系統,和科長寫的 Member系統,由於有部份Table是共用的,當然有些SQL和商業邏輯也是共用的,但因為我們都沒有分層,也沒將Data Access Layer,Business Logic Layer獨立Project做編譯,導致不同專案雖然有用到相同的SQL和商業邏輯,卻還是各寫各的,或是用Copy的方式,這樣不僅浪費時間,而且日後維護也很困然,只要商業邏輯一改,每個專案都得改;若如PetShop那樣,將Data Access Layer,Business Logic Layer獨立Project編譯,不同系統只需引用相同的Data Access Layer Project,Business Logic Layer Project,這樣就不用各寫各的,或者用Copy的方式了,而且日後若要修改,也只要修改一份程式即可。
再舉一個公司的例子,我們team有一個系統,原本是用Web開發的,但因為歐洲分公司網路狀況不佳,所以並不適合使用Web系統,所以打算另外開發一套Windows版的系統給歐洲用,且支援離線輸入的方式,而台灣、大陸和美國則繼續使用Web版,但其他如商業邏輯、Stored Procedure、資料庫結構等都和原來Web版完全一樣。但由於原來的Web版並沒有分層,且都寫在同一個Project下,導致要開發Windows版時,又幾乎是重寫一套。假如原本Web版也如PetShop那樣分層且分專案開發,那Windows版將可直接使用Web版的Business Logic Layer、Data Access Layer程式,只需再開發Windows版的介面和離線輸入部分即可。
由上所知,PetShop的分層分專案寫法其實對日後維護幫助很大,值得我們加以學習。
很多人看到PetShop的Source Code之後,第一個反應就是,為什麼要分這麼多的Project?不是一個Project就可以搞定嗎?為什麼要弄得這麼複雜?
回想物件導向的目的在哪裡?就是為了日後重複使用(Reuse),PetShop將Data Access Layer,Business Logic Layer,Model....等使用獨立的Project,就是為了日後重複使用。
舉個公司內活生生的例子,像我寫的Forum和Support兩個系統,和科長寫的 Member系統,由於有部份Table是共用的,當然有些SQL和商業邏輯也是共用的,但因為我們都沒有分層,也沒將Data Access Layer,Business Logic Layer獨立Project做編譯,導致不同專案雖然有用到相同的SQL和商業邏輯,卻還是各寫各的,或是用Copy的方式,這樣不僅浪費時間,而且日後維護也很困然,只要商業邏輯一改,每個專案都得改;若如PetShop那樣,將Data Access Layer,Business Logic Layer獨立Project編譯,不同系統只需引用相同的Data Access Layer Project,Business Logic Layer Project,這樣就不用各寫各的,或者用Copy的方式了,而且日後若要修改,也只要修改一份程式即可。
再舉一個公司的例子,我們team有一個系統,原本是用Web開發的,但因為歐洲分公司網路狀況不佳,所以並不適合使用Web系統,所以打算另外開發一套Windows版的系統給歐洲用,且支援離線輸入的方式,而台灣、大陸和美國則繼續使用Web版,但其他如商業邏輯、Stored Procedure、資料庫結構等都和原來Web版完全一樣。但由於原來的Web版並沒有分層,且都寫在同一個Project下,導致要開發Windows版時,又幾乎是重寫一套。假如原本Web版也如PetShop那樣分層且分專案開發,那Windows版將可直接使用Web版的Business Logic Layer、Data Access Layer程式,只需再開發Windows版的介面和離線輸入部分即可。
由上所知,PetShop的分層分專案寫法其實對日後維護幫助很大,值得我們加以學習。
相关文章推荐
- 為什麼PetShop要分成這麼多的Project?
- (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
- (原創) 当Visual Studio的Solution/Project无法开启时怎么办? (.NET) (Visual Studio)
- (轉貼) Microsoft .NET PetShop 3.x:Design Patterns and Architecture of the .NET Pet Shop (.NET) (PetShop) (N-Tier)
- (轉貼) Microsoft .NET PetShop 4:Migrating an ASP.NET 1.1 Application to 2.0 (.NET) (PetShop) (N-Tier)
- (原創) 写程序时,要同时以Class Creator和Class User的角色来写程序 (OO) (.NET) (N-Tier) (C/C++)
- (原創) N-Tier開發的一些經驗分享 (.NET) (N-Tier)
- PetShop之ASP.NET缓存(转载)
- (原創) 如何使用C++/CLI对图片做Grayscale Erosion? (.NET) (C/C++) (C++/CLI) (GDI+) (Image Processing)
- petshop4.0设计说明 asp.net初学者
- .Net Petshop详解(二): petshop三层结构之DataTier
- (原創) 如何獲得GridView內LinkButton的RowIndex? (.NET) (ASP.NET)
- https://projecteuler.net/archives
- Enhanced AutoCAD .NET Project Application Wizard
- .NET Web Deployment Project 编译错误An error occurred when merging assemblies: Index was outside the bounds of the array解决办法
- Visual Studio .Net 2003 Error: "Refreshing the project failed. Unable to retrieve folder information from the server."
- 来自Scott博客的 Starter Project Templates (VS 2010 and .NET 4.0 Series)
- .NET Open Source Project
- [asp.net core]project.json(2)
- Codeproject对现任VC++.NET首席软件设计师Stan Lippman的采访