Architecture 在六边形体系结构中动态加载适配器的最佳方法?

Architecture 在六边形体系结构中动态加载适配器的最佳方法?,architecture,domain-driven-design,restful-architecture,ddd-service,hexagonal-architecture,Architecture,Domain Driven Design,Restful Architecture,Ddd Service,Hexagonal Architecture,我想将六边形体系结构应用于我的userManagement boundedContext。所以我想定义两个端口,一个用于UI,另一个用于serviceBus集成,以侦听来自其他服务的事件 问题是如果我想为UI端口实现适配器,我不确定它是否应该被称为UI端口,基本上这就是CreateNewUser、BlockUser、CheckIfUserExists操作使用不同技术WCF和Owin的接口。如何将它们添加到我的控制台应用程序 假设我想使用WCF实现Soap适配器,使用Owin实现rest。在许多示

我想将六边形体系结构应用于我的userManagement boundedContext。所以我想定义两个端口,一个用于UI,另一个用于serviceBus集成,以侦听来自其他服务的事件

问题是如果我想为UI端口实现适配器,我不确定它是否应该被称为UI端口,基本上这就是CreateNewUser、BlockUser、CheckIfUserExists操作使用不同技术WCF和Owin的接口。如何将它们添加到我的控制台应用程序

假设我想使用WCF实现Soap适配器,使用Owin实现rest。在许多示例中,我看到人们为每个驱动适配器创建单独的控制台应用程序,即:MyDDD.UserManagement.Api.Rest.Host和MyDDD.UserManagement.Api.Soap.Host。我想要实现的是一个主机应用程序和以某种方式连接适配器的能力。请分享你的想法

所以我想定义两个端口,一个用于UI,另一个用于serviceBus 集成,以侦听来自其他服务的事件

你误解了港口的概念。您所谓的UI和服务总线集成是适配器。它们是端口的2个适配器。他们使用这个端口。他们称之为港口提供的业务。端口与技术无关,独立于交付机制。端口只是一个提供应用程序用例的接口

UI端口我不确定它是否应该被称为UI端口,基本上这就是 存在CreateNewUser、BlockUser和CheckIfUsers的接口 现场操作

端口应根据其用途命名。如果这些操作是为了管理用户,我应该称之为userManagement。或者,如果您的BC是这样命名的,那么只需调用端口api即可。不过,我更喜欢有意义的全名

如果我想实现适配器。。。如何将它们添加到控制台 应用程序


我认为你错了。如果console是指CLI,则console是该端口的另一个适配器。您不需要向它添加适配器

如果我想使用不同的 技术WCF和Owin。如何将它们添加到我的控制台应用程序

我告诉您我的方法:适配器使用带有自定义注释的名称声明自己。主组件在引导整个系统时,会扫描适配器,并通过检查其名称为每个端口选择所需的适配器

我想要实现的是一个主机应用程序和连接能力 不知怎的,我喜欢它


我是这样做的:我有一个多模块的项目。六边形是一个模块,每个适配器是另一个模块。我有另一个名为main的模块,它一起构建并运行所需的适配器。例如,可以将每个端口所需的适配器放在属性文件中。我就是这样做的。

你想同时使用它们还是互相替代?我需要它们。我删除了答案,试图给出更好的答案;你说的控制台应用是什么意思?据我所知,您希望有一个应用程序有一个UI和一个服务总线,并且它们都应该使用相同的应用程序服务,对吗?所谓的consoleAppication,我指的是.NET中的项目类型。i、 e类库或控制台应用程序可执行文件。是的,我想有一个服务,它有一个UI端口,而不是UI客户端应用程序。现在,有一个团队开发了一个web客户端应用程序,他们需要一个RESTAPI来与我的服务通信。还有另一个团队创建了一个WPF应用程序,但他们希望使用WCFSOAP与我的服务进行通信。所以我想从我的服务中公开2个适配器。它们都将调用我的应用程序层。如果可能的话,我希望这是可配置的。手动添加或删除此适配器,明白了。您想动态添加/删除这些实现的原因是什么?架构约束?我认为这样做没有什么大的好处。更可能增加更多不必要的复杂性。我认为你错了。如果console是指CLI,则console是该端口的另一个适配器。您不需要向其添加适配器。-你误解我了。我的意思是如何将适配器添加到我的主exe processconsole应用程序中。我是这样做的:我有一个多模块项目。六边形是一个模块,每个适配器是另一个模块。我有另一个名为main的模块,它一起构建并运行所需的适配器。例如,可以将每个端口所需的适配器放在属性文件中。我就是这样做的这正是我想要的,你知道任何现有的开源项目吗,在那里我可以看到这样一个功能的例子吗。有一个六边形架构的示例,其中定义了5个端口:其中一个是消息队列端口。但是你说,这应该是一个适配器,它将调用我的用户管理端口-对吗?@dmitrobodiu您好,很抱歉在你说控制台时误解了你。你知道现有的开源项目吗,在那里我可以
ee是此类功能的一个示例?我要在github中发布我的代码,但还没有完成。我不知道那里是否还有其他类似的项目,我想是的,但我不知道。我会上传一个例子到github。但我还没把它弄糟。它是使用Java9模块的六边形体系结构