我正在研究如何构建项目,因此偶然发现了Onion Architecture。据我了解,它更多地是以域为中心的体系结构,而不是数据库驱动的体系结构。
我正在寻找一些github项目来研究和了解有关该体系结构的更多信息,所以我找到了一个https://github.com/chetanvihite/OnionArchitecture.Sample
我很难理解:
namespace Domain.Interfaces
{
public interface IUserRepository
{
IEnumerable<User> GetUsers();
}
}
namespace Services.Interfaces
{
public interface IUserService
{
IEnumerable<User> GetUsers();
}
}
namespace Services
{
public class UserService : IUserService
{
private readonly IUserRepository _repository;
public UserService(IUserRepository repository)
{
_repository = repository;
}
public IEnumerable<User> GetUsers()
{
return _repository.GetUsers();
}
}
}
他如何使用它是通过构造函数注入。
private readonly IUserService _service;
public HomeController(IUserService service)
{
_service = service;
}
您是否总是IUserService
向使用它的应用程序公开服务?但我注意到,IUserRepository
有和相同的方法IUserService
吗?
如果您说的是基础架构方面的问题,是意味着还是涉及数据库?还是不一定?如果没有,那么基础设施问题的例子有哪些?
PS在我学习洋葱体系结构时,它总是(即使不是总是)至少提到了DDD。所以我想我也将学习DDD :)
1.储存库与服务:
您可能想阅读有关存储库和服务之间差异和/或Martin Fowlers服务层定义的答案。简而言之,存储库可处理数据持久性,而服务则为业务逻辑提供面向客户端的API。
在给定的小示例中,好处可能并不明显,但是可以想象UserService
有其他方法,例如lockUser(User user)
或joinGroup(User user, Group group)
。在UserService
随后使用任何 IUserRepository
实现真正持久的业务逻辑。
2.基础设施问题
基础结构层通常与外部资源进行对话,例如文件系统,数据库或Web服务。在您的示例中,IUserRepository
是基础架构层的一部分。
3.例子
我知道的示例集合(带有*标记)以及我刚刚发现的一些示例:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句