我计划通过使用nhibernate作为ORM来实现我的下一个项目(asp.net MVC)。由于我没有nhibernate的经验,所以我想知道如何组织不同项目之间的依赖关系。
我已经看到这样的建议方法:
UI取决于模型,存储库和NHibernate
存储库取决于Model和Nhibernate
----- UI -----------------------------
| | |
| | |
NHibernate型
问题是我不希望UI代码直接与nhibernate进行交互,所以我在想这样的事情:
用户界面取决于模型和外观
外观取决于Model和Nhibernate
----- UI --------
| |
| |
模型
Facade实际上将具有存储库以及封装nhibernate对象。
听起来合理吗?是否有关于首选架构的指南?
谢谢
最佳答案
这通常是我在应用程序中所做的:
Foo.Core
包含域对象,业务逻辑等
没有引用任何与基础架构相关的程序集,例如Web服务,ESB或数据访问
有些人还在这里放置存储库接口,但这是一种设计选择。它使您可以在此处将域服务与存储库交互,但仍与NHibernate分离
持久性
引用NHibernate
存储库实现
用于ASP.NET的工作单元HttpModule(在Web应用程序中帮助控制NHibernate的会话生命周期)
Foo.Web
同时引用Foo.Core和Foo.Persistence
HttpModule参考来控制NHibernate会话
Foo.Web从不直接与NHibernate交互……它总是通过存储库进行。使用IoC容器,您可以只请求IRepository,而不必关心实现是什么。
关于nhibernate - NHibernate体系结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/265237/