經過艱苦卓絕的奮鬥,windvoice終於部署上線了,從開發伊始便一直在嘗試如何能夠避免三層架構的繁瑣又能實現快速開發,後來,採取了mvc3+activerecord的結構,由activerecord提供m,c大部分由visualstudio生成,這樣,就可以把精力集中在v的實現上。windvoice的開發還使用了很多開源專案和工具,最終部署執行在了ubuntu + apache + mono中,覺得開發過程中很多經驗和教訓值得總結,同時這種架構非常適合極低成本,小訪問量,方便移植,快速開發的場景,下面詳細介紹。
1. rich model
三層架構中的model體現了職責分離的原則,但實際開發的過程中,由於業務層和資料訪問層的職責劃分往往執行不夠嚴格或者難以把控,就出現了大多業務層的**只是轉接資料層,或者把大量業務邏輯堆積在資料訪問層的情況,造成了專案優美程度的降低。
mvc中的m,由其定義,更應該是乙個行為完整的物件,而非將這個物件的屬性和其方法分離,但分離又能帶來高內聚的好處,所以綜合參考了一些其他專案的做法,windvoice的「m」採用了partial class,乙個部分完全由生成器生成,僅包括了物件屬性的描述,另乙個部分手動修改,包括所有靜態和例項方法,由於繼承自activerecord,model無需編寫繁雜的crud。這樣,專案進行過程中大部分的修改在方法partial中進行,避免了屬性partial的改動--字段變動時重新生成即可。但同時由於引入了partial,也引入了風險,windvoice中採用不同資料夾相同檔名的約定保證partial類在固定位置下同名出現。
2. 開源元件
windvoice中從前段到後端使用了很多開源元件,豐富功能的同時節省開發時間支出,詳細介紹如下。
名稱
用途
jquery.cookie
讀寫cookie
jquery.lightbox
album中,顯示單張
jquery.uploadify
後台管理一次上傳多張
jquery.validate
自動驗證
prettify
編輯器外掛程式,高亮顯示**關鍵字
xheditor
輕量級編輯器,簡單易用且易擴充套件
minimalistic xhtml/css template
簡單的三色兩欄布局模版,節省布局css開發
castle activerecord
以nhibernate為基礎,提供資料庫物件對映
nhibernate
orm資料訪問解決方案
lucene.net
pangu segment
lucene下的中文分詞
html agility pack
驗證html輸入內容的合法性
sqlite.net
資料持久層
opensinaapi
log4net
日誌紀錄
3. linux下的部署
鑑於目前很少有虛擬空間能夠提供.net 4.0 mvc3的執行環境,即使能提供的,**也貴不少,所以windvoice從一開始就做足了相容mono的準備,在部署及在mono環境中執行的過程中遇到很多問題,大部分是linux和windows路徑的大小寫和分隔符問題,其餘問題由於使用開源軟體,需要時可以跟蹤入開源元件內部,檢查問題出現的原因。之前的幾篇部落格介紹了linux下apache2 mono中承載mvc3的環境搭建,mono下配置acticerecord使用sqlite資料庫,以及asp.net mvc3在mono中部署的兩個問題,經過了這些嘗試,最終購買了photonvps的vps,$5.95/月,按當前匯率,大約37塊人民幣乙個月,**相當低廉。vps的配置是ubuntu10.04 128m記憶體,搭建了apache2+mono環境後,基本執行沒有問題,但壓力測試發現併發能力很不理想,而且記憶體占用較高,下一步計畫嘗試採用nginx作為web server,看看是否能夠提高併發能力降低記憶體占用。
mysql架構介紹 Mysql邏輯架構介紹
總體概覽 和其它資料庫相比,mysql有點與眾不同,它的架構可以在多種不同場景中應用並發揮良好作用。主要體現在儲存引擎的架構上,外掛程式式的儲存引擎架構將查詢處理和其它的系統任務以及資料的儲存提取相分離。這種架構可以根據業務的需求和實際需要選擇合適的儲存引擎。1.連線層 最上層是一些客戶端和連線服務...
XML 架構介紹
xml 架構介紹 xml 架構是用於定義和驗證 xml 資料的內容和結構的文件,就像資料庫架構定義和驗證組成資料庫的表 列和資料型別一樣。xml 架構通過 xml 架構定義 xsd 語言定義和描述某些 xml 資料型別。xml 架構元素 元素 屬性 型別和組 用於定義某些 xml 資料型別的有效結構...
企業架構介紹
總體架構對整個企業的價值 提高與實現最佳的it投資回報比 規避與有效的減少 消除由it引入的企業風險 最佳的改進企業的運營效率 易於企業高層領導 董事會 股東清晰的理解it總體計畫 發展和挑戰 便於各級業務管理人員和領域專家定義和溝通企業的業務需求 總體架構在企業it科技部門的價值 有乙個清晰的總體...