.net - 多少业务逻辑属于 RIA 服务层?

标签 .net silverlight entity-framework architecture wcf-ria-services

我最近一直在试验使用 .NET 4.0 的 Silverlight、RIA 服务和 Entity Framework 。我试图弄清楚该堆栈是否适用于我即将进行的任何项目。似乎这些技术对于开发应用程序非常有效,但我正在努力决定如何构建这个堆栈之上的应用程序。

我遇到的主要问题是,在大多数演示中,我看到的大多数业务逻辑都以 RIA Services 域服务类中的 DataAnnotations 和自定义验证而告终。这对我来说似乎不合适。我认为域服务基本上是一种美化的 Web 服务,它恰好可以轻松地将信息推送到客户端。但我所看到的大部分内容似乎都将域服务定位为应用程序中业务逻辑的主要来源。

所以,我的问题:

  • 使用此堆栈的应用程序中业务逻辑(规则、验证、行为、授权)的最佳位置是什么?
  • 是否在架构级别发布了使用此堆栈的任何指南?

  • 我的问题与大型、复杂和长期存在的应用程序有关。显然,对于只有几个屏幕的应用程序,这不是问题。

    编辑:
    我要提到的另一件事是,显然你可以让域服务类变得愚蠢,但是你会丢失很多被推送到客户端的自动实体信息(例如验证)。然后,如果你输了,使用 RIA 服务还有什么意义吗?

    最佳答案

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

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

  • 域类是放置业务逻辑(包括复杂验证)的好地方。
  • 域类使用 RIA 实体和上下文作为数据存储的接口(interface)。
  • 域类是根据业务问题建模的,不需要与 RIA 实体建立一对一的关系。
  • 简单的 UI 验证可以存在于 ViewModel 中。

  • 另一件需要注意的事情是,我们已经实现了自己的并发身份映射,并将脏跟踪推送到 RIA 上下文。

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

    关于.net - 多少业务逻辑属于 RIA 服务层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897513/

    相关文章:

    c# - javascript 在 mozilla 中不起作用,但在其他浏览器中起作用

    c# - 使用 C# 和 .NET 4.5 连接到 SSL 服务器时出错

    .net - 如何使用部分类扩展 ADO.NET Entity Framework 对象?

    xml - 将 XML 文件从网站加载到 XDocument(Silverlight 和 Windows Phone 7)

    c# - 使用 Entity Framework 将字符串转换为 DateTime

    .net - WCF WebHttp 混合身份验证(基本和匿名)

    visual-studio - 将 javascript 添加到为 Silverlight 项目生成的 html 测试页面

    silverlight - 有没有办法在 TextBlock Span 上设置绑定(bind)

    asp.net-mvc - 扩展 Entity Framework 应用程序/多个应用程序访问同一个数据库?

    c# - DateTime 对象 Entity Framework 上的动态 LINQ OrderBy 日期