我打算使用nhibernate作为ORM来实现我的下一个项目(asp.net MVC).由于我没有使用nhibernate的经验,我想知道如何组织不同项目之间的依赖关系.我已经看到这样的东西作为推荐的方法:
UI取决于Model,Repositories和NHibernate
存储库依赖于Model和Nhibernate
----- UI----------------------------- | | | | | | Model NHibernate
问题是我不希望UI代码直接与nhibernate交互,所以我想到这样的事情:
UI取决于Model和Facade
Facade依赖于Model和Nhibernate
----- UI -------- | | | | 模型
Facade,实际上将拥有存储库以及封装nhibernate对象.
这听起来合理吗?首选架构是否有任何指导方针?
感谢名单
这通常是我在我的应用程序中执行的操作:
Foo.Core
包含域对象,业务逻辑等
不参考任何基础结构相关的程序集,例如Web服务,ESB或数据访问
有些人也把存储库接口放在这里,但这是一个设计选择.它允许您在此处拥有与存储库交互的域服务,仍然与NHibernate脱钩
Foo.Persistence
对NHibernate的引用
存储库实现
工作单元HttpModule for ASP.NET(帮助控制NHibernate在Web应用程序中的会话生命周期)
Foo.Web
引用Foo.Core和Foo.Persistence
HttpModule引用控制NHibernate Session
Foo.Web永远不会直接与NHibernate交互......它始终通过存储库.使用IoC容器,您只需请求IRepository,而不关心实现是什么.