チュートリアル : トップダウン アプローチによるアプリケーション システムのデザイン
更新 : 2007 年 11 月
このチュートリアルでは、トップダウン アプローチを使用してアプリケーション システムをデザインする方法を説明します。
このチュートリアルでは次のタスクを行います。
新しいシステム デザイン ソリューションを作成する。
システム定義の動作を Web サービスとして表現し、公開する。
新しい Web サービスの操作を定義する。
システム定義にメンバとして 2 つの新しいシステムを追加する。
新しいシステムの名前を変更する。
システム定義のメンバに Web サービスを追加する。
システム定義の 2 つのシステムを接続する。
システム定義の動作をメンバにデリゲートする。
システム定義のメンバのデザインを続行する。
基になるアプリケーション定義を実装する。
新しいシステム デザイン ソリューションを作成する
トップダウン アプローチによってシステムのデザインを開始します。このタスクを行うには、新しいシステム デザイン ソリューションを作成します。既定では、このソリューションには空のシステム ダイアグラムとアプリケーション ダイアグラムが含まれています。システム ダイアグラムには空のシステム定義が表示されます。アプリケーション ダイアグラムには、システム定義にメンバとして追加するアプリケーションの定義が表示されています。
新しいシステム デザイン ソリューションを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] で [分散システム] をクリックします。
[テンプレート] で [システム デザイン] をクリックします。
ソリューションに StoreFrontSystem という名前を付けます。
ソリューションを保存する場所を入力します。
Visual Studio において、ソリューションが作成されます。システム デザイナが開き、システム ダイアグラムが表示されます。バックグラウンドでアプリケーション デザイナにアプリケーション ダイアグラムが表示されます。
次に、システム定義の動作を Web サービスとして表現し、公開します。
システム定義の動作を Web サービスとして表現し、公開する
システム定義の動作を Web サービスとして表現し、公開します。このタスクを行うには、システム定義に .NET Web サービス プロバイダ エンドポイントを追加します。この操作によって、このシステムを他のシステム定義のメンバに接続することもできます。
システム定義に Web サービスを追加するには
システム ダイアグラム上の StoreFrontSystem をクリックします。
[ダイアグラム] メニューの [追加] をポイントし、[エンドポイント] をポイントして、[.NETWebServiceEndpoint] をクリックします。
StoreFrontSystem に WebService1 という名前の .NET Web サービス プロバイダ エンドポイントが表示されます。
StoreFrontSystem 上の WebService1 をクリックします。
[表示] メニューの [プロパティ ウィンドウ] をクリックします。
[プロパティ] ウィンドウが表示されます。
[プロパティ] ウィンドウの [名前] プロパティで、エンドポイントに CatalogService という名前を付けます。
メモ :
システム定義に追加したエンドポイントは、その定義の他のシステム定義におけるユースにも表示されます。システム定義からエンドポイントを削除する場合は、その定義の他のシステム定義におけるすべてのユースからそのエンドポイントを削除します。
次に、CatalogService の Web サービスの操作とそのパラメータを定義します。
新しい Web サービスの操作を定義する
[Web サービスの詳細情報] ウィンドウを使用して CatalogService Web サービスの操作を定義します。操作は、メソッド名、パラメータ、その他の Web サービスの操作に関連する情報によって定義します。
![]() |
---|
Visual Studio では、システム定義上の Web サービス エンドポイントの言語は、既定では Visual Basic に設定されます。このエンドポイントの実際に実装する言語は、エンドポイントの動作をアプリケーションにデリゲートするときに選択します。 |
Web サービス エンドポイントに操作を追加するには
StoreFrontSystem 上の CatalogService エンドポイントをクリックします。
[ダイアグラム] メニューの [操作の定義] をクリックします。
[Web サービスの詳細情報] ウィンドウが表示されます。
[Web サービスの詳細情報] ウィンドウで、[<操作の追加>] をクリックし、GetCatalog という操作を追加して、Tab キーを押します。
[型] ボックスに「Catalog」と入力し、Enter キーを押します。
メモ :
Catalog は、エンドポイントを ASP.NET Web アプリケーションにデリゲートし、そのアプリケーションを実装した後で定義できるカスタム型です。
操作ノードを展開し、[<パラメータの追加>] をクリックし、CatalogName パラメータを追加して、Tab キーを押します。
[型] ボックスに「String」と入力し、Tab キーを押します。
メモ :
Visual Studio では、[型] ボックスに文字を入力し始めると、使用できる型の一覧が表示されます。
[修飾子] ボックスで [ByVal] を選択し、Enter キーを押します。
次に、StoreFrontSystem に新しいメンバを追加します。
システム定義にメンバとして 2 つの新しいシステムを追加する
StoreFrontSystem システム定義にメンバとして 2 つの新しいシステムを追加します。Visual Studio では、システム定義に追加した各システムについて、新しいシステム ダイアグラム (.sd) ファイルがソリューションに追加されます。各システム ダイアグラムには、対応するシステムの定義が含まれています。
システム定義に新しいシステムを追加するには
システム ダイアグラム上の StoreFrontSystem をクリックします。
[ダイアグラム] メニューの [追加] をポイントし、[システム] をポイントして、[Blank System] をクリックします。
System1 という新しいシステムが StoreFrontSystem 内にメンバとして表示されます。新しいシステム ダイアグラム (.sd) ファイルがソリューションに表示され、バックグラウンドで開きます。
2 つ目の空のシステム System2 を追加します。
次に、新しいメンバの名前を変更します。
新しいシステムの名前を変更する
2 つの新しいシステムとその基になる定義の名前を変更します。
新しいメンバの名前を変更するには
StoreFrontSystem 内の System1 をクリックします。
[ダイアグラム] メニューの [名前の変更] をクリックします。
[名前の変更] ダイアログ ボックスが表示されます。
[名前の変更] ダイアログ ボックスの [定義名の変更] チェック ボックスをオンにします (オンになっていない場合)。
[メンバ名] ボックスに「OrderSystem」と入力し、[OK] をクリックします。
メンバとその定義に新しい名前が表示されます。
メモ :
Visual Studio では、基になる定義が含まれるダイアグラム ファイルの名前は自動的に更新されません。
System2 の名前を CatalogSystem に変更します。
次に、メンバの動作を Web サービスとして表現し、公開します。
システム定義のメンバに Web サービスを追加する
StoreFrontSystem のメンバの動作を Web サービスとして表現し、公開します。このタスクを行うには、新しいメンバに .NET Web サービス プロバイダ エンドポイントを追加します。この操作によって、メンバを StoreFrontSystem の他のメンバに接続することもできます。
メンバに Web サービスを追加するには
OrderSystem システムをクリックします。
[ダイアグラム] メニューの [追加] をポイントし、[.NETWebServiceEndpoint] をクリックします。
OrderSystem とその基になる定義に WebService1 という名前の .NET Web サービス プロバイダ エンドポイントが表示されます。
OrderSystem 上の WebService1 をクリックします。
[プロパティ] ウィンドウの [名前] プロパティで、エンドポイントに OrderService という名前を付けます。
メモ :
エンドポイントをメンバに追加すると、そのエンドポイントはメンバの基になる定義にも表示されます。さらに、その定義の他のシステム定義におけるユースにも、このエンドポイントが表示されます。メンバに追加したエンドポイントは、そのメンバから直接削除することはできません。エンドポイントをメンバから削除するには、そのメンバの定義からエンドポイントを削除する必要があります。この場合、その定義のすべてのユースでもエンドポイントが削除されます。この操作が必要であることは、メンバの定義にこのような変更を加えると、その定義の他のシステム定義でのユースに影響することを示しています。
次に、StoreFrontSystem のメンバ間の通信経路を定義します。
システム定義の 2 つのシステムを接続する
システム定義のメンバ間の配置時における通信経路を定義します。このタスクを行うには、StoreFrontSystem 内の 2 つのシステムを接続します。この接続では、2 つのシステム間におけるプロバイダとコンシューマの関係を指定します。
システム定義のメンバどうしを接続するには
OrderSystem 上の OrderService エンドポイントをクリックします。
[ダイアグラム] メニューの [接続] をクリックします。
[接続の作成] ダイアログ ボックスが表示されます。
[接続先] の [メンバ] 一覧から [CatalogSystem] を選択し、[OK] をクリックします。
OrderSystem と CatalogSystem の間に接続が表示されます。CatalogSystem には Web サービス コンシューマ エンドポイントも表示され、OrderService に接続されます。このコンシューマ エンドポイントは、CatalogSystem の基になる定義にも表示されます。
次に、StoreFrontSystem システム定義の動作をそのメンバの 1 つにデリゲートします。
システム定義の動作をメンバにデリゲートする
配置時にシステム定義の動作を提供するメンバを選択します。このタスクを行うには、システム定義の動作をそのメンバの 1 つにデリゲートします。ここでは、CatalogService Web サービスの動作を CatalogSystem にデリゲートします。この操作によって、システム定義上の Web サービス エンドポイントがプロキシ エンドポイントに置き換えられます。Web サービス エンドポイントが再びメンバに表示されます。両方のエンドポイントが相互に接続されます。
![]() |
---|
Web サービス エンドポイントは、CatalogSystem の定義に属しているため、このメンバの基になる定義にも表示されます。 |
システム定義の動作をメンバにデリゲートするには
StoreFrontSystem 上の CatalogService をクリックします。
[ダイアグラム] メニューの [デリゲート] をクリックします。
[システム メンバに動作をデリゲートする] ダイアログ ボックスが表示されます。
[デリゲート先] の [メンバ] の一覧から [CatalogSystem] を選択し、[OK] をクリックします。
CatalogSystem に CatalogService が表示されます。CatalogService の元の位置に同じ名前のプロキシ エンドポイントが表示されます。このプロキシ エンドポイントは CatalogService と接続され、その動作をシステムの外部に公開します。
システム定義のメンバのデザインを続行する
StoreFrontSystem のメンバを引き続きデザインします。このタスクを行うには、CatalogSystem と OrderSystem の定義に ASP.NET Web アプリケーションを追加します。これらのアプリケーションが追加先のシステム定義の動作を提供します。次に、これらのアプリケーションにシステム定義の動作をデリゲートします。
システム定義のメンバのデザインを続行するには
システム ダイアグラムで CatalogSystem をクリックします。
[ダイアグラム] メニューの [システム デザイナで開く] をクリックします。
CatalogSystem の定義が含まれるシステム ダイアグラムが開きます。
[ダイアグラム] メニューの [追加] をポイントし、[アプリケーション] をポイントして、[ASP.NETWebService] をクリックします。
CatalogSystem 内に WebApplication1 という新しい ASP.NET Web アプリケーションが表示されます。Visual Studio では、このアプリケーションの定義はソリューションのアプリケーション ダイアグラムにも追加されます。
WebService1 エンドポイントを削除します。
アプリケーションに CatalogManager という名前を付けます。
CatalogSystem 上の CatalogService をクリックし、[ダイアグラム] メニューの [デリゲート] をクリックします。
[システム メンバに動作をデリゲートする] ダイアログ ボックスが表示されます。
[デリゲート先] で [CatalogManager] を選択し、[OK] をクリックします。
CatalogManager に CatalogService が表示されます。後で CatalogManager の定義を実装し、CatalogService の動作を引き続きコードで定義します。
CatalogSystem 上のコンシューマ エンドポイントをクリックします。
コンシューマ エンドポイントを CatalogManager にデリゲートします。
これで、CatalogManager が CatalogSystem の外部と通信できるようになります。
StoreFrontSystem.sd ドキュメントのタブをクリックして StoreFrontSystem のシステム ダイアグラムを表示します。
OrderSystem についても手順 1. ~ 3. を実行し、アプリケーションに OrderManager という名前を付けます。
OrderService エンドポイントを OrderManager にデリゲートします。
StoreFrontSystem.sd ドキュメントのタブをクリックして StoreFrontSystem のシステム ダイアグラムを表示します。
これで、CatalogSystem 内の CatalogManager アプリケーションが OrderSystem 内の OrderManager アプリケーションと各システムのプロキシ エンドポイントを介して通信できるようになります。さらに、CatalogManager が StoreFrontSystem の動作をこのシステムのプロキシ エンドポイントから提供します。
基になるアプリケーション定義を実装する
引き続き CatalogSystem と OrderSystem の動作を定義します。このタスクを行うには、CatalogSystem と OrderSystem の基になる定義を接続してから、それらの定義を実装します。アプリケーション定義を実装すると、Visual Studio ではソリューションにプロジェクトが生成され、それらの動作を引き続きコードで定義できます。
![]() |
---|
アプリケーション定義は、実装の前に接続することが必要です。これにより、Visual Studio が、必要とするすべての Web サービス クライアント プロキシ クラスを正しく生成できるようになります。 |
アプリケーション定義を接続し、実装するには
StoreFrontSystem.ad ドキュメントのタブをクリックしてアプリケーション ダイアグラムを表示します。
アプリケーション デザイナに表示されるアプリケーション ダイアグラムには、CatalogManager と OrderManager のアプリケーション定義が含まれています。
CatalogManager 上のコンシューマ エンドポイントを OrderManager 上の OrderService エンドポイントに接続します。
メモ :
Visual Studio では、システム定義内のアプリケーション定義のユースを接続しても、アプリケーション定義は接続されません。システム ダイアグラム上の接続が配置環境での通信経路を表すのに対し、アプリケーション ダイアグラム上の接続は開発環境での通信経路を表します。
[プロパティ] ウィンドウで、CatalogManager および OrderManager の [テンプレート] プロパティを [ASP.NET Web アプリケーション] に設定します。
[ダイアグラム] メニューの [実装] をポイントし、[すべてのアプリケーションを実装] をクリックします。
Visual Studio にはソリューションに対応するプロジェクトが生成されるので、CatalogManager および OrderManager を引き続きコードで定義できます。