讀好文章,快速理解COM元件知識,10分鐘深刻閱讀,獲得超過2000元的培訓 (轉)
[新浪漫架構原創]Robin和你學習COM
原文地址:ng.vicp/cgi-bin/topic.cgi?forum=5&topic=2139">
幻燈地址:/comstudy.htm">
論壇地址:
新浪漫架構:
相信很多學習的同行們都對COM技術感到非常難見其底,我希望能夠為您指點一下方向。
COM= 模型。
在中,COM元件需要存在在 .dll或 .exe中,這些檔案是他們的載體。
所以可以知道在.dll,.exe中,都可以存在任意個COM元件,至於程式外,程式內這些
概念不是COM的主要概念,我不談。
每一個COM元件又可以包含若干個物件,這些物件可以是實現了物件,也可以是永遠都在
升級的物件(一個物件都是一個可以實現特定功能的程式碼+資料的包),如果一個物件
的功能不打算再升級,就可以直接在這個物件內實現功能,如果不是這樣,好比 .9
word.10,等等,物件的功能會升級,那麼你可以讓訪問這個物件的訪問一個介面,而這個介面可以知道升級了的物件實現程式碼。(介面在自己的元件內,所以它應該而且必須知道具體版本的物件的實際地址)
看這個圖
1
我要傳送電子------>[傳送電子郵件功能]
(這裡的功能一旦完成了,就永遠不能更改了)
2
我要傳送電子郵件----->[呼叫傳送電子郵件功能介面-->版本1]
......................[........................|->版本2]
......................[........................|->版本3]
......................[........................|->版本4]
......................[........................|->版本5]
COM元件和C++的物件的不同點是 C++的物件是被直接載入到中執行的,在執行之前,
沒有這個物件。C++物件不告訴別人它在哪裡,她自己找到記憶體中某一段地址,然後就
在那裡,等著創作這個物件的程式設計師自己寫的程式呼叫。如果別人試圖呼叫這個物件,就
必須自己找到物件的地址,然而不可能找到,沒有人知道在哪裡。
而COM元件中的物件是存在在.dll,.exe檔案中的,它是以二進位制的形式存在在中。
試圖呼叫物件的其他程式設計師可以使用COM執行環境呼叫先載入這個.dll,.exe檔案到記憶體中,
然後元件物件自己會把自己的地址資訊告訴COM執行環境。
(要想使用COM元件功能,操作必須能夠執行COM執行環境,這個東西是一個殼子,
把記憶體中的COM物件包在裡面執行,這個執行環境在使用COM物件前載入到記憶體中,它自己
也是.dll檔案)
看這個圖:
客戶程式
看出和C++物件的區別了吧?
COM元件物件一到記憶體中,就告訴COM執行環境它自己的一些資訊,比如
1 地址 IUNKnown介面 告訴各個物件,,介面的入口地址。
2 被訪問的次數,當這個數為0時,COM執行環境可以選擇在某個時候從記憶體中
銷燬這個物件
3 其它資訊
這裡談到了一個關鍵資訊,就是不同功能的COM物件可以選擇告訴COM執行環境不同的
資訊,多少可以自己決定,但是如果你想成為更高階的COM物件,比如,
比如COM+物件,比如DCOM物件,比如自動化物件
至於如何告訴COM執行環境這些資訊,都是事先說好的,你必須在這些介面中來提供
資訊,這些預先說好的東西整個合起來就是COM元件規範。
比如:IDispatch提供自動化資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982794/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過綠帶培訓獲得六西格瑪基礎知識
- 個人整理, 閱讀過的好文章 (每天隨時更新)
- 【譯】通過閱讀原始碼來提高 JS 知識原始碼JS
- 動態IP代理-如何讓文章獲得高閱讀量?
- 紮實的基礎知識+正確的方法是快速閱讀原始碼的關鍵原始碼
- Azure 知識培訓總結
- 心智閱讀系列:定期投資你的知識資產
- 如何快速閱讀原始碼原始碼
- 我們的『閱讀理解』出了錯
- 【EMNLP 2023】基於知識遷移的跨語言機器閱讀理解演算法演算法
- Lustre架構介紹的閱讀筆記-基礎知識架構筆記
- 機器閱讀理解 / 知識庫 / 深度學習 / 對話系統 / 神經機器翻譯 | 本週值得讀深度學習
- 《認知驅動》閱讀摘要
- 《認知覺醒》閱讀摘要
- 閱讀目錄(置頂)(長期科技領域知識)
- 兩篇知識表示方面的論文閱讀筆記筆記
- Vue 原始碼閱讀(六)元件化Vue原始碼元件化
- 手把手教你做閱讀理解題-初中中考閱讀理解解題技巧011-Noticeboard
- 如何從資料、模型和訓練角度提升閱讀理解系統效能?模型
- 2018年,我讀過的一本讓我印象深刻的書
- PDF閱讀器不只閱讀註釋,還有轉換與編輯
- 《三分鐘閱讀》7個有用的JavaScript技巧JavaScript
- java培訓基礎知識都學哪些Java
- 【Python培訓基礎知識】單例模式Python單例模式
- 機器閱讀理解Match-LSTM模型模型
- 閱讀論文的方法和技巧(快速且有效)
- Blazor Pdf Reader PDF閱讀器 元件 更新Blazor元件
- 手把手教你做閱讀理解題-初中中考閱讀理解解題技巧012-Instructions for Daily UseStructAI
- 技術書籍超級閱讀法
- Vue原始碼閱讀--過濾器Vue原始碼過濾器
- 【原始碼閱讀】AndPermission原始碼閱讀原始碼
- 手把手教你做閱讀理解題-初中中考閱讀理解解題技巧010-Sleep Factors & Improvement Tips
- Java培訓基礎知識-Java的常量與變數Java變數
- 參加web前端培訓要學哪些知識Web前端
- 猿輔導登頂MSMARCO:機器閱讀理解超過人類水平、力壓百度微軟微軟
- 基於CNN的閱讀理解式問答模型:DGCNNCNN模型GC
- 機器閱讀理解Attention-over-Attention模型模型
- SOFAJRaft原始碼閱讀(伍)-初識RheaKVRaft原始碼
- Scrapy原始碼閱讀分析_3_核心元件原始碼元件