Archivo

Entradas Etiquetadas ‘.net’

10 razones para usar los patrones CQRS y Mediator

martes, 2 de abril de 2024 Sin comentarios

La combinación de Clean Architecture con los patrones CQRS (Command Query Responsibility Segregation) y Mediator proporciona un enfoque poderoso para el diseño de software. En esta sinergia, la Clean Architecture establece una sólida estructura modular y una clara separación de responsabilidades, lo que facilita la comprensión y el mantenimiento del sistema a lo largo del tiempo.

El patrón CQRS divide las operaciones de lectura (queries) de las operaciones de escritura (commands), permitiendo optimizar cada una para su función específica y mejorar la escalabilidad y el rendimiento del sistema. Por otro lado, el patrón Mediator actúa como un intermediario entre los diferentes componentes del sistema, reduciendo las dependencias directas y promoviendo la comunicación a través de mensajes.

  1. El patrón CQRS (Command Query Responsibility Segregation) promueve la separación de las operaciones de lectura (queries) y escritura (commands), lo que facilita la gestión de la complejidad en el acceso a datos.
  2. Al separar las operaciones de lectura y escritura, se pueden optimizar las consultas de lectura para mejorar el rendimiento y la escalabilidad del sistema.
  3. El patrón Mediator actúa como un mediador entre los componentes del sistema, lo que facilita la comunicación entre ellos y reduce la dependencia directa.
  4. Utilizando Mediator en conjunto con CQRS se mejora la modularidad y la mantenibilidad del código, ya que se fomenta la implementación de pequeños componentes independientes.
  5. Al aplicar CQRS y Mediator en el acceso a datos, se puede implementar una arquitectura más flexible y adaptable a los cambios, debido a la separación de responsabilidades y la eliminación de acoplamientos fuertes.
  6. CQRS permite simplificar la lógica de negocios al separar claramente las operaciones de lectura y escritura, lo que facilita la implementación de reglas de negocio específicas en cada capa.
  7. Mediante la implementación de comandos y eventos en el patrón CQRS, se pueden gestionar de manera eficiente las operaciones transaccionales y garantizar la consistencia de los datos en todo momento.
  8. El uso de Mediator facilita la implementación de patrones de diseño como inyección de dependencias, lo que simplifica la configuración y la gestión de las dependencias entre componentes.
  9. CQRS y Mediator permiten mejorar la escalabilidad del sistema al distribuir la carga de trabajo de forma eficiente entre los diferentes componentes, mejorando así el rendimiento y la capacidad de respuesta.
  10. En resumen, la combinación de CQRS y Mediator en el acceso a datos proporciona una arquitectura robusta y flexible que facilita el desarrollo, la prueba y el mantenimiento de aplicaciones, permitiendo una mayor eficiencia y adaptabilidad a los cambios en los requisitos del negocio.
{lang: 'es'}

Autenticación / Autorización en API Restful con JWT

domingo, 10 de marzo de 2024 Sin comentarios

.net core jwt
.net jwt autenticación

La autenticación es un aspecto crucial de la seguridad de las aplicaciones web. Garantiza que los
usuarios sean quienes dicen ser antes de otorgarles acceso a recursos o funcionalidades específicas.
Un método popular de autenticación en el desarrollo web moderno son los JSON Web Tokens (JWT). En esta
entrada, exploraremos cómo implementar la autenticación de token JWT en la web api de localización de
establecimientos de farmacia.

En .net core  esta funcionalidad la conseguimos con el Nuget System.IdentityModel.Tokens.Jwt

Entonces al controlador o método que queramos añadir que sean solicitudes autenticadas añadimos la cabecera [Autorize] y creamos otro control en le que escribimos la lógica de autenticación:

[HttpPost]
public IActionResult Post([FromBody] LoginRequest loginRequest)
{
    //If login email and password are correct then proceed to generate token
    var email = loginRequest.Email;
    var password = loginRequest.Password;
    if (email == "email" && password == "password")
    {
        var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
        var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

        var Sectoken = new JwtSecurityToken(_config["Jwt:Issuer"],
          _config["Jwt:Issuer"],
          null,
          expires: DateTime.Now.AddMinutes(120),
          signingCredentials: credentials);

        var token = new JwtSecurityTokenHandler().WriteToken(Sectoken);

        return Ok(token);
    }
    return Unauthorized();
}

Así con JWT es un medio compacto y seguro para URL para representar identificaciones que se transferirán entre dos partes.
Estos identificadores se pueden firmar digitalmente, lo que los convierte en una forma segura de autenticar y transmitir información entre el cliente y el servidor. Los tokens JWT se utilizan a menudo para:
Autenticación sin estado, autenticación entre orígenes distintos, escalabilidad.

En resumen, podemos decir que, la identificación en APIs RESTful es esencial para garantizar la seguridad. JSON Web Tokens (JWT) se ha convertido en una elección popular para este propósito. Al implementar JWT, la información de identificación del usuario se codifica en un token firmado digitalmente, que luego se envía con cada solicitud. Esto permite a los servidores verificar la autenticidad y autorización de cada solicitud de manera eficiente. Los JWT contienen información como el ID del usuario y roles, facilitando la validación en el servidor sin necesidad de consultar la base de datos en cada solicitud. Además, la expiración del token proporciona una capa adicional de seguridad. En resumen, JWT simplifica la gestión de identidades en APIs RESTful, mejorando la eficiencia y seguridad del sistema.

{lang: 'es'}

Programación en tiempo real y protocolos TCP / IP

jueves, 15 de febrero de 2024 Sin comentarios
Vs 2022 TCPServer / TCPClient

La programación en tiempo real con .net 8 / C# y protocolos TCP/IP permite desarrollar aplicaciones que requieren respuestas inmediatas y precisas en entornos críticos. Al utilizar C# para implementar el código, se aprovechan las características de este lenguaje orientado a objetos, como la facilidad de mantenimiento y la gestión automática de la memoria.

En este contexto, el protocolo TCP/IP se convierte en el puente de comunicación, garantizando la fiabilidad y la entrega ordenada de datos entre dispositivos. En el código C#, la clase TcpClient y TcpListener facilitan la implementación de conexiones TCP, mientras que la gestión de hilos permite manejar las operaciones en tiempo real de manera eficiente.

Este el el código de ejemplo creado en dos proyectos de consola. Tenemos el proyecto TCPServer, que a partir de un IPEndPoint crea un TCPListener  al que los TCPClient en otro proyecto de consola llaman.

Es crucial establecer una comunicación eficiente entre los nodos para garantizar la sincronización precisa. Utilizando el espacio de nombres System.Net.Sockets, se pueden implementar mecanismos de lectura y escritura asíncronos para optimizar el rendimiento y mantener la capacidad de respuesta en tiempo real.

En resumen, la combinación de C# .net y protocolos TCP/IP ofrece un entorno propicio para el desarrollo de aplicaciones en tiempo real, proporcionando una base sólida para sistemas que requieren alta velocidad y precisión en la transmisión de datos.

{lang: 'es'}
Categories: General Tags: , ,

Asp.net core 5 web api crud con Angular

martes, 2 de febrero de 2021 Sin comentarios

En la entrada http://www.jcamweb.com/blog/aspnet/net-y-net-core-son-ahora-net-5-0/ se describieron algunas de las ventajas de la actualización de asp.net core 5. Como un tipo de las aplicaciones típicas es usar un backend en webapi y frontend angular, por sus ventajas de ser una SPA, arquitectura en componentes y posibilidades de PWA,en esta entrada vamos a ver las posibilidades que ofrece usar el proyecto propio de Visual Studio para desarrollar este tipo de aplicación.

Una vez publicada la aplicación en mi hosting añadiré el enlace para testearla. Actualmente en https://bookswebapiang.azurewebsites.net/ En el repositorio de GitHub
https://github.com/jcamweb/BooksWebApiAng código fuente.

{lang: 'es'}
Categories: asp.net Tags: ,

.Net y .Net Core son ahora .Net 5.0

lunes, 4 de enero de 2021 Sin comentarios
.net 5.0
.net 5.0

En 2001 apareció .Net actualmente en la versión 4.8, este fue un framework de desarrollo común para aplicaciones de escritorio y web siendo el estándar en Windows. Posteriormente en 2016 Microsoft  presentó .Net Core una plataforma de desarrollo modular, disponible para Linux, Mac y Windows y bajo licencia MIT. Desde finales de 2020 está la unificación de estos dos framework en .Net 5.0. Veamos algunas de las mejoras.

Primero decir que se ha eliminado «Core» del nombre para enfatizar que esta es la implementación principal de .NET en el futuro. .NET 5.0 admite más tipos de aplicaciones y más plataformas que .NET Core o .NET Framework. Mejora en el «Garbage Collector» GC, el recolector de memoria mejora sustancialemte respecto a .Net 4.8 y .Net Core 3.1 usando BenchmarkDotNet. Mejora en el compilador «Just-In-Time» Jit, del 40% respecto a .Net 4.8. Optimización en el procesamiento de textos, dichos cambios se extienden desde microoptimizaciones en rutinas que procesan caracteres individuales hasta revisiones de bibliotecas completas de procesamiento de texto. Y para quienes utilizan C#, como no, incorpora todas las mejoras de la versión C# 9.0.

{lang: 'es'}
Categories: asp.net Tags: , ,