只是希望得到一些反馈/帮助,我正在构建我的应用程序.我目前的解决方案结构如下所示:
> UI(实际MVC应用程序)
>核心(仅控制器和viewmodels)
>服务
> BLL
>数据(实体框架DbContext,映射到Domain对象)
>域(简单POCO对象)
>接口
其他的东西
> Ninject将DbContext注入Controller(每个请求)
> AutoMapper将域对象映射到viewmodel
所有程序集都引用了Interfaces项目,顾名思义,它只不过是简单的接口(即IDbContext,IRepository等).
服务项目将所有其他事物“联系在一起”.它是唯一一个直接引用数据访问层(实体框架)的程序集.
我在下面提供了一些代码:
Controller的示例如下所示:
namespace Core.Controllers { public class HomeController : Controller { private IDbContext dbContext; public HomeController(IDbContext dbContext) { this.dbContext = dbContext; } public ActionResult Users() { UserService userService = new UserService(dbContext); var users = userService.GetAllUsers(); return View(Mapper.Map<IEnumerable<UserListviewmodel>>(users)); } ...
UserService类:
namespace Services { public class UserService { private readonly IDbContext dbContext; public UserService(IDbContext dbContext) { this.dbContext = dbContext; } public IEnumerable<User> GetAllUsers() { IRepository<User> userRepository = new Repository<User>(dbContext); UserBLL userBLL = new UserBLL(userRepository); return userBLL.GetAllUsers(); } ...
最后,业务层类:
namespace BLL { public class UserBLL { private readonly IRepository<User> userRepository; public UserBLL(IRepository<User> userRepository) { this.userRepository = userRepository; } public IEnumerable<User> GetAllUsers() { return userRepository.Get(); } ...
我正在寻找一些反馈/方法来改进.我注意到,对于基本任务,我的服务层方法将与业务层方法完全相同(即“传递”功能).我希望这个抽象将有助于更复杂的任务,这些任务可能需要调用多个业务层方法.将业务逻辑包含在服务层中会更好吗?
解决方法
原文地址:https://www.jb51.cc/csharp/98088.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。