毋容置疑,DNN是在微軟社區下的一個最大(牛)的開源社區,DNN也是Nuke系列裡感覺做的最好用,最方便的一個,目前也一直處於發展階段。相對於最初的IBuyPortal原型,無論在應用和性能,都已經有了一個質的飛躍。
但在國內DNN似乎處於一個比較尴尬的局面,剛開始挺有熱情,覺得似乎這是一個無所不能的Web 2.0產品,但接觸了一段時間就對此诟病不已。我想不妨在此列舉一些DNN在國內突出的弊端:(個人觀點,僅供參考)
- 使用習慣:我想這應該是大家最有體會的一點吧,在此我不妨給一個例子,一個客戶很看重DNN,覺得用DNN搭建社區會很方便,以後升級增加功能還極其方便,無非就是增加一個類似插件的Module ( Plus)。但我們給客戶把社區和論壇搭建起來之後,光是論壇測試修改就讓客戶覺得焦頭爛額,比如沒有論壇斑竹(因為國外只有Moderator的概念),沒有積分功能,沒有論壇短信功能等等,而這是國內任何一個成品的論壇都具有的。最終客戶放棄了DNN,轉而使用其他國內的論壇產品。是的,因為不管是DNN本身還是其核心模塊都是國外理念的產物,存在如此迥異的使用習慣在內,這樣我們如果只是純粹的照搬過來的話,那是讓客戶感覺很別扭。
- 入門的門檻:DNN整個工程是如此的龐大,新手如果想一下對DNN開發模塊或皮膚,那必須得了解很多DNN引進的概念,那可不是通用的,而是DNN自己的設計理念。而你想選擇DNN作為你的開發平台,這些是必須深入研究的。比如DNN核心框架,皮膚概念,DAL+ 等等,光是DNN官方網站的文檔就有幾十份,光是看也很費事而費勁(因為是All English ),沒有幾個月你恐怕還是對DNN懵懵懂懂。就舉skin為例,如果你想制作skin,沒問題,你可以在原來基礎(或免費skin)上修改,可能1-2小時就能制作出你想要的效果,但如果你想開發專業的skin,你至少得理解DNN皮膚機制,最好還得懂得一些編程,而這是美工所不願的。
- 可移植性: 官方版本只支持MS SQL,而且MS SQL存儲過程綁定,這些需要做大量的工作才能擴展的它的可移植性。本身DNN可擴展在各個數據庫下使用,可目前我尚未看到存在所謂其他數據庫的DataProvider。(似乎有Access DataProvider,我記不清了)
- 社區氛圍:我想這也是DNN在國內如此受到冷淡的原因吧。我想這個是大家都明白的。
- 性能:這是DNN的最大瓶頸,也是大家拋棄DNN的主要原因。因為DNN引入了skin機制,動態加載頁面元素,頁面中每個模塊所在的容器都可以有自己的skin,頁面也有自己的skin,設想一下,最極端的做法,一個平常的首頁存在10個模塊,每個模塊有自己的skin,頁面也有一個skin,那就是加載該首頁時,DNN需要尋找到11個skin的文件,然後把對應的skin標簽(mark-up)替代為頁面顯示的元素,如此一個遍歷過程就能讓你的頁面可能在2分鐘之內都是一片空白(在國內的帶寬情況的設想),這種情況下還沒包括你模塊可能需要處理的業務邏輯處理。當然值得安慰的是,DNN一直在性能優化上付出很多的嘗試和努力,比如緩存機制,HttpCompression, skin的CSS化等等。但這一過程還需要更好的解決方案的出台,比如頁面靜態化處理。
- 所謂Web 2.0的應用:是的,這是DNN所標榜的,也實現了一些超酷的效果,比如模塊插件式開發,skin主題的應用,頁面拖拽等等。但當你深入了解DNN核心模塊,你會發現裡邊全是Table的堆積,全然沒有Web 2.0所推崇的CSS控制。而且數據大部分都在頁面綁定,充斥著"" .
寫到這,大家是不是覺得我對DNN也很唾棄,可相反,我很鐘情DNN,我也很看好DNN,DNN將來會有一個輝煌的時期並會成為一個成熟的Web 2.0寵兒.