在 Winglang 中实施生产级 CRUD REST API
在之前发表的文章中,作者报告了使用最简单的 Greeting Service 示例应用程序在 Winglang 编程语言中实现六边形端口和适配器模式的可能性。这次评估的主要结论如下: 云资源(如 API Gateway)扮演着驱动(in-)和被驱动(out-)端口的角色 事件处理函数扮演着适配器的角色,它通向一个纯粹的核心,可以用 Winglang、TypeScript 或任何编程语言实现,编译成 JavaScript 并在 Node.js 运行时引擎上运行。 最初,作者计划继续探索在 Winglang 中实现更通用的分阶段事件驱动架构(SEDA)的可能方法。然而,使用最简单的问候服务(GreetingService)作为示例,仍有一些非常重要的架构问题没有得到解答。因此,作者决定更深入地探讨实现一个典型的创建/检索/更新/删除(CRUD)服务所涉及的问题,该服务暴露于标准化的 REST API,并解决了典型的生产环境问题,如安全认证、可观察性、错误处理和报告。 为了防止特定领域的复杂性影响对重要架构考虑因素的关注,作者选择了最简单的 TODO 服务,包含四种操作: 检索所有任务(每个用户) 创建新任务 完全替换现有任务定义 删除现有任务 通过这个简单的例子,作者评估了许多重要的架构选项,并为 Winglang 编程语言提出了一个中间件库的初始原型,该库与主流编程语言的流行库兼容,并有可能超越它们,如 AWS Lambda 的 Node.js…