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:

Generar Imagen

Para ello lanzamos:

docker build -t apione -f apione\Dockerfile .

Y ahora nos vamos apitwo, para ejecutar la aplicación,

Lanzar apitwo

Hemos:

    1.  Establecido docker-compose.yml, como startup (1 y 2).
    2. Lanzado el proyecto (3).

A partir de aquí, ya puedes ver como carga directamente el api contra la invocación HTTPS.

LLamada de apitwo a apione

En la anterior captura teneis una llama http de get desde apitwo a apione. Y a continuación una captura de tus contenedores.

Contenedores de Dapr y APIS

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:

Minimal API de apitwo

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.

PFX codigo

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:

Referencias dapr a otro microservicio