方法 : アプリケーション ダイアグラムでアプリケーションからクラス ライブラリを参照する
更新 : 2007 年 11 月
アプリケーション デザイナでは、アプリケーションからのクラス ライブラリの参照をアプリケーション ダイアグラムで表すことができます。アプリケーション デザイナでは、アプリケーション ダイアグラムでクラス ライブラリを設計したり、直接表示したりすることはできませんが、ASP.NET Web サービスを、クラス ライブラリで実装される機能のファサードとして使用できます。その後、他のアプリケーションからのクラス ライブラリの参照を、そのアプリケーションから Web サービスへの接続としてリバース エンジニアリングできます。
このタスクは、大きく次の手順に分けることができます。
ASP.NET Web サービスをソリューションに追加し、その Web サービスをクラス ライブラリから参照します。
コンシューマ アプリケーションからクラス ライブラリを参照します。コンシューマ アプリケーションとしては、アプリケーション ダイアグラムに既に存在する (または新たに追加した) ASP.NET アプリケーション、Windows アプリケーション、Office アプリケーションなどがあります。
クラス ライブラリの構成ファイルから適切なエントリをコンシューマ アプリケーションの構成ファイルにコピーします。
以上の手順によって、コンシューマ アプリケーション上の Web サービス コンシューマ エンドポイントおよび ASP.NET Web サービスへの接続がリバース エンジニアリングされます。
ヒント : |
---|
この手法を用いると、クラス ライブラリで定義された Web 参照やカスタム Web サービス クライアント プロキシ クラスを、アプリケーション ダイアグラム上で、Web サービス コンシューマのエンドポイントおよび接続として視覚化することもできます。ただし、アプリケーション デザイナを使用して最初に Web サービス コンシューマのエンドポイントを設計し、次に適切な設定ファイルのエントリを追加して、これらの要素を表すことはできません。詳細については、「クラス ライブラリ内の Web 参照とカスタム Web サービス クライアント プロキシ クラス」を参照してください。 |
クラス ライブラリから Web サービスを参照するには
アプリケーション ダイアグラム (.ad) ファイルを開きます。
ASP.NET Web サービスをダイアグラムに追加します。
ヒント : 詳細については、「方法 : アプリケーション ダイアグラムでアプリケーションを定義する」を参照してください。
他のアプリケーションは、この Web サービスを利用することによって、クラス ライブラリを参照できるようになります。
ダイアグラム上で、既存の Windows アプリケーションまたは ASP.NET アプリケーションをコンシューマ アプリケーションとして選択するか、新しいアプリケーションをコンシューマ アプリケーションとして追加します。
ASP.NET Web サービスおよびコンシューマ アプリケーションがまだ実装されていない場合は、これらを実装します。
メモ : 詳細については、「方法 : アプリケーション ダイアグラムでアプリケーションを実装する」を参照してください。クラス ライブラリに Web サービス参照を追加するには、あらかじめ ASP.NET Web サービスを実装しておく必要があります。コンシューマ アプリケーションは、後でその構成ファイルを編集できるように実装されている必要があります。
コンシューマ アプリケーションは、クラス ライブラリの機能を使用して Web サービスを呼び出します。
必要に応じて、新規または既存のクラス ライブラリ プロジェクトをソリューションに追加します。
メモ : Web 参照を追加したときに、適切な構成ファイル エントリを追加できるよう、クラス ライブラリ プロジェクトには App.config ファイルが存在する必要があります。
クラス ライブラリ、ASP.NET Web サービス、またはコンシューマ アプリケーション プロジェクトに構成ファイルが存在しない場合は、適切な構成ファイル (App.config または Web.config) をクラス ライブラリ プロジェクトに追加します。
ヒント : 構成ファイルを追加するには、ソリューション エクスプローラで該当するプロジェクト ノードを選択し、[プロジェクト] メニューの [新しい項目の追加] を選択した後、[新しい項目の追加] ダイアログ ボックスで [アプリケーション構成ファイル] または [Web 構成ファイル] を選択します。
ソリューション エクスプローラで、クラス ライブラリ プロジェクト ノードを選択し、[プロジェクト] メニューの [Web 参照の追加] をクリックします。
[Web 参照の追加] ダイアログ ボックスで、[このソリューションの Web サービス] をクリックし、作成した Web サービスを選択して [参照の追加] をクリックします。
ソリューション エクスプローラのクラス ライブラリ プロジェクトにある [Web 参照] フォルダに、Web サービス参照が追加されます。
ソリューション エクスプローラでクラス ライブラリ プロジェクト ノードを選択し、[ビルド] メニューの [<ClassLibraryName> のビルド] をクリックします。
ヒント : プロジェクト ノードを右クリックし、[ビルド] をクリックすることもできます。新しい Web 参照を追加した後、クラス ライブラリをビルドし直します。これは、構成ファイルのエントリをコピーしたり、クラス ライブラリの参照を追加したりする前に行う必要があります。クラス ライブラリを最後の手順 (つまり、構成ファイルのエントリをコピーし、クラス ライブラリの参照をコンシューマ アプリケーションに追加した後) でビルドすると、Visual Basic のクラス ライブラリに含まれる Web サービス参照をリバース エンジニアリングできない場合があります。詳細については、「アプリケーション ダイアグラムのトラブルシューティング」を参照してください。
これで、クラス ライブラリの参照をコンシューマ アプリケーションに追加する準備ができました。
ヒント : |
---|
構成ファイルがクラス ライブラリ プロジェクトに存在しない場合、またはクラス ライブラリ プロジェクトに Web 参照を追加した後で構成ファイルを削除した場合、新しい構成ファイルをプロジェクトに追加できます。ただし、構成ファイルに対して Web 参照が自動的に追加されるわけではありません。いったんプロジェクトから Web 参照を削除した後、再びプロジェクトに追加すると、追加した Web 参照のエントリを含む新しい構成ファイルが作成されます。 |
コンシューマ アプリケーションからクラス ライブラリを参照するには
ソリューション エクスプローラで、コンシューマ アプリケーションのプロジェクト ノードを選択し、次のいずれかを選択します。
Windows アプリケーションまたは Office アプリケーションの場合は、[プロジェクト] メニューの [参照の追加] をクリックします。
ASP.NET アプリケーションの場合は、[Web サイト] メニューの [参照の追加] をクリックします。
ヒント : ルート プロジェクト ノードを右クリックし、[参照の追加] をクリックすることもできます。
[プロジェクト] タブで、クラス ライブラリ プロジェクトをクリックし、[OK] をクリックします。
クラス ライブラリの構成ファイルのエントリをコンシューマ アプリケーションの構成ファイルにコピーするには
クラス ライブラリ プロジェクトの App.config ファイルと、コンシューマ アプリケーション プロジェクトの構成ファイルを開きます。
クラス ライブラリの App.config ファイルの <configSections> セクションおよび <applicationSettings> セクションから、次のエントリをコピーします。
メモ : コピー先の構成ファイルに <configSections> タグまたは <applicationSettings> タグが存在しない場合は、タグも含めてコピーしてください。複数のクラス ライブラリのエントリをコピーする場合は、"applicationSettings" という名前の <sectionGroup> タグを 1 セットだけコピーするようにします。
<configSections> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=VersionNumber, Culture=neutral, PublicKeyToken=b77a5c561934e089"><section name="ClassLibraryName.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /></sectionGroup> </configSections> <applicationSettings> <ClassLibraryName.Settings> <setting name="ClassLibraryName_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting></ClassLibraryName.Settings> </applicationSettings>
コピーしたエントリを、コンシューマ アプリケーションの構成ファイルの <configuration> セクション (<configuration> タグの直後) に貼り付けます。
ソリューション エクスプローラで、ルート ソリューション ノードを選択し、[ビルド] メニューの [ソリューションのビルド] をクリックします。
ヒント : ルート ソリューション ノードを右クリックし、[ソリューションのビルド] をクリックすることもできます。
アプリケーション ダイアグラム上で、コンシューマ アプリケーションの Web サービス コンシューマ エンドポイントがリバース エンジニアリングされ、ASP.NET Web サービスに接続されます。
次の状況では、Web サービス参照が正しくリバース エンジニアリングされない場合があります。
Windows プロジェクトと ASP.NET Web プロジェクトの両方が同じクラス ライブラリを参照している場合、Web サービスの参照が正しくリバース エンジニアリングされません。
この状況を解決するには、アプリケーション ダイアグラムを閉じ、Windows プロジェクトおよび ASP.NET Web プロジェクトから共有クラス ライブラリへの参照を削除します。まず、ASP.NET Web プロジェクトにクラス ライブラリの参照を追加してからアプリケーション ダイアグラムを開き、次に、Windows プロジェクトにクラス ライブラリの参照を追加します。詳細については、「アプリケーション ダイアグラムのトラブルシューティング」を参照してください。
コンシューマ アプリケーションが複数のクラス ライブラリを参照しており、それぞれのライブラリに異なる Web サービスへの Web 参照が含まれる場合、Visual Basic のクラス ライブラリに含まれる Web サービス参照は正しくリバース エンジニアリングされません。
この状況を解決するには、関係するクラス ライブラリのすべての Web 参照を更新します。関係する個々のクラス ライブラリの各 Web 参照を右クリックし、[Web 参照の更新] を選択して、ソリューション全体をビルドし直します。新しい Web 参照を追加して、対応するクラス ライブラリをビルドし直した後、ソリューション全体を再度ビルドすると、これらの Web 参照がリバース エンジニアリングされます。
参照
処理手順
概念
アプリケーション ダイアグラムでの ASP.NET アプリケーションの概要