天天看點

架構之路--實戰項目記錄(一) 概述

我正在開發的系統是一個簡單的“部落格+論壇+SNS”系統。應該比較好了解吧,就“部落格園+csdn+開心網”模式。具體的功能在需要用到的時候詳細講解即可。

我最後選擇的還是MVC。隻能說是個人偏好,感覺WebForm:

1、對最終生成的Html不好控制

2、架構略顯笨重(頁面生命周期,Ajax封裝等)

另外,asp.net MVC是新生事物,也有一個學習的機會。本來還一直覺得MVC中<%= %>難看(受asp影響),但後來razor出來以後,就徹底放心了。

在這個項目開始之前,我對三層都有看法,和很多同學一樣,不知道BLL層幹嘛用。而且當時:

1、我不準備開發一個支援多資料庫的通用系統

2、想不到有什麼複雜的業務邏輯,最複雜的邏輯可能就是分頁和多條件查詢了,這不是資料庫的事?

但是,我終于說服自己:不懂嘛,隻有去做了,才能把他搞懂!“絕知此事要躬行”。

後來,慢慢的,我有了一些收獲,轉機,就從我開始學習ORM開始。

我記得當時猶豫了很久,最終選擇了NHibernate,理由:

1、NHibernate開源,可以深入研究

2、擺脫微軟依賴,向更廣闊的天地前進(這個想法也影響了我選擇MVC,畢竟,不隻有asp.net才有MVC,php和java都有)。這裡多說一句,直到現在,我都還很慶幸我的這個決定。此後,一路走來,風光無限。

首先,領域模型,就是以面向對象的方式,通過各種各樣的對象,建構領域層(或者業務層)。而DDD,我簡單的把他了解為,而且,将建構領域模型作為設計工作的第一步!不管之後UI層怎麼呈現,也不管以後資料怎麼存儲到資料庫(持久化)。如果這就是DDD,那我就采用了DDD了,呵呵。

關于測試驅動(即使按最狹義的了解:unit test drive),我想了很久,最後都還是放棄了。理由:

1、我是一個人開發,是以無論寫unit test還是寫代碼,思路都是一緻的,我自己寫的unit test,自己寫的代碼,不可能不通過;

2、而且以後,代碼發生了變動,測試代碼也得跟着改(這和三層的弊端類似);

3、單元測試對于重構的幫助,我覺得不能抵消由此帶來的“麻煩”。

4、懶!呵呵,這可能是最大的原因了。

但是,我認為,如果是團隊開發,TDD能發揮很大的作用:

1、友善溝通交流,澄清客戶需求。IF...ELSE...ELSE...是最清晰、最精準的描述需求的邏輯和語言了。

2、便于封裝。比如BLL層的開發人員不必等UI層完成,即可利用單元測試開始編碼、調試、驗收等。

概述,我想說的就這些,因為我想把重點放在具體問題的分析和解決上,概念上的東西,點到為止即可。歡迎各位同學留言!尤其是對TDD,我很想聽聽大家的意見,尤其是經過實踐檢驗過的經驗。先謝了,呵呵。