陳香生
CHEN Xiang-sheng
(陽(yáng)江職業(yè)技術(shù)學(xué)院,陽(yáng)江 529500)
計(jì)算機(jī)應(yīng)用系統(tǒng)通常是體系結(jié)構(gòu)和技術(shù)的結(jié)合,它們所具有的一個(gè)共同點(diǎn)是其分布式本質(zhì)。分布式系統(tǒng)是一個(gè)動(dòng)態(tài)的計(jì)算機(jī)集合,這些計(jì)算機(jī)由網(wǎng)絡(luò)連接到一起,運(yùn)行專門設(shè)計(jì)的軟件,為用戶提供集成式計(jì)算機(jī)環(huán)境。分布式系統(tǒng)的范圍包括從支持商業(yè)處理的單用途應(yīng)用程序,到服務(wù)于大范圍用戶并具有廣泛資源的全方位服務(wù)的計(jì)算機(jī)設(shè)備。
早期客戶機(jī)/服務(wù)器模型是是兩層C/S體系結(jié)構(gòu),在此體系結(jié)構(gòu)中,既可以方便,統(tǒng)一地對(duì)數(shù)據(jù)進(jìn)行管理,又可以合理有效地利用現(xiàn)有的硬件資源,平衡系統(tǒng)的負(fù)荷。但是兩層的C/S結(jié)構(gòu)并不能適用所有的情況,因?yàn)槟承I(yè)務(wù)不能依賴軟件廠家直接提供的功能,而必須定制,這樣的程序很難進(jìn)行移植。因此建立一種新的工作方式,進(jìn)一步分離客戶層,使客戶機(jī)上的所有處理過(guò)程不直接操作數(shù)據(jù)庫(kù)管理系統(tǒng),這樣就可以把客戶端的處理分為應(yīng)用程序和業(yè)務(wù)邏輯處理。這種處理導(dǎo)致了三層的C/S結(jié)構(gòu)的出現(xiàn)??蛻魧迂?fù)責(zé)可視化界面,進(jìn)行人機(jī)交互處理;中間層進(jìn)行業(yè)務(wù)邏輯處理;而服務(wù)器層則負(fù)責(zé)數(shù)據(jù)的管理。采用三層C/S結(jié)構(gòu)有下述優(yōu)點(diǎn):1)可以對(duì)任務(wù)進(jìn)行合理分配。2)有利于提高系統(tǒng)的性能,使中間層的業(yè)務(wù)邏輯處理與數(shù)據(jù)層的業(yè)務(wù)數(shù)據(jù)緊密結(jié)合在一起,而無(wú)需考慮客戶的具體位置。3)添加新的中間層服務(wù)器能夠滿足新增客戶機(jī)的需求,可以大大提高三層系統(tǒng)的可伸縮性。4)在客戶機(jī)的應(yīng)用程序和數(shù)據(jù)層的數(shù)據(jù)庫(kù)之間增加中間層,可以使客戶機(jī)的應(yīng)用程序獨(dú)立于數(shù)據(jù)層的數(shù)據(jù)庫(kù)。5)可以將業(yè)務(wù)邏輯集中到一起,有利于系統(tǒng)的實(shí)施。
圖1 基于Web的N層分布式系統(tǒng)體系結(jié)構(gòu)
在三層系統(tǒng)體系結(jié)構(gòu)中,客戶層和數(shù)據(jù)層都己被嚴(yán)格定義,而中間層未明確定義。因?yàn)橹虚g層包括了所有與應(yīng)用程序界面和持久數(shù)據(jù)存儲(chǔ)無(wú)關(guān)的處理,我們可以把中間層劃分為許多服務(wù)程序,將每一個(gè)服務(wù)程序都視為獨(dú)立的層,這樣原來(lái)的三層體系結(jié)構(gòu)就變?yōu)镹層體系結(jié)構(gòu)。典型的N層結(jié)構(gòu)就是基于Web的應(yīng)用程序,如圖1所示。
由于客戶/服務(wù)器應(yīng)用程序跨越了多臺(tái)計(jì)算機(jī),所以需要TCP/IP或者IPX網(wǎng)絡(luò)協(xié)議來(lái)連接應(yīng)用程序的各個(gè)節(jié)點(diǎn)。N層系統(tǒng)需要更復(fù)雜的設(shè)備來(lái)實(shí)現(xiàn)跨網(wǎng)絡(luò)的通信。因?yàn)樵诳蛻魬?yīng)用程序和中間層服務(wù)之間不能象2層系統(tǒng)那樣以一種通用的結(jié)構(gòu)方式實(shí)現(xiàn);相反,客戶應(yīng)用程序需要一種通信模型,以協(xié)調(diào)客戶應(yīng)用程序的不同開發(fā)平臺(tái)。這種模型即為客戶應(yīng)用程序的中間件。最早被廣泛認(rèn)同的中間件技術(shù)是遠(yuǎn)程過(guò)程調(diào)用,使用遠(yuǎn)程過(guò)程調(diào)用,客戶應(yīng)用程序可以調(diào)用在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行的C語(yǔ)言函數(shù)。
從分布式應(yīng)用系統(tǒng)的角度來(lái)看,一個(gè)網(wǎng)絡(luò)項(xiàng)目最少分三層:外觀層、事物邏輯層、數(shù)據(jù)服務(wù)層。多層結(jié)構(gòu)比兩層結(jié)構(gòu)具有更大的靈活性。首先,三層可以運(yùn)行在不同的機(jī)器上,如果應(yīng)用是業(yè)務(wù)邏輯比較復(fù)雜,可以使用高配置的計(jì)算機(jī)來(lái)運(yùn)行業(yè)務(wù)邏輯層;如果應(yīng)用的數(shù)據(jù)量很大,就可以采用分布式的數(shù)據(jù)庫(kù)來(lái)作為應(yīng)用的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。其次,只要層與層之間的接口保持不變,那么某一層的變化不會(huì)影響到其他層,當(dāng)層與層之間是松散藕合時(shí),可以簡(jiǎn)單地替換組件(或整個(gè)一層),以適應(yīng)變化了的需求。
分布式構(gòu)架的網(wǎng)絡(luò)整合平臺(tái),主要有Microsoft整合的Windows與因特網(wǎng)的平臺(tái)一Windows DNA與Sun公司提出的基于Java2平臺(tái),由一系列中間件服務(wù)組合起來(lái)的J2EE(Java2 Enterprise Edition)體系結(jié)構(gòu)。
Windows DNA的全名為Windows Distribute Internet Architecture,即Windows的分布式互聯(lián)網(wǎng)體系結(jié)構(gòu),是微軟整合了ActiveX,WWW技術(shù)(如VBScript,DHTML等)平臺(tái)的總稱。微軟利用IIS以及WWW作為系統(tǒng)前端來(lái)處理用戶互動(dòng)界面,以COM架構(gòu)作為中間層來(lái)處理企業(yè)程序,以SQL Server作為后端儲(chǔ)存數(shù)據(jù)的服務(wù)器,以實(shí)現(xiàn)三層式(Three-tier)或更多層系統(tǒng)的開發(fā)環(huán)境。三層式系統(tǒng)開發(fā)的好處在于,系統(tǒng)的界面、系統(tǒng)內(nèi)部的程序以及企業(yè)后端的儲(chǔ)存數(shù)據(jù)庫(kù)可以分開。再者,因?yàn)檎麄€(gè)系統(tǒng)是整構(gòu)在網(wǎng)絡(luò)上的,因此用戶端只需有個(gè)普通的IE瀏覽器就可以在任何地方存取到系統(tǒng),以減少最為繁雜的用戶管理工作。
SUN所引導(dǎo)發(fā)起的J2EE體系則是一種利用Java2平臺(tái)來(lái)簡(jiǎn)化諸多與多級(jí)企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問(wèn)題的體系結(jié)構(gòu)。它是由一系列中間件服務(wù)組合起來(lái)的體系,J2EE作為中間件,提供了強(qiáng)大的服務(wù)功能,使開發(fā)人員只需要關(guān)注商業(yè)邏輯,而不需要注意其他的細(xì)節(jié),因而能夠加快開發(fā)速度,提高系統(tǒng)的運(yùn)行效率和穩(wěn)定性。J2EE技術(shù)的基礎(chǔ)是核心Java平臺(tái)或Java2平臺(tái)的標(biāo)準(zhǔn)版。J2EE具有如“編寫一次,到處運(yùn)行”的特性,方便存取數(shù)據(jù)庫(kù)的JDBC API、CORBA技術(shù)以及能夠在Internet應(yīng)用中保護(hù)數(shù)據(jù)的安全機(jī)制等等。
在Windows DNA之后,微軟便開始將研究重心轉(zhuǎn)到一個(gè)新的計(jì)劃——NGWS(Next Generation Windows System,新一代的Windows系統(tǒng))即微軟所推出的.NET。Microsoft .NET是微軟于2000年6月發(fā)布的下一代軟件和服務(wù)戰(zhàn)略,其目的是整合新的設(shè)備和技術(shù),建立全新的網(wǎng)絡(luò)協(xié)議和格式,協(xié)調(diào)眾多的智能設(shè)備與網(wǎng)站,從而提供更簡(jiǎn)單,更為個(gè)性化,更有效的互聯(lián)網(wǎng)服務(wù)。
.NET開發(fā)平臺(tái)在開發(fā)人員用以創(chuàng)造應(yīng)用程序的工具和技術(shù)上做了根本的變化。Visual Studio.NET就是微軟公司為實(shí)現(xiàn)其.NET技術(shù)而開發(fā)的一整套工具組件,它提供了一個(gè)用于在該平臺(tái)上創(chuàng)建應(yīng)用程序的可視化集成開發(fā)環(huán)境(IDE)。集成開發(fā)環(huán)境是目前計(jì)算機(jī)語(yǔ)言產(chǎn)品都具備的一種工作環(huán)境,是進(jìn)行程序設(shè)計(jì)的工作場(chǎng)所。在集成開發(fā)環(huán)境中,程序員可以對(duì)源程序進(jìn)行編輯和編譯,對(duì)目標(biāo)程序進(jìn)行調(diào)試運(yùn)行。
2002年2月,微軟發(fā)布了Visual Studio.NET(簡(jiǎn)稱VS.NET)的最終版本,這是微軟極力推薦的創(chuàng)建.NET應(yīng)用程序的軟件開發(fā)工具集。作為微軟的下一代開發(fā)工具,它和.NET開發(fā)框架緊密結(jié)合,遵循.NET Framework,利用通用語(yǔ)言運(yùn)行環(huán)境和公用層次類庫(kù)提供加速開發(fā)過(guò)程的高效工具。VS.NET主要用于開發(fā)企業(yè)規(guī)模的Web應(yīng)用程序以及高性能的桌面應(yīng)用程序。
在開發(fā)網(wǎng)絡(luò)應(yīng)用程序時(shí),以前開發(fā)人員只能在Web頁(yè)中嵌入VB Script或J Script。現(xiàn)在,Web頁(yè)可以用VS.NET中的任何一種語(yǔ)言來(lái)生成。IDE也提供了從Web表單控件中創(chuàng)造Web頁(yè)的拖放式GUI (Graphical User Interface,圖形用戶界面),它是完全動(dòng)態(tài)的,易于編碼,能自動(dòng)處理狀態(tài)問(wèn)題,根據(jù)瀏覽器兼容能力生成純HTML,并且將用戶界面問(wèn)題和編碼問(wèn)題相分離。
在VS.NET環(huán)境中,所有控件的代碼,包括格式化代碼,都可以顯示出來(lái),這樣便于高級(jí)開發(fā)者修改表單和控件的缺省行為,并且在應(yīng)用程序的外觀上給予它們更緊湊的控制。此外VS.NET還提供了完全集成的數(shù)據(jù)處理,尤其是XML和數(shù)據(jù)庫(kù)集成,通過(guò)和數(shù)據(jù)源相連結(jié)合起來(lái),大大簡(jiǎn)化了對(duì)來(lái)自不同種類的數(shù)據(jù)源的聯(lián)合數(shù)據(jù)(例如將來(lái)自O(shè)racle數(shù)據(jù)庫(kù)的雇員數(shù)據(jù)合并到基于XML的銷售成績(jī)表中)的處理。使用.NET框架的開發(fā)工具,大大提高了開發(fā)者的效率,集成了多種語(yǔ)言支持;簡(jiǎn)化了服務(wù)器端的開發(fā),提供了高效地創(chuàng)建和使用網(wǎng)絡(luò)服務(wù)的方法,使開發(fā)人員能夠快速構(gòu)建和部署強(qiáng)健的、可靠的應(yīng)用程序[1]。
.NET開發(fā)框架支持多種語(yǔ)言,Visual C#.NET作為.NET Framework的主力開發(fā)語(yǔ)言,這是由C#的特點(diǎn)決定的[2-4]。
1)功能性和高效性。C#是Microsoft公司為推行.NET戰(zhàn)略而發(fā)布的一種全新的編程語(yǔ)言,它的前身是C++語(yǔ)言。這種語(yǔ)言給開發(fā)人員提供了大量靈活的進(jìn)行底層控制的能力,但這種靈活性是以開發(fā)的效率為代價(jià)的。比如指針操作引起的不安全因素,內(nèi)存回收需要程序員介入等,使得用C++開發(fā)軟件的困難程度比其他語(yǔ)言要高得多。由于與生俱來(lái)的復(fù)雜性和漫長(zhǎng)的開發(fā)周期,開發(fā)人員都期望有新的、更好的開發(fā)語(yǔ)言,這種新的語(yǔ)言應(yīng)能兼有功能靈活性和開發(fā)效率特點(diǎn),融C++的強(qiáng)大和Visual Basic的簡(jiǎn)易于一體。
2)包容不斷涌現(xiàn)的Web編程標(biāo)準(zhǔn)。在目前國(guó)際互聯(lián)網(wǎng)應(yīng)用日益廣泛的情況下,越來(lái)越多的解決方案需要使用不斷涌現(xiàn)的Web標(biāo)準(zhǔn)如超文本標(biāo)識(shí)語(yǔ)言(HTML)、可擴(kuò)展標(biāo)識(shí)語(yǔ)言(XML)和簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)等。現(xiàn)有的開發(fā)語(yǔ)言都是在Internet或者說(shuō)是Web發(fā)展初期開發(fā)的,它們不可能提供適合于新的Web開發(fā)的技術(shù)支持。C#在保證了強(qiáng)大的功能和靈活性的同時(shí),給C和C++帶來(lái)了類似于VB的快速開發(fā),并且它還針對(duì).NET作了特別設(shè)計(jì)。C#可以快速的構(gòu)建從底層系統(tǒng)級(jí)到高層商業(yè)組件,使用C#語(yǔ)言構(gòu)建的這些組件,能夠很容易的轉(zhuǎn)換為Web Services,從而可響應(yīng)來(lái)自Internet的與平臺(tái)和開發(fā)語(yǔ)言無(wú)關(guān)的訪問(wèn)。XML是在Internet上傳輸結(jié)構(gòu)化數(shù)據(jù)的標(biāo)準(zhǔn)方法,為了提高性能,C#允許XML數(shù)據(jù)直接映射為結(jié)構(gòu)數(shù)據(jù)類型以代替類,這是一個(gè)處理少量數(shù)據(jù)的更高效的方法。這些特性結(jié)合起來(lái)使得C#成為優(yōu)秀的下一代網(wǎng)絡(luò)編程語(yǔ)言。
.NET為編寫網(wǎng)絡(luò)化儀器軟件,提供服務(wù)器端腳本編寫環(huán)境,使用它可以創(chuàng)建和運(yùn)行動(dòng)態(tài)交互的Web服務(wù)器應(yīng)用程序,它能夠把HTML、腳本、組件等有機(jī)地組合在一起,形成一個(gè)能夠在服務(wù)器上運(yùn)行的應(yīng)用程序,創(chuàng)建以網(wǎng)頁(yè)形式通過(guò)Internet發(fā)布的網(wǎng)絡(luò)化儀器。在C#的Web編程中,可以用C#編寫自己的服務(wù)器端組件,除了傳統(tǒng)組件外,還包括那些具有特殊功能的可編程組件。使用它們可以更自由、更容易地進(jìn)行數(shù)據(jù)綁定,具有強(qiáng)大的跨平臺(tái)性。
本文詳細(xì)介紹網(wǎng)絡(luò)化儀器的核心技術(shù)——.Net分布式技術(shù),它基于分布式系統(tǒng)體系結(jié)構(gòu),采用.NET框架公共語(yǔ)言運(yùn)行環(huán)境和.NET類庫(kù)兩個(gè)主要部件,并以Visual Studio .NET和C#為開發(fā)工具。
[1] 艾迪明.NET框架體系結(jié)構(gòu)[J].計(jì)算機(jī)工程與應(yīng)用, 2003,(2).
[2] Adrian,等,著,王海峰,等,譯,C#.NET Web開發(fā)指南[M].北京:機(jī)械工業(yè)出版社, 2003.
[3] 陸昆侖,等,著,用C#.NET開發(fā)網(wǎng)絡(luò)服務(wù)[M].北京:希望電子出版社, 2003.
[4] 余安萍,等,著,C#.NET程序設(shè)計(jì)教程[M].北京:電子工業(yè)出版社, 2002.