[摘要] 目前,.Net Framework3.5已隨著Visual Studio 2008而發(fā)布,延續(xù)微軟的一貫風(fēng)格,.Net Framework3.5為開(kāi)發(fā)者提供了大量?jī)?yōu)秀特性,包含了大量新技術(shù),這些新特性、新技術(shù)能夠融合在一起來(lái)進(jìn)行全新的企業(yè)應(yīng)用架構(gòu)設(shè)計(jì),利用這些新技術(shù)、新特性,可以進(jìn)行快速開(kāi)發(fā),讓企業(yè)應(yīng)用的架構(gòu)更加靈活,擁有更好的性能和可擴(kuò)展性。
[關(guān)鍵詞] .Net Framework 企業(yè)應(yīng)用 架構(gòu)
一、引言
隨著Web2.0時(shí)代的到來(lái),一些有遠(yuǎn)見(jiàn)的企業(yè)也開(kāi)始思考如何將Web2.0的理念與技術(shù)導(dǎo)入企業(yè)架構(gòu)體系,引領(lǐng)企業(yè)信息化進(jìn)入2.0時(shí)代。企業(yè)2.0是技術(shù)與業(yè)務(wù)相互靠攏的必然結(jié)果,是一個(gè)社會(huì)、商務(wù)、技術(shù)三者相融合的發(fā)展趨勢(shì)。在這種趨勢(shì)下,企業(yè)快速將產(chǎn)品和服務(wù)推向市場(chǎng)便成了第一要?jiǎng)?wù),重量級(jí)的軟件工程方法逐漸收緊了腳步,以敏捷開(kāi)發(fā)為代表的輕量級(jí)軟件工程方法被越來(lái)越多的使用,.Net Framework是微軟為開(kāi)發(fā)企業(yè)級(jí)應(yīng)用程序而創(chuàng)建的一個(gè)富有革命性的軟件開(kāi)發(fā)新平臺(tái),它有助于建立輕量級(jí)的軟件架構(gòu),實(shí)現(xiàn)功能完善且易于擴(kuò)展的框架,可以有效地加速企業(yè)應(yīng)用系統(tǒng)開(kāi)發(fā),使得企業(yè)開(kāi)發(fā)復(fù)雜的過(guò)程變得簡(jiǎn)潔容易。
二、企業(yè)應(yīng)用架構(gòu)分析
1.什么是架構(gòu)
從架構(gòu)設(shè)計(jì)師的角度來(lái)看,架構(gòu)就是一套構(gòu)建系統(tǒng)的準(zhǔn)則。通過(guò)這套準(zhǔn)則,可以把一個(gè)復(fù)雜的系統(tǒng)劃分為一套更簡(jiǎn)單的子系統(tǒng)的集合,這些子系統(tǒng)之間保持相互獨(dú)立,并與整個(gè)系統(tǒng)保持一致。對(duì)于軟件架構(gòu)來(lái)說(shuō),就是要用一種簡(jiǎn)潔的結(jié)構(gòu)來(lái)支撐整個(gè)可以發(fā)展的軟件系統(tǒng)。
2.企業(yè)應(yīng)用架構(gòu)
企業(yè)應(yīng)用架構(gòu)是研究如何將企業(yè)的業(yè)務(wù)功能、需求,以及向外界提供的服務(wù)映射到IT(Information Technology)系統(tǒng)的一套準(zhǔn)則。在使用這套準(zhǔn)則構(gòu)建企業(yè)級(jí)的軟件系統(tǒng)時(shí),除了要考慮這個(gè)系統(tǒng)的架構(gòu),以及其應(yīng)具有的功能行為以外,還要關(guān)注整個(gè)架構(gòu)的可用性、性能問(wèn)題、容錯(cuò)能力、可重用性、安全性、擴(kuò)展性、可管理維護(hù)性、可靠性等各個(gè)相關(guān)方面。
當(dāng)今企業(yè)級(jí)應(yīng)用軟件的規(guī)模和復(fù)雜性與日俱增,各種開(kāi)發(fā)平臺(tái)和開(kāi)發(fā)工具繁多,尋求一種合理的架構(gòu)設(shè)計(jì)方法和卓有成效的開(kāi)發(fā)平臺(tái)顯得尤為重要。隨著2007年1月30日Windows Vista的全球同步發(fā)布,.Net Framework 3.0首次內(nèi)置在操作系統(tǒng)之中,而.Net Framework 3.5也隨著Visual Studio 2008而發(fā)布,使用.Net Framework 3.5和Visual Studio 2008可以快速、高效地設(shè)計(jì)、開(kāi)發(fā)和測(cè)試企業(yè)級(jí)應(yīng)用程序,幫助開(kāi)發(fā)人員和開(kāi)發(fā)團(tuán)隊(duì)快速地構(gòu)建和發(fā)布更為完整、互聯(lián)、詳盡的軟件解決方案,實(shí)現(xiàn)快速的應(yīng)用程序開(kāi)發(fā)、高效的團(tuán)隊(duì)協(xié)作和突破性的用戶(hù)體驗(yàn)。
三、·NET架構(gòu)設(shè)計(jì)
在分解復(fù)雜的軟件系統(tǒng)時(shí),使用的最多的技術(shù)之一就是分層。當(dāng)用分層的思想來(lái)考慮系統(tǒng)時(shí),可以將各個(gè)子系統(tǒng)想象成按“多層蛋糕”的形式來(lái)組織,每一層都依托在其下層之上。在這種組織方式下,上層使用了下層定義的各種服務(wù),而下層對(duì)上層卻一無(wú)所知。
當(dāng)前企業(yè)應(yīng)用架構(gòu)已經(jīng)從早期的兩層逐漸演化到現(xiàn)在的N層體系結(jié)構(gòu),N層體系結(jié)構(gòu)將復(fù)雜的企業(yè)應(yīng)用程序?qū)崿F(xiàn)為多個(gè)獨(dú)立的邏輯部分,也就是多個(gè)邏輯層次。在微軟的《Application Architecture Guide 2.0》中將一個(gè)典型的企業(yè)應(yīng)用分為四個(gè)層次:表現(xiàn)層、服務(wù)層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層。
表現(xiàn)層處理用戶(hù)與軟件間的交互,主要職責(zé)是向用戶(hù)顯示信息,并把從用戶(hù)那里獲取的信息解釋成業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層上的各種動(dòng)作。
業(yè)務(wù)邏輯層是系統(tǒng)架構(gòu)中體現(xiàn)核心價(jià)值的部分,用來(lái)實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)需求和功能。它的關(guān)注點(diǎn)主要集中在業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實(shí)現(xiàn)等與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計(jì)。
數(shù)據(jù)訪問(wèn)層,其功能主要是負(fù)責(zé)數(shù)據(jù)源的訪問(wèn),數(shù)據(jù)源可以是數(shù)據(jù)庫(kù)系統(tǒng)、二進(jìn)制文件、文本文檔或是XML文檔。
服務(wù)層,在表現(xiàn)層和業(yè)務(wù)邏輯層之間,可以添加一個(gè)服務(wù)層,用來(lái)封裝業(yè)務(wù)邏輯層的業(yè)務(wù)需求和功能的實(shí)現(xiàn),將它們封裝成簡(jiǎn)單的服務(wù)。這樣做的好處是:可以為其他的應(yīng)用程序提供訪問(wèn)本系統(tǒng)的接口。
四、關(guān)鍵技術(shù)介紹
.Net Framework 3.5是在以前版本基礎(chǔ)之上完善而成,包含了Windows Presentation Foundation (WPF)、Windows Communications Foundation (WCF)、Windows Workflow Foundation (WF)、Windows Card Spaces (WCS)、ASP.NET AJAX、Silverlight、LINQ (語(yǔ)言集成查詢(xún))等新技術(shù)。這些新技術(shù)為.Net環(huán)境下的企業(yè)應(yīng)用架構(gòu)設(shè)計(jì)提供了良好的技術(shù)基礎(chǔ)。
1.表示層實(shí)現(xiàn)技術(shù)
(1)Windows Presentation Foundation(WPF)
一直以來(lái),應(yīng)用程序的用戶(hù)界面可以使用不同的技術(shù)開(kāi)發(fā),從MFC到VB,從Windows Form到Web Form,隨著Flash等多媒體2D和3D界面的出現(xiàn),選擇也就越來(lái)越多。如果想使用一種通用的技術(shù)就能夠開(kāi)發(fā)各種類(lèi)型的應(yīng)用程序界面,這將是一個(gè)巨大的挑戰(zhàn)。WPF就是為解決這一難題而出現(xiàn)的新一代界面開(kāi)發(fā)技術(shù)。WPF是微軟.NET Framework 3.5的組成部分之一,它是一套基于XML、.NET Framework、向量繪圖技術(shù)的表現(xiàn)層開(kāi)發(fā)框架。WPF支持視頻、動(dòng)畫(huà)、2D或3D圖形,以及各種類(lèi)型的文檔,還為桌面客戶(hù)端、手持設(shè)備客戶(hù)端和瀏覽器客戶(hù)端提供了通用基礎(chǔ),統(tǒng)一了開(kāi)發(fā)人員和設(shè)計(jì)人員創(chuàng)建、顯示、操作文檔、媒體和用戶(hù)界面的方法,大大簡(jiǎn)化了用戶(hù)界面的開(kāi)發(fā)工作,使應(yīng)用程序具有一致的外觀,為用戶(hù)提供了具有視覺(jué)震撼力的用戶(hù)體驗(yàn)。
(2)ASP.NET AJAX
ASP.NET Ajax技術(shù)被整合在ASP.NET之中,是ASP.NET的一種擴(kuò)展技術(shù)。與傳統(tǒng)的Web界面技術(shù)相比,Ajax可以實(shí)現(xiàn)異步處理瀏覽器頁(yè)面和服務(wù)器交互的功能,可以實(shí)現(xiàn)局部頁(yè)面更新功能。瀏覽器不需要將整個(gè)頁(yè)面提交到服務(wù)器,就能夠?qū)崿F(xiàn)頁(yè)面的部分更新,并且在這一個(gè)與服務(wù)器交互過(guò)程中,用戶(hù)不會(huì)感覺(jué)到頁(yè)面被刷新,從而提高了應(yīng)用程序的性能和用戶(hù)的體驗(yàn)。
(3)Silverlight
Silverlight是一個(gè)跨瀏覽器、跨平臺(tái)的新一代互聯(lián)網(wǎng)多媒體及交互式內(nèi)容播放應(yīng)用插件,作為新一代Web呈現(xiàn)技術(shù),它提供靈活的編程模型,支持AJAX、VB、C#、Python、Ruby等語(yǔ)言,可與現(xiàn)有的 Web 應(yīng)用程序集成,并內(nèi)置多媒體技術(shù)的支持,可以以很低的成本播放多媒體文件,為用戶(hù)帶來(lái)流暢、高清的視頻體驗(yàn)。
2.服務(wù)層實(shí)現(xiàn)技術(shù)
Windows Communications Foundation (WCF)。WCF是微軟為構(gòu)建面向服務(wù)的應(yīng)用而提供的分布式通信編程框架,是.NET Framework 3.5的重要組成部分。使用WCF,開(kāi)發(fā)人員可以構(gòu)建跨平臺(tái)、安全、可靠和支持事務(wù)處理的企業(yè)級(jí)互聯(lián)應(yīng)用解決方案。
WCF是分布式應(yīng)用程序開(kāi)發(fā)的集大成者,它整合了.Net平臺(tái)下所有的與分布式系統(tǒng)有關(guān)的技術(shù),例如.Net Remoting、Web Services、Enterprise Services、MSMQ等,WCF代表了架構(gòu)技術(shù)的一種發(fā)展方向。在WCF框架下,開(kāi)發(fā)基于SOA的分布式系統(tǒng)變得容易了,微軟將所有與此相關(guān)的技術(shù)要素都包含在內(nèi),掌握了WCF,就相當(dāng)于掌握了叩開(kāi)SOA大門(mén)的鑰匙。
3.業(yè)務(wù)邏輯層實(shí)現(xiàn)技術(shù)
Windows Workflow Foundation (WF)。WF是微軟.NET Framework 3.5的組成部分之一,它是一個(gè)企業(yè)級(jí)工作流開(kāi)發(fā)框架和引擎,它可用于創(chuàng)建需要對(duì)外部實(shí)體的信號(hào)作出響應(yīng)的交互式程序。
工作流是按照特定順序執(zhí)行的一系列步驟。WF可用于簡(jiǎn)單的應(yīng)用場(chǎng)景,例如,顯示基于用戶(hù)輸入的 UI 控件,也可以應(yīng)用于大型企業(yè)會(huì)遇到的復(fù)雜應(yīng)用場(chǎng)景,例如,訂單處理和庫(kù)存控制。WF自帶一個(gè)編程模型、一個(gè)可重新承載的可自定義工作流引擎以及用于在 Windows 上快速生成啟用工作流的應(yīng)用程序的工具。
WF可以處理的方案包括:在業(yè)務(wù)線(xiàn)應(yīng)用程序中啟用工作流、用戶(hù)界面頁(yè)流、以文檔為中心的工作流、人工工作流、面向服務(wù)應(yīng)用程序的復(fù)合工作流、業(yè)務(wù)規(guī)則驅(qū)動(dòng)的工作流、用于系統(tǒng)管理的工作流等。
4.數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)技術(shù)
Language Integrated Query(LINQ)。LINQ (語(yǔ)言集成查詢(xún))是.NET Framework 3.5中一項(xiàng)突破性的創(chuàng)新,它在對(duì)象領(lǐng)域和數(shù)據(jù)領(lǐng)域之間架起了一座橋梁。傳統(tǒng)上,針對(duì)數(shù)據(jù)的查詢(xún)都是以簡(jiǎn)單的字符串表示,而沒(méi)有編譯時(shí)類(lèi)型檢查和智能感應(yīng)支持。此外,程序員還必須針對(duì)不同的數(shù)據(jù)源學(xué)習(xí)不同的查詢(xún)語(yǔ)言。而LINQ已經(jīng)集成在.NET Framework中,已成為編程語(yǔ)言的一個(gè)組成部分, LINQ 使查詢(xún)成為 C# 和 Visual Basic 中的一種語(yǔ)言構(gòu)造,可以使用語(yǔ)言關(guān)鍵字和熟悉的運(yùn)算符針對(duì)強(qiáng)類(lèi)型化對(duì)象集合編寫(xiě)查詢(xún)。
LINQ 系列技術(shù)提供了針對(duì)對(duì)象 (LINQ to Objects)、關(guān)系數(shù)據(jù)庫(kù) (LINQ to SQL) 和 XML (LINQ to XML) 的一致查詢(xún)體驗(yàn)。
LINQ作為一個(gè)嶄新的編程模型,在分布式軟件架構(gòu)中可以代替ORM(Object Relational Mapping,對(duì)象關(guān)系映射),解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)的矛盾。
五、結(jié)束語(yǔ)
隨著企業(yè)2.0時(shí)代的到來(lái),企業(yè)開(kāi)始大量構(gòu)建面向服務(wù)、基于工作流的應(yīng)用體系,在這樣的趨勢(shì)下,使用.Net Framework3.5提供的新技術(shù)來(lái)進(jìn)行架構(gòu)設(shè)計(jì)則成為一種必然趨勢(shì)。本文對(duì)企業(yè)應(yīng)用架構(gòu)設(shè)計(jì)中需要使用到的關(guān)鍵技術(shù)進(jìn)行了介紹,通過(guò)這些技術(shù)的使用,可以幫助架構(gòu)師構(gòu)建更加靈活,擁有更好的性能和可擴(kuò)展性的企業(yè)應(yīng)用架構(gòu)。
參考文獻(xiàn):
[1]Martin Fowler:企業(yè)應(yīng)用架構(gòu)模式[M].北京:機(jī)械工業(yè)出版社,2004
[2]王雪楊進(jìn):J2EE輕量級(jí)框架的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(14):3628~3630
[3]張海軍史維峰劉偉:基于SOA企業(yè)應(yīng)用集成框架研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(8):2085~2088
[4]曾森范玉順:面向服務(wù)的企業(yè)架構(gòu)[J].計(jì)算機(jī)應(yīng)用研究,2008,25(2):540~545
[5]吳鵬飛龍軍:基于.NET的可復(fù)用應(yīng)用框架的研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2008,(11):46~48
[6]Microsoft公司.Application Architecture Guide 2.0[M/OL]. http://www.codeplex.com/AppArchGuide,2008
[7]Microsoft公司.MSDN技術(shù)資源庫(kù)[DB/OL]. http://msdn.microsoft.com/zh-cn/library/w0x726c2.aspx,2007