RIA Services ソリューションの作成
WCF RIA サービス を使用すると、ビジネス アプリケーションの作成時にさまざまなシナリオに対応するソリューションを作成できます。このようなシナリオには、ごく初歩的なものから非常に複雑なものまでさまざまあります。たとえば、初歩的なシナリオは、中間層のわずかなドメイン サービスのみにアクセスする単一の Silverlight アプリケーションで構成されている場合があります。より複雑なシナリオには、多くのドメイン サービスを公開する一般的な中間層レイヤーにすべてリンクされている複数の Silverlight アプリケーションが含まれる場合があります。ここでは、RIA サービス ソリューションを作成および管理する際に発生する問題について説明します。また、次のような質問についても取り上げます。
RIA サービス ソリューションを構成するさまざまな方法にはどのようなものがあるか。
特定のシナリオに最も適しているのはどの構造か。
ソリューションのトラブルシューティングはどのように行うか。
ソリューションはどのように配置するか。
また、ここでは、RIA サービス に関連する多くの一般的なシナリオに関連したタスクについて説明する、このセクションに含まれているチュートリアルや他のトピックのガイダンスも紹介しています。このセクションには、次の 5 つのチュートリアルがあります。
また、このセクションには、次の 3 つのトピックがあります。
RIA サービス リンクの管理については、「方法: RIA Services リンクを追加または削除する」を参照してください。
ダイアログ ボックス内の UI 要素については、「ドメイン サービス ウィザードの使用」を参照してください。
RIA サービス ソリューションの作成で問題が発生したときの対処方法のガイダンスについては、「Debugging a RIA Services Solution」を参照してください。
RIA サービス のドキュメントのこのセクションで紹介されているチュートリアルでは、WCF RIA サービス および WCF RIA サービス Toolkit に加え、Visual Studio 2010、Silverlight の開発者向けランタイムと SDK など、前提条件となっているいくつかのプログラムが正しくインストールおよび構成されている必要があります。また、SQL Server 2008 R2 Express with Advanced Services をインストールして構成し、AdventureWorks OLTP と LT データベースをインストールすることも必要です。
これらの各前提条件を満たしているかどうかを確認するための詳細な手順については、「WCF RIA Services の前提条件」ノード内のトピックを参照してください。トピックに記載されている手順に従って、このセクションにある RIA サービス のチュートリアルを実行するときに発生する問題をできるだけ最小限に抑えるようにします。
RIA Services リンク
すべての RIA サービス ソリューションでは、Silverlight プロジェクトとそれに関連付けられた中間層プロジェクトとの間にリンク (RIA サービス とも呼ばれます) が存在します。RIA サービス リンクは特殊な形式のプロジェクト間参照で、これにより、中間層のコードからプレゼンテーション層コードを生成することが容易になります。RIA サービス リンクを作成するには、新しい Silverlight プロジェクトを作成するときに [WCF RIA サービスを有効にする] チェック ボックスをオンにします。また、既存のプロジェクトの RIA サービス リンクは、プロジェクトのプロパティでも作成できます。RIA サービス リンクは、以下のセクションで説明するように、アプリケーション プロジェクト間に作成する場合もあれば、クラス ライブラリ プロジェクト間に作成する場合もあります。
プロジェクト間にリンクが存在すると、Silverlight プロジェクトは、中間層のコードにアクセスできるようにするプロキシ クラスを受け取ります。中間層の特定の部分だけが Silverlight プロジェクトに適用されるように指定する方法はありません。RIA サービス リンクを使用する場合は、次の規則が適用されます。
リンクは Silverlight クライアント プロジェクトで定義します。
リンクは常に Silverlight クライアント プロジェクトから .NET サーバー プロジェクトまたはクラス ライブラリに向かいます。
リンクは Silverlight クライアント プロジェクトごとに 1 つしか存在できません。
リンクは他の Silverlight クライアント プロジェクトを指すことができません。
複数の Silverlight クライアント プロジェクトは同じサーバー プロジェクトまたはクラス ライブラリを指すことができます。
Silverlight アプリケーションは直接クラス ライブラリ プロジェクトにリンクできません。
RIA サービス リンクの管理の詳細については、このセクションの「方法: RIA Services リンクを追加または削除する」を参照してください。
既定のソリューション構造
既定のソリューション構造では、RIA サービス によって 1 つのクライアント プロジェクトと (1 つの) サーバー プロジェクトが作成されます。Silverlight アプリケーション テンプレートを使用して新しいプロジェクトを作成し、[WCF RIA サービスを有効にする] チェック ボックスをオンにすると、この既定の構造を使用したソリューションが作成されます。RIA サービス リンクはその 2 つのプロジェクト間に既に存在します。ソリューションをビルドすると、ドメイン サービスおよび共有コードに対してクライアント コードが生成されます。既定のソリューション構造を次の図に示します。
ソリューションをビルドすると、サーバー プロジェクトに追加されたすべてのドメイン サービスの種類と共有コードが自動的に Silverlight クライアント プロジェクトで使用できるようになるため、既定のソリューション構造は便利です。また、サーバー プロジェクトに追加した共有コードは、クライアント プロジェクトにも表示されます。この構造は、サーバー プロジェクト内のドメイン サービスがそれほど多くなく、多く異なる Silverlight アプリケーションでビジネス ロジックを再利用する必要がない場合に適しています。
既定の構造を使用したソリューションでは、RIA サービス リンクが設定された Silverlight アプリケーションをさらにサーバー プロジェクトに追加できます。ただし、既定の構造には制限があります。各 Silverlight クライアント用に生成されたコードは、サーバー プロジェクトからすべての中間層コードにアクセスできます。たとえば、3 つの Silverlight アプリケーションが 1 つのサーバー プロジェクトにリンクされていて、その Silverlight アプリケーションのうち 1 つだけで使用されるドメイン サービスを追加した場合、3 つのクライアント アプリケーションすべてで、追加したドメイン サービス用にドメイン コンテキストが生成され、そのドメイン サービスにアクセスできるようになります。
Visual Studio 2010 で RIA サービス ソリューションを作成する方法の詳細については、「チュートリアル: RIA Services ソリューションの作成」を参照してください。クライアント プロジェクト用に生成されるコードの詳細については、「クライアント コード生成」を参照してください。
Silverlight ビジネス アプリケーション テンプレート
RIA サービス には、Silverlight ビジネス アプリケーション テンプレートも用意されています。このテンプレートは、クライアントに Silverlight を使用するビジネス アプリケーションを構築する際の開始点として便利です。このテンプレートは、Silverlight ナビゲーション アプリケーションに基づいており、RIA サービス を使用して認証およびユーザー登録をサポートします。Silverlight ビジネス アプリケーション テンプレートを使用してプロジェクトを作成すると、RIA サービス によって、既定の構造を使用したソリューションが作成されます。Silverlight ビジネス アプリケーション テンプレートでは、次の機能が自動的に追加されます。
ログイン ウィンドウ
登録ウィンドウ
Silverlight Navigation
ビジネス アプリケーションの既定の認証モードはフォーム認証です。Windows 認証を使用するには、Web.config ファイル内の認証要素の値 (<authentication mode="Windows"/>
など) を変更し、生成された WebContext クラスの Authentication プロパティの値を変更するだけです。ビジネス アプリケーション テンプレートには、フォーム認証または Windows 認証をサポートするコードが自動的に含まれます。詳細については、「チュートリアル: Silverlight ビジネス アプリケーション テンプレートの使用」を参照してください。
サーバー プロジェクトの Services フォルダーには、ユーザー登録とユーザー認証を公開するドメイン サービスが含まれています。ユーザー登録サービスでは、ASP.NET メンバーシップ プロバイダーを使用して新しいユーザーを作成します。サーバー プロジェクトでは、Models という名前のフォルダーに、ユーザーおよび登録データのプロパティを定義するためのクラスが含まれています。これらのクラスにプロパティを追加して、アプリケーションのユーザー データをカスタマイズできます。
クライアント プロジェクトでは、ビジネス アプリケーションに、プレゼンテーション層の開発を簡素化するコードが含まれています。Libs フォルダーおよび Controls フォルダーには、テンプレート内で使用されているアセンブリおよびコントロールが含まれています。(Views フォルダー内にある) Login フォルダーには、認証とユーザー登録のコントロールが含まれています。これらのコントロールは、プロジェクトで自動的に有効になります。(Assets フォルダーにある) Resources フォルダーには、プロジェクト内のテキストのリソース文字列が含まれています。アプリケーションにテキストを追加すると、アプリケーションの文字列のファイルにそのテキストを追加できます。
詳細については、「チュートリアル: Silverlight ビジネス アプリケーション テンプレートの使用」を参照してください。
n 層のクラス ライブラリ コンポーネントのサポート
RIA サービス では、WCF RIA Services クラス ライブラリというプロジェクトの種類が用意されており、ライブラリ間のコードの共有をサポートします。クラス ライブラリを使用することで、再利用可能な n 層のクラス ライブラリ コンポーネントにビジネス ロジックをパッケージします。
RIA Services クラス ライブラリを使用するソリューション構造を次の図に示します。
この図では、アプリケーション プロジェクト間に RIA サービス リンクは存在していません。代わりに、クラス ライブラリ プロジェクト間にリンクが存在します。アプリケーションでは多くのクラス ライブラリを使用でき、多数のアプリケーションではクラス ライブラリを再利用できます。
RIA サービス クラス ライブラリの使用には、次の利点があります。
1 つのドメインのデータのサーバー部分とクライアント部分は、1 つのコンポーネントとして開発されパッケージ化されます。このコンポーネントは複数のアプリケーションで再利用できます。
クライアント プロキシ コードの生成とソース コードの共有は 1 か所のみで行われます。この場所は、コンポーネントの層の間にあり、すべての Silverlight アプリケーションに存在するわけではありません。
1 つの Web アプリケーション プロジェクト内の複数の Silverlight アプリケーションは、必要なクラス ライブラリだけを参照できます。このように、Silverlight クライアントは、中間層で公開されるすべてのビジネス ロジックを参照する必要はありません。
RIA サービス クラス ライブラリを使用すると、アプリケーションに必要なコンポーネントだけを提供する柔軟なソリューション構造を構築できます。複数の RIA サービス クラス ライブラリを使用するソリューション構造を次の図に示します。
注 : |
---|
Silverlight ビジネス アプリケーション プロジェクトにクラス ライブラリ プロジェクトを追加する場合、クラス ライブラリ内のサーバー プロジェクトに認証サービスを追加することはできません。Silverlight ビジネス アプリケーション テンプレート内のユーザー オブジェクトは、クラス ライブラリにアクセスできません。 |
詳細については、「チュートリアル: RIA Services クラス ライブラリの作成」を参照してください。