RavenDB をデータ ストアとして使用して、シングル ページ アプリケーション (SPA) を構築する予定です。
SPA 作品の ASP.NET ホット タオル テンプレートから始めたいと思います。
EntityFramework/WebApi/Breeze コンポーネントを削除し、ストレージ用の RavenDB とバックエンド API の構築用の ServiceStack に置き換えます。
現在の意見のほとんどは、RavenDB の上にあらゆる種類のリポジトリまたは追加の抽象化を使用することに眉をひそめ、RavenDB API をコントローラー内で (MVC アプリで) 直接使用することを求めているようです。
ServiceStack で Raven を使用し、サービス実装内で直接 IDocumentSession に対して呼び出しを行う場合も、同じ知恵に従うべきだと思います。
私の懸念は、この道をたどると、サービスの実装がかなり肥大化するように見えるという事実にあります。また、たとえば、複数の異なる Web サービス エンドポイント内でユーザー ドキュメントを更新する必要がある場合など、同じコードを何度も記述する必要があるようです。
また、アプリケーションの他の (将来の) 部分から Raven にアクセスする必要があるようです。たとえば、将来、キューからジョブを処理するコンソール アプリケーションを追加する必要があるかもしれません。また、アプリのこの部分が Raven 内のデータにアクセスする必要があるかもしれません。しかし、最初から Raven への唯一のパスは、 Web サービス API。この理論上のコンソール アプリから Web API を呼び出すだけでよいでしょうか? それらが同じハードウェア上で実行されている可能性がある場合、効率が悪いように見えます。
このドキュメント ストアを使用する際のベスト プラクティスに従いながら、私の Web サービスやその他の場所で Raven を効果的に利用する方法についてアドバイスをくれる人はいますか? raven に対する呼び出しを直接処理する中間のビジネス ロジック層を作成することは実用的と思われます...私の Web サービスがこの層内のメソッドを呼び出せるようにします。これは理にかなっていますか?
編集
同様のアーキテクチャの最近のサンプルを提供できる人はいますか?