この章では、Oracle COM Automation機能のSoftware Development Kit(SDK)についての説明と、製品の概要を示します。Oracle COM Automation機能をインストールして使用する前に、この章をお読みください。
|
注意: Oracle Database 11g リリース2 (11.2)は、Oracle COM Automation機能をサポートする最後のデータベース・バージョンです。Oracle Database 11g リリース2 (11.2)より後にリリースされるOracle Databaseバージョンでは、Oracle COM Automation機能はサポートされません。Oracleのライフタイム・サポート・ポリシーで対応される既存のOracle DatabaseバージョンでOracle COM Automation機能を継続して使用できます。 |
この章の項目は次のとおりです。
Oracle COM Automation機能では、Windowsオペレーティング・システム上のOracle Databaseの機能を、Component Object Model(COM)ベースのコンポーネントを使用してカスタマイズし、強化できます。
カスタム・コンポーネントを独自に作成することも、あるいはサード・パーティの独立系ソフトウェア・ベンダー(ISV)から入手できる数多くの作成済コンポーネントを利用することもできます。
Oracle COM Automation機能には、PL/SQLまたはJavaを使用してCOMオブジェクトを操作するためのメカニズムが用意されています。
Oracle COM Automation機能は、IDispatchインタフェースの汎用ラッパーとして機能します。
Oracle COM Automation機能は、IDispatchインタフェースによってサポートされるすべてのメソッドを使用可能にします。
COMオブジェクトは、プロパティ、データ属性およびメソッド(アクションを実行するファンクション)を開発者に公開します。
IDispatchインタフェースは、すべてのCOMオブジェクトに対する3つの基本操作をサポートします。
公開されたプロパティの値の取得
公開されたプロパティの値の設定
オブジェクトに対するメソッドのコール
Oracle COM Automation機能のApplication Program Interface(API)がPL/SQLまたはJavaストアド・プロシージャからコールされると、Oracle COM Automation機能によりパラメータが適切なCOM Automationデータ型に変換されます。次に、変換されたパラメータの値を使用して、対応するIDispatch APIがコールされます。
PL/SQL用のOracle COM Automation機能は、PL/SQLパッケージを提供し、COMオブジェクトをインスタンス化するための一連のApplication Program Interface(API)を公開します。開発者は、これらのAPIをPL/SQLサブプログラム、ストアド・プロシージャ、ストアド・ファンクションまたはトリガーからコールしてCOMオブジェクトを操作できます。
COMオブジェクトを置く場所に関する制限はありません。COMオブジェクトはデータベースに対してローカルに配置するか、Distributed Component Object Model(DCOM)を介してリモートでアクセスできます。
Oracle COM Automation機能は、WindowsにおけるOracle開発者のための強力かつ有用なインフラストラクチャ・テクノロジです。次のような利点があります。
開発の容易さ
Oracle COM Automation機能は、COMオブジェクトを操作するための簡単な一連のAPIを公開します。COMおよびMicrosoft Visual Basicに習熟した開発者であれば、これらのAPIを既存のPL/SQLサブプログラムまたはJavaプログラムに容易に組み込むことができます。
再利用性
Oracle COM Automation機能により、社内またはサード・パーティの独立系ソフトウェア・ベンダー(ISV)によって開発された、作成済のCOMコンポーネントを利用できます。目的に応じて選択できる数多くのCOMコンポーネントがすでに存在しています。COMコンポーネント市場は急速に成長し、プログラミングに共通する多くの問題に対応するソリューションが提供されています。
柔軟性と拡張性
Oracle COM Automation機能を使用することにより、データベース・サーバーの機能をカスタマイズし、強化することができます。COMコンポーネントを使用し、Oracle Databaseをカスタマイズして次のことができます。
Microsoft Word、Microsoft Excel、Microsoft PowerPointなどの生産性アプリケーション間でデータを交換。
Seagate Crystal Reportsを使用してレポートを生成。
MAPI準拠のアプリケーションで電子メールを送受信。
データベース・サーバーのカスタマイズおよび機能拡張に制限はありません。
強化された統合
Oracle COM Automation機能では、OracleとWindowsを組み合せた環境にOracle Databaseをデプロイできます。Windows、Microsoft BackOfficeアプリケーションおよびMicrosoft Officeアプリケーションで公開されているサービスとOracle COM Automation機能を完全に統合し、Oracle COM Automation機能からそれらのサービスを利用できます。
移植性およびプラットフォーム固有の要件
Oracle COM Automation機能を使用しているアプリケーションは、プラットフォームに依存しないJavaまたはPL/SQLで作成されています。Windowsで実行する必要があるのは、COMコンポーネントをコールする必要のあるデータベース・インスタンスのみです。
図1-1は、Oracle COM Automation機能を持つOracle Database、クライアント・アプリケーションおよびサーバー・アプリケーションとの関係を示したものです。
PL/SQL用のOracle COM Automation機能とJava用のOracle COM Automation機能のアーキテクチャ上の違いについて、次の2つの項で説明します。
PL/SQL用のOracle COM Automation機能は、COMオブジェクトを操作するPL/SQL APIのパッケージを提供しています。これらのAPIは、ダイナミック・リンク・ライブラリ(DLL)内の外部プロシージャとして実装されています。
Oracleでは、開発者がサーバー・ベースのオブジェクト型のメソッドおよびストアド・プロシージャから第3世代言語(3GL)関数をコールできる外部プロシージャをサポートします。外部プロシージャは、標準のPL/SQLストアド・プロシージャとまったく同じようにコールされます。ただし、プロシージャの本体がPL/SQLで記述され、データベースに保存されている標準のPL/SQLプロシージャとは異なり、外部プロシージャはDLL内のCプログラミング言語の関数です。Oracle COM Automation機能のAPIは、標準のPL/SQLストアド・プロシージャまたはファンクションをコールするのと同じ方法でコールできます。
図1-2は、Oracle DatabaseによってCOM Automationの外部プロシージャAPIがコールされる様子を示したものです。
データベース・サーバーは、次のように任意のCOM Automationの外部プロシージャAPIをコールします。
PL/SQLインタプリタは、Oracle COM Automation機能のDLL(orawpcomVER.dll)へのパス名を検索します。VERはリリース番号です。
現行のユーザー・セッションに対してextproc.exeが起動されていない場合、PL/SQLインタプリタは、Oracle Netを使用してリスナーにメッセージを送信し、起動します。
PL/SQLインタプリタはプロシージャ名、パラメータおよびDLLのパス名をextproc.exeに渡します。
extproc.exeファイルはDLLをロードし、外部プロシージャを実行します。それぞれのCOM Automationの外部プロシージャAPIにより、COMオブジェクトのインスタンス化、COMオブジェクトのプロパティの設定または取得、あるいはCOMオブジェクトのメソッドのコールを行うWin32 APIが順次コールされます。
extproc.exeファイルは媒介として機能し、Oracle COM Automation機能とデータベース・サーバー間のすべての対話を処理します。
Java用のOracle COM Automation機能は、Java Native Interface(JNI)によって実装されます。このアーキテクチャの主要コンポーネントは、AutomationクラスおよびJava COMプロキシDLLであるorawcomVER.dll(VERはリリース・バージョン)です。
インタフェースは、COM AutomationサーバーへのJavaプロキシであるAutomationクラスです。Automationクラスにより、開発者がIDispatchを通じてCOMオブジェクトを操作するために必要なメソッドが提供されます。
Java固有のCOMプロキシであるorawcomVER.dllにより、Javaファンクションは対応するCOMファンクションをコールできます。
図1-3は、Java用のOracle COM Automation機能の実装について示したものです。