0

我想将六边形架构应用于我的userManagement boundedContext. 所以我想定义 2 个端口(一个用于UI,另一个用于serviceBus集成,用于侦听来自另一个服务的事件)。

问题是我是否想使用不同的技术WCFOwinadapters来实现UI port(我不确定是否应该调用它UI port,基本上这是操作所在的接口) 。如何将它们添加到我的控制台应用程序?CreateNewUser, BlockUser, CheckIfUserExists

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

4

1 回答 1

2

所以我想定义 2 个端口(一个用于 UI,另一个用于 serviceBus 集成,用于侦听来自另一个服务的事件)。

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

UI 端口(我不确定它是否应该称为 UI 端口,基本上就是 CreateNewUser、BlockUser、CheckIfUserExists 操作所在的接口)

端口应根据其用途命名。如果操作是为了管理用户,我应该称之为“userManagement”。或者,如果您的 BC 以这种方式命名,请将端口称为“api”(不过我更喜欢一个有意义的名称)。

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

我认为你在这里错了。如果控制台是指 CLI,那么控制台是端口的另一个适配器。您不会向其中添加适配器。

如果我想使用不同的技术 WCF 和 Owin 为 UI 端口实现适配器。如何将它们添加到我的控制台应用程序?

我告诉你我这样做的方式:适配器用一个名称(使用自定义注释)声明自己。主要组件在引导整个系统时会扫描适配器,并通过检查其名称为每个端口选择所需的适配器。

我想要实现的是一个主机应用程序以及以某种方式将适配器连接到它的能力。

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

于 2018-06-01T07:00:21.367 回答