com國際頂級域名
com也是一個國際頂級域名。com是company的縮寫,是最常用的頂級域名,表示商業(yè)網(wǎng)站。
[編輯本段]COM組件
什么是COM組件
COM是ComponentObjectModel(組件對象模型)的縮寫。
用戶需要什么樣的軟件產(chǎn)品?這是一個多選題,但高效,健壯是肯定會被選種的。作為一名軟件開發(fā)人員如何做才能滿足用戶的需要呢?必須要保證升級應用時不破壞與以前版本的向后兼容性。必須做到擴展系統(tǒng)服務時不依賴特定的操作系統(tǒng)。面向對象的程序設計顯然是一次革命性的改變。采用面向對象的設計方法我們可以很容易的把要解決的問題事物抽象成各種類,并將內(nèi)部動作封裝隱藏起來,只提供一些接口。但這并沒有完全解決我們的問題。昨天我在《程序員》雜志上看到,現(xiàn)在是后OO時代,那OO以后是什么呢?應該是面向組件吧。
雷神剛剛讀完《COM技術內(nèi)幕》一書,整理了一個FAQ,供大家在學習此書時參考。
這是第一部分,包含前3章的內(nèi)容。
FAQ1:什么是COM組件?〖第一章〗
FAQ2:組件不是……?〖第一章〗
FAQ3:什么是接口?〖第二章〗
FAQ4:接口的作用是什么?〖第二章〗
FAQ5:什么是IUnKnown?〖第三章〗
FAQ6:QueryInterface函數(shù)的作用是什么?〖第三章〗
FAQ7:QueryInterface函數(shù)的實現(xiàn)規(guī)則是什么?〖第三章〗
FAQ8:QueryInterface的樣子?〖第三章〗
FAQ9:QueryInterface函數(shù)的參數(shù)IID是什么?〖第三章〗
FAQ10:何時需要建立一個新的COM組件版本?〖第三章〗
Question:
什么是COM組件?
Answer:
COM組件是以WIN32動態(tài)鏈接庫(DLL)或可執(zhí)行文件(EXE)形式發(fā)布的可執(zhí)行代碼組成。
COM組件是遵循COM規(guī)范編寫的
COM組件是一些小的二進制可執(zhí)行文件
COM組件可以給應用程序、操作系統(tǒng)以及其他組件提供服務
自定義的COM組件可以在運行時刻同其他組件連接起來構成某個應用程序
COM組件可以動態(tài)的插入或卸出應用
COM組件必須是動態(tài)鏈接的
COM組件必須隱藏(封裝)其內(nèi)部實現(xiàn)細節(jié)
COM組件必須將其實現(xiàn)的語言隱藏
COM組件必須以二進制的形式發(fā)布
COM組件必須可以在不妨礙已有用戶的情況下被升級
COM組件可以透明的在網(wǎng)絡上被重新分配位置
COM組件按照一種標準的方式來宣布它們的存在
Question:
組件不是……?
Answer:
COM組件不是一種計算機語言
COM組件不是DLL,只是利用DLL來給組件提供動態(tài)鏈接的能力
COM組件不是一個API函數(shù)集。
COM組件不是類
Question:
什么是接口?
Answer:
接口就是提供兩個不同對象間的一種連接。
計算機程序是通過一組函數(shù)而進行連接的,這組函數(shù)就是定義了程序中不同部分的接口。
DLL的接口就是它所輸出的那些函數(shù)。
C++類的接口就是該類的成員函數(shù)集。
COM中的接口是一組由組件實現(xiàn)的提供給客戶使用的函數(shù)。
在COM中接口是一個包含函數(shù)指針數(shù)組的內(nèi)存結構,數(shù)組元素是一個由組件實現(xiàn)的函數(shù)地址。
Question:
接口的作用是什么?
Answer:
有了組件如何將它們連接起來構成某個應用程序,需要用接口。
在COM中接口就是一切,對客戶說組件就是接口集,客戶只能通過接口和組件打交道。
說明接口可以保護系統(tǒng)免受外界變化的影響。這是封裝的體現(xiàn)。
接口實現(xiàn)了使用戶使用同樣的方式來處理不同的組件。這是多態(tài)的體現(xiàn)。
Question:
接口的如何實現(xiàn)?
Answer:
COM接口在C++中是用純抽象基類實現(xiàn)。
一個COM組件可以支多個接口。
一個C++類可以使用多重繼承來實現(xiàn)一個支持多個接口的組件。
組件可以支持任意數(shù)目的接口。
接口應該具有不變性。在組件升級時應該不修改原來的接口,而是添加新的接口。
要精心設計實現(xiàn)接口,以使之能夠支持各種不同的實現(xiàn)。
Question:
什么是IUnKnown?
Answer:
IUnKnown是一個接口。
所有COM接口都繼承IUnKnown。
IUnKnown的定義在WIN32SDK中的UNKNWN頭文件中。
///IUnKnown的定義
interfaceIUnKnown
{
virtualHRESULT__stdcallQueryInterface(constIIDiid,void**ppv)=0;
virtualULONG__stdcallAddRef()=0;
virtualULONG__stdcallRelease()=0;
}
Question:
QueryInterface函數(shù)的作用是什么?
Answer:
QueryInterface是IUnKnown的成員函數(shù),客戶可以通過此函數(shù)來查詢組件是否支持某個特定的接口。
QueryInterface函數(shù)返回一個指向組件支持的接口的指針。
如果QueryInterface函數(shù)沒有找到組件支持的接口則返回指針是NULL。
QueryInterface函數(shù)可以使用if…then…else語句、數(shù)組、散列表、樹來實現(xiàn)。
QueryInterface函數(shù)不能使用case語句,因為QueryInterface函數(shù)返回的是一個HRESULT結構而不是一個數(shù)。
QueryInterface也是一種無封處理組件版本的機制。這種機制使得組件的新舊不同的版本可以互操作。
Question:
QueryInterface函數(shù)的實現(xiàn)規(guī)則是什么?
Answer:
QueryInterface返回的IUnKnown指針總是相同。
若客戶獲得了某個接口,那么它總能獲得此接口。
客戶可以再次獲得已經(jīng)擁有的接口。
客戶可以返回到起始接口。
若能夠在某個接口獲得某個特定接口,那么從任意接口都將可以獲得此接口。
Question:
QueryInterface函數(shù)的參數(shù)IID是什么?
Answer:
它是一個結構,接口標識符結構。
IID標識了客戶所需的接口。
每一個接口都有一個唯一的接口標識符。所以某個與IID相對應的接口絕對不會發(fā)生變化。
接口IID決定了COM組件的版本。
不同的接口具有不同的ID,包括不同版本的接口。
Question:
何時需要建立一個新的COM組件版本?
Answer:
當為已有接口指定新的ID時應該是下面的條件至少有一個成立。
接口中函數(shù)的數(shù)目發(fā)生改變時。
接口中函數(shù)的順序發(fā)生改變。
接口中某個函數(shù)的參數(shù)發(fā)生改變
接口中某個函數(shù)的參數(shù)的順序發(fā)生改變
接口中某個函數(shù)的參數(shù)的類型發(fā)生改變
接口中函數(shù)的返回值發(fā)生改變
接口中函數(shù)的返回值類型發(fā)生改變
接口中函數(shù)的參數(shù)的含義發(fā)生改變
接口中函數(shù)的含義發(fā)生改變
簡單地說,COM是一種跨應用和語言共享二進制代碼的方法。與C++不同,它提倡源代碼重用。ATL便是一個很好的例證。源碼級重用雖然好,但只能用于C++。它還帶來了名字沖突的可能性,更不用說不斷拷貝重用代碼而導致工程膨脹和臃腫。
Windows使用DLLs在二進制級共享代碼。這也是Windows程序運行的關鍵——重用kernel32.dll,user32.dll等。但DLLs是針對C接口而寫的,它們只能被C或理解C調(diào)用規(guī)范的語言使用。由編程語言來負責實現(xiàn)共享代碼,而不是由DLLs本身。這樣的話DLLs的使用受到限制。
MFC引入了另外一種MFC擴展DLLs二進制共享機制。但它的使用仍受限制——只能在MFC程序中使用。
COM通過定義二進制標準解決了這些問題,即COM明確指出二進制模塊(DLLs和EXEs)必須被編譯成與指定的結構匹配。這個標準也確切規(guī)定了在內(nèi)存中如何組織COM對象。COM定義的二進制標準還必須獨立于任何編程語言(如C++中的命名修飾)。一旦滿足了這些條件,就可以輕松地從任何編程語言中存取這些模塊。由編譯器負責所產(chǎn)生的二進制代碼與標準兼容。這樣使后來的人就能更容易地使用這些二進制代碼。
在內(nèi)存中,COM對象的這種標準形式在C++虛函數(shù)中偶爾用到,所以這就是為什么許多COM代碼使用C++的原因。但是記住,編寫模塊所用的語言是無關的,因為結果二進制代碼為所有語言可用。
此外,COM不是Win32特有的。從理論上講,它可以被移植到Unix或其它操作系統(tǒng)。但是我好像還從來沒有在Windows以外的地方聽說過COM。
[編輯本段]英語中的com
1、表示共同或相同,意為“共同,互相,一起”;
除此之外,還有col,cor,co,syn,sym,syl,syr;另sup表共同,互相;homo表相同,同;as表相同,類似;iso表等,同。
2、表示加強或引申意義;
同類前綴還有:be,a,ac,af,en,em,col,cor.
com-和con-前綴有表示“共同,一起”的意思。如connect,combine,combat等。
據(jù)我在英英字典里查com的意思,它給出的解釋是:當其形式為.com的時候,表示的是與商業(yè)有關的意思.
據(jù)我后來在網(wǎng)上查到的詞根表里的解釋,com意為共同,與co和con同義.
電腦上的COM口一般指RS232接口,屬于串口,大多使用梯形DB9插頭連接。對于一般用戶來說,RS232接口幾乎用不到的,生活中幾乎沒有電器使用RS232接口。
COM口(clustercommunicationport)即串行通訊端口,簡稱串口。微機上的串口通常是9針,也有25針的接口,最大速率115200bps。
通常用于連接鼠標(串口)及通訊設備(如連接外置式調(diào)制解調(diào)器進行數(shù)據(jù)通訊或一些工廠的數(shù)控機接口)等。一般主板外部只有一個串口,機箱后面和并口一起的那個九孔輸出端(梯形),就是COM1口,COM2口一般要從主板上插針引出。并口是最長的那個梯形口。
接口是電腦與其它設備傳送信息的一種標準接口。電腦至少有兩個串行口COM1和COM2。
一般主板外部只有一個串口,機箱后面和并口一起的那個九孔輸出端(梯形),就是COM1口,COM2口一般要從主板上插針引出。并口是最長的那個梯形口。
以前的老款的打印機一般都是這個接口的(現(xiàn)在的打印機一般都是USB接口的了)。另外,老式的設備比如游戲手柄、包括老的鼠標,都是這個接口的。現(xiàn)在用得到的很少了。
擴展資料:
RS232接口就是串口,電腦機箱后方的9芯插座,旁邊一般有"|O|O|"樣標識。一般機箱有兩個,新機箱有可能只有一個。筆記本電腦有可能沒有。有很多工業(yè)儀器將它作為標準通信端口。通信的內(nèi)容與格式一般附在儀器的用戶說明書中。
計算機與計算機或計算機與終端之間的數(shù)據(jù)傳送可以采用串行通訊和并行通訊二種方式。由于串行通訊方式具有使用線路少、成本低,特別是在遠程傳輸時,避免了多條線路特性的不一致而被廣泛采用。
在串行通訊時,要求通訊雙方都采用一個標準接口,使不同的設備可以方便地連接起來進行通訊。RS-232-C接口(又稱EIARS-232-C)是目前最常用的一種串行通訊接口。
它是在1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機終端生產(chǎn)廠家共同制定的用于串行通訊的標準。
它的全名是“數(shù)據(jù)終端設備(DTE)和數(shù)據(jù)通訊設備(DCE)之間串行二進制數(shù)據(jù)交換接口技術標準”該標準規(guī)定采用一個25個腳的DB25連接器,對連接器的每個引腳的信號內(nèi)容加以規(guī)定,還對各種信號的電平加以規(guī)定。
主板com接口,通常也稱串口、9針D形接口,曾經(jīng)可用于打印機口、上網(wǎng)口、鼠標鍵盤等,后來逐漸被USB接口代替。
本文分類:科技
瀏覽次數(shù):880次瀏覽
發(fā)布日期:2023-05-01 09:27:30
本文鏈接:http://bikeshoes.com.cn/net/8e8ca18196e9f9ff5ff55576ad506c01.html