直播中
2000年6月22日美國(guó)微軟公司公布了“Microsoft.NET”。該公司為此曾經(jīng)在日本國(guó)內(nèi)舉行了兩次新聞發(fā)布會(huì)。在7月26日~28日期間舉行的微軟研討會(huì)“Tech Ed2000”上“Microsoft.NET”也成了熱門話題。.NET是用來(lái)建立被稱為NGWS(即下一代Windows服務(wù)之意)的新一代服務(wù)/軟件的基本構(gòu)想。
舉個(gè)例子,微軟制作的.NET所描繪的宣傳錄像片中有這樣的一個(gè)場(chǎng)面。一個(gè)男人出差到外地,在機(jī)場(chǎng)租借手機(jī)電話。他向該終端插入自己的IC卡后,自動(dòng)下載他的地址簿和計(jì)劃簿,隨即就變成了他專用的PDA(便攜式信息終端)。
確實(shí)方便,不過(guò)如果被告知“這就是.NET”,反而把人搞得似懂非懂、糊里糊涂。筆者覺(jué)得如果要選一下最近幾年微軟公布的晦澀難懂的計(jì)劃,那么.NET無(wú)疑要名列前茅。
究竟什么地方不易理解呢。筆者認(rèn)為難就難在它沒(méi)有能夠明確與目前微軟推出的概念之間的相互關(guān)系。比如.NET的基礎(chǔ)、分布式應(yīng)用軟件的思想,為了實(shí)現(xiàn)這一思想微軟本身提供的機(jī)制,在此機(jī)制上微軟或者由第三方提供的服務(wù),以及實(shí)際計(jì)劃提供的產(chǎn)品是什么樣的,等等這些關(guān)系一下子人們很難理清。
建立方案的框架其實(shí)就是Windows DNA2000
不過(guò),仔細(xì)考慮后就會(huì)發(fā)現(xiàn),.NET與過(guò)去的概念之間的關(guān)系其實(shí)很簡(jiǎn)單。
在.NET中,通過(guò)因特網(wǎng)可以利用的單功能服務(wù)(構(gòu)造塊,Biulding Block)組合在一起來(lái)建立方案。微軟本身已經(jīng)宣布向消費(fèi)者提供門戶網(wǎng)站MSN.NET、辦公軟件的ASP服務(wù)Office.NET等的.NET方案以及認(rèn)證服務(wù)Passport等,用來(lái)建立.NET方案的基本的構(gòu)造模塊,由于所有這些參雜在一起,所以令人難以理解,其實(shí)這一流程正是Windows DNA2000本身。
為了利用構(gòu)造模塊,使用SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議,Siple Object Access Protocol)作為通信協(xié)議,使用XML(可擴(kuò)展的標(biāo)記語(yǔ)言)做為數(shù)據(jù)格式。也正是從DNA2000開(kāi)始,才提倡通過(guò)采用SOAP/XML組合,使得在Windows以外的平臺(tái)上也能夠建造用來(lái)建立方案的構(gòu)造模塊。
構(gòu)造方案的實(shí)體如同上述宣傳錄像帶中顯示的那樣有多種服務(wù)。例如只需要插入IC卡就可以使用自己的地址簿及計(jì)劃簿的手機(jī)電話服務(wù)等。
構(gòu)成方案的零件就叫做構(gòu)造模塊,它是各種服務(wù)的群體。還是以上述手機(jī)終端為例,終端讀取的IC卡信息并進(jìn)行用戶認(rèn)證服務(wù),以及從個(gè)人電腦及手機(jī)電話經(jīng)由網(wǎng)絡(luò)傳遞地址簿及計(jì)劃簿的服務(wù),等就是構(gòu)造模塊的實(shí)例。也就是說(shuō),在這一手機(jī)服務(wù)中,建立了一個(gè)使用SOAP/XML,經(jīng)過(guò)認(rèn)證服務(wù)接受認(rèn)證,然后憑著通過(guò)認(rèn)證的證據(jù)從計(jì)劃簿服務(wù)公司通過(guò)SOAP/XML接收用戶計(jì)劃簿的流程。
不再為COM而苦惱
通過(guò)組合構(gòu)造模塊來(lái)建立方案的部分,只是DNA2000改了個(gè)名字而已,而關(guān)于構(gòu)造模塊本身,.NET則比DNA2000更前進(jìn)了一步。
在DNA2000中表明,使用COM(零件對(duì)象模型、Component Object Model)、DCOM(分布式COM)以及Windows2000 Server的COM+服務(wù)建立構(gòu)造模塊(在DNA2000中稱為Mega服務(wù))。另一方面,在.NET中COM這一術(shù)語(yǔ)消失了。取而代之公布了被稱為.NET Framework用來(lái)建立構(gòu)造塊的框架。
COM雖然做為術(shù)語(yǔ)消失了,不過(guò)實(shí)際上.NET框架的實(shí)質(zhì)是將COM+改進(jìn)的結(jié)果。事實(shí)上,在.NET框架的SDK(軟件開(kāi)發(fā)套件)的發(fā)行文件中還殘留著COM+2.0的影子。而COM+是在不改變COM框架的基礎(chǔ)上,改由OS方面進(jìn)行安全性及負(fù)荷分散處理等處理,從而減輕了安裝時(shí)間的運(yùn)行時(shí)間(Run Time)。
這是因?yàn)殡m然COM本身是一個(gè)并不太復(fù)雜的標(biāo)準(zhǔn),但是由于存在著眾多的約束事項(xiàng),因此安裝時(shí)非常費(fèi)時(shí)。而在.NET框架中將“交給OS處理”部分進(jìn)一步擴(kuò)大,從而完全除去在COM+中依然殘留的COM框架。這樣一來(lái),就不再需要安裝做為COM項(xiàng)目的對(duì)象了。
目前正在流行這種實(shí)現(xiàn)方式。一言以蔽之,就是將COM對(duì)象變成與Java程序一樣。也就是說(shuō),.NET框架的對(duì)象,不是被編譯成處理器的本地代碼(Native Code),而是被編譯成被稱為IL(中間語(yǔ)言)的虛擬機(jī)代碼。而在執(zhí)行時(shí),則由相當(dāng)于Java虛擬機(jī)的被稱為CLR(Commom Language Runtime)的模塊將IL代碼轉(zhuǎn)換成本地代碼后執(zhí)行(實(shí)際上只是在第一次才真正轉(zhuǎn)換)。
對(duì)象之間的通信不必描述為COM,只需描述為普通調(diào)入手續(xù)即可。只要移植CLR就可以在Windows以外的客戶及服務(wù)器上運(yùn)行同一個(gè)代碼。而且可以使用任何開(kāi)發(fā)語(yǔ)言。微軟的開(kāi)發(fā)環(huán)境Visual Studio除了在下一個(gè)版本中使C/C++、Visual Basic以及新開(kāi)發(fā)的C#對(duì)應(yīng).NET框架以外,目前已經(jīng)有多個(gè)第三方加入,將來(lái)有可能使用除了Java以外的所有主要語(yǔ)言。
在7月11日~14日PDC(專業(yè)開(kāi)發(fā)人員會(huì)議)上,當(dāng)美國(guó)微軟的副社長(zhǎng)鮑爾·馬里茨(音譯)表示“已經(jīng)不再需要(COM的典型約束事項(xiàng))IUnknown及GUID”時(shí),開(kāi)發(fā)人員們興奮得鼓掌喝彩,這一點(diǎn)完全可以理解,先不去考慮.NET框架減輕了開(kāi)發(fā)工作量或者與Java相似等問(wèn)題,做為純粹的軟件技術(shù),.NET框架確實(shí)是一個(gè)很有意思的結(jié)構(gòu)。
實(shí)際上在公布的.NET中還包括用來(lái)建立.NET方案的多種服務(wù),不過(guò)最后在理解了.NET的平臺(tái)部分是Windows DNA2000和COM+以后,就感到“原來(lái)它和現(xiàn)有的相比其實(shí)沒(méi)有什么大的改變”。而另一方面,從微軟故意將內(nèi)容搞得晦澀難懂,淡化Windows色彩來(lái)強(qiáng)調(diào)其新意的做法,可以感到他們要在因特網(wǎng)時(shí)代繼續(xù)生存下去的堅(jiān)定意志。(BizIT)