diff --git a/docs/en/Samples/Microservice-Demo.md b/docs/en/Samples/Microservice-Demo.md index d0a05f31a4..747c733683 100644 --- a/docs/en/Samples/Microservice-Demo.md +++ b/docs/en/Samples/Microservice-Demo.md @@ -6,7 +6,7 @@ ## Introduction -One of the major goals of the ABP framework is to provide a [convenient infrastructure to create microservice solutions](Microservice-Architecture.md). +One of the major goals of the ABP framework is to provide a [convenient infrastructure to create microservice solutions](../Microservice-Architecture.md). This sample aims to demonstrate a simple yet complete microservice solution; diff --git a/docs/zh-Hans/Event-Bus.md b/docs/zh-Hans/Event-Bus.md new file mode 100644 index 0000000000..0adb56101d --- /dev/null +++ b/docs/zh-Hans/Event-Bus.md @@ -0,0 +1,3 @@ +# Event Bus + + TODO \ No newline at end of file diff --git a/docs/zh-Hans/Microservice-Architecture.md b/docs/zh-Hans/Microservice-Architecture.md new file mode 100644 index 0000000000..166591e779 --- /dev/null +++ b/docs/zh-Hans/Microservice-Architecture.md @@ -0,0 +1,30 @@ +# 微服务架构 + +*"作为**面向服务架构**(SOA)的一个变体,微服务是一种将应用程序分解成**松散耦合服务**的新型架构风格. 通过**细粒度**的服务和**轻量级**的协议,微服务提供了更多的**模块化**,使应用程序更容易理解,开发,测试,并且更容易抵抗架构侵蚀. 它使小型团队能够**开发,部署和扩展**各自的服务,实现开发的**并行化**.它还允许通过**连续重构**形成单个服务的架构. 基于微服务架构可以实现**持续交付和部署**."* + +— [维基百科](https://zh.wikipedia.org/wiki/Microservices) + +## 介绍 + +ABP框架的主要目标之一就是提供**便捷的基础设施来创建微服务解决方案**. 我们做了以下工作: + +* 提供[模块系统](Module-Development-Basics.md),允许将应用程序拆分为模块,其中每个模块可以拥有自己的数据库,实体,服务,API,UI组件/页面....等. +* 提供[架构模型](Best-Practices/Module-Architecture.md)来开发模块,与微服务开发和部署兼容. +* 提供[最佳实践指南](Best-Practices/Index.md)制定模块开发标准. +* 提供基础设施来实现微服务中的[领域驱动设计](Domain-Driven-Design.md). +* 提供从应用程序服务[自动生成REST风格的API](AspNetCore/Auto-API-Controllers.md)的服务. +* 提供[自动创建C#API客户端](AspNetCore/Dynamic-CSharp-API-Clients.md)服务,以便从其他服务/应用程序使用你服务. +* 提供[分布式事件总线](Event-Bus.md)用于服务通信. +* 提供更多其他服务,使日常开发更加简便. + +## 在新应用程序中使用微服务 + +开始一个新解决方案建议**始终从单体开始**, 保持模块化,在单体成为问题时将其拆分为微服务.这使初期进度会很快,特别是如果你的团队人数不多,并且不想处理微服务架构带来的各种挑战. + +然而开发一个良好的模块化应用程序不是那么简单,因为很难像微服务那样**保持模块之间的隔离** (参阅 [Stefan Tilkov的文章](https://martinfowler.com/articles/dont-start-monolith.html)). 微服务架构会自然的让你开发隔离的服务,但是在模块化的单体应用程序中,模块很容易彼此紧密耦合并设计出**弱模块边界**和API约定. + +ABP可以帮助你,它提供了与**与微服务兼容的严格模块架构** 在这个架构中你的模块被分割成多个层/项目,在自己的VS解决方案中进行开发,该解决方案完成独立于其它模块. 这种方式开发的模块是一种天然的微服务,但是它可以很容易的插入到单体应用程序中. 请参阅**微服务优先的模块设计**的[模块开发最佳实践指南](Best-Practices/Index.md). 所有[标准的ABP模块](https://github.com/abpframework/abp/tree/master/modules)都是基于本指南开发的. 因此你可以将这些模块嵌入到单体解决方案中使用它们,也可以单独部署通过远程API调用. 它们可以共享一个数据库,也可以通过简单配置使用自己的数据库. + +## 微服务解决方案示例 + +[微服务解决方案示例](Samples/Microservice-Demo.md)演示了基于ABP框架的完整的微服务的解决方案. \ No newline at end of file diff --git a/docs/zh-Hans/Samples/Microservice-Demo.md b/docs/zh-Hans/Samples/Microservice-Demo.md new file mode 100644 index 0000000000..eeac6e0749 --- /dev/null +++ b/docs/zh-Hans/Samples/Microservice-Demo.md @@ -0,0 +1,40 @@ +# 微服务解决方案示例 + +*"作为**面向服务架构**(SOA)的一个变体,微服务是一种将应用程序分解成**松散耦合服务**的新型架构风格. 通过**细粒度**的服务和**轻量级**的协议,微服务提供了更多的**模块化**,使应用程序更容易理解,开发,测试,并且更容易抵抗架构侵蚀. 它使小型团队能够**开发,部署和扩展**各自的服务,实现开发的**并行化**.它还允许通过**连续重构**形成单个服务的架构. 基于微服务架构可以实现**持续交付和部署**."* + +— [维基百科](https://zh.wikipedia.org/wiki/Microservices) + +## 介绍 + +ABP框架的主要目标之一就是提供[便捷的基础设施来创建微服务解决方案](../Microservice-Architecture.md). + +此示例演示了一个简单而完整的微服务解决方案; + +* 拥有多个可独立可单独部署的**微服务**. +* 多个**Web应用程序**, 每一个都使用不同的API网关. +* 使用[Ocelot](https://github.com/ThreeMammals/Ocelot)库开发了多个**网关** / BFFs ([用于前端的后端](https://docs.microsoft.com/zh-cn/azure/architecture/patterns/backends-for-frontends)). +* 包含使用[IdentityServer](https://identityserver.io/)框架开发的 **身份认证服务**. 它也是一个带有UI的SSO(单点登陆)应用程序. +* 有**多个数据库**. 一些微服务有自己的数据库,也有一些服务/应用程序共享同一个数据库(以演示不同的用例). +* 有不同类型的数据库: **SQL Server** (与 **Entity Framework Core** ORM) 和 **MongoDB**. +* 有一个**控制台应用程序**使用身份验证展示使用服务最简单的方法. +* 使用[Redis](https://redis.io/)做**分布式缓存**. +* 使用[RabbitMQ](https://www.rabbitmq.com/)做服务间的**消息**传递. +* 使用[Kubernates](https://kubernetes.io/)**部署**和运行所有的服务和应用程序. + +下图显示了该系统: + +![microservice-sample-diagram](../images/microservice-sample-diagram.png) + +### 源码 + +你可以从[GitHub仓库](https://github.com/abpframework/abp/tree/master/samples/MicroserviceDemo)获取源码. + +### 状态 + +此示例仍处于开发阶段,尚未完成. + +## 微服务 + +### 身份认证服务 + +... \ No newline at end of file diff --git a/docs/zh-Hans/docs-nav.json b/docs/zh-Hans/docs-nav.json index 633155adc7..d9ac2aea60 100644 --- a/docs/zh-Hans/docs-nav.json +++ b/docs/zh-Hans/docs-nav.json @@ -255,6 +255,23 @@ } ] }, + { + "text": "示例", + "items": [ + { + "text": "微服务示例", + "path": "Samples/Microservice-Demo.md" + } + ] + }, + { + "text": "应用模块", + "path": "Modules/Index.md" + }, + { + "text": "微服务架构", + "path": "Microservice-Architecture.md" + }, { "text": "测试" }, diff --git a/docs/zh-Hans/images/microservice-sample-diagram.png b/docs/zh-Hans/images/microservice-sample-diagram.png new file mode 100644 index 0000000000..b1d9f6c66e Binary files /dev/null and b/docs/zh-Hans/images/microservice-sample-diagram.png differ