热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

编写第一个.NET微服务

介绍本文的目的是:通过创建一个返回列表的简单服务,并在Docker容器中运行该服务,让您熟悉使用.NET创建微服务的构建过程。安装.NETSDK要开始构建.NET应用程序,首先下载

介绍

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


安装 .NET SDK

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

根据操作系统的类型下载并安装对应版本的 .NET Core SDK v3.1:.NET SDK (64-位) 或 .NET SDK (32-位)


全部 .NET SDK 下载页面(Download .NET SDKs for Visual Studio):

https://dotnet.microsoft.com/download/visual-studio-sdks



检查安装是否正确

.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 _logger;
public WeatherForecastController(ILogger logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable 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』

The API endpoint returns JSON data containing weather forecast information

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


安装 Docker

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


下载并安装 Docker Desktop

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


检查 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 /app
FROM 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.1mcr.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』 来访问正在容器中运行的应用程序。

The API endpoint returns JSON data containing weather forecast information

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

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


作者 : Microsoft 官网

译者 : 技术译民

出品 : 技术译站

链接 : 英文原文





推荐阅读
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • c#  项目文件,C#viual studio使用方法
    一、项目文件1)Properties节点下主要存放的是当前程序集相关的信息,如版本号、标题等。双击”Properties“,打开如下项目属 ... [详细]
  • 本文介绍了一种通过设置主题(Theme)来实现快速启动的Android引导页,并详细说明了如何避免因不同屏幕分辨率导致的图片拉伸问题。 ... [详细]
  • 2023年最新指南:如何在PHP中屏蔽警告和错误
    本文详细介绍了如何在PHP中屏蔽警告和错误,包括多种方法和最佳实践,帮助开发者提升代码质量和安全性。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • WCF类型共享的最佳实践
    在使用WCF服务时,经常会遇到同一个实体类型在不同服务中被生成为不同版本的问题。本文将介绍几种有效的类型共享方法,以解决这一常见问题。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 在VS2013中编译FFMPEG时遇到的问题及解决方案
    在使用VS2013编译旧版本FFMPEG库时遇到了一些问题,因为官方并未提供预编译的LIB和DLL文件。由于对Linux环境不熟悉,只能在Windows环境下进行配置和编译。具体步骤如下:首先,下载FFMPEG的源代码;然后,安装必要的编译工具和依赖项;接着,配置Visual Studio 2013的项目设置;最后,解决编译过程中出现的各种错误和警告。通过这些步骤,最终成功编译出所需的FFMPEG库文件。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 深入探索Node.js新框架:Nest.js第六篇
    在本文中,我们将深入探讨Node.js的新框架Nest.js,并通过一个完整的示例来展示其强大功能。我们将使用多个装饰器创建一个基本控制器,该控制器提供了多种方法来访问和操作内部数据,涵盖了常见的CRUD操作。此外,我们还将详细介绍Nest.js的核心概念和最佳实践,帮助读者更好地理解和应用这一现代框架。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 本文介绍了ASP.NET Core MVC的入门及基础使用教程,根据微软的文档学习,建议阅读英文文档以便更好理解,微软的工具化使用方便且开发速度快。通过vs2017新建项目,可以创建一个基础的ASP.NET网站,也可以实现动态网站开发。ASP.NET MVC框架及其工具简化了开发过程,包括建立业务的数据模型和控制器等步骤。 ... [详细]
author-avatar
超人不会飞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有