¿Como podriamos manejar datos sin tener que depender de SESSION?

En este post podrás ver una manera sencilla de crear objetos que dependan de otros y además de poder usarlo incluso para una app Movil que no cuenta con SESSION

TECNOLOGÍAS

ASP NET CORE

ASP.NET Core es un framework modular de código abierto que fue desarrollado por Microsoft y la comunidad.​ Se ejecuta al completo tanto en el.NET Framework de Windows como en multiplataforma

ELASTICACHE

Amazon ElastiCache es un servicio de AWS que se puede utilizar como caché en memoria, parecido a una base de datos. La finalidad es parecidad a una SESSION, pero con el añadido de aumentar el rendimiento y aliviar la carga de la base de datos relacional o NoSQL

EC2

Es uno de los servicio principales de AWS que permite a los usuarios alquilar computadores virtuales en los cuales pueden ejecutar sus propias aplicaciones.

PROYECTO

Primero debemos de Crear/Lanzar un EC2 en AWS con los siguiente datos y configuraciones:

Nombre del EC2

Aqui colocamos el nombre que deseemos para el EC2

Claves para poder acceder a la maquinar virtual

Elegiremos un par de claves o también las puedes crear para después usarlas

Modificacion de los Grupos de Seguridad

Añadiremos al grupo de seguridad 2 reglas que son la de HTTP, para poder acceder al proyecto que estará desplegado en el EC2, y la ultima regla es para que el EC2 permita el acceso al ElastiCache

Habilitamos esta funcion para las instalaciones del EC2

Y por último habilitamos los metadatos para que instale el Apache, Git, y otros paquetes necesarios para poder desplegar nuestra aplicación. IMPORTANTE: Las 2 lineas para configurar el Git deben ser su nombre de usuario y correo del GITHUB. Tras esto, lanzamos el EC2.

Zona del EC2

Cuando el EC2 haya terminado de crearse, debemos fijarnos en que zona se ha colocado, en mi caso fue en us-east-1c

Ahora nos iremos al ElasticCache para crear un Clúster de Redis y lo configuraremos de la siguiente manera:

Nombre del Clúster

Colocaremos el nombre de nuestro Cluster de ElastiCache

Opciones Deshabilitadas

Estas opciones deben estar deshabilitadas

Tipo de nodo IMPORTANTE (cache.t2.micro)

El nodo a elegir deber ser «cache.t2.micro» IMPORTANTE

Configuracion Grupo de Subredes
Solo la que coincida con el EC2

Después crearemos un nuevo grupo de subredes y dejaremos seleccionada la subred que coincida con el de nuestro EC2, en mi caso era «us-east-1c«

Especificar la zona del EC2

Colocaremos la opción de «Especificar zonas de disponibilidad» y le daremos a SIGUIENTE

Grupo de Seguridad de EC2

Después colocaremos el grupo de seguridad de nuestro EC2 que usará ElastiCache y IMPORTANTE, tener el resto de opciones ¡¡DESHABILITADAS!!. Por último le daremos a SIGUIENTE y CREAR

Cadena de conexión al Clúster

Cuando se haya creado el cluster, debemos copiar el «Punto de conexión principal» para después colocarlo en nuestro proyecto de MVC. Y por continuar en el proyecto de MVC, debemos instalar 2 nugets:

Nuget para conectarse al ElastiCache
Nuget para tranformar el objeto a JSON

El primer nuget es «Microsoft.Extensions.Caching.StackExchangeRedis» que se encargará de hacer la conexion con el cluster de ElastiCache. Y el segundo nuget que es «Newtonsoft.Json» se encargará de transformar un objeto a formato JSON

PreObjeto que usaremos

En el proyecto primero crearemos el preObjeto, en este caso será un modelo de preVideo.

Después dentro de una carpeta Helpers crearemos el «CacheRedisHelper» que es donde colocaremos la cadena de conexion principal que copiamos cuando se creó el Cluster en ElastiCache.

Después creamos una carpeta llamada Services donde crearemos un archivo llamado «ServiceCacheRedis» y pondremos en el constructor la «Connection» del helper que habiamos creado antes.

Metodo para agregar una lista de objetos al Cluster

Lo siguiente es crear un metodo que se encargará de guardar el preObjeto en una lista de Objetos y la misma lista ira Serializada en fomato JSON al Cluster.

Metodo para obtener la lista de objetos del Cluster

Y por ultimo es crear un metodo que se encargara de obtener la lista de objetos que tenga el cluster en ElastiCache, para poder mostrarlos y ver su funcionamiento.

Controller para el formulario y vista del preObjeto

Después dentro de la carpeta Controllers crearemos un controlador llamado «VideosController» donde inyectamos el «ServiceCacheRedis» y ademas de hacer la vista Create y en la misma vista cargaremos la lista de objetos que se haya guardado en el Cluster de ElastiCache.

Formulario de la Vista Create

La vista es un formulario simple y recibirá la lista de preVideos para despues poder mostrarlas.

Lista de Objetos

Eso si, la lista se mostrará si exiten datos en la lista de preVideos, sino mostrar un mensaje de que esta vacio.

Configuracion en el Startup

Despues agregaremos en el Startup el «ServiceCacheRedis» para que se resuelvan las dependencias.

Link hacia la vista del Create

Y en el _Layout colocaremos un link para poder ir a la vista de Create que habiamos creado en VideosController. Y por ultimo deberemos subir el proyecto a GITHUB para que lo despleguemos en EC2 y después probemos la funcionalidad.

Después noc conectaremos a nuestra maquina virtual mediante el CMDER, no haremos super usuario con el comando «sudo su» después crearemos una carpeta en una ruta con el comando «mkdir /var/proyecto«, una vez creado, nos ubicaremos en esa carpeta y haremos un «git clone url» donde la url será la direccion de nuestro repositorio en github.

Y por último, nos ubicaremos dentro de nuestro proyecto para colocar el siguiente comando ‘ dotnet run –urls «http://0.0.0.0:5000» ‘ y asi desplegar nuestro proyecto y probarlo


Autor/a: Braian Oscar Loza Quiroga

Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma

Centro: Tajamar

Año académico: 2021-2022

Código / recursos utilizados / Otros datos de interés: https://github.com/MsrBrownie06/Posts

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.