我正在设计一个访问存储在数据库中的一些数据的WCF服务。正确设计访问数据的WCF服务
实际对数据库的访问由一些ORM层处理(目前为NHibernate,但这是一个实现细节)。
我想知道什么是这种情况下适当的设计?
天真的做法是这样的:
public class ServiceImplementation : IService
{
// NHibernate session
private ISession session;
// service methods that use *session*
}
这是专门耦合到NHibernate和强制服务类管理的初始化和拥有的ORM逻辑代码。
我的问题是特别:
- 我如何实现解耦设计,其中业务从DB/ORM层分离?
- 当和谁应该初始化数据库访问/ ORM层?服务是否管理?
由于这是一个很常见的情况,我假设存在一些“模式”/最佳实践。
大多数可在线获得的示例演示了如何实现这一点(如何使用ORM访问数据库等),而不是从设计的角度来看,如何在更大范围内正确地完成这些操作。
我已经将ContextMode设置为单个(不确定它是否是最理想的选择)。在我的服务中保持NHibernate的类实例如何实现分离设计? – 2013-03-07 18:08:21
如果您创建了一个类并将所有ORM初始化代码放入其中,并根据需要进行查询,则会实现解耦。 – 2013-03-07 18:15:10