M1 ‐ Conceptos Básicos de Web Services - sjperalta/Web-Service-C-sharp GitHub Wiki

Conceptos Básicos de Web Services

Definición y Características

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:

  1. Interoperabilidad: Los Web Services permiten la comunicación entre aplicaciones desarrolladas en diferentes lenguajes de programación y ejecutadas en diversas plataformas.
  2. Extensibilidad: Pueden ampliarse y actualizarse fácilmente para adaptarse a nuevas necesidades y tecnologías.
  3. Modularidad: Facilitan la creación de aplicaciones modulares, donde diferentes servicios pueden ser reutilizados y combinados para crear soluciones más complejas.
  4. Estandarización: Utilizan protocolos y formatos de datos estandarizados como HTTP, XML, JSON, SOAP y WSDL, lo que asegura una integración consistente.
  5. Escalabilidad: Permiten a las aplicaciones escalar eficientemente, manejando grandes volúmenes de solicitudes y datos.

Tipos de Web Services: SOAP y REST

SOAP (Simple Object Access Protocol):

  1. Estructura: Basado en XML, define un conjunto de reglas para estructurar mensajes y una forma de comunicación entre servicios web.
  2. Protocolo: SOAP es un protocolo que incluye un conjunto de reglas estrictas y un estándar para la mensajería.
  3. Transporte: Puede usar varios protocolos de transporte como HTTP, SMTP, TCP, etc.
  4. Seguridad: Proporciona niveles avanzados de seguridad y transacciones a través de WS-Security.

REST (Representational State Transfer):

  1. Estructura: Basado en recursos y utiliza HTTP para las operaciones CRUD (Create, Read, Update, Delete).
  2. Protocolo: No es un protocolo, sino un estilo arquitectónico que utiliza HTTP/HTTPS.
  3. Transporte: Usa exclusivamente HTTP/HTTPS.
  4. Formato de Datos: Puede utilizar múltiples formatos de datos como XML, JSON, YAML, etc.

Ventajas y Desventajas de Utilizar Web Services

Ventajas:

  1. Interoperabilidad: Permiten la comunicación entre diferentes aplicaciones y plataformas, facilitando la integración de sistemas heterogéneos.
  2. Reutilización: Los servicios desarrollados pueden ser reutilizados por múltiples aplicaciones, reduciendo costos y tiempos de desarrollo.
  3. Mantenimiento: La modularidad de los servicios hace que sea más fácil actualizar y mantener las aplicaciones.
  4. Escalabilidad: Facilitan la distribución de la carga de trabajo y el manejo de grandes volúmenes de usuarios y datos.
  5. Estandarización: El uso de estándares abiertos asegura una implementación consistente y evita problemas de compatibilidad.

Desventajas:

  1. 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.
  2. Rendimiento: La sobrecarga de usar XML en SOAP puede afectar el rendimiento, especialmente en aplicaciones de alto volumen de transacciones.
  3. 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.
  4. Depuración: La depuración y el monitoreo de servicios distribuidos pueden ser más complicados que en aplicaciones monolíticas.
  5. 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());
⚠️ **GitHub.com Fallback** ⚠️