NET的重要地位使得每一次Framework版本的發布都引起巨大的關注同時 NET的架構師也不得不應對每一次變更帶來的挑戰
從年微軟發布NET Framework 以來到現在微軟一共發布了個版本的NET FrameworkNET FX NET FX NET FX NET FX 和NET FX (Beta )同時還發布了針對移動設備開發的NET Compact Framework 和NET Compact Framework
NET Framework新版本的不斷推出新特性不斷增加需要支持的開發工具也不斷升級對於企業內部的平台構架師來說也面臨著各種抉擇如何規劃開發技術策略如何進行開發技術選型如何既保持技術的持續性又能充分應用新技術來提高生產力
NET FX ——從初生到成熟
年微軟發布NET Framework 這給軟件開發界帶來了很多激動人心的特性
◆統一的類型系統基礎類庫垃圾回收多語言支持
◆ADONET 開啟了微軟全新的數據訪問技術
◆ASPNET 對古老的ASP的變革提供一種全新的方式來開發Web應用程序
◆Windows Forms 把微軟開發Windows桌面系統的界面統一在一起
在NET 發布之後很多企業開始轉向NET 的開發從此軟件開發界開始被帶上了NET的道路同時也不得不面對NET Framework升級所帶來的挑戰
微軟在經過年的研發後於年底發布了NET 這次的變化是革命性的而架構師們也不得不再次進行抉擇和調整
ADONET 加強了很多功能提升了性能能夠更好的勝任數據層的開發尤其Visual Studio的DataSet設計器中TableAdapter的功能可以支持可視化設計數據層讓開發數據層更加容易對於以數據為中心的軟件系統再也無需使用ORM等輔助工具來開發數據層了
Web Service性能得到提升並且輔以WSE 安全性等各方面都得以保證Web Service作為首選的分布式技術成為可能
泛型和內置泛型集合的支持和其他基礎類庫的擴展可以讓內部的公共類庫開發更加簡化
全新事務機制(SystemTransactions)的引入讓整個系統的事務處理更加方便
NET FX ——四大金剛
年底微軟發布了一個稍顯另類的版本——NET 這個版本的特殊之處在於它需要NET 安裝後才能運行這是因為NET 是基於NET 基礎上而開發的一套擴展包它增加了如下組件
◆ Windows Communication Foundation (WCF)
◆ Windows Workflow Foundation (WF)
◆ Windows Presentation Foundation(WPF)
◆ Windows CardSpace(WCS)
NET 提供的這些新組件為開發企業應用程序提供了一致的基礎框架這樣業務開發人員就只需要專注於業務問題的解決按照NET 的規范來編寫業務代碼平台構架師面對NET 需要考慮的就是如何把NET 提供的這四個組件融合到企業現有的開發框架中以及如何和第三方類似的產品進行協作
WF支持基於工作流的應用程序
工作流引擎不是什麼新技術但WF的初衷是在Windows環境中提供一個通用的工作流技術為所有基於工作流的應用程序提供統一的創建基礎
WF支持人員(Human)工作流和系統(System)工作流也支持連續(Sequential)工作流和狀態機(StateMachine)工作流WF提出了一個重要的概念活動(Activity)並同時內置了一個基礎活動庫(Base Activity Library)另外開發人員也可以通過API來自定義自己的活動
WF利用和Visual Studio集成的可視化設計器來設計工作流過程模型開發好的工作流過程模型可以運行於WF提供的運行時引擎(Runtime Engine)中在工作流執行過程中WF也提供了一系列運行時服務來完成額外的工作如持久性功能支持工作流的長期運行跟蹤功能獲取工作流執行過程的信息
在WF推出後平台構架師面臨的問題是:WF不是工作流管理平台僅僅是一個工作流的開發基礎和執行引擎並沒有提供組織架構圖窗體與流程設計等套件所以平台構架師需要做出如下的抉擇基於WF構建自己的工作流管理平台還是繼續使用第三方的工作流平台?是否需要選用基於WF開發的第三方的工作流平台?如何把WF和現存的工作流平台集成?如何由現存工作流平台移植到WF?
WCF支持面向服務的應用程序
WCF是微軟為了統一目前NET下多個分布式計算技術而提出的它提供一致的編程模型通過穩定的結構極大改進的功能性和互操作性以及可擴展性全面改善了分布式軟件系統的WCF不僅僅是對以前技術的整合更多是提供面向服務開發的基礎
WCF的核心思想是服務(Service)一個服務可以暴露一個或多個端點(Endpoint)端點即客戶端可以使用的接口而端點由著名的ABC構成:地址(Address)指定發送消息的目標位置綁定(Binding)描述如何發送消息合同(Contract)描述消息所包含的內容客戶端只有獲知ABC的信息才能正確訪問服務
使用WCF有如下優勢
◆ 統一的模型
◆ 互操作性WCF的基本通訊機制是SOAP
◆ 安全性可靠性和事務完善支持WS各類規范
◆ 兼容性WCF可以和舊技術實現的系統進行交互
WCS一致的數字標識用戶控件
Windows CardSpace最初的代號叫InfoCard是微軟取代用戶ID和密碼成為驗證網絡使用者身份的新方法實際上就是一項以用戶為中心的身份識別技術用戶可以通過它控制登錄網站時提交的信息這將會使管理個人信息更加簡便安全同時這項技術也將包含在Windows Vista之中微軟推廣它的目的就是取代傳統的用戶名和密碼因為它可以提供更好的反釣魚功能並且預防其他類型的網絡詐騙
WCS實際上是一個標識元系統可以支持任何數字標識系統而發行獲取和使用數字標識的過程可以視作是獲取三個不同角色的過程
◆用戶有時稱為主體用戶是具有數字標識的實體
◆標識提供者標識提供者可以為用戶提供數字標識
◆依賴方依賴方是一個應用程序以某種方式依賴於數字標識
WCS為這三種實體在標識元系統中進行交互提供了一致的環境
WPF適用於不同用戶界面的統一方法
用戶界面對於應用程序是極其重要的一個部分隨著IT業的發展用戶對界面的要求越來越高但是在NET下一直存在著多種界面開發方式使用Windows Forms開發Windows桌面軟件界面使用ASPNET開發Web應用程序界面另外很多應用程序還需要嵌入文檔視頻實現D和D動畫這樣開發人員為了實現不同界面需要學習不同的技術是否有一種統一的技術來同時滿足不同的需求?
WPF(最初發布的代號為Avalon)就是為解決這一問題而設計WPF為所有的這些用戶界面提供一致的技術基礎從而大幅簡化了開發人員的工作WPF 采用更為現代的方法支持視頻動畫二維或三維圖形以及各種類型的文檔從而可以讓用戶以全新的方式處理信息此外WPF 還為桌面客戶端和浏覽器客戶端提供了通用基礎大大簡化了二者的應用程序開發工作
在開發用戶界面的過程人們還遇到一個重要的問題就是界面邏輯的開發人員並不擅長定義界面的外觀和交互設計而界面設計人員並不熟悉IDE等工具因而界面設計人員和開發人員很難協同工作為了解決這個問題WPF引入名為XAML(可擴展標記語言一種基於XML的語言允許以聲明方式指定用戶界面而非代碼)的技術來分離界面定義代碼和界面邏輯代碼
WPF給應用程序的界面開發帶來的變化是巨大的可以說WPF代表了未來界面技術的方向然而在目前的情況下WPF並沒有大規模運用也沒有成為主流因而平台構架師面臨的問題就有點尴尬:既無法把WPF作為唯一選擇也無法很好解決當前界面開發的一些疑難雜症也許最好的選擇就是盡量把界面層獨立出來讓開發團隊開始學習WPF並逐步嘗試使用WPF
NET FX ——語言的變革
微軟將於今年年底發布NET Framework 目前大家已經可以獲取月份發布的Beta 版本值得說明的是Beta已經附帶了GoLive的許可協議這說明整個NET 的接口已經凍結對於一個超前的團隊完全可以把NET 運用於實際的項目開發了
NET 有如下個方面的重要新特性
◆ASPNET AJAXNET 把之前發布的Ajax擴展包內置到NET 裡面
◆語言改進和LINQ具體改進有自動屬性對象初始化器集合初始化器擴展方法Lambda表達式查詢句法匿名類型
◆LINQ to SQL實現的數據訪問改進
ASPNET AJAX幾乎不會刁難平台構架師因為Ajax已經流行很長一段時間ASPNET Ajax擴展包已經在大量使用了NET 帶來的唯一好處就是無需單獨部署以前的Ajax擴展包了
語言方面的改進引入了函數式編程(Functional Programming)的思想但不會對整個系統構架和企業內部的開發框架產生多大的影響只會讓開發人員編寫代碼更加靈活和敏捷
LINQ(Language Integrated Query)通過編譯器來實現在語言中類似SQL的查詢語法是一個跨時代的底層技術它的出現讓語言能力變得無比的強大
而LINQ to SQL卻給平台構架師出了難題在ADONET和LINQ to SQL中如何選擇?在第三方ORM和LINQ to SQL如何選擇?在LINQ to SQL和未來的ADONET EF(Entity Framework)中如何選擇?
對於第一個問題由於LINQ to SQL和ADONET一樣是對數據庫結構的映射那麼基於LINQ to SQL來開發數據訪問層和ADONET的基本做法也大同小異唯一不同的是LINQ to SQL面對的實體和實體集合對數據處理無需編寫SQL語句
對於第二個問題當前版本的LINQ to SQL還僅支持SQL Server還不足以成為真正意義上的ORM如果你只使用SQL Server並且對ORM的要求不高的話使用LINQ to SQL來代替現有的ORM是可行的
第三個問題提到的ADONET EF是一個實體或概念設計的服務框架是將現實的實體和實體間的關系映射到對象層目的是能夠更好地支持流行的Domain Model Driven的開發而LINQ to SQL是和數據庫緊密綁定的無法進行抽象也無法支持多級的繼承更偏重語言層面對數據庫的操作所以說是選擇未來的ADONET EF還是LINQ to SQL完全取決於應用系統的規模和設計模式
From:http://tw.wingwit.com/Article/program/ASP/201311/21766.html