WPF、Silverlight、およびASP.NET間で同じデータアクセス層を共有するための最良の方法/テクノロジは何ですか?
私はADO.NETEntityFrameworkを使用しており、リポジトリパターンを使用してDALを作成することを考えていました。次に、RIAサービスをダミーの仲介者として使用してSilverlightとASP.NETを接続します。これは確かな計画ですか、それとも他にもっと良い解決策がありますか?
WPF、Silverlight、およびASP.NET間で同じデータアクセス層を共有するための最良の方法/テクノロジは何ですか?
私はADO.NETEntityFrameworkを使用しており、リポジトリパターンを使用してDALを作成することを考えていました。次に、RIAサービスをダミーの仲介者として使用してSilverlightとASP.NETを接続します。これは確かな計画ですか、それとも他にもっと良い解決策がありますか?
私が使用したいソリューションの1つは、次のとおりです。-データベースをまったく参照せずに、エンティティ(たとえば、プレーヤー、ゲーム、エンティティ)のみを格納するプロジェクトを作成します。-リポジトリパターン(リポジトリ、リポジトリなど)を実装するプロジェクトを用意します-ADO.NET Entity Frameworkコードファーストアプローチを使用してデータベースとマッピングします(プロジェクトに含まれるエンティティの動的な子オブジェクトを作成します。ScottGuのブログを参照してください)使い方の説明は)
Silverlightをパターンに接続するには、Riaサービスまたは従来のWCFサービスを使用します。Ria ServicesはMVVM開発に実際には準拠していないため、通常は可能な限りWCFを使用しようとします。
WCFを使用してDALエンティティをSilverlightと共有する場合は、MyDal.Silverlight Silverlightクラスライブラリプロジェクトを作成し、Silverlightと共有するすべてのエンティティのコピーの代わりにシンボリックリンクを追加できます。次に、Visual Studioでサービス参照を追加すると、Silverlightプロジェクトのプレーヤー、ゲーム、およびユーザーからコピーを作成しないほど賢くなります。
Ria Servicesを使用する場合は、とにかくエンティティのコピーが作成されます。
お役に立てば幸い
ジョン
RIAサービスは、すべてのWCF配管の負担を確実に軽減します。いくつかの小さな欠陥(特定のデータ型の欠如)がありますが、ほとんどの問題には回避策があります。
検証モデル(属性装飾とカスタムバリデーターを使用)は非常に強力であり、ビジネスルールを掛けるのに最適な場所です。
RIAはASP.Netとうまく共存しているので、それはもう1つのプラスです。舞台裏では、それは単なる別のWCFサービスです。私たちはMVVMとPrismでRIAサービスを喜んで使用しています。
これは、実証済みの機能豊富なモデルです。私が見つけた唯一の問題は、多対多の関係に関連しています。ここでも回避策があります。
RIA変更セットはPOCOを含むあらゆるもので管理されるため、これが最も注意が必要な領域です。EFモデルをRIAに直接公開することは「悪い」と見なされ、データの変更から確実に保護されることはありません。
まだ具体的に1つのパターンを推奨することはできませんが(まだ実験中です)、選択がIQueryableと互換性があることを確認してください。ページング機能とサーバー側実行のためのLinqクエリへの追加は、失いたくない機能です。