自 PC 問世以來,硬體經歷了無數代更迭,從 Intel 8086 到 Pentium III 普及僅十餘年。微軟 Windows 從 1.0 發展至 Windows 2000,長期佔據桌面作業系統霸主地位。開發工具也從早期的 Visual Basic、Visual C++、Delphi 到 Borland C++ Builder 百花齊放,開發效率大幅提升。
回顧 16 位元 Windows 時代,讀取檔案需混編組合語言呼叫 DOS 例程,或使用未公開的 _lopen() 函式。進入 Win32 後,僅需呼叫 CreateFile() 即可獲取檔案控制代碼,若配合 MFC/OWL 更是輕鬆。但程式設計師仍須從頭撰寫每一行應用程式碼,重複造輪子現象嚴重。
微軟提出的元件物件模型(Component Object Model,COM)徹底改變了這一局面。Windows 95/98/NT 4.0 廣泛採用 COM,未來它將成為構建應用程式的主流方式。本文面向 C++ 程式設計師,盡量剔除 Win32 API 細節,聚焦 COM 核心本質,所有範例均在 Visual C++ 5.0 (SP3) 編譯通過。
傳統應用程式為單一二進位檔,修改需重編譯整個專案。COM 採用全新視角:將 EXE 拆分為功能獨立的組件,拼裝成完整軟體。發布後若需修改,僅替換對應組件即可,甚至支援熱插拔。這類似 DLL 動態連結,但 COM 充分發揮了 Win32 DLL 的靈活性,實現真正的二進位級復用。
COM 定義了建立動態互操作組件的規範,規定客戶端(需求方)與組件必須遵循的標準。發布形式為 Win32 DLL 或 EXE 內的可執行程式碼。關鍵特性包括:
澄清常見誤區: COM 不是程式語言、不是 DLL、不是 Win32 API 函式集、也非 MFC 類別庫。它提供的是開發跨語言組件庫的方法論與二進位標準。
[1] [2] [3] [4] 下一頁