提问者:小点点

Arciteculture设计:基于模板的电子邮件服务(Java,Springboot)[已关闭]


< b >想改进这个问题?通过编辑此帖子更新问题,使其只关注一个问题。

我目前正在做一个项目,其中我有一个电子邮件REST服务。基本思想是,我的电子邮件从客户端(通过JSON)接收请求,然后使用该数据根据请求中指定的电子邮件模板创建电子邮件。收到的数据将用于填写电子邮件模板。电子邮件模板将包含一些字段,例如有关电子邮件服务器的数据(SMTP主机名、SMTP端口、加密类型、登录数据)和有关电子邮件正文的数据(收件人、抄送、发件人、密件抄送、主题、正文)。编程语言将是Java,框架Spring Boot,模板引擎将是Velocity、Thymeleaf或Mustache。为了实施这个项目,我被限制在80小时内。20小时将用于规划和记录。

现在,我的问题是:

>

  • 我的服务可以使用什么类型的体系结构?

    您将访问实施需要多长时间?

    我的编程背景:

    >

  • 我已经或多或少地编程了两年(尽管有 1 - 3 个月的间隔)

    使用的编程语言:Python,Java, C#, TypeScript(一点), JavaScript(一点), Go, PHP,SQL

    开发的项目:

    > < li>

    REST-API:使用Java和Spring Boot的URL-Shortener(在一个组中)

    全栈:使用 Django 的 CSV 到 XSXL 转换器

    完整堆栈:使用Laravel学习网站

    前端:使用Angular的健身跟踪器

    后端:交付服务的数据库建模和设置

    PS:这个项目是为了我的论文,所以我主要关心的是完成。

    我考虑过的选项:

    用于存储:

    使用数据库的好处:

    >

  • 轻松访问基于查询的数据

    数据可以轻松更新和删除

    数据存储和备份很容易

    可以通过多种服务访问数据

    弊:

    >

  • 安装和管理将花费更多时间。

    管理数据库连接和安全性的复杂性增加。

    使用本地存储的优势:

    > < li>

    易于实施和维护。

    服务运行不需要数据库连接。缺点:

    失去了数据库的优势。

    整体式与微服务方法

    由于我在管理基于微服务的架构方面没有任何经验,我不知道实现和管理这些服务需要花费多少额外的时间。

    我将如何划分我的功能:

    1.电子邮件endpoint微服务:

    该服务将负责接收客户端的请求并处理与客户端的通信。它将从客户机接收JSON数据,并解析它以提取必要的信息。然后,该服务会根据需要将提取的数据转发给其他服务。

    2.电子邮件模板渲染微服务:

    此服务将负责获取提取的数据并使用它来填充电子邮件模板。该服务将使用模板引擎(如 Velocity、Thymeleaf 或 Mustache)来实现此目的。

    3.电子邮件发送微服务:

    该服务将负责处理电子邮件的实际发送。它将连接到SMTP服务器,使用电子邮件凭据进行身份验证,并发送带有正确标头和正文的电子邮件。

    4.电子邮件服务器配置微服务:

    此服务将负责存储和处理电子邮件服务器设置和凭据。优点: - 更高的可扩展性和维护 迪砂


  • 共1个答案

    匿名用户

    我认为这个问题是基于意见的,应该结束。但我还是会回答。

    在我看来,你已经花了那个分析时间。当你说使用模板的 REST 服务时,感觉就像你已经决定了架构。还有什么要决定的?

    Spring Boot是一个非常好的选择。我不推荐Velocity。它已经被其他模板解决方案传递了。最好还是用那些仍然受Spring MVC支持的。

    我会使用关系数据库。你只需要几张桌子。

    您不需要多个服务。构建简单。不要担心微服务的炒作。我会将模板存储在数据库中。当请求进来时,我会验证数据,查找模板,呈现电子邮件正文,然后将其发送出去。我只会在有充分理由的情况下分解东西。

    我的看法是你做得太难了。简单开始。