在单个应用程序中拥有所有功能

问题描述 投票:0回答:1

我们有以下连接到单个数据库(将其命名为 mainDb)的 Windows 服务,但具有不同的功能:

  1. 从考勤机获取数据并存储在mainDb中
  2. 从 mainDb 获取数据(即收件人、内容)并通过短信网关发送短信
  3. 从 mainDb 获取数据(即收件人、内容)并发送电子邮件
  4. 监控连接到 mainDb 服务器的机器并存储健康数据(连接性、 内存等)进入mainDb

我的一位团队成员认为创建一个服务是个好主意,它将根据我们配置的功能来满足所有上述目的(在特定环境中可能会禁用一个或多个功能);给出的理由是它将易于部署和维护单个应用程序。

另一方面,我赞成将它们分开以保持代码质量,减少由于维护而导致的停机时间,并在由于运行时故障而受到损害时保持其他功能可用。

需要建议。

architecture software-design software-distribution
1个回答
0
投票

需要建议

我认为你关于“分离”事物的说法绝对是正确的,但是有什么建议呢?模块化、组件化的设计原则及其原因、面向服务的架构、微服务……如果说从第一天开始就需要学习架构课程的话,那就是 除了单体之外的一切

在给定场景中哪种方法更好?

一般来说,为每个不同的任务/职责(用UML术语来说,就是你在组件图中放入的内容)使用不同的组件,然后每个组件对应(至少在你已经呈现的情况下)一个特定的、不同的服务(您在分布图中放入的内容)。

也就是说,在你提出的具体情况下,我只是将 2 和 3 混为一谈,因为除了“目标通道”之外,它们对我来说看起来是一样的,即抽象一点,看起来像“通信/消息传递组件”。至于 1 和 4,在我看来,它们绝对像是满足独立需求的单独组件。

无论如何,请仅将这些视为有根据的猜测,我宁愿希望“方法”是明确的:实际的解决方案很大程度上取决于特定功能需求的细节,然后还取决于技术考虑(例如哪些技术可用)。

© www.soinside.com 2019 - 2024. All rights reserved.