構築中の 1 つの Silverlight アプリケーションのアーキテクチャと設計について決定する必要があります。アプリは要件/問題追跡用です。
要件:
- SL4
- ASP.NET (MVC)
- 完全信頼の共有ホスティング環境、IIS7
私はを頂きたい:
- CQS (CQRS) スタイルの分離、クエリ、およびコマンド
- 1 つのデータベース、「実際の」CQRS のように 2 つのストレージは必要ありません。競合状態もスケーリングの問題もありません。RavenDbが使えたらいいのに
- コマンドについては、サーバー側で処理され、クライアント側 (SL) で公開される一方向のコマンド DTO オブジェクトを使用します。これは、「CQRS、CRUD を停止し、ドメインを愛してください」に関する NDC11 セッションに触発されたものです。
- データをクエリし、DataService を介してエンティティを公開する RIA Services スタイルが好きですが、実際には EF と NH (リレーショナル モデル) だけで機能します。
- データのクエリに RavenDb を使用するにはどうすればよいですか? 私は共有ホスティングを使用しているため、埋め込みモードを使用する必要があり、ravendb.exe プロセスを開始できません。asp.net アプリ内でホストする必要があります。私は実際に RavenDb の経験がありません。これは学習プロジェクトのようなものです。
- WCF で RPC SOAP エンドポイントを公開したくないのですが、REST などのより良い解決策はありますか?
したがって、コマンド側は問題ではありませんが、Silverlight アプリからデータをクエリするための RavenDb、共有ホスティング、および簡単な REST スタイルの使用方法がわかりません。RavenDb は、すぐに使えるようなものをサポートしていますか?
Ayende が答えたように、RavenDb は asp.net で実行でき、Silverlight からクエリを実行できます。質問は今、少なくとも読み取り側にとって、これは良いアプローチですか? Db は、サーバー側のロジック (サービス/アプリ層) なしでクライアント アプリに公開されるため、誰でもデータを変更できます (認証されている場合)。
コマンド (書き込み) を Silverlight から実行するか、コマンド DTO オブジェクト (DelegateToOtherMemberCommand) をサーバーに転送して、そこでドメイン オブジェクト (Ticket.AssignTo(member)) で実行しますか?