1、首先,我们简单把应用划分为3个基础部分。
1)用户界面(User Interface),可以支持用户访问;
2)应用核心(Application Core),实现了应用的具体业务逻辑;
3)基础设施(Infrastructure),支撑业务实现的工具;
2、那么,应用控制流会是“用户界面->应用核心->基础设施->应用核心->用户界面”。
3、暂时抛开应用核心,我们来丰富下外围工具。
4、现在让我们连接起应用核心,我们需要端口和适配器。
端口(Port),是应用同外部交互的规格,属于业务逻辑内部,呈现为接口和DTO。
适配器(Adapter),是外围工具连接应用核心的部件。根据连接方向进一步分为:
主适配器(或主动适配器),告知应用做什么,它是对端口的包装;
从适配器(或被动适配器),应用通知其做什么,它是对端口的实现;
5、可以发现应用核心通过端口实现了控制反转,不关心外围工具的实现。
6、将关注点转移到我们的应用核心,应用层(Application Layer)对外提供应用服务,并触发应用事件。
7、为业务划分领域(Domain Layer),领域内实现隔离的数据和业务逻辑。
领域模型(Domain Model),包含领域内的业务对象和触发的领域事件。
领域服务(Domain Service),则提供对一系列实体的业务逻辑处理。
8、最后我们对具有相关性的业务在较粗粒度上进行组件分包,并引入事件和共享内核来实现组件间通信。
至此,我们完成了清晰架构实现。