共有コード
WCF RIA サービス を使用すると、中間層とプレゼンテーション層の間で共有されるアプリケーション ロジックを作成できるため、サーバーとクライアントの両方に同じ機能を提供できます。コードは、ソース ファイルまたはアセンブリを使用して共有できます。
「クライアント コード生成」で説明されている自動コード生成プロセスとは異なり、共有コードがコンパイル中に変更されることはありません。その代わり、コードは層間でそのままコピーまたは共有されます。共有コードを使用すると、サーバーとクライアントの両方で同じロジックを使用できるように、サーバーで定義された後に、クライアントでもコードが生成されたエンティティのロジックまたは部分クラスの拡張機能を定義できます。
共有ソース ファイル
ソース ファイルを中間層に追加した後、そのファイルをプレゼンテーション層と共有するように明示的に指定できます。層間でソース ファイルを共有するには、2 つの方法があります。最初の方法では、共有の名前付け規則に従って、ソース ファイルに名前を付けます。たとえば、*.shared.cs
(C# の場合) や *.shared.vb
(Visual Basic の場合) を使用します。2 番目の方法では、Visual Studio 2010 のリンク ファイル機能を使用します。
共有の名前付け規則
共有の名前付け規則 (*.shared.cs
または *.shared.vb)
) を使用してファイルを共有する場合は、ソース コード ファイルを共有するための "プッシュ" モデルを実装します。共有ファイルは、コンパイル時に中間層プロジェクトからクライアント プロジェクトにアクティブにコピーされます。共有の名前付け規則がファイルの共有に有効になるのは、クライアント プロジェクトとサーバー プロジェクトの間に RIA サービス リンクが存在する場合のみです。
共有の名前付け規則のメリットは次のとおりです。
共有の名前付け規則のメリット | 説明 |
---|---|
組み込みのサポート |
開発者は、共有ファイルを同期された状態に保つためにこれ以上操作を行う必要はありません。 |
透過的 |
名前は、ファイルが共有するためのものであることを明確に示します。 |
自己管理 |
新しい共有ファイルが追加されると、ソリューションがコンパイルされるときに、中間層にリンクされているすべてのクライアント プロジェクトが自動的に更新されます。 |
わかりやすいデバッグ作業 |
開発者は、ファイルのサーバー バージョンまたはクライアント バージョンでブレークポイントを設定できます。 |
共有の名前付け規則のデメリットは次のとおりです。
共有の名前付け規則のデメリット | 説明 |
---|---|
新しい概念 |
開発者は、共有の名前付け規則について知っておく必要があります。 |
ファイルがコピーされる |
共有ファイルはクライアント プロジェクトに物理的にコピーされます。つまり、開発者が誤ってコピーされたバージョンを編集すると、次のコンパイル時に変更が失われる可能性があります。 |
詳細については、「方法: ソース ファイルを使用してコードを共有する」を参照してください。
リンク ファイル
リンク ファイルは、Visual Studio 2010 の既存の機能であり、RIA サービス 固有の機能ではありません。プロジェクト間の RIA サービス リンクは存在可能ですが、リンク ファイルを使用する必要はありません。リンク ファイルの方法を使用する際は、ソース コード ファイルを共有するための "プル" モデルを実装します。クライアント プロジェクトにはファイルのコピーは含まれません。代わりに、クライアント プロジェクトはサーバー プロジェクト内のファイルを参照するだけです。
サーバー プロジェクトとクライアント プロジェクトの両方を別のプロジェクト内のファイルにリンクすることもできます。
リンク ファイルの方法のメリットは次のとおりです。
リンク ファイルのメリット | 説明 |
---|---|
既存の Visual Studio 機能 |
開発者が新しい規則を習得する必要はありません。 |
ファイルはコピーされない |
ファイルはサーバー プロジェクトにのみ存在します。したがって、開発者はクライアントのコピーされたバージョンを変更することができないため、次のコンパイル時にその変更が失われることはありません。 |
リンク ファイルの方法のデメリットは次のとおりです。
リンク ファイルのデメリット | 説明 |
---|---|
明示的なユーザー アクションが必要 |
開発者は各共有ファイルをリンクする必要があリます。 |
自己管理なし |
各クライアント プロジェクトは、共有ファイルを追加または削除したときに更新する必要があります。 |
透過性なし |
開発者は、プロジェクト ファイルを確認して、共有されているファイルを判別する必要があります。 |
面倒なデバッグ作業 |
ブレークポイントを要求している層を判断することは簡単ではありません。 |
詳細については、「方法: ソース ファイルを使用してコードを共有する」を参照してください。
共有アセンブリ
プロジェクト間でソース ファイルを共有するのではなく、コードをクラス ライブラリにコンパイルしてから、アセンブリ参照を使用してライブラリを共有することができます。さまざまなフレームワーク (.NET Framework Version 4 や Silverlight 4 など) で使用する場合でも、WCF RIA サービス クラス ライブラリを使用して、アセンブリに互換性があることを確認します。
RIA サービス クラス ライブラリを使用してコードを共有する n 層アプリケーションを次の図に示します。中間層とクライアント層では、クラス ライブラリへのアセンブリ参照を使用します。
RIA サービス クラス ライブラリの詳細については、「RIA Services ソリューションの作成」および「チュートリアル: RIA Services クラス ライブラリの作成」を参照してください。