.NET項目開發企業郵箱系統之項目說明
最近終于輕松下來了。帶了兩年新人,實實在在的體驗到了做為項目經理+技術經理+測試經理+技術支持工程師同時兼任程序員得酸甜苦辣。或許我這個人就是個勞碌的命,一旦閑下來,反而覺得很別扭。當然了,或者這是程序員的通病吧,呵呵~。在律所工作的三年中,先后接觸了幾個企業郵箱系統,大的小的,知名的不知名的,每個都讓律所不太滿意,趁著閑下來的這段時間,打算編寫個這方面的程序,把以前遇到的系統中不滿意的地方盡可能解決掉,同時因為企業郵箱程序的特殊性,它既包含B/S的內容,也包含單機軟件的內容,同時包含一些系統底層的知識,所以也很合適作為新人培訓的案例教程,等把這個系列寫完,再好好整理整理,就可以作為律所內部培訓使用了。好了,廢話不多說了,下面介紹下關于程序的一些想法。
程序本身要作為案例教學,而且面對的對象是初入行的新人,所以在程序注釋和解釋方面會盡可能詳細。企業郵箱基本上可以算是個大型項目了。所以程序考慮分層架構,這樣方便擴展。程序本身包含了單機軟件和B/S結構的內容,對于B/S方面,程序會嚴格遵守Web標準。對于單機軟件方面,程序會考慮多語言配置。程序會融入自定義標簽調用、xslt、xml、模板、靜態化等應用,并提供完整例子。因為程序本身屬于大型項目,所以對可維護性和性能會有著重考慮。但是,我個人信奉一句話:程序首先是寫給人看,其次才是寫給機器看!所以程序會在性能與易讀性方面做出綜合取舍。下面介紹一下程序的基本框架:
圖一、程序框架結構
程序命名為《易迅企業郵箱系統》,取意簡單容易、迅捷高效。程序基于.NET4.0 Framework, 開發工具及輔助數據庫為:VS2010+SQLServer2008,下面詳細介紹程序各個層的目的:
EasyFastMail.BLL——業務邏輯層。主要負責程序的業務邏輯判斷。注意:業務邏輯不是程序邏輯,盡管他們在很多時候很相似,甚至于融為一體。程序邏輯是指一個操作是否成功,例如,刪除一條數據,根據數據庫的返回值判斷刪除是否成功,這個屬于程序邏輯,他判斷的是程序的某項具體操作是否成功。但是在復雜環境下,刪除數據的同時需要考慮很多問題,而不僅僅是刪除數據這么簡單。以刪除用戶這個常用功能為例:在企業OA中,入職即增加用戶,離職即刪除用戶是難以滿足企業的需要的,在企業中,離職人員管理也是人力資源部的一項重要工作。(例如領導層正在討論一個項目說明,大家認為整體上是可行的,有利潤前景,但是一些細節上的東西,書面報告記載的不是很清楚,這時就需要聯系報告的撰寫人或者項目的負責人來做說明,假如該人已離職,在絕大數情況下,因為遺忘或者其他原因,他不可能會給他的繼任者把每一項工作都交代的十分詳盡清楚,所以這時就需要聯系該人,如果程序中設置,離職即刪除用戶,那么很可能就無法再次聯系上該人,這樣會造成項目擱置或者其他的損失)離職操作應該刪除用戶表中的數據,同時將該數據保存到離職人員表中,并且這兩項操作應該置于一個事物中,保證同時成功,否則回滾事物并且提示操作者。這樣看起來,刪除用戶這個操作應該包含兩步:1、刪除用戶表中的數據;2、將該數據插入到離職人員表中。這兩個操作合起來即程序的業務邏輯。概括來說,程序的業務邏輯有時候和程序邏輯完全重合,有時候會同時包含幾個程序邏輯。
EasyFastMail.Cache——程序的緩存層。緩存對于程序尤其是大型程序來說怎么強調都不為過,它能很大程度上提升程序的性能。這點大家一定要重視再重視,我曾經親眼見過因為有了合理的緩存設計,致使程序性能飆升百分之七八百的案例。
EasyFastMail.Common——公共類庫組件,主要為各層之間共用模塊及其他輔助工具類庫。
EasyFastMail.Model——程序的模型層。Model用于傳遞數據,他即可以和數據庫表完全對應,也可以適當增加或者刪除字段。如何設計,根據實際情況去取舍,只要達到傳遞數據的目的即可。例如添加用戶功能中,用戶包含姓名、登錄名、年齡、性別等等,如果沒有Model,實現該功能需要的對應方法就需要接收很多參數,這樣很容易因為粗心大意致使程序出現bug,并且如果想實現批量增加,則更難處理。而如果有了Model,處理起來就簡單多了,直接給Model賦值,傳遞給對應的方法,該方法根據需要,從Model中取值即可。
EasyFastMail.SQLServerDAL——程序的數據庫操作層。注意,不要在數據庫操作層中做邏輯判斷,該層的職責是增、刪、改、查并提供返回值供調用層進行判斷。
EasyFastMail.Web——程序的頁面展示層(B/S結構)。展示層的職責是收集、展示數據及驗證收集的數據是否合法。本層是程序混亂的重災區,新人程序員很容在犯的一個錯誤就是在該層包含太多太多的邏輯及數據操作。這樣做就失去了分層的目的,致使程序的可維護性、可擴展性成為一句空話。請大家一定注意這點。
EasyFastMail.WinForm——程序的展示層(單機軟件或者C/S結構)。注意事項同上。
原文鏈接:http://www.cnblogs.com/cnuusw/archive/2011/07/10/2102445.html
【編輯推薦】