我正计划使用 RavenDB 作为我的数据存储来构建单页应用程序 (SPA)。
我想从 SPA 部分的 ASP.NET Hot Towel 模板开始。
我将删除 EntityFramework/WebApi/Breeze 组件并替换为 RavenDB 用于存储和 ServiceStack 用于构建后端 API。
大多数当前观点似乎不赞成在 RavenDB 之上使用任何类型的存储库或额外的抽象,并要求直接在控制器内部使用 RavenDB API(在 MVC 应用程序中)
我假设在使用带有 ServiceStack 的 Raven 并直接在我的服务实现内部调用 IDocumentSession 时我应该遵循同样的智慧。
我担心的事实是,我的服务实现似乎会因为遵循这条路径而变得相当臃肿。似乎我经常需要多次编写相同的代码,例如,如果我需要在几个不同的 Web 服务端点中更新用户文档。
我似乎也可能需要从我的应用程序的其他(未来)部分访问 Raven。例如,我将来可能需要添加一个控制台应用程序来处理队列中的作业,而这部分应用程序可能需要访问 Raven 中的数据……但从一开始,我通往 Raven 的唯一途径就是通过网络服务 API。我只是打算从这个理论上的控制台应用程序调用 web api 吗?如果它们可能在相同的硬件上运行,似乎效率低下。
任何人都可以就如何在我的网络服务和其他地方有效利用 Raven 提供任何建议,同时在使用此文档存储时仍遵循最佳实践?创建一个中间业务逻辑层来直接处理对 raven 的调用似乎很实用……允许我的 web 服务调用该层内的方法。这有意义吗?
编辑
任何人都可以提供任何类似架构的最新样本吗?