Antencedentes
Aproximadamente 1 año hace que publiqué una Trilogía de Modernización de Microservicios, que suman más de 150 paginas para tu autoformación y si sumas la del Proyecto Tye casi nos acercamos a las 200 páginas (en GitHub los correspondientes ejemplos):
Donde hablaba desde Dapr hasta el proyecto Tye. Incluso una charla pude dar de Introducción al Project Tye.
Las cosas parece que tienen recurrencia y hace poco he vuelto a un proyecto donde se hace uso de Dapr, y esta es la razón del artículo.
Si quires rizar el rizo, tambien recomiendo que leas mi libro de Monitorizacion moderna de aplicaciones.
Asi tendrás una nada despreciable cantidad de 300 páginas para leer en estas vacaciones.
El problema
Quiero poder hacer una invocación servicio a servicio via Dapr en mi arquitectura de microservicios.
Solución
Ir al respositorio de GitHub jmfloreszazo/daprhttpinvokemicroserviceswithnet6
En el Readme he dejado los pasos para que puedas lanzar este mini proyecto. Que pondré aquí tambien con alguna foto intermedia.
Conclusión
Gracias a los anteriores pasos te habré ahorrado varios dias de investigación y máxime cuando tengas el error: error:2006D080:BIO routines:BIO_new_file:no such file
A partir de este artículo tendré material suficiene para poder extenderlo con Project Tye y hacer uso de Kubernetes.
README
El proyecto usa:
-
- El NuGet de Dapr,
- .NE6 con minimal API (siempre me gusta añadir alguna tecnología más para no hacer tan simple la demo).
- Docker.
Pre-requisitos:
-
- Instalar Dapr.
- Visual Studio 2022 + .NET6
- Docker.
Pasos para ejecutar el proyecto:
Cargar apione y desde la linea de comandos:
Para ello lanzamos:
docker build -t apione -f apione\Dockerfile .
Y ahora nos vamos apitwo, para ejecutar la aplicación,
Hemos:
-
- Establecido docker-compose.yml, como startup (1 y 2).
- Lanzado el proyecto (3).
A partir de aquí, ya puedes ver como carga directamente el api contra la invocación HTTPS.
En la anterior captura teneis una llama http de get desde apitwo a apione. Y a continuación una captura de tus contenedores.
Un punto importante es por ejemplo que ver lo sencillo que es esto de las Minimal API de .NET6, por ejemplo la de apione esta generado directamente con un ejemplo de Visual Studio 2022 (el enlace anterior os llevará a ese ejemplo más detallado).
Y solo os muestro el que yo he creado desde cero para poder invocar al otro microservicio:
Y como punto destacable es la inclusión de un certificado para poder trabajar con HTTPS, para ello seguimos las intrucciones de este enlace de Microsoft y así nos evitamos ahoras de busqueda/test del error que os puse antes: imagenes con https.
Y los pasos para conseguir este certificado pfx:
-
- dotnet dev-certs https –clean
- dotnet dev-certs https –trust -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p 12345
Y para finalizar aquí puedes ver como se usa docker-compose.yml en apitwo para poder añadir tantos microservicios como quieras: