アプリケーション間の通信
更新 : 2007 年 11 月
アプリケーション デザイナでは、エンドポイントを接続することでアプリケーション間の通信経路を設定できます。アプリケーション ダイアグラムでは、接続はコンシューマ エンドポイントの設定に基づき、開発環境でアプリケーションがどのように接続されるかを表します。ただし、開発環境でない場合もあります。実装されたアプリケーションとサポートされる接続の種類について、接続はアプリケーション構成ファイル内に構成設定を作成します。アプリケーション ダイアグラムで接続を変更すると、これらの構成設定も変わります。その反対も同様です。構成ファイルのエントリの基点接続は、プロバイダ エンドポイントのアドレスがコンシューマ アプリケーションにハードコーディングされないようにし、これにより配置時に接続を再設定できるようにします。
ヒント : |
---|
アプリケーション ダイアグラム上の接続は、Visual Studio デバッガを使ってソリューションをデバッグする場合に検証される接続を表します。詳細については、「Visual Studio でのデバッグ」を参照してください。 |
たとえば、ASP.NET アプリケーションの Web サービス プロバイダ エンドポイントをアプリケーション ダイアグラムの別のアプリケーションに接続すると、コンシューマ アプリケーションに Web サービス コンシューマ エンドポイントが作成されます。このコンシューマ エンドポイントは、Web プロバイダ エンドポイントのアドレスで設定されます。
これに対し、システム デザイナで作成されるシステム ダイアグラム上の接続は、システムのインスタンスが配置されるときのアプリケーションの接続方法を記述します。つまりシステム ダイアグラム上の接続は、アプリケーションが配置されるときに Web サービス URL などのプロバイダ エンドポイントのアドレスでコンシューマ エンドポイントを設定するための指示になります。
詳細については、次のトピックを参照してください。
アプリケーション ダイアグラムでの通信経路の設定
アプリケーション ダイアグラムでは、エンドポイントを通じてアプリケーション定義を接続することでアプリケーション間の通信経路を設定できます。アプリケーション エンドポイントは、必要に応じて追加または作成できます。矢印の付いた接続線がダイアグラムに表示され、コンシューマ エンドポイントからプロバイダ エンドポイントへの通信方向を示します。
既定で、アプリケーションが正しく機能するように、アプリケーションのコンシューマ エンドポイントは適切なプロバイダ エンドポイントへの接続を要求します。アプリケーション ダイアグラムでは、コンシューマ エンドポイントの定義にアプリケーション エンドポイントの設定である [接続が必要です] が含まれています。これは True に設定されており、既定で、そのエンドポイントを持つアプリケーションの使用をシステムに含めるときにオーバーライドできません。ただし、アプリケーションの実装で接続を省略できる場合は、エンドポイント定義でこの設定を False に変更したり、そのエンドポイントをシステムのコンテキストに含めるときに設定をオーバーライドしたりできます。それ以外の場合は、コンシューマ エンドポイントを接続するか、関連付けられたアプリケーションが含まれているシステム内にデリゲートする必要があります。
メモ : |
---|
接続が要求されたときに Web サービスのコンシューマ エンドポイントが切断されている場合、関連付けられたアプリケーションを含むシステムの配置を評価すると検証エラーになります。接続が要求されないのは、アプリケーションが既に実装されているため、設定情報なしでアプリケーションを配置して使用できる場合だけです。ただし、これは一般的ではありません。詳細については、「配置ダイアグラムの検証」を参照してください。 |
詳細については、次のトピックを参照してください。
次のセクションでは、アプリケーション ダイアグラムでの接続の詳細について説明します。
Web サービスへの接続
外部データベースへの接続
接続の削除または移動
Web サービスへの接続
アプリケーションおよびシステムのデザイン時に、複数のアプリケーションを 1 つの Web サービス プロバイダ エンドポイントに接続すると、そのコンシューマ アプリケーションは配置時に共通の Web サービス URL で設定されます。開発時に使用する共通の Web サービス URL は、配置時にも使用できます。ただし、Web サービス コンシューマ アプリケーションの使用をシステムに組み込むときにこれらの URL をオーバーライドしたり、配置時にすべてまとめて置き換えたりできます。システムの配置を評価するときに生成される配置レポートには、Web サービス プロバイダとコンシューマの間で URL を反映させる方法に関する情報が示されます。
分散システム デザイナは、SOAP メッセージを使用して通信を行うアプリケーションの種類をサポートします。SOAP とは、拡張可能な XML ベースのメッセージング フレームワークを使用して、分散環境内で構造化情報を変換する軽量プロトコルです。Web サービスは、HTTP-POST や HTTP-GET などの他のプロトコルもサポートできます。ただし、アプリケーション ダイアグラムには SOAP エンドポイントだけが表示され、その他のプロトコルは視覚化されません。アプリケーション ダイアグラムの Web サービス エンドポイントは、HTTP や SOAP バインディングを通じて使用できる 1 つの操作セットから構成されるサービス インターフェイスを表します。ASP.NET アプリケーションは既定で、これらの操作に対して同じアドレスで SOAP 1.1 バインディングと SOAP 1.2 バインディングの両方を提供します。どちらのバインディングもサービスに対して生成される WSDL ファイルの中にありますが、両方の動作が同じ (つまり WSDL ポート タイプが同じ) であれば、アプリケーション ダイアグラムでは 1 つのエンドポイントとして表示されます。
Web 参照を使用して Web サービス クライアントのプロキシ クラスを作成する場合、1 つの操作セットに対して SOAP 1.1 バインディングと SOAP 1.2 バインディングの両方が WSDL ファイルに含まれていると、生成されるプロキシ クラスは既定で SOAP 1.1 バインディングを使用します。SOAP 1.2 バインディングが WSDL ファイル内に存在する場合は、プログラムから、プロキシ クラスがこのバインディングを使用するようにできます。使用されるバインディングのバージョンによって、実行時に転送されるメッセージの形式が変わります。ただし、使用できる操作や、受け渡しできるパラメータには影響しません。SOAP および WSDL の詳細については、MSDN オンラインを参照してください。
詳細については、次のトピックを参照してください。
外部データベースへの接続
アプリケーションを外部データベースに接続するときに、コンシューマ アプリケーションのデータベース コンシューマ エンドポイントのデータベース接続文字列を設定できます。アプリケーションおよびシステムのデザイン時に複数のアプリケーションを 1 つのデータベースに接続すると、共通のデータベースを使用するよう指定され、それが文書化されます。ただし、Web サービスの接続とは異なり、共通のデータベースに接続されるデータベース コンシューマ エンドポイントのデータベース接続文字列が同じである必要はありません。また、物理的に同じデータベースを指定する必要もありません。ただし最良の方法は、接続文字列を同じにする、または同じデータベースを指定することです。
データベース コンシューマ アプリケーションを実装すると、Visual Studio はアプリケーション構成ファイルを含むプロジェクト ファイルを生成します。データベース接続を設定すると、接続文字列の情報がこの構成ファイルに追加されます。ほとんどの場合、これらのデータベース接続文字列は、配置時に実際のデータベースの場所で置き換えられます。通常、開発時に実行用データベースは使用されません。反対に、本稼働時に開発用データベースは使用されません。アプリケーション ダイアグラムで定義された接続文字列の一部は本稼働で使用されることがありますが、コンシューマ アプリケーション定義の使用がシステムのコンテキストに組み込まれると、これらはオーバーライドされます。
詳細については、「方法 : 外部データベースへの接続を構成する」を参照してください。
接続の削除または移動
アプリケーション ダイアグラムで接続を削除しても、アプリケーションのエンドポイントはそのまま残ります。つまり、アプリケーション定義を変更せずに、エンドポイントを再接続したり、互換性のある種類の別のエンドポイントに接続したりできます。詳細については、「アプリケーション ダイアグラムでのアプリケーションの接続規則」を参照してください。
メモ : |
---|
Web サービス エンドポイントに接続または再接続するときに、コンシューマ エンドポイントとプロバイダ エンドポイントの WSDL バインディング名およびバインディング名前空間が一致しない場合は、ツールヒントが表示されます。最良の方法は、WSDL バインディング名とバインディング名前空間を組み合わせて Web サービスのコントラクトまたは動作を定義することです。この警告を無視してエンドポイントに接続できますが、実際にエンドポイントの互換性があることを確認してください。また、Web サービス コンシューマ エンドポイントを別の Web サービス プロバイダ エンドポイントに接続するときは、新しい Web サービス プロバイダ エンドポイントを使ってコンシューマ エンドポイントを更新するか、またはコンシューマ エンドポイントの定義を変更しないでそのまま残すかを確認するメッセージが表示されます。詳細については、「方法 : アプリケーション ダイアグラムで Web サービスに再接続する」を参照してください。 |
接続を削除すると、設定情報がコンシューマ アプリケーションの構成ファイルから削除されます。ただし、コンシューマ エンドポイントで接続が必要な場合、アプリケーションが正しく機能するためには、そのコンシューマ エンドポイントを再接続する必要があります。このためコンシューマ エンドポイントは、一部の情報を保持します。たとえば、Web サービス コンシューマ エンドポイントは、作成元の WSDL ファイルの場所に関する情報を保持します。これは元の対象ファイルの場所と同じですが、必ずしも同じである必要はありません。Web サービス定義または WSDL ファイルが変更された場合は、この情報を利用して Web 参照を更新できます。詳細については、「方法 : アプリケーション ダイアグラムから接続を削除する」を参照してください。
参照
処理手順
チュートリアル : アプリケーション ダイアグラムでのアプリケーションの定義