Archivo

Entradas Etiquetadas ‘asp.net core’

Asp.net web api EF y Dapper

viernes, 3 de enero de 2025 Sin comentarios
Entity framework y dapper orm
orm

A continuación se indican tres razones principales por las que resulta beneficioso utilizar Entity Framework (EF) para los comandos y Dapper para las consultas SQL en un proyecto de API web ASP.NET aprovechando el patrón CQRS y la biblioteca MediatR:

1) Separación de responsabilidades. EF se destaca en la gestión de modelos de dominio, el manejo de relaciones de objetos complejas y el seguimiento de estados de entidades para comandos (Crear, Actualizar, Eliminar).

Dapper es ligero y está altamente optimizado para ejecutar consultas SQL de solo lectura, lo que lo hace ideal para el lado de consulta de CQRS donde el rendimiento es fundamental.

2) Optimización del rendimiento

El seguimiento de cambios y las funciones avanzadas de EF pueden generar sobrecarga, especialmente en consultas simples. El uso de Dapper para consultas elimina este problema, ya que Dapper es un micro ORM optimizado para un acceso rápido y directo a la base de datos.
En el caso de los comandos, la gestión de transacciones y el seguimiento de cambios integrados de EF simplifican el manejo de actualizaciones sin necesidad de instrucciones SQL manuales, que pueden ser propensas a errores.

3) Flexibilidad y facilidad de mantenimiento

Dapper permite escribir consultas SQL sin formato con un control total, lo que resulta perfecto para proyecciones personalizadas y uniones adaptadas a las respuestas de API. EF se alinea bien con los principios de diseño basados ​​en el dominio, lo que garantiza que los comandos permanezcan limpios y centrados en las reglas de negocio en lugar de en operaciones de base de datos de bajo nivel.

Esta combinación aprovecha las fortalezas de cada ORM, garantizando un alto rendimiento y una arquitectura de código limpia dentro de un sistema basado en CQRS.

{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'}

Arquitectura microservicios y .Net core

martes, 3 de enero de 2023 Sin comentarios
arquitectura microservicios
Arquitectura Microservicios

La arquitectura de microservicios es un enfoque para desarrollar aplicaciones software en el que se divide una aplicación en pequeños servicios autónomos que se comunican entre sí a través de una interfaz estándar, como HTTP.

Cada microservicio se encarga de una tarea específica y puede ser desarrollado, implementado y escalado de manera independiente. Esto permite un mayor grado de flexibilidad y facilita el mantenimiento y la actualización de la aplicación.

Una de las ventajas de la arquitectura de microservicios es que permite a los equipos de desarrollo trabajar de manera más ágil y eficiente, ya que cada microservicio puede ser desarrollado y probado de manera aislada antes de ser integrado en la aplicación completa.

Otra ventaja es que, al estar cada microservicio diseñado para realizar una tarea específica, es más fácil identificar y solucionar problemas en caso de que surjan. Además, si un microservicio falla, solo afectará a una parte de la aplicación, en lugar de a la aplicación completa.

Si nos referimos al entorno .Net Core podemos aprovechar los tipos de proyecto minimal web api y web api como base para microservicios. Usar patrones como idempotent y cqrs. También crear microservicios resilientes con la librería Polly.

Sin embargo, también hay desafíos en la implementación de una arquitectura de microservicios. Por ejemplo, puede ser más complicado hacer seguimiento y monitorear el rendimiento de una aplicación compuesta por muchos microservicios diferentes. Además, puede ser más difícil garantizar la consistencia de la aplicación cuando está dividida en muchos componentes independientes.

En general, la arquitectura de microservicios es una opción interesante para aplicaciones de gran escala y complejidad, especialmente cuando se requiere un alto grado de flexibilidad y escalabilidad. Sin embargo, es importante evaluar cuidadosamente si esta arquitectura es adecuada para el proyecto en cuestión y estar consciente de los desafíos y requisitos adicionales que conlleva su implementación.

{lang: 'es'}

Machine Learning y ML.Net

miércoles, 19 de enero de 2022 Sin comentarios

La definición más básica de tecnologías de la información es la aplicación de la tecnología para resolver problemas empresariales u organizativos a gran escala. Inicialmente han sido en el ámbito del cálculo, tareas recursivas o procesamiento de gran número de datos, donde se puedan sacar ventajas de la computación. Cuando las tecnologías llevan a un dispositivo a adquirir y aplicar conocimiento y llevar a cabo comportamiento inteligente, entonces hablamos de inteligencia artificial, permitiendo así construir sistemas inteligentes para diferentes áreas de aplicación.
Para ello, estos sistemas inteligentes requieren combinar distintas tecnologías, abarcando desde la generación o captura de datos, el procesamiento de los datos con infraestructuras de computación adecuadas, la analítica de los datos, y el soporte al aprendizaje automatizado o la toma de decisiones.

Un campo de la inteligencia artificial es machine learning. Entendemos por machine laerning, conseguir que las computadoras hagan predicciones sin ser programadas explícitamente. Machine learning se usa para resolver problemas que son difíciles (o imposibles) de resolver con programación basada en reglas (por ejemplo, instrucciones if y bucles for). Un paso más en machine learning, aprendizaje automático, es cuando se introducen redes neuronales, que permiten que este aprendizaje automático sea más profundo y más complejos los conceptos que pueda aprender, se habla entonces de Deep Learning.

En esta entrada, nos referimos a ML.Net, que Microsoft lanzó en 2018 como preview, un marco de machine learning gratuito, multiplataforma y de código abierto diseñado para llevar el poder de (ML) a las aplicaciones .NET para una variedad de escenarios.
ML.NET es algo más que una biblioteca de Machine Learning que ofrece un conjunto específico de características; ofrece una API de alto nivel y un marco integral que no solo aprovecha sus propias características de ML sino que también simplifica otras bibliotecas y tiempos de ejecución de infraestructura de ML de nivel inferior.

En este ejemplo, se ha usado la bb.dd Northwind, que consiste en las operaciones de una empresa de exportación / importación en el sector de la alimentación, como catálogo de pedidos, y usar SVD (singular value decomposition) / One Class-Matrix Factorization, como modelo que muestre un ranking de productos a recomendar para los items en el pedido. La web puede verse en https://northwindml.azurewebsites.net/.

{lang: 'es'}

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: ,