[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

3 COM for OpenVMSの概要

3.1 COMとは

COM (Component Object Model:コンポーネント・オブジェクト・モデル) は,Microsoftが開発したテクノロジであり,開発者はCOMを使用することで分散ネットワーク・ オブジェクトを作成できます。COMはMicrosoft がWindows 3.x製品で最初に導入したものであり,その当時はOLE (Object Linking and Embedding:オブジェクトのリンクと埋め込み)という名前でした。COM は,新しいスタイルのマルチベンダ分散コンピューティングを採用し適合させるための, 強力で広く利用できるメカニズムを提供し, その一方でソフトウェアへの新規投資を最低限に抑えることができます。

Digital Equipment Corporation (現在はCompaq Computer Corporation) とMicrosoftはCOM仕様を共同開発しました。COM仕様は,最初のリリースではNetOLE (Network OLE) という名前であり,その後,DCOM (Distributed COM)という名前に変更され,現在はネットワーク機能を含んでいます。 つまり,COMは分散ネットワーク・オブジェクトをサポートします。

COMはオブジェクト・ベースのプログラミング・モデルであり,ソフトウェアの相互運用性を促進するように設計されています。COM を使用すると,2 つ以上のアプリケーション(またはコンポーネント)を簡単に協調動作させることができます。 オブジェクトが異なるベンダによって異なるプログラミング言語で個別に作成された場合でも, 異なるオペレーティング・ システムを稼動する異なるマシンで動作する場合でも,協調動作が可能です。 協調動作機能をサポートするために,COMでは,アプリケーションが相互にソフトウェア・ オブジェクトとして接続できるようにするためのメカニズムを定義し, 実装しています。

COMの実装はWindows NT,Windows 95[TM], Windows 98,OpenVMS,Compaq Tru64[TM] UNIX[R]で提供されており,他のUNIX プラットフォームでも提供されています。

3.1.1 参考文献

COMおよび関連トピックの詳細については,次の参考文献を参照してください。

3.2 COM for OpenVMSの概要

COM for OpenVMSは,MicrosoftのWindows NT 4.0 Service Pack 3 (SP3) Component Object Model (COM)ソフトウェアをCompaqがOpenVMS Alphaオペレーティング・ システム上で実装したものです。

COM for OpenVMSのサポートで,Compaqはレジストリ, イベント・ロガー,NTLMセキュリティ,Win32 APIも含めて,Windows NT のインフラストラクチャをOpenVMS に移植しました。COM for OpenVMSはThe Open Group のDCE (Distributed Computing Environment) RPCのレイヤードです。COM for OpenVMS では,ローカル・ エリア・ネットワーク(LAN),ワイド・エリア・ネットワーク(WAN), インターネット上のさまざまなコンピュータのオブジェクト間での通信をサポートします。COM for OpenVMS はWindows NTと接続するための重要な機能を提供するので,Affinity for OpenVMS プログラムにとって重要です。

図 3-1はOpenVMSのインフラストラクチャを示しています。

図 3-1 OpenVMSのインフラストラクチャとCOM for OpenVMS

図 3-1で,OpenVMSインフラストラクチャの重要な要素は次のとおりです。


Windows NTシステム

図 3-1の左側の小さいボックスは,Windows NT システムを表しています。


OpenVMS Cluster/OpenVMSアイデンティティ

図 3-1の右側の大きいボックスは,OpenVMS システムを表しています。このボックスの内部および周囲には, 番号の付いたいくつかのボックスがあります。ここではこれらの番号の付いたアイテムについて説明します。

  1. OpenVMSセキュリティ

    これは,すべてのOpenVMSシステムで提供される標準のOpenVMSセキュリティ( ログイン,認証,ACLなど)です。

  2. Advanced Server for OpenVMS

    Advanced Server for OpenVMSはOpenVMS に対してWindows NTユーザの認証機能を提供し,Windows NT ユーザに対してOpenVMS Registryとイベント・ビューアへの接続機能を提供します。

  3. Windows NTアイデンティティ/Win32 API

    OpenVMSセキュリティ,MSV1_0 ACMEエージェント,Advanced Server for OpenVMS ,OpenVMS Registry,イベント・ロガー,Win32 API (COM API)はすべて,OpenVMSシステム内でWindows NTアイデンティティを作成することに貢献します。

  4. OpenVMS Registry

    OpenVMS RegistryはWindows NTシステムのレジストリに類似しており,システム, ソフトウェア,ハードウェアの構成情報をOpenVMSに格納するための機能です。COM for OpenVMS では,OpenVMS Registryを使用してCOMアプリケーションに関する情報を格納します。OpenVMS Registryの詳細については,本書の第II 部を参照してください。

  5. イベント・ロガー

    OpenVMSのイベント・ロガーはWindows NTシステムのイベント・ロガーに類似しており,COMイベントに関する情報メッセージ, 警告メッセージ,エラー・メッセージを記録します。OpenVMS Events の詳細については, 第11章を参照してください。

  6. Windows NT COMスタック

    Windows NTシステムでは,COM要求と応答は,COM ,RPC,SSPI (セキュリティ),ドメイン・レイヤを介してやり取りされます。

  7. OpenVMS COMスタック

    OpenVMSシステムでは,Windows NTのCOM スタックをそのまま使用しますが,いくつかの機能が追加されています。OpenVMS システムでは,COM要求と応答は,COM,RPC, SSPI (セキュリティ),MSV1_0 ACMEエージェント,Advanced Server for OpenVMS レイヤを介してやり取りされます。MSV1_0 ACME エージェント(図 3-1ではACME)はACM (Authentication and Credential and Management)オーソリティに対する拡張機能です。認証の詳細については, 第12章を参照してください。

  8. RPCレイヤを介した接続

    Windows NTシステムとOpenVMSの間のCOM接続は, 常にRPCレイヤを介して行われます。

開発者用に提供されるCOM for OpenVMS Developer's Kitには,アプリケーション開発用にMIDL (Microsoft Interface Definition Language)コンパイラとCスタイルのヘッダ・ ファイルが含まれています。OpenVMS MIDLコンパイラの詳細については, 第3.4節を参照してください。

OpenVMSでは,Windows NT資格情報を取得するための機能が提供されるようになりました。NTA$LOGON を介してWindows NT 資格情報を取得する方法については, 第4.8節第12章を参照してください。

COM for OpenVMSでは,COM for OpenVMSクライアント/サーバ・アプリケーションの導入のために,OpenVMS Alpha で無料の実行時環境が提供されるようになりました。

プロトコルの仕様とプログラミングのドキュメントを含めて,Microsoft のCOMの詳細については,Microsoft COMのWebサイトを参照してください。 アドレスは次のとおりです。

http://www.microsoft.com/com

COM for OpenVMSの実装は,完全なMicrosoft COM実装のサブセットです。COM for OpenVMS API,サポートされるインタフェース,実装の相違点の一覧については, 付録 Eを参照してください。

COMに対する関心はますます高くなっていますが,それでもCOMは依然として高度な技術です。 経験の浅いユーザを対象としたものではなく,独立系ソフトウェア・ ベンダ(ISV)や大規模なMIS (管理情報システム)ショップなど, 高度な技能を持ったプログラマを対象にしています。

3.2.1 COM for OpenVMSでのOpenVMS Registryの使用

COM for OpenVMSでは,OpenVMS Registryが必要です。Windows NTシステムのレジストリ・ データベースと同様に,OpenVMS Registry にはCOMアプリケーションに関する情報, 特にOpenVMS上で実行されているCOMアプリケーションに関する情報が格納されます。 これらのCOM for OpenVMSアプリケーションでは,OpenVMS Registryを使用してCLSID (クラスID),スタートアップ情報,セキュリティ設定などをOpenVMS Registry データベースに格納します。COM for OpenVMS では,OpenVMS で実装されているWin32 APIを使用して,OpenVMS Registryからの読み込みと書き込みを行います。

COM for OpenVMSでは,OpenVMS Registryデータベースへのアクセスが必要です。COM for OpenVMS がOpenVMS Registryにアクセスできない場合は,COM for OpenVMSは起動しません。OpenVMS Registry の詳細については,第7章を参照してください。

3.3 COM for OpenVMSの使用

COM for OpenVMSを使用すると,次のことが可能です。

ここでは,新規アプリケーションの開発とカプセル化について詳しく説明します。

3.3.1 新規アプリケーションの開発

次の場合には,COM for OpenVMSを使用して新規アプリケーションを開発できます。

COM for OpenVMSには,次の利点があります。

COM for OpenVMSアプリケーションの開発の例については, 第6章付録 C を参照してください。

3.3.2 既存のアプリケーションのカプセル化

手順型言語(FortranやCOBOLなど)で書かれ,キャラクタ端末インタフェースを使用するアプリケーションを使っている場合,COM " ラッパー"またはジャケットでこれらのアプリケーションを包み込むことにより, アプリケーションを新しいプラットフォームで実行することができるようになり, また,OpenVMSのクライアント/サーバ環境で実行することも可能になります。

従来のアプリケーションの中には,新しい技術に対応するように完全に書き直すと, 非常に危険性の高いアプリケーションがあります。多くのアプリケーションは大規模で, 複雑で,ドキュメントが不足しており,現在の保守担当者はこのようなアプリケーションを完全に理解できません。 既存のアプリケーションをカプセル化すれば, 作り直すより危険性が低くなり, また,書き直すための最初のステップとして利用することもできます。 このようにしておけば,必要に応じて既存のアプリケーションの一部だけを書き直すことができ, その間もアプリケーションの以前のバージョンは安定した状態で利用できます。 また,カプセル化では,開発者はコードを再利用でき, 作業時間とリソースを節約できます。

一方,カプセル化には欠点もあります。保守作業が複雑になり,基礎になるコードを変更することができません。 既存のアプリケーションが不安定だったり, 保守が困難な場合は,カプセル化したアプリケーションがそれ以上のものになるわけではなく, ラッパーを追加したために,さらに状況が悪化する可能性もあります。

従来の手順型アプリケーションは複数の層でカプセル化することができます。 ユーザ・インタフェース(UI),データベース,データ操作ルーチンでカプセル化できます。

COM for OpenVMSを使用してOpenVMSアプリケーションをカプセル化するということは, カプセル化されるアプリケーションと会話するCOM for OpenVMS サーバを作成することを意味します。COM for OpenVMSサーバは,アプリケーションが必要とする順序および形式で引数をアプリケーションに渡します。COM for OpenVMSサーバはアプリケーションからの出力を傍受して,それを表示装置, ユーザ・インタフェース,その他のルーチンに渡します。

3.4 OpenVMS MIDLコンパイラ

OpenVMS MIDLコンパイラは,次の点を除き,MIDL (Microsoft Interface Definition Language)コンパイラV3.00.44と同じです。

  1. Microsoft MIDLでは,複数の最適化レベルがサポートされます。 一方,OpenVMS MIDLでは,-Oicf だけがサポートされます。 他の最適化レベルは使用できません。

  2. /cpp_cmd スイッチと/cpp_opt スイッチは,OpenVMS MIDL では完全に機能しません。

  3. Windows NTシステムでは, Microsoft MIDLコマンド,スイッチ,修飾子で大文字と小文字が区別されます。OpenVMS MIDL コンパイラでは大文字と小文字が区別されません。OpenVMS MIDL コンパイラに渡されるすべてのコマンド,スイッチ, 修飾子は小文字になります。このため,Microsoft MIDLのスイッチ /I/i はOpenVMSでは同じになります。

  4. MIDLで生成されたファイルはプラットフォーム固有です。

    MIDLは両方のプラットフォームで実行しなければなりません。 どちらか一方のプラットフォーム(OpenVMSまたはWindows NT)で生成されたMIDL出力ファイルは, もう一方のプラットフォームにコピーしたり, 使用することができません。

  5. MIDL -w スイッチ

    Microsoft MIDLコンパイラでは,-w または- warn を指定して,コンパイラで生成される警告のレベルを制限できます。OpenVMS MIDL コンパイラでは,-w スイッチだけがサポートされます。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]