Una base de código de Microservicios ASP.NET Core que contiene ejemplos del mundo real (CRUD, autenticación, patrones avanzados, etc.) que se adhiere a las especificaciones y API de RealWorld.
Esta base de código se creó para demostrar una arquitectura de microservicio completa creada con ASP.NET Core . Incluye gRPC, diseño basado en dominio, CQRS, mediador, proxy y muchos más patrones.
Se adhiere completamente a las guías de estilo y las mejores prácticas de la comunidad ASP.NET Core .
Para obtener más información sobre cómo funciona esto con otras interfaces/backends, dirígete al repositorio de RealWorld.
Arquitectura de microservicios: estilo arquitectónico que proporciona una colección de servicios altamente mantenibles, comprobables y poco acoplados que se pueden implementar y organizar de forma independiente en torno a capacidades comerciales. La capa de servicio se coloca encima de los modelos de dominio.
Diseño basado en dominio: nos guía para centrarnos en partes pequeñas, individuales y casi autónomas de nuestro dominio, nuestro proceso y el software resultante son más flexibles. Podemos mover o modificar fácilmente las piezas pequeñas sin efectos secundarios.
Comunicación a través de gRPC: una forma nueva y en crecimiento de conectar servicios en varias plataformas y en varios idiomas.
Proxy remoto: actúa como un recurso local mientras oculta los detalles de cómo conectarse a un recurso remoto a través de una red. Se comporta como puerta de enlace API entre el cliente y los servicios.
Aplicación de principios funcionales: la programación funcional en C# puede brindarle una idea de cómo se comportarán sus programas. Los temas específicos aquí son la arquitectura inmutable, cómo evitar excepciones, la obsesión primitiva, cómo manejar fallas y errores de entrada, y más.
Segregación de responsabilidad de consulta y comando (CQRS): lo alienta a desenredar un modelo de dominio único y unificado y crear dos modelos: uno para manejar comandos y el otro para manejar consultas. CQRS nos permite tomar diferentes decisiones de lectura y escritura, lo que a su vez trae tres beneficios: escalabilidad, rendimiento y el mayor, simplicidad. CQRS extiende CQS al nivel arquitectónico.
MediatR: garantiza que los mensajes se enruten a los lugares apropiados. Por lo tanto, podría considerarlo un poco más como un sistema de mensajería en memoria.
Docker: los contenedores representan un tipo de "virtualización" de mayor densidad que puede satisfacer las necesidades de ciertos escenarios mejor que los hipervisores tradicionales.
Travis CI: servicio de integración continua utilizado para crear y probar proyectos. Travis CI detecta automáticamente cuando se realiza una confirmación y se envía al repositorio de GitHub que utiliza Travis CI, y cada vez que esto sucede, intentará construir el proyecto y ejecutar pruebas.