M1 ‐ Conceptos Básicos de Web Services - sjperalta/Web-Service-C-sharp GitHub Wiki
Definición: Un Web Service es una aplicación que proporciona servicios a otras aplicaciones a través de la web, utilizando estándares abiertos como HTTP, XML, SOAP, y WSDL para la comunicación. Permite que diferentes sistemas y aplicaciones se comuniquen e intercambien datos independientemente de sus plataformas y lenguajes de programación subyacentes.
Características:
- Interoperabilidad: Los Web Services permiten la comunicación entre aplicaciones desarrolladas en diferentes lenguajes de programación y ejecutadas en diversas plataformas.
- Extensibilidad: Pueden ampliarse y actualizarse fácilmente para adaptarse a nuevas necesidades y tecnologías.
- Modularidad: Facilitan la creación de aplicaciones modulares, donde diferentes servicios pueden ser reutilizados y combinados para crear soluciones más complejas.
- Estandarización: Utilizan protocolos y formatos de datos estandarizados como HTTP, XML, JSON, SOAP y WSDL, lo que asegura una integración consistente.
- Escalabilidad: Permiten a las aplicaciones escalar eficientemente, manejando grandes volúmenes de solicitudes y datos.
SOAP (Simple Object Access Protocol):
- Estructura: Basado en XML, define un conjunto de reglas para estructurar mensajes y una forma de comunicación entre servicios web.
- Protocolo: SOAP es un protocolo que incluye un conjunto de reglas estrictas y un estándar para la mensajería.
- Transporte: Puede usar varios protocolos de transporte como HTTP, SMTP, TCP, etc.
- Seguridad: Proporciona niveles avanzados de seguridad y transacciones a través de WS-Security.
REST (Representational State Transfer):
- Estructura: Basado en recursos y utiliza HTTP para las operaciones CRUD (Create, Read, Update, Delete).
- Protocolo: No es un protocolo, sino un estilo arquitectónico que utiliza HTTP/HTTPS.
- Transporte: Usa exclusivamente HTTP/HTTPS.
- Formato de Datos: Puede utilizar múltiples formatos de datos como XML, JSON, YAML, etc.
Ventajas:
- Interoperabilidad: Permiten la comunicación entre diferentes aplicaciones y plataformas, facilitando la integración de sistemas heterogéneos.
- Reutilización: Los servicios desarrollados pueden ser reutilizados por múltiples aplicaciones, reduciendo costos y tiempos de desarrollo.
- Mantenimiento: La modularidad de los servicios hace que sea más fácil actualizar y mantener las aplicaciones.
- Escalabilidad: Facilitan la distribución de la carga de trabajo y el manejo de grandes volúmenes de usuarios y datos.
- Estandarización: El uso de estándares abiertos asegura una implementación consistente y evita problemas de compatibilidad.
Desventajas:
- Complejidad: La creación y gestión de Web Services puede ser compleja, especialmente para servicios SOAP que requieren el manejo de WSDL, XML y seguridad avanzada.
- Rendimiento: La sobrecarga de usar XML en SOAP puede afectar el rendimiento, especialmente en aplicaciones de alto volumen de transacciones.
- Seguridad: Aunque se pueden implementar medidas de seguridad, los servicios web son susceptibles a ataques como intercepción de datos, inyección de código y denegación de servicio.
- Depuración: La depuración y el monitoreo de servicios distribuidos pueden ser más complicados que en aplicaciones monolíticas.
- Dependencias: La disponibilidad y el rendimiento de un servicio pueden verse afectados por la red y la infraestructura subyacente.
Este conjunto de conceptos proporciona una base sólida para entender qué son los Web Services, los tipos disponibles y sus ventajas y desventajas. Esta comprensión es esencial para cualquier desarrollador que busque implementar o consumir servicios web en sus aplicaciones.
//comandos para crear una aplicacion .net core usando la consola de comandos.
dotnet new web -o TodoApi
cd TodoApi
code -r ../TodoApi
//comando usado para compilar y correr un programa en .net core
dotnet run
//instalado de certificado de seguridad
dotnet dev-certs https --trust
//instalar los nuget packages dela base de datos y la capa de entity framework
dotnet add package Microsoft.EntityFrameworkCore.InMemory
dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
//Crear el archivo Todo.cs
public class Todo
{
public int Id { get; set; }
public string? Name { get; set; }
public bool IsComplete { get; set; }
}
//Crear el archico todoDb.cs
//modelo de la base de datos
using Microsoft.EntityFrameworkCore;
class TodoDb : DbContext
{
public TodoDb(DbContextOptions<TodoDb> options)
: base(options) { }
public DbSet<Todo> Todos => Set<Todo>();
}
// Configuraciones del Program.cs
//configuracion de base de datos
builder.Services.AddDbContext<TodoDb>(opt => opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
//creacion del endpoint /todoitems
app.MapGet("/todoitems", async (TodoDb db) =>
await db.Todos.ToListAsync());