Silverlight 4-RIA服务-这是一个好的编码实践吗?

Silverlight 4-RIA服务-这是一个好的编码实践吗?,silverlight,silverlight-4.0,ria,Silverlight,Silverlight 4.0,Ria,我对Silverlight很陌生。我花了一天时间研究RIA服务。这个概念看起来非常好,而且是一种节省大量时间编写面向数据的Silverlight应用程序的方法。然而,在我使用它的过程中,我感到很多人可能会觉得这种方法太“快速和肮脏”,至少会违反一些最佳实践 例如,默认情况下,后端服务层兼作数据访问层。数据库实体和UI之间似乎存在着紧密耦合 我很想从有经验的Silverlight/RIA开发人员那里得到一些关于这些问题的评论,也许还有其他我忽略的问题。我喜欢这个概念,但我担心那些比我更纯粹的代码主

我对Silverlight很陌生。我花了一天时间研究RIA服务。这个概念看起来非常好,而且是一种节省大量时间编写面向数据的Silverlight应用程序的方法。然而,在我使用它的过程中,我感到很多人可能会觉得这种方法太“快速和肮脏”,至少会违反一些最佳实践

例如,默认情况下,后端服务层兼作数据访问层。数据库实体和UI之间似乎存在着紧密耦合


我很想从有经验的Silverlight/RIA开发人员那里得到一些关于这些问题的评论,也许还有其他我忽略的问题。我喜欢这个概念,但我担心那些比我更纯粹的代码主义者会对这种方法犹豫不决。

我认为RIA服务鼓励伟大的模式(除了DomainDataSource,许多人将使用它来将数据访问逻辑放到视图中,但我知道RIA服务人员一直在寻找使DDS更为MVVM友好的方法)。从架构的角度来看,我喜欢以下几点:

  • 验证逻辑可以声明一次,但同时应用于客户端(nice UX)和服务器端(服务的非SL客户端的安全性和一致性)
  • 查询是跨层执行的,因此您可以考虑在客户机上想要/需要什么,制定一个查询,并知道它会一直转换到您的数据库,而不会过度获取。您可以做到这一切,而无需考虑优化SQL查询等,但会获得很多难以实现的好处
  • 通过使所有内容都可绑定,使用MVVM来保持视图的简单和愚蠢变得更加容易。数据绑定是您的朋友,RIA服务使反复实现
    INotifyPropertyChanged
    不再那么烦人/乏味,而且它还添加了许多其他更难实现的接口,如
    INotifyDataErrorInfo
    (我想)和
    IEditableObject
    等等,许多Silverlight控件都会在开箱即用的情况下“做正确的事情”
我想我不明白你所说的服务作为DAL的双重含义——DAL是你的模型,从LINQ到SQL或LINQ到实体(或者你喜欢的任何DAL,NHibernate,等等).RIA服务更像是一个位于DAL之上的业务逻辑层,并以一种保持跨消费者的业务逻辑一致的方式公开数据。在Silverlight的情况下,它还添加了客户端codegen来进行客户端验证等,但这只是Silverlight的一个附加值


业务实体和UI之间可以有紧密耦合,但这可以通过任何技术来实现。无论采用何种技术,都必须考虑公开正确的数据,然后在其上构建UI。

为了支持Austins的观点,这里有一篇很好的文章,阐述了模式和协同工作RIA团队在其方法中使用的假设。