編集この記事には複数の問題があります。改善やノートページでの議論にご協力ください。出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2016年5月)脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2016年5月)原文と比べた結果、多数の誤訳があることが判明しており、修正が求められています。モデル)とは、マイクロソフトが提唱するソフトウェアの再利用を目的とした技術のことである。COMは相互作用するバイナリソフトウェアコンポーネントを作成するための、プラットフォーム非依存・分散型・オブジェクト指向のシステムであると説明されている[1][2]。具体的にはアプリケーションソフトウェア間の通信や、オペレーティングシステムとアプリケーションソフトウェアとのインターフェイス(API)に用いられる。COMを使用して開発されたソフトウェア部品をCOMコンポーネントと呼ぶ。Basic、Smalltalk、Javaなど、様々な言語により開発することができる。COMという用語は、OLE、OLEオートメーション、ActiveX、COM+、DCOMの総称としてよく使われる。COMコンポーネントは、他ソフトウェアと通信するためのインターフェイスを有している。アプリケーションソフトウェア(COMクライアント)は、通信インターフェイスを表現する抽象型として公開されているCOMインターフェイスを介してCOMコンポーネント(COMサーバー)と通信をし、それらを組み合わせることでサービスを提供する。言語によるメモリやその他計算資源の割り付けの違いは、参照カウントを利用してオブジェクトの生成と破棄をそのオブジェクト自身の責任とすることにより解決する。オブジェクトがサポートする、異なるインターフェイス間の型変換は、言語固有のキャスト構文ではなく、言語非依存のQueryInterfaceメソッドで行う。メソッド呼び出しをデリゲート(委譲)する形でサブオブジェクトの集合(アグリゲーションと呼ぶ)を生成する方法がCOM内における最適な継承方法である。Windows環境である。COMおよびXPCOMを基盤としているが、機能およびサポート環境はまだ限定されている[4][5]。COMの前身はOLEである。Frameworkに置き換えられているものも多い。通じてWebサービスをサポートする。WCFがXMLベースのSOAPメッセージを利用するのに対し、ネットワークで接続されたDCOMはバイナリの独自仕様フォーマットを利用する。DirectXなどに代表されるように、ネイティブC++での利用を前提としたパフォーマンス重視のAPIは、依然として.NETではなくCOMが使われる傾向にある。Beansと競合関係にある。3.1とともに公開された。