Tutorial de .NET | Su primer microservicio
Introducción
Propósito
Familiarícese con los bloques de creación para crear microservicios con .NET.
Requisitos previos
Ninguna.
macOS 12.0 o versiones posteriores.
Tiempo para completar
15 minutos
Escenario
Cree un servicio simple que devuelva una lista de valores y, a continuación, ejecute el servicio en un contenedor de Docker.
Instalar el SDK de .NET
Para empezar a compilar aplicaciones .NET, descargue e instale el SDK de .NET.
Descargar el SDK x64 de .NET 8 (Intel)
Descargar el SDK Arm64 de .NET 8 (Apple Silicon)
Si está en un equipo Mac con un chip M1 o M2 de Apple, debe instalar la versión Arm64 del SDK.
Comprobar que todo está instalado correctamente
Una vez instalado, abra un nuevo símbolo del sistema y ejecute el siguiente comando:
Una vez instalado, abra un terminal nuevo y ejecute el siguiente comando:
dotnet --version
Si la instalación se realizó correctamente, debería ver la versión 8.0.100 o posterior:
8.0.100
Si todo parece correcto, seleccione el botón Continuar de abajo para ir al siguiente paso.
¿Tiene un error?
Si recibe un error ”dotnet” no se reconoce como un comando interno o externo, asegúrese de que ha abierto un nuevo comando del sistema. Si reiniciar rápidamente la máquina y no puede resolver el problema, utilice el botón Me encontré con un problema para obtener ayuda para solucionar el problema.
Cree su servicio
En el símbolo del sistema, ejecute el siguiente comando para crear la aplicación:
En el terminal, ejecute el siguiente comando para crear la aplicación:
dotnet new webapi -o MyMicroservice --no-https
Después, vaya al nuevo directorio creado por el comando anterior:
cd MyMicroservice
¿Qué significan estos comandos?
El comando dotnet
crea una aplicación nueva de tipo webapi
(es decir, un punto de conexión de API de REST).
- El parámetro
-o
crea un directorio denominadoMyMicroservice
donde se almacena la aplicación. - La marca
--no-https
crea una aplicación que se ejecutará sin un certificado HTTPS para simplificar la implementación.
El comandocd MyMicroservice
le coloca en el directorio de aplicaciones recién creado.
El código generado
Se crearon varios archivos en el directorio MyMicroservice
, para brindarle un servicio simple que está listo para ejecutarse, incluyendo los siguientes archivos:
Program.cs
es el archivo de punto de entrada y contiene todos los valores y configuraciones que se cargan cuando se inicia la aplicación y tiene código para una API simple que devuelve la previsión meteorológica para los próximos cinco días. También inicia la aplicación.MyMycroservice.http
se usa para probar proyectos de ASP.NET Core.MyMicroservice.csproj
define la versión de .NET de destino de la aplicación, qué bibliotecas hace referencia al proyecto, etc.- El archivo
launchSettings.json
dentro del directorioProperties
define diferentes configuraciones de perfil para el entorno de desarrollo local. Un número de puerto que oscila entre 5 000 y 5 300 se asigna automáticamente al crear el proyecto y se guarda en este archivo.
El siguiente código muestra el contenido del archivo de Program.cs
:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
})
.WithName("GetWeatherForecast")
.WithOpenApi();
app.Run();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
Seleccione el botón Continuar para ir al siguiente paso.
¿Tiene un error?
Si recibe un mensaje similar a No se pudo crear la plantilla "ASP.NET Core Web API". Error al crear la plantilla. Detalles: Se denegó el acceso a la ruta “C:\Windows\System32\MyMicroservice”, cambie su directorio actual a uno donde tenga permisos para crear una nueva carpeta e intente ejecutar el comando de nuevo.
Si Windows no encuentra el SDK cuando intenta crear el proyecto y está seguro de haber instalado el SDK, su máquina podría tener un problema con la variable de entorno PATH. ConsulteStack Overflow post para obtener instrucciones sobre cómo diagnosticar y solucionar este problema.
Si no puede resolver el problema, use el botón He tenido un problema para obtener ayuda para solucionar el problema.
Ejecutar el servicio
En el símbolo del sistema, ejecute el siguiente comando:
En el terminal, ejecute el siguiente comando:
dotnet run
Debería ver una salida similar a la siguiente:
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5020
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Ana\MyMicroservice
Espere a que la aplicación muestre que está escuchando en http://localhost:<port number>, y luego abra un explorador y navegue a http://localhost:<port number>/weatherforecast.
En este ejemplo, se muestra que estaba escuchando en el puerto 5020, por lo que la siguiente imagen muestra la URL localhost:5020/weatherforecast
.
Enhorabuena, tiene un servicio simple en ejecución.
Presione CTRL+C en el símbolo del sistema para finalizar el comando dotnet run
que ejecuta el servicio localmente.
Presione CTRL+C en el terminal para finalizar el comando dotnet run
que ejecuta el servicio localmente.
¿Tiene un error?
Si recibe un mensaje similar a No se encontró ninguna página web para la dirección web: http://localhost:5020, asegúrese de que está viendo la página previsión meteorológica de la aplicación. La dirección URL debe ser similar a http://localhost:5020/weatherforecast y no solo http://localhost:5020.
Instalar Docker
Docker es una plataforma que permite combinar una aplicación más su configuración y dependencias en una sola unidad que se puede implementar de forma independiente, y que se denomina contenedor.
Si ya tiene Docker instalado, asegúrese de que sea la versión 23.0.0 o posterior.
Descargar e instalar
Se le pedirá que se registre en la Tienda de Docker para poder descargar el instalador.
De forma predeterminada, Docker usará contenedores de Linux en Windows. Deje esta configuración tal cual cuando se le solicite en el instalador.
Después de instalar Docker, es posible que se le pida que cierre sesión para finalizar la instalación.
Compruebe que Docker está listo para usarse
Una vez instalado, abra un nuevo símbolo del sistema y ejecute el siguiente comando:
Una vez instalado, abra un terminal nuevo y ejecute el siguiente comando:
docker --version
Si el comando se ejecuta y muestra información de versión, Docker se instala correctamente.
Agregar metadatos de Docker
Para ejecutar con una imagen de Docker, necesita un Dockerfile
— un archivo de texto que contiene instrucciones sobre cómo compilar la aplicación como una imagen de Docker. Una imagen de Docker contiene todo lo necesario para ejecutar la aplicación como un contenedor Docker.
Volver al directorio de la aplicación
Dado que ha abierto un nuevo terminal en el paso anterior, tendrá que volver al directorio en el que ha creado el servicio.
Dado que ha abierto un nuevo terminal en el paso anterior, tendrá que volver al directorio en el que ha creado el servicio.
cd MyMicroservice
Agregar un DockerFile
Cree un archivo llamado Dockerfile
con este comando:
touch Dockerfile
fsutil file createnew Dockerfile 0
A continuación, puede abrirlo en su editor de texto favorito.
A continuación, puede abrirlo en su editor de texto favorito manualmente o con este comando:
open Dockerfile
start Dockerfile
Reemplace el contenido de Dockerfile
con lo siguiente en el editor de texto:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY MyMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyMicroservice.dll"]
Nota: Asegúrese de asignar al archivo el nombre Dockerfile
y no Dockerfile.txt
ni ningún otro nombre.
Opcional: Agregar un archivo .dockerignore
Un archivo .dockerignore reduce el conjunto de archivos que se utilizan como parte de `docker build`. Menos archivos darán como resultado compilaciones más rápidas.
Cree un archivo llamado .dockerignore
(es similar a un archivo .gitignore
si está familiarizado con ellos) con este comando:
touch .dockerignore
fsutil file createnew .dockerignore 0
A continuación, puede abrirlo en su editor de texto favorito.
A continuación, puede abrirlo en su editor de texto favorito manualmente o con este comando:
open .dockerignore
start .dockerignore
Reemplace el contenido de .dockerignore
a lo siguiente en el editor de texto:
Dockerfile
[b|B]in
[O|o]bj
Crear imagen de Docker
Ejecute el comando siguiente:
docker build -t mymicroservice .
El comando docker build
usa el Dockerfile
para compilar una imagen de Docker.
- El parámetro
-t mymicroservice
le indica que etiquete (o asigne un nombre) a la imagen comomymicroservice
. - El parámetro final indica qué directorio usar para buscar el
Dockerfile
(.
especifica el directorio actual). - Este comando descargará y compilará todas las dependencias para crear una imagen de Docker y puede tardar algún tiempo.
Puede ejecutar el siguiente comando para ver una lista de todas las imágenes disponibles en el equipo, incluida la que acaba de crear.
docker images
Ejecutar imagen de Docker
Puede ejecutar la aplicación en un contenedor con el siguiente comando:
docker run -it --rm -p 3000:8080 --name mymicroservicecontainer mymicroservice
Puede ir a la siguiente dirección URL para acceder a la aplicación que se ejecuta en un contenedor: http://localhost:3000/weatherforecast
De forma opcional, puede ver el contenedor que se ejecuta en un símbolo del sistema separado utilizando el siguiente comando:
Opcionalmente, puede ver su contenedor ejecutándose en una ventana de terminal separada usando el siguiente comando:
docker ps
Presione CTRL+C en el símbolo del sistema para finalizar el comando docker run
que ejecuta el servicio. en un contenedor.
Presione CTRL+C en el terminal para finalizar el comando docker run
que ejecuta el servicio en un contenedor.
Enhorabuena, ha creado correctamente un pequeño servicio independiente que se puede implementar y escalar mediante contenedores de Docker.
Estos son los componentes básicos de los microservicios.
¿Tiene un error?
Si recibe un mensaje similar a ERROR: error durante la conexión: este error puede indicar que el demonio de Docker no se está ejecutando, puede indicar que debe iniciar la aplicación Docker. Compruebe que el cliente de Docker se está ejecutando al ejucutar docker run hello-world
. Esto debería extraer y ejecutar la imagen. Para obtener más ayuda, consulte la documentación de Docker para obtener instrucciones sobre cómo diagnosticar y corregir este problema.
Pasos siguientes
Enhorabuena. Ha creado un servicio simple y lo ha ejecutado en un contenedor Docker.
Ahora, puede aprender a implementar el microservicio en la nube con nuestro siguiente tutorial.
Tutorial: Implementación de microservicios en Azure
Es posible que también le interese...