首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SOA (Microsoft CRM)从2层NHibernate迁移到3层有哪些推荐的方法?

使用SOA (Microsoft CRM)从2层NHibernate迁移到3层有哪些推荐的方法?
EN

Stack Overflow用户
提问于 2010-06-28 20:38:15
回答 3查看 316关注 0票数 0

给出了一个(当前)项目,它实现了一个2层体系结构,具有一个分离良好的层上业务层,遵循典型的generic DAO architecture as pioneered by Bill McCafferty on CodeProject,并在NHibernate in Action的第10章中进行了简要解释。

这个项目必须移动到做CRUD操作和业务逻辑通过Microsoft CRM作为中间层使用web服务。在CRM中定义自定义对象和方法,以模拟当前情况。

我不认为这是一个好主意,开始来回移动POCO的一样,我们过去做的。此外,延迟加载、缓存和并发等特性都必须以不同的方式处理。考虑到我们必须最小化中间层和表示层之间的调用,这带来了另一个挑战。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-08 04:21:44

我们使用XRMLinq - http://www.xrmlinq.com。它构建您的DTO对象,然后您可以使用LINQ语法对它们进行查询。该框架会自动将您的LINQ查询转换为针对CRM webservices的FetchXML查询。DTO对象是作为分部类创建的,因此您可以添加自己的逻辑,这些逻辑可以在重新生成后仍然存在。

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

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2010-07-21 20:42:11

也可以看看Reflector中的MS CRM SDK 4.0.12。他们在那里走了相当长的一段路来建立一个合适的ORM,包括CRUD和Linq。它与NH有许多细微的(和不那么微妙的)区别,而且它还没有经过插件训练,但至少你可以借鉴一些想法。

票数 2
EN

Stack Overflow用户

发布于 2010-07-28 12:44:46

这里有一些很好的文章,详细介绍了在各种规模的项目中跟踪的SOA架构,本系列仍然在编写中,我相信它会对您有所帮助。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3132394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档