NCF 的Dapr应用实例的运行
简介
在进行今天的主要内容之前,先带大家了解一下Dapr
Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员都可以轻松构建在云和边缘上运行的弹性、无状态和有状态的应用程序,并包含语言和开发人员框架的多样性。
任何语言,任何框架,任何地方
今天,我们正在经历一波云采用浪潮。开发人员对 Web + 数据库应用程序架构感到满意,例如经典的 3 层设计,但对本质上分布式的微服务应用程序架构不满意。成为分布式系统专家很难,你也不应该这样做。开发人员希望专注于业务逻辑,同时依靠平台为他们的应用程序注入云原生架构的规模、弹性、可维护性、弹性和其他属性。
这就是 Dapr 的用武之地。Dapr 将构建微服务应用程序的最佳实践编入称为构建块的开放、独立 API,使您能够使用您选择的语言和框架构建可移植的应用程序。每个构建块都是完全独立的,您可以在应用程序中使用其中的一个、部分或全部。
使用 Dapr,您可以将现有应用程序逐步迁移到微服务架构,从而采用云原生模式,例如横向扩展/缩减、弹性和独立部署。
此外,Dapr 与平台无关,这意味着您可以在本地、任何 Kubernetes 集群、虚拟机或物理机以及 Dapr 集成的其他托管环境中运行您的应用程序。这使您能够构建可以在云和边缘运行的微服务应用程序。
云和边缘的微服务构建块
在构建微服务应用程序时有许多考虑因素。Dapr 在构建开发人员可以以标准方式使用并部署到任何环境的微服务应用程序时,为常用功能提供了最佳实践。它通过提供分布式系统构建块来做到这一点。
这些构建块 API 中的每一个都是独立的,这意味着您可以在应用程序中使用它们中的一个、部分或全部。
边车架构
Dapr 将其 HTTP 和 gRPC API 公开为 sidecar 架构,既可以作为容器也可以作为进程,不需要应用程序代码包含任何 Dapr 运行时代码。这使得与 Dapr 的集成很容易与其他运行时集成,并提供应用程序逻辑的分离以提高可支持性。
自托管本地开发
在自托管模式下,Dapr 作为一个单独的 sidecar 进程运行,您的服务代码可以通过 HTTP 或 gRPC 调用该进程。每个正在运行的服务都有一个 Dapr 运行时进程(或 sidecar),它被配置为使用状态存储、发布/订阅、绑定组件和其他构建块。
您可以使用Dapr CLI在本地计算机上运行启用 Dapr 的应用程序。下图显示了使用 CLIinit
命令配置时 Dapr 的本地开发环境。
看完上述内容,我们大家需要有一个共识的概念就是,Dapr它是边车模式,下图中箭头所指的地方就是边车,是不是一下子就知道Dapr是什么样的印象了
你可以理解为是一些附加的服务,当然它也意味着,将是一个无所不能的服务。
知道NCF的小伙伴们都知道,不知道的小伙伴们可以到NCF Docs中去一睹NCF的真容。
NCF( NeuCharFramework)是一整套可用于构建基础项目的企业级通用 .NET 框架,
严格遵循 DDD 设计模式,包含了基础的缓存、数据库、模型、验证及配套管理后台,
高度模块化, 具有高度的可扩展性和耐造性。
NCF具有简单,灵活,可扩展的特性
现在给他加上Dapr,你可以想象一下,它将更大限度的为开发者伙伴提供更多的能力,下面我们就来看看NCF的Dapr版
步骤
- 下载NCF源码
- 打开Visual Studio,并打开Dapr分支源码
- 修改数据库配置
- 修改Redis配置
- 编译项目docker-compose
- 启动Docker
- 检查Docker运行状态
- 配置Docker共享文件夹目录
- 运行
实施
- 下载NCF源码
下载地址:https://github.com/NeuCharFramework/NCF
分支:Developer-front-DDD-Dapr-20220218
- 打开Visual Studio,并打开Dapr分支源码
打开源码后如图所示
Senparc.Web 主运行项目
XncfModules/ Xncf模块目录
docker-compose docker运行项目
- 修改数据库配置
打开数据库配置文件
修改Sql-Server节点的内容,如下所示
修改这三个位置即可
- 修改Redis配置
设置docker-compose为启动项
如果启动的时候提示xxx容器不存在,则需要添加项目容器的支持,右键项目添加Docker支持
需要查看docker容器运行中的redis中的配置信息
- 编译项目docker-compose
- 启动Docker
- 检查Docker运行状态
在Docker运行的桌面图标上右键,就能看到docker运行是否正常
- 配置Docker共享文件夹目录
进入windows版,docker desktop主界面,看到如下图的设置图标,点击进入
给共享的文件夹授权
为什么要给文件夹授权呢,因为docker本身是一个容器环境,独立于本身的操作系统,如果要与操作系统中的文件夹通信或者传递,则需要用到共享,挂载等功能,因此需要共享文件夹
- 运行