需要决定我正在构建的一个 Silverlight 应用程序的架构和设计。应用程序用于需求/问题跟踪。
要求:
- SL 4
- ASP.NET (MVC)
- 完全信任的共享主机环境,IIS7
我想拥有:
- CQS (CQRS) 风格的分离、查询和命令
- 一个 db,不需要像“真正的”CQRS 中那样的两个存储,我没有竞争条件,也没有缩放问题。如果我可以使用 RavenDb 那就太好了
- 对于命令,我将使用在服务器端处理并在客户端 (SL) 上发布的单向命令 DTO 对象,灵感来自“CQRS,停止 CRUDing,爱域”的 NDC11 会话
- 我喜欢查询数据的 RIA 服务风格,通过 DataService 公开实体,但它确实只适用于 EF 和 NH(关系模型)
- 如何使用 RavenDb 查询数据?我在共享主机上,所以我必须使用嵌入式模式,并且无法启动 ravendb.exe 进程,它必须托管在 asp.net 应用程序中。我真的没有任何使用 RavenDb 的经验,这就像学习项目。
- 不想使用 WCF 公开 RPC SOAP 端点,有没有更好的解决方案,REST?
因此,命令端不是问题,但无法弄清楚如何使用 RavenDb、共享托管和一些简单的 REST 样式从 Silverlight 应用程序查询数据。RavenDb 是否支持开箱即用之类的东西?
正如 Ayende 所回答的,RavenDb 可以在 asp.net 中运行,并可以从 Silverlight 进行查询。现在的问题是,至少对于阅读方面来说,这是一种好方法吗?Db 向客户端应用程序公开,没有任何服务器端逻辑(服务/应用程序层),因此任何人都可以修改数据(如果已通过身份验证)。
我是从 Silverlight 执行命令(写入),还是将命令 DTO 对象 (DelegateToOtherMemberCommand) 传输到服务器,然后在域对象 (Ticket.AssignTo(member)) 上执行它?