不过,当我发现有必要的时候,我开始稍微尝试应用概念。我发现仍然有许多我不能甚至不考虑应用到我的应用程序中,其中一些是:适配器、命令(CQR?)、事件…
除此之外,我还有点纠结于与六角形建筑有关的东西。我试图应用外部行为应该依赖于内部的定义,所以基础结构层->应用程序层->领域层
在本例中,我将应用程序层中的服务定义为以下LoginService示例:
class LoginUserService implements ApplicationServiceInterface
{
private $userRepository;
private $session;
public function __construct(UserRepositoryInterface $userRepository, Session $session)
{
$this->userRepository = $userRepository;
$this->session = $session;
}
public function execute($request = null)
{
// TODO: Implement execute() method.
$userName = $request->get('user');
$password = $request->get('password');
$user = $this->userRepository->findByUsername($userName);
if (!empty($user) && $user->validate($password)) {
$this->session->start();
$this->session->set('user', array('id' => $user->getUserId(), 'username' => $user->getName(), 'email' => $user->getEmail()));
return true;
} else {
return false;
}
}
}
UserRepositoryInterface
应该在域层中定义。如果它在基础结构层,您应该将它移到域层。
当您创建UserRepositoryInterface
时,您创建了一个所有基础结构层实现都必须履行的契约。这是依赖倒置原理的教科书例子。
您可以放心地假设实现履行了约定。此假设不会创建对基础结构层的依赖关系。
我正在尝试创建一个简单的博客平台,同时了解有关DDD和微服务的更多信息,因此我想在此上下文中向您询问两个建议: < li >我在我的项目中假设的一个业务规则是,只有角色为< code > publicis 和< code>Administrator的用户才能创建帖子,但是由< code > publicis 创建的帖子在发布之前必须首先得到< code>Administrator的批准。在我的理解
域内有一个接口“DetectPriorityInterface”。两个实现必须同时处于活动状态;一种“混合”必须实时地选择一种而不是另一种。 问题是:这些实现(两个实现)应该住在哪里:在域层还是基础结构层?? 内部实现充满了业务规则,应该驻留在域层。外部实现是一个简单的调用,应该存在于基础结构中。 null 客户端使用接口,因此,对于应用层,所有这些东西都是trasparent;接下来,我们将删除
null 但有件事我在纠结...应用层如何实现到域层的接口?这难道不需要应用程序层知道域层的相互工作吗?这从一开始就完全破坏了使用接口的意义。如果域层提供了一个接口,而该接口的适配器是由使用该接口的层实现的,这将意味着该接口的用户也在实现该接口本身。就像外层在告诉内层如何工作...这违背了去耦合的本质,甚至违背了一般的接口。 对我来说,这似乎很糟糕,因为现在您已经迫使框架层进行验证,这应该是域逻辑
我阅读了Alistair关于六边形模式的文章,并浏览了与此相关的其他资源(Alistair的视频,端口和适配器的简短描述)。 我了解六边形架构的总体思路,以及它给现代应用程序开发带来的优势是什么。但是,我仍然对端口和适配器的实际实现有一些困惑。 问题1: 从阿利斯泰尔的文章中, 在一个实现中,端口和适配器以两种方式出现,我将其称为主要和次要,原因显而易见。它们也可以称为驱动适配器和驱动适配器。 有
我的文件夹结构如下: > 我的UI的项目 一个为应用程序核心的项目,它包含应用程序服务、域服务和域模型。 基础结构的项目,我有一个持久化文件夹在那里。 传递机制可以切换(从控制台应用程序到web应用程序...)而核心也会照样工作。 同样的基础结构,我可以使用实体框架一次,然后切换到dapper,而不会导致核心的改变。 到目前为止还不错,还是我错过了一些东西,还是我错过了对架构的最基本的理解? 如果
这个结构有一些问题,我也不喜欢它。-这样合适吗?-我如何使用EC2的结果-创建角色,我想部署代码到服务器,这是刚刚创建的,我不知道ID。-还有其他方法可以将参数传递给角色吗?