多个消费者,单一数据提供商 - RIA太早了?选项?

时间:2009-08-14 01:56:15

标签: asp.net asp.net-mvc wcf

我有一些项目会有许多端点或客户端可以访问相同的数据。例如,某个网站可能有......

  • 基于asp.net MVC的最终用户网站
  • 基于网络的管理后端,可以允许某些用户在完整客户端无用的情况下进行特定的有限更新(移动网络等)
  • 完整的富客户端管理,因此我们可以使用触摸和其他技术来真正使内容管理的用户体验大放异彩 - 这些可能是WPF应用程序上的银色或完整,视需要

问题是......什么是连接所有这些的最佳方式?现在我使用MVC的多项目拆分。

  • ProjectName.Core - 此项目包含所有常用模型,所有存储库类和所有帮助程序类
  • ProjectName.Web - 引用Core以引入所需存储库和模型的MVC项目
  • ProjectName.Admin.Web - 另一个专门用于管理界面的MVC项目,该项目引用Core以引入它需要的存储库和模型 (最终将面向最终用户面向站点的独立子域)

然后,这个故事逐渐明白了他的明确指导意识。在构建WPF / Silverlight项目以获取数据的时候,我现在可以根据我的理解做以下其中一项......

  • 转换“Core”以提供RIA样式的DomainService,并尝试更改MVC项目以使用它。然而,对于使用MVC和RIA几乎没有什么指导,RIA还处于起步阶段而且WPF到RIA的故事仍然只有很少的文档记录。
  • 执行与上面相同的操作,但使用WCF。然而,WCF以异步复杂性为例,我真的希望RIA为我隐藏。
  • 退回20码,只需将原有的旧网络服务连接到我已有的存储库和模型顶部的Core上。这似乎......老派:))

欢迎任何欢迎和输入,包括示例和文档的指针。我想做出我现在能做出的最好的决定,并且我正准备加快RIA和WCF的速度,所以我可以,但社区的意见总是很有用。

谢谢!

3 个答案:

答案 0 :(得分:1)

看看ADO.NET Data Services (formerly known as Project “Astoria”)

今天上班的路上,我正在听.NET Rocks!播客,“Stephen Forte on Data Access Options”,他们对此非常兴奋,特别是对于你描述的场景。 这是有趣的东西,我很快就会检查出来。

答案 1 :(得分:1)

我认为对于普通的旧WCF服务有一些说法,它们可以利用您的域服务和存储库,并公开更适合服务的模型。我经常发现简单地在线路上暴露域模型最终会在客户端和服务器上重复逻辑。

我的建议是针对某种服务层,这具有将您的域模型塑造成适合线路的类型的逻辑。 \

理想情况下,我希望能够在客户端(WPF / Silverlight)和服务器(ASP.NET MVC)之间共享我的域服务,并拥有不同的底层存储库(Linq到NHibernate / Astoria)。难以理解Silverlight的异步性质。

答案 2 :(得分:1)

对于好奇的人来说,看起来RIA Services就是胜利。构建一个DomainService,然后在任何地方使用它。 Brad Abrams在bit.ly/94fFx中涵盖了很多这方面 - 它真的有帮助。