Hoy en día, en el desarrollo de aplicaciones software, incluso aplicaciones clásicas de escritorio o aplicaciones embebidas, resulta cada vez más común la interacción de éstas con Internet. Ya sea para acceder a recursos que necesita la aplicación o para enviar datos o información.
A través de la exposición en Internet de APIs web, las aplicaciones software solicitan datos en muchas ocasiones, y en otras, envían información acerca de diferentes ámbitos. Reportes de información acerca de la ejecución de la aplicación (logs con información, warnings o errores que se producen en la misma) son un caso concreto. Una vez esta información llega a la API web, es responsabilidad de ella gestionarla. De múltiples maneras. Ya sea como simple reenvío contra otra API web, tratamiento de la información (almacenamiento en una base de datos, por ejemplo), o notificación de que ha llegado un nuevo evento y es necesario avisar a un cliente web de que tenemos un nuevo reporte. Y para visualizar todo esto, existe normalmente un dashboard. Este es un caso real, y éste es el caso que se propone y se quiere llevar a cabo con este proyecto.
Mediante la implementación de una aplicación web conectada a una base datos, ésta será la encargada de recibir información de un número de clientes indefinidos. Además, tendrá una responsabilidad doble. Sera capaz de gestionar la información que le llega, el almacenamiento en base de datos y la notificación a un número de clientes nuevamente indefinidos de que tienen que actualizar su vista, dado que se presentan nuevos reportes.
La infraestructura que será necesaria llevar a cabo, permitirá distribuir una colección de métodos, en una librería aparte, para que los diferentes clientes puedan contactar con la API web. De tal forma que los programas cliente simplemente deberán llamar a los métodos para notificar a la API web de que desean reportar nueva información. Además, por otro lado, la API web será la encargada de notificar a los clientes (un dashboard por ejemplo) que se encuentren subscritos, el aviso de que el frontend ha de cambiar, dado que en tiempo real se han recibido nuevos datos.
Frameworks como .NET 5/6 para la creación de la API web, ORMs como EF Core para la conexión y el modelaje de la base de datos utilizando técnicas de “code first”, frameworks como Angular para la construcción del cliente (dashboard) que recibirá notificaciones de la API web, y finalmente tecnologías como SignalR que permiten comunicar cliente-servidor con notificaciones asíncronas enviando información en tiempo real, permitirán llevar a cabo este proyecto.