我正在开发一个golang程序,我正在基于六边形建筑进行修整。我想我的头脑主要围绕着这个想法,但有些事情我只是无法弄清楚。
该程序的功能是监控多个IP摄像机的报警事件,接收器可以通过HTTP2.0 PUSH请求接收报警事件的实时流。(以防万一这不是技术术语,我的服务从GET请求建立TCP / HTTP连接并保持其打开状态,当摄像机触发警报事件时,摄像机将其推送回服务)
架构层
适配器
HTTP 处理程序
内存中 JSON 存储
港口
设备服务接口
事件服务接口
设备存储库接口
事件存储库接口
服务业
设备服务
事件服务
域
设备域
事件域
用户通过API将设备添加到系统中,请求包括所需的监视计划(当接收者每天启动和停止时)和url。
调度程序负责定期检查接收方是否要根据其调度启动。如果它打算为某个设备运行,它将启动该设备的接收器。
接收器建立与 IP 摄像机的连接,并循环遍历警报事件流,处理警报事件并将其传递到事件服务。
事件服务接收事件,并负责根据域逻辑处理事件,并决定是发送电子邮件还是忽略它。它还会将所有事件保存到事件存储库中。
我不知道它们所在的两部分代码是调度程序和接收器。他们也应该如此。一个。两者都在同一封装中,并放置在适配器层b。适配器层中的接收方和服务层 c 中的调度程序。服务层中的调度程序和接收方?
我只是感到困惑,因为接收器不是由用户直接启动的,而是由不断检查条件的运行循环启动的。但我也可能为不同品牌的相机提供不同的接收器。这是一个实现细节,这意味着接收器应该在适配器层中。这让我认为选项b是最好的。
我可能想得太多了,但让我知道你们都认为最好的选择是什么,或者建议一个更好的选择。
翻翻过去那场雪
MM们
拉丁的传说
相关分类