代码之家  ›  专栏  ›  技术社区  ›  RationalGeek

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

  •  8
  • RationalGeek  · 技术社区  · 14 年前

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

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

    所以,我的问题是:

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

    我的问题涉及大型、复杂和长寿命的应用程序。显然,对于只有几个屏幕的应用程序来说,这不是一个问题。

    编辑: 我想说的另一件事是,显然您可以使域服务类变蠢,但是随后您会丢失许多被推送到客户机的automagic实体信息(例如验证)。如果你输了,使用RIA服务还有什么意义吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   randolphcabral    14 年前

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

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

    1. 域类是放置包含复杂验证的业务逻辑的好地方。
    2. 域类使用RIA实体和上下文作为数据存储的接口。
    3. 域类是在业务问题之后建模的,不需要与RIA实体一对一的关系。
    4. 简单的UI验证可以存在于视图模型中。

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

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

        2
  •  0
  •   Shiraz Bhaiji    14 年前

    一般来说,使用这种技术比反对它更有效率。

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

    我有一种感觉,这种技术在快速构建CRUD应用程序时很强大,当您有复杂的业务逻辑时,您可能会在Silverlight应用程序和RIA服务之间形成一个额外的业务层。

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