この章では、Oracle COM AutomationのSoftware Development Kit(SDK)についての説明と、製品の概要を示します。Oracle COM Automationをインストールして使用する前に、この章をお読みください。
この章の項目は次のとおりです。
Oracle COM Automationでは、Windowsオペレーティング・システム上のOracleデータベースの機能を、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オートメーション・データ型に変換されます。次に、変換されたパラメータの値を使用して、対応する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データベースをカスタマイズして次のことができます。
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機能を持つOracle9iデータベース、クライアント・アプリケーションおよびサーバー・アプリケーションとの関係を示したものです。
PL/SQL用のOracle COM AutomationとJava用のOracle COM Automationのアーキテクチャ上の違いについて、次の2つの項で説明します。
PL/SQL用のOracle COM Automationは、COMオブジェクトを操作するPL/SQL APIのパッケージを提供しています。これらのAPIは、ダイナミック・リンク・ライブラリ(DLL)内の外部プロシージャとして実装されています。
Oracle9iは、開発者がサーバー・ベースのオブジェクト型のメソッドおよびストアド・プロシージャから第3世代言語(3GL)関数をコールできる外部プロシージャをサポートします。外部プロシージャは、標準のPL/SQLストアド・プロシージャとまったく同じようにコールされます。ただし、プロシージャの本体がPL/SQLで記述され、データベースに保存されている標準のPL/SQLプロシージャとは異なり、外部プロシージャはDLL内のCプログラミング言語の関数です。Oracle COM AutomationのAPIは、標準のPL/SQLストアド・プロシージャまたはファンクションをコールするのと同じ方法でコールできます。
図1-2は、Oracle9iデータベースによってCOM Automationの外部プロシージャAPIがコールされる様子を示したものです。
データベース・サーバーは、次のように任意のCOM Automationの外部プロシージャAPIをコールします。
PL/SQLインタプリタは、Oracle COM AutomationのDLL(orawpcom
VER
.dll
)へのパス名を検索します。VER
はリリース番号です。
現行のユーザー・セッションに対してextproc.exe
がまだ起動されていない場合、PL/SQLインタプリタはOracle Netを使用してリスナーにメッセージを送信し、extproc.exe
を起動します。
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ネイティブ・インタフェース(JNI)によって実装されます。このアーキテクチャの主要コンポーネントは、Automation
クラスおよびJava COMプロキシDLLであるorawcom
VER
.dll
です。VER
はリリース番号です。
インタフェースは、COM AutomationサーバーへのJavaプロキシであるAutomation
クラスです。Automation
クラスにより、開発者がIDispatch
を通じてCOMオブジェクトを操作するために必要なメソッドが提供されます。
Java固有のCOMプロキシであるorawcom
VER
.dll
により、Javaファンクションは対応するCOMファンクションをコールできます。
図1-3は、Java用のOracle COM Automationの実装について示したものです。