Compartir vía


Microservicios de .NET: arquitectura para aplicaciones .NET en contenedor

Portada del libro

EDITION v7.0 : actualizado a ASP.NET Core 7.0

Consulte el registro de cambios para obtener las actualizaciones del libro y las contribuciones de la comunidad.

Esta guía es una introducción al desarrollo de aplicaciones basadas en microservicios y su administración mediante contenedores. Se describen los enfoques de diseño e implementación de arquitectura mediante contenedores de .NET y Docker.

Para facilitar la introducción, la guía se centra en una aplicación en contenedores y basada en microservicios de referencia que puede explorar. La aplicación de referencia está disponible en el repositorio de GitHub eShopOnContainers .

Introducción

Las empresas están aumentando el ahorro de costos, solucionando problemas de implementación y mejorando las operaciones de DevOps y producción mediante contenedores. Microsoft ha estado publicando innovaciones en contenedores para Windows y Linux mediante la creación de productos como Azure Kubernetes Service y Azure Service Fabric, y al asociarse con líderes del sector como Docker, Mesosphere y Kubernetes. Estos productos ofrecen soluciones de contenedor que ayudan a las empresas a crear e implementar aplicaciones a velocidad y escala en la nube, sea cual sea su elección de plataforma o herramientas.

Docker se está convirtiendo en el estándar de facto en el sector de contenedores, compatible con los proveedores más significativos de los ecosistemas de Windows y Linux. (Microsoft es uno de los principales proveedores de nube que admiten Docker). En el futuro, Docker probablemente estará omnipresente en cualquier centro de datos de la nube o en el entorno local.

Además, la arquitectura de microservicios está emergente como un enfoque importante para las aplicaciones críticas distribuidas. En una arquitectura basada en microservicios, la aplicación se basa en una colección de servicios que se pueden desarrollar, probar, implementar y versionar de forma independiente.

Acerca de esta guía

Esta guía es una introducción al desarrollo de aplicaciones basadas en microservicios y su administración mediante contenedores. Se describen los enfoques de diseño e implementación de arquitectura mediante contenedores de .NET y Docker. Para facilitar la introducción a contenedores y microservicios, la guía se centra en una aplicación en contenedores y basada en microservicios de referencia que puede explorar. La aplicación de ejemplo está disponible en el repositorio de GitHub eShopOnContainers .

En esta guía se proporcionan instrucciones fundamentales sobre el desarrollo y la arquitectura principalmente en un nivel de entorno de desarrollo con un enfoque en dos tecnologías: Docker y .NET. Nuestra intención es que lea esta guía al pensar en el diseño de la aplicación sin centrarse en la infraestructura (en la nube o en el entorno local) de su entorno de producción. Tomará decisiones sobre la infraestructura más adelante cuando cree las aplicaciones listas para producción. Por lo tanto, esta guía está pensada para ser independiente de la infraestructura y más centrada en el entorno de desarrollo.

Después de haber estudiado esta guía, el siguiente paso sería obtener información sobre los microservicios listos para producción en Microsoft Azure.

Versión

Esta guía se ha revisado para cubrir la versión de .NET 7 junto con muchas actualizaciones adicionales relacionadas con la misma "oleada" de tecnologías (es decir, Azure y tecnologías de terceros adicionales) que coinciden en el tiempo con la versión de .NET 7.

Nota:

Se crea una nueva versión de este libro electrónico para .NET 8 y el nuevo ejemplo de eShop .

Lo que esta guía no cubre

Esta guía no se centra en el ciclo de vida de la aplicación, DevOps, canalizaciones de CI/CD ni trabajo en equipo. La guía complementaria Ciclo de vida de aplicaciones de Docker en contenedores con la plataforma y las herramientas de Microsoft se centra en ese tema. La guía actual tampoco proporciona detalles de implementación en la infraestructura de Azure, como información sobre orquestadores específicos.

Recursos adicionales

Destinatarios de esta guía

Hemos escrito esta guía para desarrolladores y arquitectos de soluciones que son nuevos en el desarrollo de aplicaciones basado en Docker y en la arquitectura basada en microservicios. Esta guía es para usted si desea aprender a diseñar, diseñar e implementar aplicaciones de prueba de concepto con tecnologías de desarrollo de Microsoft (con especial enfoque en .NET) y con contenedores de Docker.

También encontrará esta guía útil si es un responsable de la toma de decisiones técnicas, como un arquitecto empresarial, que quiere una introducción a la arquitectura y la tecnología antes de decidir qué enfoque seleccionar para las aplicaciones distribuidas nuevas y modernas.

Cómo usar esta guía

La primera parte de esta guía presenta contenedores de Docker, describe cómo elegir entre .NET 7 y .NET Framework como marco de desarrollo y proporciona información general sobre los microservicios. Este contenido es para arquitectos y responsables de la toma de decisiones técnicas que desean obtener información general, pero no necesitan centrarse en los detalles de implementación del código.

La segunda parte de la guía comienza con la sección Desarrollo de aplicaciones basadas en Docker . Se centra en los patrones de desarrollo y microservicio para implementar aplicaciones mediante .NET y Docker. Esta sección será de mayor interés para los desarrolladores y arquitectos que desean centrarse en el código y en los patrones y los detalles de implementación.

La aplicación eShopOnContainers es una aplicación de referencia de código abierto para .NET y microservicios diseñados para implementarse mediante contenedores de Docker. La aplicación consta de varios subsistemas, incluidos varios front-end de interfaz de usuario de tienda electrónica (una aplicación MVC web, un SPA web y una aplicación móvil nativa). También incluye los microservicios y contenedores de back-end para todas las operaciones necesarias del lado servidor.

El propósito de la aplicación es mostrar patrones arquitectónicos. PRODUCTION-READY no es una plantilla para iniciar aplicaciones reales. De hecho, la aplicación está en un estado beta permanente, ya que también se usa para probar nuevas tecnologías potencialmente interesantes a medida que aparecen.

Enviar sus comentarios

Este libro y ejemplos relacionados evolucionan constantemente, por lo que se agradecen sus comentarios. Si tiene comentarios sobre cómo se puede mejorar este libro y está leyendo este libro en <learn.microsoft.com>, use la sección Comentarios en la parte inferior de la página:

Sección de comentarios en los pies de página de los artículos de .NET docs.

Como se ha resaltado en la captura de pantalla anterior, la sección de comentarios le permite enviar comentarios para:

  • Este producto: mediante el formulario de comentarios del producto .NET.
  • Esta página: usando una plantilla de incidencia de GitHub con los detalles de la página.

Si está leyendo este libro como un PDF, puede enviar comentarios creando un problema de GitHub en Documentos de .NET o mediante la plantilla de problemas de GitHub en Libros electrónicos de arquitectura de .NET.

Créditos

Coautores:

Cesar de la Torre, Sr. PM, equipo de productos de .NET, Microsoft Corp.

Bill Wagner, Sr. Content Developer, C+E, Microsoft Corp.

Mike Rousos, ingeniero principal de software, equipo CAT de DevDiv, Microsoft

Editores:

Mike Pope

Steve Hoag

Participantes y revisores:

Jeffrey Richter, Partner Software Eng, Equipo de Azure, Microsoft

Jimmy Bogard, arquitecto jefe de Headpring

Udi Dahan, Fundador y CEO, Software particular

Jimmy Nilsson, co-fundador y ceo de Factor10

Glenn Condron, director del programa, ASP.NET equipo

Mark Fussell, principal responsable de pm, equipo de Azure Service Fabric, Microsoft

Diego Vega, responsable de pm, equipo de Entity Framework, Microsoft

Barry Dorrans, Director del Programa de Seguridad Sr.

Rowan Miller, Sr. Program Manager, Microsoft

Ankit Asthana, administrador principal de pm, equipo de .NET, Microsoft

Scott Hunter, director asociado de administración de programas del equipo de .NET, Microsoft

Nish Anil, Sr. Program Manager, equipo de .NET, Microsoft

Dylan Reisenberger, arquitecto y jefe de desarrollo en Polly

Steve "ardalis" Smith - Arquitecto de software y Entrenador - Ardalis.com

Ian Cooper, arquitecto de codificación en Brighter

Unai Zorrilla, arquitecto y jefe de desarrollo en Plain Concepts

Eduard Tomas, jefe de desarrollo en Plain Concepts

Ramon Tomas, desarrollador en Plain Concepts

David Sanz, desarrollador en Plain Concepts

Javier Valero, director de operaciones de Grupo Solutio

Pierre Millet, Consultor Senior, Microsoft

Michael Friis, Product Manager, Docker Inc

Charles Lowell, ingeniero de software, equipo de VS CAT, Microsoft

Miguel Veloso, ingeniero de desarrollo de software en Plain Concepts

Sumit Ghosh, consultor principal de Neudesic

PUBLICADO POR

Equipos de producto de Microsoft Developer Division, .NET y Visual Studio

Una división de Microsoft Corporation

One Microsoft Way

Redmond, Washington 98052-6399

Copyright © 2023 de Microsoft Corporation

Todos los derechos reservados. No se podrá reproducir ni transmitir ninguna parte del contenido de este libro en cualquier forma ni por ningún medio sin el permiso por escrito del editor.

Este libro se proporciona “tal cual” y expresa las opiniones del autor. Las vistas, opiniones e información expresadas en este libro, incluidas las direcciones URL y otras referencias a sitios web de Internet, pueden cambiar sin previo aviso.

Algunos ejemplos que se muestran aquí se proporcionan solo para la ilustración y son ficticios. No se pretende ni debe deducirse ninguna asociación o conexión real.

Microsoft y las marcas registradas que aparecen en https://www.microsoft.com la página web "Marcas comerciales" son marcas comerciales del grupo de empresas de Microsoft.

Mac y macOS son marcas comerciales de Apple Inc.

El logotipo de la ballena de Docker es una marca registrada de Docker, Inc. Usado por permiso.

Todas las demás marcas y logotipos son propiedad de sus respectivos propietarios.