Oracle Database アダプターを使用した WCF サービス モデルの概要
Microsoft BizTalk Adapter for Oracle Database が表示する操作を使用すると、コードはクライアントまたはアダプターへのサービスとして機能します。 Oracle Database アダプターが実行するほぼすべての操作について、コードはクライアントです。 つまり、アプリケーションはアダプターで操作を呼び出します。たとえば、Oracle テーブルにレコードを挿入する場合などです。 コードが Oracle データベース アダプターへのサービスとして機能する唯一の操作は、POLLINGSMT 操作用です。 この場合、アダプターはポーリング クエリ操作の結果をアプリケーションに送信します。
Windows Communication Foundation (WCF) サービス モデルでは、クライアントとサービスの間に存在するサービス コントラクトは .NET インターフェイスとして表され、操作はこのインターフェイスのメソッドとして表されます。 Oracle Database アダプターと WCF には、アダプターが公開するメタデータから対象となる操作用にこのインターフェイスを生成できるツールが用意されています。 これらのツールでは、サービス インターフェイスで公開されている操作を呼び出すために使用できる WCF クライアント クラスも作成されます。 クライアント アプリケーションは、WCF クライアント クラスのメソッドを呼び出して、アダプターに対する操作を呼び出すことができます。 Oracle データベース アダプターから POLLINGSTMT 操作を受信するサービスを実装するには、POLLINGSTMT 操作用に生成されたインターフェイスを実装します。
次のセクションでは、WCF サービス モデルを使用して Oracle Database アダプターのクライアントコードとサービス コードを作成する方法について説明します。
Oracle データベース アダプターを使用した WCF クライアントでの操作の作成と呼び出し
WCF サービス モデルを使用して Oracle データベース アダプターに対する操作を呼び出すには、最初にターゲット操作用の WCF クライアント クラスを生成する必要があります。 その後、このクラスのインスタンス (WCF クライアント) を作成し、そのメソッドを呼び出して Oracle データベースに対する操作を実行できます。
Oracle Database アダプターに対する操作を呼び出すには
WCF クライアント クラスとヘルパー コードを生成します。 アダプター サービス参照の追加 Visual Studio プラグインまたは ServiceModel メタデータ ユーティリティ ツール (svcutil.exe) を使用して、使用する Oracle データベース成果物を対象とする WCF クライアント クラスを生成します。 WCF クライアントを生成する方法の詳細については、「 Wcf クライアントまたは WCF サービス コントラクト for Oracle Database Artifacts の生成」を参照してください。
クライアント バインドを指定して WCF クライアント インスタンスを作成します。 クライアント バインドを指定するには、WCF クライアントが使用するバインディングとエンドポイント アドレスを指定する必要があります。 これは、コード内で命令的に行うか、構成で宣言的に行うことができます。 クライアント バインドを指定する方法の詳細については、「 Oracle Database のクライアント バインドを構成する」を参照してください。 次のコードでは、Oracle データベース テーブル (/SCOTT/ACCOUNTACTIVITY) に対してデータ操作言語 (DML) 操作を実行するために使用できる WCF クライアントを作成します。 また、Oracle データベースの資格情報も設定します。 WCF クライアントは構成から初期化されます。
SCOTTTableACCOUNTACTIVITYClient aaTableClient = new SCOTTTableACCOUNTACTIVITYClient("OracleDBBinding_SCOTT.Table.ACCOUNTACTIVITY"); aaTableClient.ClientCredentials.UserName.UserName = "SCOTT"; aaTableClient.ClientCredentials.UserName.Password = "TIGER";
WCF クライアントを開きます。
aaTableClient.Open();
手順 2 で作成した WCF クライアントでメソッドを呼び出して、Oracle データベースに対する操作を実行します。 次のコードは、WCF クライアントの Select メソッドを呼び出して、ACCOUNTACTIVITY テーブルに対して次の SQL SELECT クエリを実行します。
SELECT * FROM ACCOUNTACTIVITY
// create a record set parameter to hold the SELECT query result set and invoke the Select operation; microsoft.lobservices.oracledb._2007._03.SCOTT.Table.ACCOUNTACTIVITY.ACCOUNTACTIVITYRECORDSELECT[] selectRecords; selectRecords = aaTableClient.Select("*", null);
WCF クライアントを終了します。
aaTableClient.Close();
上記で使用した Select 操作など、テーブルとビューに対する DML 操作の実行の詳細については、「 WCF サービス モデルを使用した基本的な挿入、更新、削除、および選択操作の実行」を参照してください。
Oracle データベース アダプターを使用した WCF サービスの作成と実装
Oracle データベース アダプターは、Oracle データベース テーブルまたはビューに対してポーリングを実行できます。 この機能を使用すると、アダプターが Oracle データベースに対して定期的に実行する必要がある SQL SELECT クエリを指定できます。 このクエリの結果は、特別な操作 POLLINGSTMT 操作を使用してアプリケーションに返されます。 ポーリング クエリの結果を受け取るには、アプリケーションで、ORACLE データベース アダプターが POLLINGSTMT 操作のために公開するサービス コントラクトを実装する必要があります。
POLLINGSTMT 操作を受け取るサービスを実装するには、まず、POLLINGSTMT 操作のために Oracle Database アダプターによって公開されるサービス コントラクトを表す .NET インターフェイス (WCF サービス コントラクトとも呼ばれます) を生成する必要があります。 これを行う方法の詳細については、「 Oracle Database Artifacts の WCF クライアントまたは WCF サービス コントラクトの生成」を参照してください。
次に、生成されたインターフェイスを実装して WCF サービスを実装します。 このクラスには、POLLINGSTMT メッセージを処理し、アダプターへの応答を返すビジネス ロジックが含まれています。 次に、サービス ホスト (System.ServiceModel.ServiceHost) を使用して、このサービスのインスタンスをホストします。 詳細については、「 WCF サービス モデルを使用したポーリング ベースのデータ変更メッセージの受信」を参照してください。