カスタムの Web サービス クライアント プロキシ クラスに関する考慮事項

更新 : 2007 年 11 月

分散システム デザイナでは、アプリケーションのコンシューマ エンドポイントは、プロバイダ エンドポイントへの構成可能なコネクション ポイントを表します。これらのアプリケーションから構成されたシステム定義のインスタンスを配置する場合、これらのアプリケーション上のコンシューマ エンドポイントには、接続されるプロバイダ エンドポイントのアドレスが設定されます。詳細については、「アプリケーションのエンドポイントの概要」および「アプリケーション システムの概要」を参照してください。

Web サービス コンシューマ エンドポイントの場合は、実行時に接続先の Web サービス プロバイダ エンドポイントの URL を、適切なアプリケーション構成ファイル エントリから取得する "動的な" Web サービス クライアント プロキシ クラスを使用する必要があります。

ms181858.alert_note(ja-jp,VS.90).gifメモ :

実装をサポートするアプリケーションの場合、アプリケーション ダイアグラムからそのアプリケーションを実装するときに、Visual Studio によって、そのアプリケーションの構成ファイルが生成されます。構成ファイルは、アプリケーション プロジェクトの一部として、ソリューション エクスプローラに表示されます。詳細については、「方法 : アプリケーション ダイアグラムでアプリケーションを実装する」を参照してください。

ASP.NET、Windows、および Office の各アプリケーションでは、既定で、アプリケーション デザイナがこれらの Web サービス コンシューマ エンドポイントの Web 参照を生成します。これらの Web 参照は、この後、対応する構成ファイル エントリを持つ適切な動的プロキシ クラスを作成します。

ms181858.alert_note(ja-jp,VS.90).gifメモ :

アプリケーションまたは参照されるクラス ライブラリで静的な Web 参照を使用する場合、これらの Web 参照は、適切に機能していたとしても、アプリケーション デザイナでは検出されず、Web サービス コンシューマ エンドポイントとしての視覚化もされません。このため、配置するときに Web サービスの URL を変更しない場合でも、常に動的 Web 参照を使用することをお勧めします。

次のセクションでは、動的プロキシ クラスの代わりにカスタムの Web サービス クライアント プロキシ クラスを使用することについて詳しく説明します。

  • Web サービス コンシューマ エンドポイントとしてのカスタムの Web サービス クライアント プロキシ クラスの表示

  • Windows アプリケーションおよび Office アプリケーションで使用されるカスタムの Web サービス プロキシ クライアント クラスの構成ファイル エントリ

  • ASP.NET アプリケーションで使用されるカスタムの Web サービス プロキシ クラスの構成ファイル エントリ

  • Visual Studio .NET 2003 の Web 参照およびカスタム プロキシ クラスの移行

Web サービス コンシューマ エンドポイントとしてのカスタムの Web サービス クライアント プロキシ クラスの表示

アプリケーション デザイナでは、Web 参照によって実装される Web サービス コンシューマ エンドポイントのデザインをサポートしています。ただし、適切なエントリがコンシューマ アプリケーションの構成ファイル (App.config または Web.config) にあれば、手動で作成されたカスタム プロキシ クラスをリバース エンジニアリングして、Web サービス コンシューマ エンドポイントとして視覚化することもできます。

Web サービス コンシューマ エンドポイントは、カスタムのプロキシ クラスの Web サービスの URL 設定を表しているとアプリケーション デザイナによって認識された構成ファイルの各エントリに対応するコンシューマ アプリケーションに表示されます。さらに、構成ファイル エントリ内の Web サービスの URL が、アプリケーション ダイアグラム上の既存の Web サービス プロバイダ エンドポイントの URL と一致する場合は、コンシューマ エンドポイントと Web サービス プロバイダ エンドポイント間が接続されて表示されます。一致する Web サービス プロバイダ エンドポイントが存在しなくても、その URL の末尾に "?wsdl" または "?disco" を追加して検索したときに Web サービスの有効な WSDL ファイルが見つかった場合は、外部 Web サービスがアプリケーション ダイアグラムに追加され、Web サービス コンシューマ エンドポイントに接続されます。URL を使用した検索で WSDL ファイルが見つからなかった場合、Web サービス コンシューマ エンドポイントは未接続のままになります。

Web サービスの URL 設定を表す構成ファイル エントリと、それをアプリケーション デザイナが識別する方法は、ASP.NET アプリケーションと Windows アプリケーションまたは Office アプリケーションでは異なります。次のガイドラインでは、どの種類のアプリケーションでも、カスタムのプロキシ クラスを Web サービス コンシューマ エンドポイントとして正しく表示する方法について説明します。

ms181858.alert_note(ja-jp,VS.90).gifメモ :

このガイドラインに従わなくても、実行時に正しく機能するカスタム プロキシ クラスを作成することはできます。しかし、これらのクラスは、Web サービス コンシューマ エンドポイントとして表示されず、アプリケーション ダイアグラム上で接続されず、また、配置時に検証されませんまた、配置レポートでエンドポイントとして報告されず、利用可能な配置ツールを使用したエンドポイントの構成にも利用できません。

Windows アプリケーションおよび Office アプリケーションで使用されるカスタムの Web サービス プロキシ クライアント クラスの構成ファイル エントリ

Windows アプリケーションおよび Office アプリケーションで使用されるカスタム プロキシ クラスの場合、Web サービスの URL 設定が、コンシューマ アプリケーションの App.config 構成ファイルの applicationSettings エントリに表示される必要があります。これらの設定は、設定および制約エディタを使用して表示または編集することはできません。このため、[設定] ペインを使用して、これらの設定を作成または編集する必要があります。このペインは、Windows アプリケーション プロジェクトまたは Office アプリケーション プロジェクトを右クリックし、プロジェクトのプロパティを表示すると開かれます。また、これらの設定を WebServiceURL 型または String 型として指定する必要があります。詳細については、「アプリケーションの設定の管理」を参照してください。

ms181858.alert_note(ja-jp,VS.90).gifメモ :

WebServiceURL 型の指定は、App.config 構成ファイルには表示されませんが、関連付けられている設定ファイルに格納されます。このファイルは、通常は非表示になっています。App.config 構成ファイルに手動で設定を追加する場合は、[設定] ペインで、設定として WebServiceURL 型または String 型の指定を追加する必要があります。

WebServiceURL 型として指定する場合は、[設定] ペインで、設定のスコープとして [アプリケーション] または [ユーザー] を選択できます。スコープを変更すると、エントリが、構成ファイル内の applicationSettings セクションまたは userSettings セクションに移動します。ただし、設定を String 型として指定する場合は、スコープに [アプリケーション] を選択する必要があります。

ms181858.alert_note(ja-jp,VS.90).gifヒント :

App.config ファイルで Web サービスの URL 設定を指定する場合は、Web サービスの説明または WSDL ファイルの場所ではなく、Web サービスの場所を指定します。.asmx ファイル ベースの Web サービスの場合、Web サービスの説明は、通常、WSDL と同じ場所に配置されます。したがって、.asmx ファイル ベースの Web サービスでは、アプリケーション デザイナは、Web サービスの場所は WSDL ファイルの場所と同じであると見なします。WSDL ファイルがその場所にある場合は、外部 Web サービスがアプリケーション ダイアグラムにリバース エンジニアリングされ、リバース エンジニアリングされた Web サービス コンシューマ エンドポイントに接続されます。その場所に有効な WSDL ファイルがない場合は、Web サービス コンシューマ エンドポイントだけがリバース エンジニアリングされます。

設定が String 型として指定されている場合に applicationSettings エントリが Windows プロジェクトの App.config 構成ファイルに表示される例を次に示します。

<applicationSettings>
   <WindowsApplicationName.MySettings>
      <setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
   </WindowsApplicationName.MySettings>
</applicationSettings>

WebServiceURL 型のエントリの場合、設定の名前がプロキシ クラス名である必要はありません。Windows アプリケーションまたは Office アプリケーションに Web サービス コンシューマ エンドポイントを作成するために要求されるのは、この方法で定義され [設定] ペインで WebServiceURL 型または String 型で指定された構成ファイル エントリだけです。これは、カスタム プロキシ クラスがエントリに関連付けられていない場合でも同じです。このようなエンドポイントを削除すると、エントリは削除されますが、それに関連付けられているカスタム プロキシ クラスは削除されません。

ASP.NET アプリケーションで使用されるカスタムの Web サービス プロキシ クラスの構成ファイル エントリ

ASP.NET では、構成ファイル エントリが Web サービスの URL を表すように指定する方法はありません。したがって、アプリケーション デザイナは、構成ファイル エントリの名前とプロキシ クラス名を照合します。次のガイドラインは、ASP.NET アプリケーションで使用されるカスタム プロキシ クラスの構成ファイル エントリに適用されます。

  • Web サービス コンシューマ エンドポイントは、コンシューマ アプリケーション プロジェクトまたは任意の参照プロジェクトまたは参照アセンブリで、名前が一致するプロキシ クラスが見つかった場合のみ表示されます。

  • カスタム プロキシ クラスが ASP.NET アプリケーションだけで使用される場合は、Web サービスの URL が、ASP.NET アプリケーションの Web.config 構成ファイルの appSettings エントリに表示されます。構成ファイル エントリの名前は、プロキシ クラスの完全修飾名である必要があります。Web.config ファイルの appSettings エントリは、設定および制約エディタを使用して編集できます。詳細については、「設定および制約エディタ」および「設定の適用」を参照してください。

  • カスタム プロキシ クラスが、ASP.NET アプリケーションだけでなく Windows アプリケーションまたは Office アプリケーションでも使用される場合は、Web サービスの URL が、ASP.NET アプリケーションの Web.config 構成ファイルの applicationSettings エントリに表示されます。構成ファイル エントリの名前は、プロジェクト名で始まる、プロキシ クラスの完全修飾名である必要があります。これは、自動生成される Web 参照で使用される既定の形式です。Web.config ファイルの applicationSettings エントリは、設定および制約エディタを使用して編集できます。applicationSettings セクションでは、名前の設定でのドット (.) 構文はサポートされていません。代わりにアンダースコア (_) 文字を使用します。

Web.config ファイルに表示される appSettings エントリの例を次に示します。

<appSettings>
   <add key="Namespace.WebServiceProxyClassName" value="https://localhost/WebServiceApplicationName/WebServiceName.asmx"/>
</appSettings>

Web.config ファイルに表示される applicationSettings エントリの例を次に示します。このエントリは、Windows アプリケーションまたは Office アプリケーションの App.config ファイルで使用されるエントリと同じです。

<applicationSettings>
   <WindowsApplicationName.MySettings>
      <setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
   </WindowsApplicationName.MySettings>
</applicationSettings>

カスタム プロキシ クラスを表す Web サービス コンシューマ エンドポイントを削除すると、関連付けられている構成ファイル エントリが削除されますが、関連付けられているプロキシ クラスは削除されません。カスタム プロキシ クラスを削除するか、その名前を変更すると、関連付けられている構成ファイル エントリは削除されませんが、対応するコンシューマ エンドポイントは削除されます。これは、プロキシ クラス、または一致する名前がなくなるからです。名前が一致する Web サービス クライアント プロキシ クラスを追加して戻すか、既存のプロキシ クラスの名前を変更して構成ファイル エントリと同じにすると、エンドポイントが再表示されます。

Visual Studio .NET 2003 の Web 参照およびカスタム Web サービス クライアント プロキシ クラスの移行

Visual Studio .NET 2003 を使用して Windows プロジェクトまたは Office プロジェクトに追加された Web 参照に関連付けられている構成ファイル エントリは、applicationSettings セクションの代わりに、appSettings セクションに格納されます。変換ウィザードを使用して Visual Studio .NET 2003 Windows プロジェクトまたは Office プロジェクトをアップグレードする場合、Web 参照およびカスタム プロキシ クラスは、appSettings セクションから applicationSettings セクションに自動的には移行されません。変換ウィザードの詳細については、「Visual Studio 変換ウィザード」を参照してください。

ただし、Web 参照は、たとえば、対応する Web サービスが変更されるか、手動で Web 参照が更新されるなどで、プロキシ クラスが再生成されるときに自動的に移行されます。新しい設定は、各 Web 参照の applicationSettings セクションに表示され、更新されたプロキシ クラスによって使用されます。applicationSettings セクションが更新された後、対応する Web サービス コンシューマ エンドポイントおよび接続がアプリケーション ダイアグラムに表示されます。詳細については、「方法 : アプリケーション ダイアグラムの Web サービスへの Web 参照を更新する」を参照してください。

カスタム プロキシ クラスの Web サービス コンシューマ エンドポイントを表示する場合は、これらのクラスを手動で移行する必要があります。このタスクを実行するには、applicationSettings セクションが使用されるようにプロキシ クラスを更新し、[設定] ペインを使用して適切な設定を追加します。このペインは、Windows アプリケーション プロジェクトまたは Office アプリケーション プロジェクトのプロパティから表示できます。詳細については、「アプリケーションの設定の管理」を参照してください。

参照

概念

アプリケーションのエンドポイントの概要

アプリケーション ダイアグラムでの ASP.NET アプリケーションの概要

参照

クラス ライブラリ内の Web 参照とカスタム Web サービス クライアント プロキシ クラス

アプリケーションを定義するためのアプリケーションの種類とプロトタイプ

その他の技術情報

アプリケーション ダイアグラムでのアプリケーションの定義