WCF サービス モデルを使用して Oracle Database アプリケーションを開発する

最も低いレベルでは、Windows Communication Foundation (WCF) は、クライアントとサービス エンドポイントの間で確立されたチャネルを介して SOAP メッセージを交換することで、クライアントがサービスに対する操作を呼び出すプログラミング モデルを示します。 WCF チャネル モデルと呼ばれるこのモデルは、WCF チャネル アーキテクチャで直接操作できるデータ型とメソッドを公開します。 WCF チャネル モデルを使用すると、作成する SOAP メッセージの内容を直接制御し、アプリケーションと Oracle Database アダプターの両方で使用する方法を直接制御できます。ただし、チャネル経由で送信する整形式の SOAP メッセージを作成し、返される応答メッセージを検証することは、詳細で正確なタスクになる可能性があります。

このため、WCF には、WCF サービス モデルと呼ばれる別のプログラミング モデルが用意されています。 WCF サービス モデルでは、プロキシ クラスを使用してターゲット サービスに対する操作を呼び出すか、クライアントから操作を受信します。

  • ターゲット サービスに対する操作を呼び出すために使用されるプロキシ クラスは、WCF クライアント クラスと呼ばれます。 このクラスは、サービスによって公開される操作を、厳密に型指定されたパラメーターを持つ .NET メソッドとしてモデル化します。 WCF サービス モデルを使用すると、Oracle Database アダプターによって公開される操作を、WCF クライアント上の .NET メソッドとして呼び出すことができます。 WCF クライアントの詳細については、「WCF クライアントの概要」 https://go.microsoft.com/fwlink/?LinkId=91458を参照してください。

  • WCF サービス モデルでは、サービスによって公開されるサービス コントラクトは インターフェイスによって表されます。 このサービス コントラクトのマネージ コード表現は、WCF サービス コントラクトと呼ばれます。 WCF サービス コントラクトは、厳密に型指定されたパラメーターを持つメソッドとして操作をモデル化します。 クライアントから操作を受信するには、このインターフェイスから WCF サービスというクラスを実装します。 その後、 System.ServiceModel.ServiceHost でこのクラスのインスタンスをホストして、クライアントがコードで操作を呼び出せるようにすることができます。 WCF サービス モデルと POLLINGSTMT 操作を対象とする WCF サービス コントラクトを使用すると、Oracle データベース アダプターを使用して Oracle データベースに対するポーリング操作の結果を受け取ることができます。

    ツールを使用して、WCF クライアント クラスまたは WCF サービス コントラクトと、Oracle Database アダプターが公開するサービス メタデータから関連するヘルパー コードを生成します。 次のいずれかのツールを使用できます。

  • WCF に付属する ServiceModel メタデータ ユーティリティ ツール (svcutil.exe)

  • Oracle Database アダプターに付属するアダプター サービス参照 Visual Studio プラグインの追加

    アダプター サービス参照の追加プラグインは、Visual Studio のデザイン エクスペリエンスと統合されており、アダプターによって公開される操作に対して強力な閲覧と検索機能を提供する標準の Microsoft Windows インターフェイスを提供します。 WCF クライアントまたは WCF サービス コントラクトを生成する方法の詳細については、「 Oracle データベース ソリューション成果物の WCF クライアントまたは WCF サービス コントラクトを生成する」を参照してください。

    .NET プログラマにとってなじみのあるモデルであり、チャネルを介した SOAP メッセージ交換の根本的な複雑さを隠しているため、多くの場合、WCF サービス モデルは Oracle Database アダプター用のプログラミング ソリューションを開発するのに最適な選択肢です。 ただし、WCF チャネル モデルの方が適している可能性があるシナリオがあります。 たとえば、WCF サービス モデルでは、ReadLOB 操作のストリーミングのみがサポートされます。 これは、SOAP メッセージ内のオブジェクトの XML 表現と、サービス モデルでオブジェクトを表すために使用される .NET 型との間でシリアル化と逆シリアル化を行う場合、メッセージ全体をメモリに読み取る必要があるためです。 (ReadLOB 操作の結果は、このルールの例外です)。

    WCF チャネル モデルでは、すべての操作で XML ノード レベルのストリーミングがサポートされ、ReadLOB 操作と UpdateLOB 操作ではデータ レベルのストリーミングがサポートされます。 大きな結果セットを返すクエリを処理している場合、またはテーブル内の LOB フィールドを更新しようとしている場合は、WCF チャネル モデルの方が適している可能性があります。 WCF チャネル モデルの使用の詳細については、「WCF チャネル モデルを 使用した Oracle データベース アプリケーションの開発」を参照してください。

    このセクションのトピックには、Oracle Database アダプターを使用して WCF サービス モデルを作成および使用してアプリケーションを開発するのに役立つ情報、手順、および例が含まれています。

このセクションの内容