.net RIA服务层中有多少业务逻辑?

.net RIA服务层中有多少业务逻辑?,.net,silverlight,entity-framework,architecture,wcf-ria-services,.net,Silverlight,Entity Framework,Architecture,Wcf Ria Services,我最近一直在使用.NET4.0对Silverlight、RIA服务和实体框架进行试验。我试图弄清楚这个堆栈是否适合在我即将进行的任何项目中使用。显然,这些技术对于开发应用程序来说是非常有效的,但我正在努力决定如何构建这个堆栈上的应用程序 我遇到的主要问题是,在我看到的大多数演示中,大多数业务逻辑最终都是RIA服务域服务类中的数据注释和自定义验证。这对我来说似乎不合适。我认为域服务基本上是一种美化了的web服务,它恰好使将信息推送到客户机变得容易。但我看到的大部分内容似乎都将域服务定位为应用程序中

我最近一直在使用.NET4.0对Silverlight、RIA服务和实体框架进行试验。我试图弄清楚这个堆栈是否适合在我即将进行的任何项目中使用。显然,这些技术对于开发应用程序来说是非常有效的,但我正在努力决定如何构建这个堆栈上的应用程序

我遇到的主要问题是,在我看到的大多数演示中,大多数业务逻辑最终都是RIA服务域服务类中的数据注释和自定义验证。这对我来说似乎不合适。我认为域服务基本上是一种美化了的web服务,它恰好使将信息推送到客户机变得容易。但我看到的大部分内容似乎都将域服务定位为应用程序中业务逻辑的主要来源

所以,我的问题是:

  • 在使用此堆栈的应用程序中,业务逻辑(规则、验证、行为、授权)的最佳位置是什么
  • 是否在体系结构级别发布了使用此堆栈的指导原则
我的问题与大型、复杂和长寿命的应用程序有关。显然,对于只有几个屏幕的应用程序来说,这不太重要

编辑:
我想说的另一件事是,很明显,你可以让域服务类变得愚蠢,但是你会丢失很多推送到客户端的automagic实体信息(例如验证)。如果你失去了这一点,那么使用RIA服务还有什么意义呢?

一般来说,使用该技术比使用它更有效率

正如您所说,业务逻辑以数据注释和自定义验证结束,对于系统的第一个版本来说,就开发人员的生产力而言,这可能是it的“最佳”位置

我有一种感觉,当快速构建crud应用程序时,这种技术有它的优势,当您有复杂的业务逻辑时,您可能会在silverlight应用程序和RIA服务之间有一个额外的业务层


我们还没有尝试在这方面建立任何真正的东西,我们只有在使用了一段时间后才能真正知道答案

我们的团队正在RIA堆栈上实现Silverlight应用程序。我们决定在RIA实体之上构建一个域模型。此外,我们选择遵循MVVM模式来建模UI交互

到目前为止,我注意到以下好处:

  • 域类是放置业务逻辑(包括复杂验证)的好地方
  • 域类使用RIA实体和上下文作为数据存储的接口
  • 域类是根据业务关注点建模的,不需要与RIA实体建立一对一的关系
  • 简单的UI验证可以存在于ViewModels中
  • 另一件需要注意的事情是,我们已经实现了自己的并发身份映射,并将脏跟踪推到RIA上下文


    在实践中,这种体系结构需要更多的编码工作,但在可读性和可维护性方面付出了巨大的代价。即使对于简单的CRUD应用程序,我也会遵循这种做法。能够构建更准确地表示问题空间的领域模型是一个引人注目的优势。

    我也想知道同样的事情!我真的很难理解RIA服务的最佳实践。似乎没有太多详细的业务应用程序示例。我自己也在思考这个问题。不过,有一种想法是,即使尽可能使DomainService变得愚蠢,您仍然可以获得易于使用的DomainContext,以便将更改(成批)提交到服务器并在客户端进行更改跟踪。这个IMO,仍然使RIA服务非常有价值。digiduck的观点很好。这当然是值得的。