|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/guide-to-domain-driven-design/
课程评论:没有评论
**课程名称:**领域驱动设计 (Domain Driven Design) **课程概述:** 本课程将首先深入探讨领域驱动设计 (DDD) 的核心理论,并通过大量示例帮助学员理解其精髓。大部分示例将使用 Go 语言编写。 随后,课程将转向实践,使用 PHP 构建一个可扩展的后端基础。我们将把应用程序划分为三个主要部分:应用层 (Application)、领域层 (Domain) 和基础设施层 (Infrastructure)。我们的目标是尽量避免与框架产生紧密耦合,同时充分利用 Symfony 框架提供的所有功能。 * **应用层 (Application layer)** 将作为外部世界与领域层之间的桥梁,隔离所有与领域相关的核心逻辑。该层还将负责使用 JWT 进行身份验证,并通过 Symfony Security Bundle 管理用户对资源的访问权限。 * **领域层 (Domain layer)** 将包含核心业务逻辑,并尽可能保持与具体实现细节的解耦。 * **基础设施层 (Infrastructure layer)** 将使用 Doctrine 作为 ORM,同样致力于避免与该库的紧密耦合,保持最大的灵活性,以便在需要时能够轻松地将相同的领域逻辑应用于其他库或直接使用原生 SQL 查询。 最后,为了实现 RESTful API,我们将利用 API 提供商获取游戏数据。为此,我们将使用 Symfony Command 组件来实现相关的命令,以便访问 API 提供商。课程还将包含单元测试,并使用相应的框架来模拟/存根测试依赖。 **主要学习内容:** * 领域驱动设计 (DDD) 理论精髓 * 使用 Go 语言进行 DDD 概念示例 * 使用 PHP (Symfony) 构建可扩展后端 * 应用程序的三层架构:应用层、领域层、基础设施层 * 避免框架和库的紧密耦合 * JWT 身份验证 * Symfony Security Bundle 的使用 * 单元测试与测试双工 (Test Doubles) 的模拟/存根 * Doctrine ORM 的灵活应用 * 通过 Symfony Command 组件与外部 API 交互 **适合人群:** 希望深入理解并实践领域驱动设计的后端开发人员,尤其是对使用 PHP 和 Symfony 构建可扩展、可维护系统感兴趣的学习者。
We will first focus the theory of DDD and understand the essentials.There are many examples to grasp the theory. Those are mostly written by Golang. Then going to try to create a base for a scalable backend with using PHP. We will separate the app to 3 main parts Application, Domain and Infrastructure. And going to try not to stay tightly coupled to the framework itself but still going to use the all features Symfony is providing us. Application layer will be a transition between the outside world to our Domain and going to isolate everything domain related inside our DDD. Also will be taking care of authentication with JWT and going to use Symfony Security bundle to maintain the user access definitions to resources. Will be writing Unit tests and use a framework for mocking/stubbing the test doubles. In Infrastructure layer we are going to use Doctrine as ORM and try to not to stay tightly coupled to the library but stay as flexible as possible so we can use the same domain logic easily whenever we want with some other library or even with plain SQL queries. Since we are going to implement a rest api, we are also going to use an api provider to get the data for our game. To access the api provider we will implement some commands with using Symfony Command component.