Windowsプログラミングの世界観に戻るWindowsプログラミングの世界観(ATL/COM)Windowsプログラミングに関する世界観(ATL/COM)です。分散システムとCOMUNIXでは、中央コンピュータと端末、あるいはXのようにクライアント・サーバモデルでの、ネットワーク分散環境を利用できる。端末のXサーバから別のパソコンのXクライアントを実行できる。したUNIXの分散システムとは全く別のやり方をしているのが、MicrosoftとWindowsが頑張っていたCOM。たくさんのPCがあるとして、その中にアプリケーションを導入するのであれば、同じソフトウェアを全部のOSに入れることもできるが、ネットワークに繋がった別のコンポーネントを再利用して使いたい場合がある。した時に、それぞれのソフトウェアをコンポーネントに分割して、相互に通信し合って、決められたインターフェースで各PCが協調して動くようにする。遠隔地に離れたコンポーネントでも、サービスとしてそのコンポーネントを利用可能にする。この仕組みは先進的だったため、LinuxでもCOMに似たCORBAを利用してこの仕組みを模倣したGNOMEと呼ばれるデスクトップ環境があり、Linuxの標準となっている。9などの研究用の分散OSでは、ファイルシステムとネットワークプロトコルを統合し、分散PC環境で同じアプリケーションリソースを共有できるようにしている。Frameworkを開発し、GNOMEでもMonoとしてこれを模倣したが、これも単なるJavaの亜種であると評価されている。Frameworkのオープンソース化が進んでおり、MSの技術は着実に新しくなっている。競争しなければ、Linuxの未来や優位性もMSに奪われてしまうだろう。Playerなど)ことができるが、分散システムとしての側面を見れば、「ネットワーク上に無数に散らばるコンポーネントとしてのオブジェクトが通信し合ってたくさんの操作を行う」という先進的なプラットフォームになり得た技術である。これはGNOMEでも同様で、ある意味GNOMEアプリケーションの中で別のGNOMEアプリケーションをコンポーネントとして使うために、CORBA/Bonoboが利用されている実態がある。ActiveXとCOMはアプリケーションの一部だけを切り出して共有する感覚に近いActiveXとCOMは、アプリケーションの一部だけを切り出して、共有する感覚に近いです。ActiveXとCOMでは、こうした「コンポーネントの共有」をネットワーク上で実現します。Playerなどが例として挙げられます。ATLATL/WTLATLはCOMを利用するためのラッパーで、ActiveXを開発する際に良く用いられる。MFC/ATLと同等のものとして軽量なWTLが存在する。WTLはATLの拡張ライブラリで簡単にWindowsアプリケーションの開発ができる。ATL/WTLでプログラミング以下にサンプルコードがあります。クラスの概要COMCOMとは分散オブジェクトにおけるプラットフォーム非依存なネットワーク・コンポーネント・アーキテクチャ。そもそもはWindowsにおける複合ドキュメントの連携手段であるOLEからスタートしたが、COMの登場によりソフトウェア・コンポーネント連携手段へと進化した。(2/2)を参考に執筆しました。)Linuxで使われるCORBAのようなもの。CORBAについてはCORBAを参照のこと。COMの概要COMはソフトウェアコンポーネントによるオブジェクト指向プログラミングのモデル。ActiveXやOLEもCOMがベースとなっている。COMはオブジェクトの公開方法や寿命の管理方法を定義し、プロセスやネットワークを越えた動作方法も定義している。これらの定義に基づいてオブジェクトが他のコンポーネントやアプリケーションに公開される。ちょくとのページを参考に執筆しました。)DCOMと.NETDCOMはネットワーク上に分散配置されたコンポーネントの通信技術で、Microsoftにより仕様が裁定された。ネットワーク上のコードとサービスの再利用のためのモデルとなるとされていたが、さまざまな問題から、HTTPとWebブラウザの組み合わせに敗北した。Frameworkは、DCOMを進歩させたものである。Wikipediaを参考に執筆しました。3.0の下で再許諾いたします。COMとGNOMEGNOMEのミゲル・デ・イカザなどは、分散コンピューティングへの対応が十分ではないUNIXをより進歩させるものだとして、GNOMEの分散コンポーネント通信技術にDCOMと同様の技術であるCORBAを採用し、.NETに対してMonoを開発した。以下にサンプルコードがあります。詳しくは以下のようなサイトが参考になる。