讀好文章,快速理解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
- 《三分鐘閱讀》7個有用的JavaScript技巧JavaScript
- 心智閱讀系列:定期投資你的知識資產
- 高效的知識閱讀和資訊篩選技巧
- 《快速閱讀術》讀書筆記筆記
- YYModel原始碼閱讀–基礎知識原始碼
- 1 分鐘讀完《10 分鐘學會 JavaScript 的 Async/Await》JavaScriptAI
- 《3分鐘識別人才》讀書筆記筆記
- 動態IP代理-如何讓文章獲得高閱讀量?
- Azure 知識培訓總結
- 紮實的基礎知識+正確的方法是快速閱讀原始碼的關鍵原始碼
- 如何快速閱讀原始碼原始碼
- 我們的『閱讀理解』出了錯
- 10分鐘快速精通rollup.js——前置學習之基礎知識篇JS
- iOS 系統分析(一) 閱讀核心準備知識iOS
- iOS Tagged Pointer (原始碼閱讀必備知識)iOS原始碼
- 10 分鐘理解 ReduxRedux
- 2分鐘讀懂javaJava
- 2分鐘獲得HTTPS證書HTTP
- 淺談我讀過且印象深刻的數學書
- spring原始碼閱讀環境(幾分鐘下載包)Spring原始碼
- Lustre架構介紹的閱讀筆記-基礎知識架構筆記
- 這樣的閱讀工具,人手一個不過分吧?
- 大學英語(B) 閱讀理解
- 機器閱讀理解 / 知識庫 / 深度學習 / 對話系統 / 神經機器翻譯 | 本週值得讀深度學習
- 閱讀目錄(置頂)(長期科技領域知識)
- 兩篇知識表示方面的論文閱讀筆記筆記
- 推薦一篇難得的深入分析邏輯讀的好文章
- 10分鐘教你理解反射反射
- 資源:10份機器閱讀理解資料集
- 「DNN for YouTube Recommendations」- 論文閱讀DNN
- 閱讀nopcommerce startup原始碼原始碼
- JDK原始碼閱讀-Comparable介面JDK原始碼
- 原始碼閱讀:SDWebImage(二)——SDWebImageCompat原始碼Web
- 超詳細的Servlet教程,10分鐘帶你認識servletServlet
- 閱讀 Composer 原始碼的一個分享原始碼
- Vue 原始碼閱讀(六)元件化Vue原始碼元件化