介绍

本文的目的是:通过创建一个返回列表的简单服务,并在 Docker 容器中运行该服务,让您熟悉使用 .NET 创建微服务的构建过程。

安装 .NET SDK

要开始构建 .NET 应用程序,首先下载并安装 .NET Core SDK(软件开发工具包)。

根据操作系统的类型下载并安装对应版本的 .NET Core SDK v3.1:

  • .NET SDK (64-位):https://dotnet.microsoft.com/download/dotnet-core/thank-you/sdk-3.1.401-windows-x64-installer

  • .NET SDK (32-位):https://dotnet.microsoft.com/download/dotnet-core/thank-you/sdk-3.1.401-windows-x86-installer

检查安装是否正确

.NET SDK 安装完成后,打开一个命令提示符窗口并运行以下命令:

dotnet

如果命令运行时,打印出的信息是介绍如何使用 dotnet,说明安装正确。

创建您的服务

创建一个应用

在命令提示符窗口运行以下命令:

dotnet new webapi -o myMicroservice --no-https
cd myMicroservice

第一行中 dotnet 命令创建了一个 webapi(一个 REST API 终端)类型的“新”应用。

  • 参数 -o 创建一个名为 myMicroservice 的目录,用于存储应用程序。

  • 标记 --no-https 创建一个不需要 HTTPS 证书就可以运行的应用程序,以便简化部署。

使用 cd myMicroservice 命令进入新建应用程序的目录。

生成的代码

可以看到,在 myMicroservice 目录中创建了几个文件,为您提供了一个可以运行的简单服务。

  • myMicroservice.csproj 定义了项目引用的库等。

  • Startup.cs 包含应用程序启动时加载的所有设置和配置。

  • Controllers/WeatherForecastController.cs 有一个简单 API 的代码,可以返回未来 5 天的天气预报(模拟数据)。

Controllers/WeatherForecastController.cs 文件中代码:

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{private static readonly string[] Summaries = new[]{"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"};private readonly ILogger<WeatherForecastController> _logger;public WeatherForecastController(ILogger<WeatherForecastController> logger){_logger = logger;}[HttpGet]public IEnumerable<WeatherForecast> Get(){var rng = new Random();return Enumerable.Range(1, 5).Select(index => new WeatherForecast{Date = DateTime.Now.AddDays(index),TemperatureC = rng.Next(-20, 55),Summary = Summaries[rng.Next(Summaries.Length)]}).ToArray();}
}

运行您的服务

确保命令提示符定位在 myMicroservice 目录中,运行以下命令:

dotnet run

命令完成后,在浏览器中打开『http://localhost:5000/WeatherForecast』

恭喜,您已经运行了一个简单的服务。

安装 Docker

Docker 是一个平台,它可以让你将一个应用程序及其配置和依赖项组合成一个叫作容器的单独的、可独立部署的单元。

下载并安装 Docker Desktop

请参阅我之前翻译的 Docker 快速入门(一)

或者查看这篇文章:
https://ittranslator.cn/backend/docker/2020/06/19/quickstart-1.html

检查 Docker 是否可用

安装完成后,打开一个新的命令提示符窗口并运行以下命令:

docker --version

若命令运行后,显示一个版本信息,那么表示 Docker 安装成功了。

添加 Docker 元数据

要运行 Docker 镜像,需要一个 Dockerfile —— 一个文本文件,其中包含如何将应用构建为 Docker 镜像的指令。Docker 镜像包含将您的应用作为 Docker 容器运行所需的所有内容。

添加 Dockerfile 文件

在 myMicroservice 目录中,使用文本编辑器(推荐使用 Visual Studio Code)创建一个名为 Dockerfile 的文件,包含以下内容:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY myMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /appFROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "myMicroservice.dll"]

注意:确保将文件命名为 Dockerfile(没有扩展名),而不是 Dockerfile.txt 或其他名称。

添加 .dockerignore 文件(可选的)

.dockerignore 文件可以减少 docker build 过程中使用的文件集,文件越少则构建越快。

在文本编辑器中创建一个名为 .dockerignore 的文件(这个文件类似于 .gitignore 文件,如果你熟悉的话),包含以下内容:

Dockerfile
[b|B]in
[O|o]bj

创建 Docker 镜像

运行以下命令:

docker build -t mymicroservice .

docker build 命令使用 Dockerfile 构建 Docker 镜像。

  • 参数 -t mymicroservice 告诉命令标记(或命名)镜像为 mymicroservice

  • 最后一个参数告诉命令使用哪个目录来查找 Dockerfile (. 指定当前目录)。

译者注:
如果是第一次在本机上创建基于 mcr.microsoft.com/dotnet/core/sdk:3.1 和 mcr.microsoft.com/dotnet/core/aspnet:3.1 的镜像,构建 mymicroservice 镜像将会是一个漫长的过程,因为从官方 Docker 注册表拉取镜像实在是太慢了!耐心等待,终会成功的,我已经实践过了。

等待镜像构建完成,可以运行下面的命令来查看计算机上可用的所有镜像的列表,包括您刚刚创建的 mymicroservice 镜像。

docker images

运行 Docker 镜像

您可以使用下面的命令在容器中运行您的应用:

docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice

可选地,您可以在单独的新的命令提示符窗口中输入下面的命令查看正在运行的容器:

docker ps

在运行 docker run 命令后,您可以在浏览器中输入 URL『http://localhost:3000/WeatherForecast』来访问正在容器中运行的应用程序。

恭喜!您已经成功地创建了一个可以使用 Docker 容器部署和缩放的小型、独立的服务。

以上这些就是微服务的基本构建块。

作者 :Microsoft 官网 
译者 :技术译民
出品 :技术译站(https://ITTranslator.cn/)

编写第一个 .NET 微服务相关推荐

  1. Istio:一个用于微服务间通信的服务网格开源项目

    http://www.infoq.com/cn/news/2017/05/istio Istio:一个用于微服务间通信的服务网格开源项目 Google.IBM和Lyft开源了微服务管理.保护和监控框架 ...

  2. 【BPM技术】Zeebe是一个用于微服务编排的工作流引擎。

    Zeebe是一个用于微服务编排的工作流引擎. 这篇文章将帮助你确切地了解什么是Zeebe以及它如何可能与你相关.我们将简要介绍Zeebe以及它所解决的问题,然后再进行更详细的介绍. 我们将在整个写作过 ...

  3. eShopOnContainers 是一个基于微服务的.NET Core示例框架

    找到一个好的示例框架很难,但不是不可能.大多数是小型Todo风格的应用程序,通常基于SimpleCRUD.值得庆幸的是,Microsoft已经为eShopOnContainers创建了一个基于微服务的 ...

  4. unifig,是以基于 SpringCloud 的一个分布式 微服务 平台

    介绍: unifig,是以基于 SpringCloud 的一个分布式 微服务 平台. 具有 服务发现注册.配置中心.负载均衡.断路器.数据监控 . 当前开发完成b2c商场的主要业务,以及团购逻辑.是二 ...

  5. CoralCache:一个提高微服务可用性的中间件

    摘要:当数据库出问题时能降级从本地缓存的数据中查询数据,CoralCache就是这样一个提高微服务可用性的中间件. 背景 有些场景下,微服务依赖数据库中一些配置项或者数量很少的数据,但当数据库本身有问 ...

  6. mess-cli : 一个前端微服务架构脚手架(beta版)

    阅读本文需要较长的时间,本文介绍了微服务的概念.笔者心中的前端微服务,以及基于mess-cli脚手架,如何快速生成一个前端微服务架构项目 什么是微服务? 相信了解过spring cloud的同学都知道 ...

  7. 毕业设计无从下手?四个步骤手把手带你搭建一个后台微服务架构

    更多精彩文件点击访问:https://blog.csdn.net/weixin_45692705?spm=1011.2124.3001.5343 教程目录 后台技术栈 准备工作 一. 创建父工程 二. ...

  8. 我们团队设计的一个基于微服务的高并发服务器架构

  9. 一个关于微服务架构和monolithic架构的讨论

    As you mentioned Orchestra just acts as a router, and I prefer to call it as "API gateway" ...

最新文章

  1. 中职计算机php学啥,计算机专业都学什么主要课程有什么_中职中专网
  2. SQLServer中设置XML索引
  3. 王道操作系统考研笔记——2.1.5 线程概念与多线程模型
  4. 威纶通触摸屏与mysql_威纶触摸屏应用实例 以及威纶通触摸屏配方组合
  5. CentOS安装网络驱动
  6. linux九九乘法表代码,C语言输出九九乘法表代码及解析
  7. 计算机联锁论文致谢,计算机联锁系统 毕业设计论文 定稿.doc
  8. 材料成型是现代制造业的重要支柱,对经济社会的发展和综合国力的提升有着十分重要的意义。
  9. android照片裁剪
  10. SharpDevelop源码分析之插件
  11. PMbok 全书串讲
  12. uvc摄像头代码解析之描述符
  13. python中文注释与单行注释_Python单行注释方法
  14. 使用XXLjob中间件进行定时任务的管理
  15. NE555方波发生器
  16. awk打印除第一列之外的所有列
  17. Hinton等谈深度学习十年;PyTorch落地Linux基金会的影响;机器学习界的“GitHub”|AI系统前沿动态
  18. 混合表象下单粒子格林函数计算
  19. php js实现录制mp4视频,并上传视频保存
  20. Linux配置多个IP地址

热门文章

  1. 多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING (SORT)
  2. 第五周软件工程作业-每周例行报告
  3. iOS-生成二维码图片【附中间带有小图标二维码】(QRCode)
  4. Linux中写入ISO镜像
  5. stm32 usmart使用
  6. JavaScript:改变li前缀图片和样式
  7. Windows socket之最简单的socket程序
  8. 孤掌难鸣-------堵水眼
  9. scss2css vscode设置_VSCode下让CSS文件完美支持SCSS或SASS语法方法
  10. 弄断过河电缆_你说的是:剪断电缆线