Neb*_*ron 3 rest datacontext service entity-framework loose-coupling
我正在使用ASP.NET MVC3和SQL Server中的数据库开发Web应用程序项目.还有一个移动应用程序通过REST服务使用来自同一数据库的数据.以下是我的应用程序的一些层:
Model - ADO.NET数据模型,使用Entity Framework
数据访问层 - 具有查询以从数据库中检索数据的存储库
Web应用程序 - MVC3项目,使用存储库,使用Structure Map和DI进行松散耦合,数据库上下文在HttpRequest结束时处理
核心 - DAL和服务层之间的另一层,使用存储库并将数据公开给服务层.业务逻辑层的排序.
服务层 - REST服务,了解Core层但不了解DAL.将数据映射到DTO并公开给客户端
我在这种应用程序架构中遇到的问题是服务层上的松散耦合.服务层引用了Core层.核心层引用了数据访问层并使用其存储库.但是,存储库没有默认构造函数.他们期望1个参数及其数据库对象上下文(一次性对象).
直接在我的网站上使用存储库不是问题.我正在使用结构图和DI使它松散耦合.每个上下文都在HttpRequest的末尾处理.
问题是服务层和核心层.我想在那里松耦合,但不知道如何实现它?如何将数据上下文注入其中并确保在某个时刻处置?我想听听一些关于如何将它们放在一起的建议.
服务层引用了Core层.
没关系.
核心层引用了数据访问层并使用其存储库.
那不好.
您的"核心"应该是您的域名,具有业务规则和逻辑.它不应该有任何依赖.
从堆栈的底部开始:
这是我们的做法.我们使用接口驱动编程和依赖注入的组合来处理松散耦合.
示例流程:
ISomethingService并解析它,包括任何进一步的依赖关系(服务,repo等).ISomethingService.ISomethingService实现(由DI选择)调用方法ISomeRepo.ISomeRepo 实现(由DI选择)调用EF/DB,将"data-object"返回给服务.这些对象的实例化应由您的DI容器处理.我们使用的上述唯一缺少的是"工作单元",它基本上包含了EF上下文.
| 归档时间: |
|
| 查看次数: |
1787 次 |
| 最近记录: |