欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
COM, COM+ and .NET 的區別


天極論壇2002-02-08 11:27我要吐槽
  所有的優(yōu)秀程序員都會(huì )盡自己的最大努力去使自己所寫(xiě)的程序具有更好的可重用性,因為它可以讓你快速地寫(xiě)出更加健壯和可升級性的程序。 

  有兩種使代碼重用的選擇:

  1.白盒:最簡(jiǎn)單的一種,就是把你的程序片拷貝到另一個(gè)文件中。
  2.黑盒:它包括把編譯過(guò)的程序片連接起來(lái)。因此客戶(hù)端可以調用的編譯過(guò)的黑盒類(lèi)庫就叫作組件。 

  .Net中也同樣為開(kāi)發(fā)者提供了類(lèi)似于COM的建立和展開(kāi)組件的方法。開(kāi)發(fā)人員很容易地被這兩種以組件為基礎的開(kāi)發(fā)模型所迷惑,所以,讓我們來(lái)看一看這些不同的開(kāi)發(fā)方法,以使我們消除疑惑。 

  COM的產(chǎn)生 

  在以前程序設計過(guò)程中,程序員把它們的函數庫放在一個(gè)叫做目標(Object)文件的單獨文件中,在這些文件中,包含了編譯過(guò)的代碼。當程序員要使用一個(gè)特別的目標文件的時(shí)候,他們把客戶(hù)程序編譯成機器代碼,然后依靠動(dòng)態(tài)鏈接的手段把客戶(hù)程序聯(lián)接到目標文件上,最后變成一個(gè)單一的可執行文件。這種作法的唯一的好處在于它節省了編譯函數庫的時(shí)間。但是它有許多的缺點(diǎn),比如由于在每個(gè)單獨的可執行文件中都有一個(gè)程序庫包括在里面,浪費了許多存儲空間;對應用程序的維護也是非常困難的,如果在函數庫中發(fā)現了一個(gè)bug,整個(gè)可執行文件都要被重新編譯和分發(fā)。 

  還有不只一個(gè)的嚴重的限制在里頭,一個(gè)客戶(hù)應用程序必須要和用同一種語(yǔ)言編制的函數庫在一起才能使用。比如說(shuō),一個(gè)用QuickBasic寫(xiě)的客戶(hù)應用程序就不能引用一個(gè)用C++寫(xiě)的函數庫。 

  因此,微軟公司出品了COM,COM僅僅只是一個(gè)規范。不管組件用什么語(yǔ)言寫(xiě)成,只要符合這個(gè)COM規范,就能被用任何一種語(yǔ)言寫(xiě)成的客戶(hù)程序調用。此外,程序員不必再擔心要去建立一個(gè)單一的可執行文件,因為組件是以GUID(Global Unique Identifier全球唯一標識符)來(lái)標識的。GUID是一個(gè)128位的號碼,和一些相關(guān)的信息一起被放在系統的注冊表中,用來(lái)唯一標識組件??蛻?hù)應用程序只在運行期間才動(dòng)態(tài)地建立一個(gè)組件的實(shí)例,并使用這個(gè)組件的功能,因此,只需要一個(gè)函數庫的拷貝。它的缺點(diǎn)就是大家常常提到?quot;DLL地獄"。這個(gè)問(wèn)題在一個(gè)DLL要被一個(gè)新版本的DLL所取代時(shí)引發(fā)。開(kāi)發(fā)者不得不通過(guò)關(guān)閉所有的客戶(hù)應用程序的方法(如果不行,還要關(guān)閉WWW服務(wù))來(lái)達到清除所用對這個(gè)組件的引用的目的。有時(shí)所有的方法都還起不了作用,那你只好重新啟動(dòng)服務(wù)器后才能替換掉老的DLL。 

  COM+ 

  為了讓企業(yè)級的應用程序能使用上COM,它必需要有以下的特定的能力。

  · 驗證能力 
  · 對象池(Object Pooling)
  · 事務(wù)處理 
  · 支持分布式架構

  為了使開(kāi)發(fā)者不必去為他們的組件添加這些能力,微軟公司出品了DCOM(Distributed COM分布式COM)和MTS(Microsoft Transaction Server微軟事務(wù)服務(wù)器)。使用這兩種技術(shù),開(kāi)發(fā)者就可以把精力用在他們的商業(yè)邏輯上,而不必放在后臺的他們的組件上。 

  DCOM是一個(gè)用于分布式的組件之間的通訊的RPC(Remote Procedure Call)協(xié)議??蛻?hù)端向一個(gè)本地機的代理類(lèi)發(fā)送請求,然后由代理類(lèi)將這個(gè)請求隱含地給安裝在遠程機器上的"根"類(lèi),然后執行結果原路送回給代理類(lèi),最后代理類(lèi)把它們回送給客戶(hù)端。因此,客戶(hù)程序的位置完全與組件的位置無(wú)關(guān)。DCOM的缺點(diǎn)在于,由于DCOM使用的是一個(gè)獨立的硬件端口,而不是HTTP協(xié)議的80端口,所以在組件間通訊的過(guò)程中,必須保證這個(gè)端口是開(kāi)著(zhù)的。這是一個(gè)嚴重的安全問(wèn)題。所以DCOM不能夠輕易地穿越防火墻。 

  為了使用MTS,程序員在它們的組件里放置特別的MTS鉤子,編譯后把他們放在MTS包中。把有關(guān)系的組件放在一個(gè)單一的包中有它自己的好處。當客戶(hù)請求一個(gè)包中的一個(gè)組件的一個(gè)實(shí)例的時(shí)候,MTS確保為這個(gè)包建立一個(gè)新的專(zhuān)門(mén)的線(xiàn)程,一個(gè)新的組件實(shí)例被建立在這個(gè)線(xiàn)程上并被應用事務(wù)服務(wù)。至于對象池服務(wù)和安全服務(wù)是否要被建立,那就要看開(kāi)發(fā)者的請求了。 

  MTS允許相關(guān)的作業(yè)單元被當作一個(gè)事務(wù)來(lái)對待,這意味著(zhù)如果所有的作業(yè)單元被成功地完成,整個(gè)事務(wù)就被當作成功地完成,反之如果有一個(gè)單元未成功完成,整個(gè)事務(wù)將被重新輪回。 

  在客戶(hù)請求對象和釋放對象后,MTS仍保存著(zhù)這個(gè)對象,所以當另一個(gè)客戶(hù)請求同一個(gè)組件的時(shí)候,MTS就將保存著(zhù)的對象交給它。通過(guò)這種方式,MTS減少了在服務(wù)器源實(shí)例化的次數。 

  MTS允許開(kāi)發(fā)者用安全措施來(lái)組裝他們的組件,以使其具有識別請求它的服務(wù)的客戶(hù)的能力。這能夠確保未經(jīng)授權的客戶(hù)不能夠使用組件的功能。 

  MTS以COM+的名義被完整地整合到了微軟公司的Windows 2000操作系統中,但是COM+不僅僅只有MTS,它還包括一些其它的服務(wù)。MSMQ(Microsoft Message Queue Server),一個(gè)與MTS一同發(fā)布的服務(wù),也被以COM+的名義整合到了Windows 2000中。MSMQ允許服務(wù)器端和客戶(hù)端進(jìn)行同步的通訊。事件服務(wù)(Event Service)也被加了進(jìn)來(lái),它使服務(wù)器能夠與客戶(hù)端同步地交流事件的發(fā)生。負載平衡服務(wù)(Load Balancing)自動(dòng)地實(shí)例化機器上的具有最多資源的服務(wù)器上的請求對象。 

  .NET 

  .Net提供了一種全新的建立和展開(kāi)組件的方法。它就是大名鼎鼎的Assemblies。使用COM,開(kāi)發(fā)者必需要在服務(wù)器上注冊組件,這也就是說(shuō),系統注冊表中的組件的信息必須被更新。這樣做的目的是保證組件的中心位置,以使COM+能夠找到合適的組件。使用.Net的Assemblies,裝配(Assembly)文件把所有需要的元數據(meta data)都壓入一個(gè)叫Manifests(名單)的一個(gè)特殊的段中。在.Net中,要使assembly對用戶(hù)有效,只要簡(jiǎn)單地把他們放在一個(gè)目錄中就行了。當客戶(hù)程序請求一個(gè)特別的組件的實(shí)例的時(shí)候,.Net運行期(runtime)在同一個(gè)目錄搜尋assembly,在找到后,分析其中的manifest,以取得這個(gè)組件所提供的類(lèi)的信息。由于組件的信息是放在manifest里的,所以開(kāi)發(fā)者就沒(méi)有必要把組件注冊到服務(wù)器上,因此,就可以允許幾個(gè)相同的組件安全地共存在一個(gè)相同的機器上了。 

  建立一個(gè).Net assembly并不像建立一個(gè)VB6組件,唯一讓開(kāi)發(fā)者操心的就是商業(yè)邏輯,所有的后臺代碼全部由.Net運行期產(chǎn)生,而且由于.NET運行期具有碎片收集器的功能,組件不必擔心它的引用數目(在COM中是靠Iunknown的幫助)。簡(jiǎn)單地說(shuō),在.NET中建立一個(gè)assembly比建立一個(gè)VB6 COM要簡(jiǎn)單地多。 

  純的.NET assemblies不能夠在COM+服務(wù)下注冊,因為它們是和COM不同的二進(jìn)制標準。面對.NET,assemblies的前景相對于COM來(lái)說(shuō)是"高級的COM"。但是由于當前架構于COM+上的應用程序的可靠性,COM還會(huì )持續一段時(shí)間。這也許就是微軟公司向開(kāi)發(fā)者同時(shí)提供開(kāi)發(fā).NET assemblies和COM的工具的原因吧。 

  類(lèi)型庫引入器(Type Library Importer (TLBIMP.exe))工具可以把COM組件封裝成.NET,以使以前的東西可以在.NET應用程序中繼續使用。 

  類(lèi)型庫導出器(Type Library Exporter (TLBEXP.exe))工具將.NET組件封裝成COM,這個(gè)工具也是很有用的,如果你要用你的.NET assemblies去替換原有的COM組件,就得用到它了。由COM+提供的服務(wù)不能被忽略,所以把.NET assemblies封裝成COM組件就變得相當重要了。作為一種選擇,開(kāi)發(fā)者可以從.NET基礎類(lèi)庫中選擇更多的功能。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
EJB的七年之癢
ASP.NET Word/Excel 權限問(wèn)題
ICE和ACE-高效的網(wǎng)絡(luò )編程中間平臺簡(jiǎn)介--hustlg的博客
CORBA的興衰
.net下開(kāi)發(fā)COM 組件(1)
用Visual Basic 6創(chuàng )建基于MTS的商務(wù)組件
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久