1樓
wangxinxin 發(fā)表于:2010-12-15 9:33:50
2000年6月22日美國微軟公司公開了“microsoft.net”。該公司為此原來在日本國內(nèi)舉行了兩次新聞發(fā)布會(huì)。在7月26日~28日期間舉行的微軟研討會(huì)“tech ed2000”上“microsoft.net”也成了熱門話題。.net是用來建立被稱為ngws(即下一代windows服務(wù)之意)的新一代服務(wù)/軟件的基本構(gòu)想。
舉個(gè)例子,微軟制作的.net所描繪的宣傳錄像片中有這樣的一個(gè)場面。一個(gè)男人出差到外地,在機(jī)場租借手機(jī)電話。他向該終端插入自己的ic卡后,自動(dòng)下載他的地址簿和計(jì)劃簿,隨即就變成了他專用的pda(便攜式信息終端)。
確實(shí)方便,不過如果被告知“這就是.net”,反而把人搞得似懂非懂、糊里糊涂。筆者覺得如果要選一下最近幾年微軟公開的晦澀難懂的計(jì)劃,那么.net無疑要名列前茅。
究竟什么地方不易理解呢。筆者認(rèn)為難就難在他沒有能夠明確和目前微軟推出的概念之間的相互關(guān)系。比如.net的基礎(chǔ)、分布式應(yīng)用軟件的思想,為了實(shí)現(xiàn)這一思想微軟本身提供的機(jī)制,在此機(jī)制上微軟或由第三方提供的服務(wù),及實(shí)際計(jì)劃提供的產(chǎn)品是什么樣的,等等這些關(guān)系一下子人們非常難理清。
建立方案的框架其實(shí)就是windows dna2000
不過,仔細(xì)考慮后就會(huì)發(fā)現(xiàn),.net和過去的概念之間的關(guān)系其實(shí)非常簡單。
在.net中,通過因特網(wǎng)能利用的單功能服務(wù)(構(gòu)造塊,biulding block)組合在一起來建立方案。微軟本身已宣布向消費(fèi)者提供門戶網(wǎng)站msn.net、辦公軟件的asp服務(wù)office.net等的.net方案及認(rèn)證服務(wù)passport等,用來建立.net方案的基本的構(gòu)造模塊,由于所有這些參雜在一起,所以令人難以理解,其實(shí)這一流程正是windows dna2000本身。
為了利用構(gòu)造模塊,使用soap(簡單對象訪問協(xié)議,siple object access protocol)作為通信協(xié)議,使用xml(可擴(kuò)展的標(biāo)記語言)做為數(shù)據(jù)格式。也正是從dna2000開始,才提倡通過采用soap/xml組合,使得在windows以外的平臺(tá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ī)及手機(jī)電話經(jīng)由網(wǎng)絡(luò)傳遞地址簿及計(jì)劃簿的服務(wù),等就是構(gòu)造模塊的實(shí)例。也就是說,在這一手機(jī)服務(wù)中,建立了一個(gè)使用soap/xml,經(jīng)過認(rèn)證服務(wù)接受認(rèn)證,然后憑著通過認(rèn)證的證據(jù)從計(jì)劃簿服務(wù)公司通過soap/xml接收用戶計(jì)劃簿的流程。
不再為com而苦惱
通過組合構(gòu)造模塊來建立方案的部分,只是dna2000改了個(gè)名字而已,而關(guān)于構(gòu)造模塊本身,.net則比dna2000更前進(jìn)了一步。
在dna2000中表明,使用com(零件對象模型、component object model)、dcom(分布式com)及windows2000 server的com+服務(wù)建立構(gòu)造模塊(在dna2000中稱為mega服務(wù))。另一方面,在.net中com這一術(shù)語消失了。取而代之公開了被稱為.net framework用來建立構(gòu)造塊的框架。
com雖然做為術(shù)語消失了,不過實(shí)際上.net框架的實(shí)質(zhì)是將com+改進(jìn)的結(jié)果。事實(shí)上,在.net框架的sdk(軟件研發(fā)套件)的發(fā)行文件中還殘留著com+2.0的影子。而com+是在不改動(dòng)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框架。這樣一來,就不再需要安裝做為com項(xiàng)目的對象了。
目前正在流行這種實(shí)現(xiàn)方式。一言以蔽之,就是將com對象變成和java程式相同。也就是說,.net框架的對象,不是被編譯成處理器的本地代碼(native code),而是被編譯成被稱為il(中間語言)的虛擬機(jī)代碼。而在執(zhí)行時(shí),則由相當(dāng)于java虛擬機(jī)的被稱為clr(commom language runtime)的模塊將il代碼轉(zhuǎn)換成本地代碼后執(zhí)行(實(shí)際上只是在第一次才真正轉(zhuǎn)換)。
對象之間的通信不必描述為com,只需描述為普通調(diào)入手續(xù)即可。只要移植clr就能在windows以外的客戶及服務(wù)器上運(yùn)行同一個(gè)代碼。而且能使用所有研發(fā)語言。微軟的研發(fā)環(huán)境visual studio除了在下一個(gè)版本中使c/c++、visual basic及新研發(fā)的c#對應(yīng).net框架以外,目前已有多個(gè)第三方加入,將來有可能使用除了java以外的所有主要語言。
在7月11日~14日pdc(專業(yè)研發(fā)人員會(huì)議)上,當(dāng)美國微軟的副社長鮑爾?馬里茨(音譯)表示“已不再需要(com的典型約束事項(xiàng))iunknown及guid”時(shí),研發(fā)人員們興奮得鼓掌喝彩,這一點(diǎn)完萬能理解,先不去考慮.net框架減輕了研發(fā)工作量或和java相似等問題,做為純粹的軟件技術(shù),.net框架確實(shí)是個(gè)非常有意思的結(jié)構(gòu)。
實(shí)際上在公開的.net中還包括用來建立.net方案的多種服務(wù),不過最后在理解了.net的平臺(tái)部分是windows dna2000和com+以后,就感到“原來他和現(xiàn)有的相比其實(shí)沒有什么大的改動(dòng)”。而另一方面,從微軟故意將內(nèi)容搞得晦澀難懂,淡化windows色彩來強(qiáng)調(diào)其新意的做法,能感到他們要在因特網(wǎng)時(shí)代繼續(xù)生存下去的堅(jiān)定意志。(bizit)