最近公司要競標一個項目,對方指定要.Net,因此又重操舊業,整理一些.Net的技術優缺點。
水平所限,若有錯誤之處,請斧正。
- Web Service: 基於SOAP協議的功能抽象層,利用xml作為載體的常值內容完全可以通過http協議訪問,具有穿透防火牆的能力,同時滿足遠程/本地調用以及b/s c/s調用,能極大程度的隱藏實現細節;不同的service可以部署於不同的host進行分布式調用而分散壓力;當然這不是.net特有的。
- smart client: 對於用戶端的操控能力強於html browser,可以通過http發布,還可以自動升級,部署成本近乎為零。
- ASP.NET User Control: 大大簡化傳統browser頁面開發的複雜程度,增加代碼重用的機會,提高模組化程度,最大的優點是大大增強了頁面功能,其事件模式改變了b/s開發的模式,但它也是一把雙刃劍,頁面-伺服器的事件也是效率的最大敵人,因此不可濫用。
- XML: .Net 的xml支援作的相當不錯,有專門的name space來處理xml相關問題,同時dom對xml的處理速度還是比較理想的。
- Performance: .NetManaged 程式碼的效率比native的代碼要慢,據統計慢大約15%~20%;曾有人將quake2的c代碼改到託管的c++代碼(vc7 delegate),效率降低約15%;但是可以考慮在運算密集的模組使用com/com+,vc7是ms有史以來對standard C++支援最好的一次,同時編譯的是native code,因此無論是效率還是標準都有保證。
- Open Source: 自從.Net誕生以來,open source社區從來沒有過如此的關注過ms開發,大量的優秀平台架構和軟體從java移植到.Net上,如Spring, hibernate,ant, log4j, junit等,極大的豐富了mser的選擇,同時給ms平台帶來了無數的先進思想(也不能說ms平台以前就完全沒有)
- reflect: 相信bill從java那裡學到了不少東西,而反射則是相當重要的一個。他使得Dependence injection等AOP的思路得以實施,使得Managed 程式碼也具有了以前只有c/c++才有的能力(類似函數指標)