AYUDA .NET

OData C# (Cómo funciona para desarrolladores)

Publicado en 13 de agosto, 2024
Compartir:

Protocolo de datos abiertos(OData) simplifica la creación y el consumo de API RESTful en el desarrollo de Microsoft .NET. Ofrece un enfoque estandarizado para consultar y manipular datos mediante el conocido CRUD(Crear, Leer, Actualizar, Suprimir) operaciones. Este artículo explora cómo el Protocolo de Datos Abiertos agiliza el desarrollo de API en .NET, proporcionando ejemplos y destacando sus principales ventajas. Para saber más sobre OData, puede consultar la páginaOData C# Repositorio GitHub para el código fuente.

OData C#(Cómo funciona para los desarrolladores): Figura 1 - OData C#- Protocolo de acceso a datos

Introducción

OData sigue las prácticas estándar para crear API web RESTful, utilizando URL y verbos HTTP como GET y POST para definir las operaciones. Representa los datos mediante un Modelo de Datos de Entidades(EDM) y JSON o AtomPub para la codificación de mensajes. Aunque OData simplifica el desarrollo de API en comparación con GraphQL, puede ofrecer menos funciones avanzadas.

OData C#(Cómo funciona para desarrolladores): Figura 2 - OData

Ventajas del uso de OData en .NET

  • Estandarización: OData impone una forma coherente de definir modelos de datos de entidades, gestionar solicitudes y dar formato a las respuestas. Esto reduce la complejidad del desarrollo y simplifica la integración de las aplicaciones cliente.
  • Ricas capacidades de consulta: OData admite una forma uniforme de consultar datos para realizar operaciones CRUD, filtrado($filtro)clasificación(Orden ascendente/ Orden descendente)($pedido)y paginación($top,$skip) que permiten a los clientes recuperar eficazmente conjuntos de datos específicos.
  • Experiencia mejorada del desarrollador: Las bibliotecas .NET para OData agilizan el desarrollo de API. Los desarrolladores pueden aprovechar los componentes predefinidos para el enrutamiento, la gestión de consultas y la serialización de datos, lo que reduce la duplicación de código y el tiempo de desarrollo.
  • Interoperabilidad: Los clientes compatibles con OData de diversas plataformas pueden interactuar sin problemas con su servicio OData basado en .NET, lo que fomenta una mayor integración de las aplicaciones.

Primeros pasos con OData en .NET Framework

Las bibliotecas .NET para OData mejoran la experiencia de los desarrolladores al facilitar formas eficientes de manipular conjuntos de datos. Simplifica la creación y el consumo de API RESTful en el desarrollo .NET. Ofrece un enfoque estandarizado para consultar y manipular datos mediante operaciones CRUD familiares(Crear, Leer, Actualizar, Suprimir).

Configuración de OData en proyectos .NET

Comienza abriendo tu nuevo proyecto en Visual Studio. A continuación, vaya al Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione "Administrar paquetes NuGet". Busque Microsoft.AspNetCore.OData e instálelo. La versión actual de OData es la 8.2.5.

Para instalar OData en la consola del gestor de paquetes NuGet, utilice el siguiente comando.

Install-Package Microsoft.AspNetCore.OData
Install-Package Microsoft.AspNetCore.OData
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

OData C#(Cómo funciona para desarrolladores): Figura 3 - Instalar OData

Ejemplo: Creación de un servicio OData en ASP.NET Core

Vamos a crear una sencilla clase de modelo OData en una aplicación ASP.NET Core. En el siguiente código, la siguiente clase expondrá una lista de servicios que pueden ser consultados utilizando la sintaxis OData.

public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}
public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Descripción del código

La clase ODataModelBuilder representa una estructura de datos básica en C# para gestionar un servicio. Incluye tres propiedades: Id: Un identificador entero para el servicio. FirstName: Una cadena que representa el nombre asociado al servicio. Price: Un valor decimal que indica el precio del servicio. Esta clase puede utilizarse como bloque de construcción para crear funcionalidades más complejas relacionadas con el servicio en el desarrollo .NET. También podemos utilizar propiedades de colección o navegación en función del escenario.

A continuación se explica cómo configurar un controlador OData en una aplicación ASP.NET Core en Visual Studio para exponer una lista de servicios a través de un punto final OData estandarizado. El siguiente ejemplo muestra una implementación básica utilizando una lista estática de servicios y habilitando las funcionalidades de consulta OData en Web API:

using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;
namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName= "Smartphone", Price = 2585.9M }
        };
        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}
using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;
namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName= "Smartphone", Price = 2585.9M }
        };
        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Descripción del código

El código proporcionado define un ODataController llamado ServiceController en una aplicación ASP.NET Core, permitiendo la consulta y manipulación de datos utilizando el protocolo OData. Enruta las peticiones a "odata/Servicio" y sirve una lista estática de objetos de Servicio, incluyendo un portátil y un smartphone. El método Get, decorado con[EnableQuery]permite a los clientes realizar consultas OData(filtrado, clasificación, paginación) en la lista de Productos, devolviendo los resultados como un IActionResult para peticiones HTTP GET.

Registrar servicios OData en el Program.cs

Para integrar OData en una aplicación .NET 6, debemos instalar y configurar los paquetes OData necesarios. Esto implica definir el modelo de OData, configurar el middleware de OData y configurar los servicios para que admitan funciones de OData como filtrado, ordenación y expansión.

using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}
builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );
using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}
builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Descripción del código

Este código configura el soporte OData en una aplicación .NET 6. En primer lugar, importa los espacios de nombres necesarios y crea una instancia de WebApplicationBuilder. El método GetEdmModel define el modelo OData utilizando el ODataConventionModelBuilder, que especifica un conjunto de entidades para las entidades de Servicio. A continuación, se llama al método AddOData para configurar los servicios OData, incluyendo la activación de select, filter, order by, count, expand, y el establecimiento de un valor top máximo de 20 para los resultados de la consulta. Esta configuración garantiza que la aplicación pueda gestionar consultas OData de forma eficaz.

La función AddOData() utiliza el método GetEdmModel() que recupera el modelo de datos utilizado para la consulta, lo que constituye la base de un servicio OData. Este servicio utiliza un modelo de datos abstracto conocido como Modelo de Datos de Entidades(EDM) para definir los datos expuestos. La clase ODataConventionModelBuilder genera un EDM mediante convenciones de nomenclatura por defecto, minimizando los requisitos de código. Alternativamente, los desarrolladores pueden utilizar la clase ODataModelBuilder para un mayor control sobre el EDM.

Captura de pantalla del código

OData C#(Cómo funciona para desarrolladores): Figura 4 - Código en Visual Studio

Funcionamiento del Servicio

Después de ejecutar el servicio, puede consultar el Servicio utilizando varias opciones de consulta OData, tales como:

https://localhost:7131/odata/Service
https://localhost:7131/odata/Service
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Resultados del programa

OData C#(Cómo funciona para desarrolladores): Figura 5 - Salida del servicio OData

Introducción a IronPDF

IronPDF es una completa biblioteca de C# diseñada para simplificar elconversión de archivos a PDF, división de páginas PDFyeliminación de páginas de PDF dentro de las aplicaciones .NET. Ofrece una amplia gama de funciones, incluida la capacidad de generar PDF a partir de HTML, CSS, imágenes y JavaScript, lo que permite a los desarrolladores transformar sin esfuerzo el contenido web en documentos PDF de alta calidad. Con su intuitiva API y su potente motor de renderizado, IronPDF permite a los desarrolladores agilizar los procesos de generación de PDF, facilitando la integración de funciones dinámicas de generación de documentos en sus aplicaciones con facilidad.

OData C#(Cómo funciona para desarrolladores): Figura 6 - IronPDF

Añadir IronPDF al proyecto

Para instalar IronPDF en Visual Studio, vaya a la consola del gestor de paquetes NuGet y utilice el siguiente comando.

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

Generar PDF

Para generar un documento PDF a partir de contenido HTML en una aplicación .NET, podemos utilizar la clase ChromePdfRenderer de una biblioteca como DinkToPdf o similar. Este ejemplo muestra cómo crear un PDF con los detalles de un registro de Empleado.

public record Employee (string FirstName, string LastName);
class Program
{
    static void Main(string[] args)
    {
        var employee = new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {employee.FirstName} {employee.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
public record Employee (string FirstName, string LastName);
class Program
{
    static void Main(string[] args)
    {
        var employee = new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {employee.FirstName} {employee.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Este ejemplo crea un simple registro Empleado y luego utiliza IronPDF para generar un documento PDF que muestra el nombre de la persona. Muestra la perfecta integración de los registros de C# con la generación de PDF en aplicaciones .NET.

OData C#(Cómo funciona para desarrolladores): Figura 7 - Salida PDF

Conclusión

OData simplifica el desarrollo y el consumo de API RESTful en .NET al proporcionar funciones estandarizadas de consulta y manipulación. También podemos integrarlo con Entity Framework, mejorando la eficiencia del desarrollo al simplificar el acceso y la gestión de datos. OData agiliza el desarrollo de API, lo que permite una integración e interoperabilidad perfectas en varias plataformas gracias a sus completas funciones de consulta y a la mejora de la experiencia del desarrollador. Además, IronPDF ofrece funciones completas y soporte para una manipulación robusta de PDF dentro de aplicaciones .NET.

< ANTERIOR
StyleCop C# (Cómo funciona para desarrolladores)
SIGUIENTE >
IdentityServer .NET (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >