当前位置: 首页 > 知识库问答 >
问题:

六角结构:驱动端口的实现

况鸿雪
2023-03-14
    null

但有件事我在纠结...应用层如何实现到域层的接口?这难道不需要应用程序层知道域层的相互工作吗?这从一开始就完全破坏了使用接口的意义。如果域层提供了一个接口,而该接口的适配器是由使用该接口的层实现的,这将意味着该接口的用户也在实现该接口本身。就像外层在告诉内层如何工作...这违背了去耦合的本质,甚至违背了一般的接口。

public interface UserRegisteringUseCasePort
{
    void Register(string username, string password, string passwordConfirm, string name);
}
public class UserRegisteringUseCaseAdapter : UserRegisteringUseCasePort
{
    private IUserRepository _userRepo;

    public class UserRegisteringUseCaseAdapter(IUserRepository userRepo)
    {
        _userRepo = userRepo;
    }

    public void Register(string username, string password, string passwordConfirm, string name)
    {
        // validation logic
        //... such as:
        if (password != passwordConfirm) {
            throw new Exception("password no match password confirm!");
        }
        userRepo.Add(new User(username, password, name));
    }
}

对我来说,这似乎很糟糕,因为现在您已经迫使框架层进行验证,这应该是域逻辑的一部分(自从我们停止应用程序层以来,甚至没有机会进行验证)。这也意味着应用程序层实际上并没有将业务逻辑拉到一起...它只表示它想要执行什么操作,但让调用者决定如何执行。应该是相反的,对吧?

暂时还没有答案

 类似资料:
  • 我阅读了Alistair关于六边形模式的文章,并浏览了与此相关的其他资源(Alistair的视频,端口和适配器的简短描述)。 我了解六边形架构的总体思路,以及它给现代应用程序开发带来的优势是什么。但是,我仍然对端口和适配器的实际实现有一些困惑。 问题1: 从阿利斯泰尔的文章中, 在一个实现中,端口和适配器以两种方式出现,我将其称为主要和次要,原因显而易见。它们也可以称为驱动适配器和驱动适配器。 有

  • 我的文件夹结构如下: > 我的UI的项目 一个为应用程序核心的项目,它包含应用程序服务、域服务和域模型。 基础结构的项目,我有一个持久化文件夹在那里。 传递机制可以切换(从控制台应用程序到web应用程序...)而核心也会照样工作。 同样的基础结构,我可以使用实体框架一次,然后切换到dapper,而不会导致核心的改变。 到目前为止还不错,还是我错过了一些东西,还是我错过了对架构的最基本的理解? 如果

  • 不过,当我发现有必要的时候,我开始稍微尝试应用概念。我发现仍然有许多我不能甚至不考虑应用到我的应用程序中,其中一些是:适配器、命令(CQR?)、事件… 除此之外,我还有点纠结于与六角形建筑有关的东西。我试图应用外部行为应该依赖于内部的定义,所以基础结构层->应用程序层->领域层 在本例中,我将应用程序层中的服务定义为以下LoginService示例:

  • 本文向大家介绍C#结构实现接口,包括了C#结构实现接口的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我是事件驱动微服务的新手,也是微服务本身的新手。我正在开发的系统并不大,它处理一堆文件,然后根据调用不同服务的数据。所以在我看来,一个好主意是,不要让服务调用其他服务来完成这项工作,而是将这些消息发送到发布/订阅队列,处理它们并将它们发送到相关主题,然后每个服务将订阅其中一个或几个主题,每隔几分钟,每个服务都会提取它们订阅的消息并发挥它们的魔力。这些服务也可以通过Rest来公开,以防您想强制执行它

  • 我们正在尝试将我们的单片核心拆分为微服务,并使用消息系统(如Kafka)添加一些相互连接的新服务。 下一阶段是创建APIendpoint,以便通过Api网关在移动应用程序和微服务之间进行通信。 开发API网关向微服务传输数据或从微服务传输数据的好解决方案是什么? 使用消息系统作为请求-应答系统(将API网关上的请求转换为消息命令,等待消息系统的响应,并提供状态或必要的数据) 在必要的微服务(例如使