从Silverlight查询RavenDb

时间:2011-07-04 12:31:29

标签: silverlight ravendb cqrs

需要决定我正在构建的一个Silverlight应用程序的架构和设计。 应用程序用于需求/问题跟踪 要求:

  • SL 4
  • ASP.NET(MVC)
  • 完全信任的共享托管环境,IIS7

我想:

  • CQS(CQRS)分离,查询和命令的风格
  • 一个数据库,不需要像'真正的'CQRS那样的两个存储,我没有竞争条件也没有缩放问题。如果我可以使用RavenDb
  • 那就太好了
  • 对于命令,我将使用在服务器端处理并在客户端(SL)上发布的单向命令DTO对象,受NDC11会话启发“CQRS,停止CRUDing,爱域”
  • 我喜欢RIA Services查询数据的方式,通过DataService公开entites,但它真的只适用于EF和NH(关系模型)
  • 如何使用RavenDb查询数据?我在共享主机上,所以我必须使用嵌入式模式,并且无法启动ravendb.exe进程,它必须在asp.net应用程序内部托管。我真的没有RavenDb的任何经验,这就像学习项目一样。
  • 不想用WCF公开RPC SOAP端点,还有什么更好的解决方案,REST?

因此,命令端不是问题,但无法弄清楚如何使用RavenDb,共享托管,以及一些简单的REST风格来查询Silverlight应用程序中的数据。 RavenDb是否支持开箱即用的东西?

Ayende回答说,RavenDb可以在asp.net中运行,并从Silverlight查询。问题是现在,这是一个好方法,至少对于阅读方而言? Db暴露给客户端应用程序,没有任何服务器端逻辑(服务/应用程序层),因此任何人都可以修改数据(如果它已经过身份验证)。

我是从Silverlight执行命令(写入),还是将Command DTO对象(DelegateToOtherMemberCommand)传输到服务器,然后在域对象(Ticket.AssignTo(member))上执行它?

1 个答案:

答案 0 :(得分:2)

赫尔沃耶, 您可以将RavenDB与共享主机一起使用。您通常将RavenDB设置为应用程序内的虚拟目录,然后在IIS中进行设置,如下所示: http://ravendb.net/documentation/docs-deployment-iis

然后,您可以将RavenDB公开给您的SL客户端,并使用Raven.Client.Silverlight程序集