【发布时间】: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