【问题标题】:What are recommended approaches for migrating from 2-tier NHibernate to 3-tier with SOA (Microsoft CRM)?使用 SOA (Microsoft CRM) 从 2 层 NHibernate 迁移到 3 层的推荐方法是什么?
【发布时间】:2010-06-28 12:38:15
【问题描述】:

给定一个(当前)项目,该项目实现了一个 2 层架构和一个遵循典型 generic DAO architecture as pioneered by Bill McCafferty on CodeProject 的良好分离的层上业务层,并在 NHibernate in Action 的第 10 章中进行了简要说明。

该项目必须通过 Microsoft CRM 作为使用 Web 服务的中间层来执行 CRUD 操作和业务逻辑。自定义对象和方法在 CRM 中定义以模拟当前情况。

我认为像过去那样开始来回移动 POCO 并不是一个好主意。此外,延迟加载、缓存和并发等特性都必须区别对待。考虑到我们必须尽量减少中间层和表示层之间的调用带来了另一个挑战。

实施 DTO 似乎是正确的行动原因,但需要一条漫长的道路(加上团队的学习路径)。我之前做过 SOA 项目,但现在我正在寻找阻力最小的路径。我们可以继续使用 NHibernate,即使直接 DB 连接不是一个选项?我们是否必须重新考虑设计,或者是断开连接的实体,在 .NET 4.0 中引入也许是一种选择?它可以变得多么无痛?

【问题讨论】:

  • 在无法直接访问数据库的情况下如何使用 NHibernate?
  • @afsharm,好吧,这就是这里的问题。 NH 与连接器一起工作,从技术上讲,您应该能够插入 HSQL 到 FetchXML 的转换器。考虑到 XRM(如 Josh 所述)是使用 ADO.NET 的层,可能将两者结合起来。是否也可行是另一个问题。

标签: .net web-services nhibernate dynamics-crm soa


【解决方案1】:

看看反射器中的 MS CRM SDK 4.0.12。他们在那里找到了一个合适的 ORM,包括 CRUD 和 Linq。那里与 NH 有许多微妙(和不那么微妙)的差异,而且它还没有经过插件训练,但至少你可以借鉴一些想法。

【讨论】:

    【解决方案2】:

    我们使用 XRMLinq - http://www.xrmlinq.com。它构建您的 DTO 对象,然后您可以使用 LINQ 语法来查询它们。该框架自动将您的 LINQ 查询转换为针对 CRM Web 服务的 FetchXML 查询。 DTO 对象被创建为部分类,因此您可以添加自己的逻辑以在重新生成后继续存在。

    另一个提示:尽可能为您的业务逻辑使用自定义工作流活动。与其将逻辑直接写入 XRMLinq 生成的 DTO,不如考虑创建一个自定义工作流活动,该活动将在某些字段更新时触发。这会强制您的业务逻辑运行,即使这些字段在系统中的其他位置更新(不是通过您的自定义 DTO 逻辑)。它还为您提供了一个很好的排队系统和故障回复机制 - 如果您的自定义工作流活动引发异常,则工作流将“暂停”,直到您解决问题,此时您可以恢复失败的工作流。这仅适用于显然可以异步运行的业务逻辑,但对于同步逻辑,我仍然建议在将逻辑写入 DTO 之前查看自定义插件。

    希望有帮助!

    【讨论】:

    • 这绝对有帮助!我必须研究自定义工作流程的想法,但这听起来像是我们正在做的事情。转换仍处于早期设计阶段,唯一确定的是结果:来自 CRM 的所有数据。
    • 祝你好运 - 我们使用 MSCRM 4 作为我们的企业框架并且喜欢它。它当然会让你重新思考你现有的架构,但这对我们来说绝对是值得的。实际上,我现在每天都在编写业务逻辑而不是管道 - 圣杯! :)
    【解决方案3】:

    这里有一些很好的文章,详细介绍了一个 SOA 架构,已经被各种规模的项目所跟踪,这个系列还在写,我相信它会对你有用。

    http://hubpages.com/hub/Building-Service-Orientated-Architecture

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2016-01-12
      • 2015-08-19
      • 2014-10-29
      • 2011-10-05
      • 2020-04-20
      • 1970-01-01
      相关资源
      最近更新 更多