AIDE .NET

OData C# (Comment ça marche pour les développeurs)

Publié août 13, 2024
Partager:

Le protocole de données ouvertes(OData) simplifie la création et la consommation d'API RESTful dans le cadre du développement Microsoft .NET. Il offre une approche standardisée de l'interrogation et de la manipulation des données par le biais d'outils CRUD familiers(Créer, lire, mettre à jour, supprimer) des opérations. Cet article explore la manière dont Open Data Protocol rationalise le développement d'API dans .NET, en fournissant des exemples et en soulignant ses principaux avantages. Pour en savoir plus sur l'OData, vous pouvez consulter le site suivantOData C# GitHub Repository pour le code source.

OData C#(Comment ça marche pour les développeurs) : Figure 1 - OData C#- Protocole d'accès aux données

Introduction

OData suit les pratiques standard pour construire des API web RESTful, en utilisant des URL et des verbes HTTP tels que GET et POST pour définir les opérations. Il représente les données à l'aide d'un modèle de données d'entité(EDM) et JSON ou AtomPub pour l'encodage des messages. Si OData simplifie le développement d'API par rapport à GraphQL, il peut offrir moins de fonctionnalités avancées.

OData C#(Comment ça marche pour les développeurs) : Figure 2 - OData

Avantages de l'utilisation d'OData dans .NET

  • Standardisation: OData applique une méthode cohérente pour définir les modèles de données des entités, traiter les requêtes et formater les réponses. Cela réduit la complexité du développement et simplifie l'intégration de l'application client.
  • **OData supporte une méthode uniforme d'interrogation des données pour effectuer des opérations CRUD, des filtrages et des recherches($filtre)triage(Ordre croissant/ Ordre décroissant)($orderby)et la radiomessagerie(haut de page, saut de page) permettant aux clients d'extraire efficacement des ensembles de données spécifiques.
  • Amélioration de l'expérience des développeurs: Les bibliothèques .NET pour OData rationalisent le développement des API. Les développeurs peuvent utiliser des composants prédéfinis pour le routage, le traitement des requêtes et la sérialisation des données, ce qui réduit la duplication du code et le temps de développement.
  • Interopérabilité: Les clients compatibles OData de diverses plateformes peuvent interagir de manière transparente avec votre service OData basé sur .NET, ce qui favorise une plus grande intégration des applications.

Démarrer avec OData dans le Framework .NET

Les bibliothèques .NET pour OData améliorent l'expérience des développeurs en facilitant la manipulation efficace des ensembles de données. Il simplifie la création et la consommation d'API RESTful dans le cadre du développement .NET. Il offre une approche standardisée de l'interrogation et de la manipulation des données par le biais d'opérations CRUD familières(Créer, lire, mettre à jour, supprimer).

Configuration de OData dans les projets .NET

Commencez par ouvrir votre nouveau projet dans Visual Studio. Ensuite, naviguez dans l'explorateur de solutions, faites un clic droit sur votre projet et sélectionnez "Manage NuGet Packages". Recherchez Microsoft.AspNetCore.OData et installez-le. La version actuelle d'OData est la 8.2.5.

Pour installer OData dans la console NuGet Package Manager, utilisez la commande suivante.

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

OData C#(Comment ça marche pour les développeurs) : Figure 3 - Installer OData

Exemple : Création d'un service OData dans ASP.NET Core

Créons une classe de modèle OData simple dans une application ASP.NET Core. Dans le code suivant, la classe ci-dessous expose une liste de services qui peuvent être interrogés à l'aide de la syntaxe 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#

Description du code

La classe ODataModelBuilder représente une structure de données de base en C# pour la gestion d'un service. Elle comprend trois propriétés : Id : Un identifiant entier pour le service. FirstName : Une chaîne de caractères représentant le prénom associé au service. Price : Une valeur décimale indiquant le prix du service. Cette classe peut être utilisée comme élément de base pour créer des fonctionnalités plus complexes liées aux services dans le cadre d'un développement .NET. Nous pouvons également utiliser des propriétés de collection ou de navigation en fonction du scénario.

Voici comment vous pouvez configurer un contrôleur OData dans une application ASP.NET Core dans Visual Studio pour exposer une liste de services via un point de terminaison OData standardisé. L'exemple suivant montre une implémentation de base utilisant une liste statique de services et activant les fonctionnalités de requête OData dans l'API Web :

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#

Description du code

Le code fourni définit un ODataController nommé ServiceController dans une application ASP.NET Core, permettant d'interroger et de manipuler des données à l'aide du protocole OData. Il achemine les requêtes vers "odata/Service" et sert une liste statique d'objets de service, dont un ordinateur portable et un smartphone. La méthode Get, agrémentée de[EnableQuery]permet aux clients d'effectuer des requêtes OData(filtrage, tri, pagination) sur la liste des produits, en renvoyant les résultats sous la forme d'un IActionResult pour les requêtes HTTP GET.

Enregistrer les services OData dans le programme.cs

Pour intégrer les données OD dans une application .NET 6, nous devons installer et configurer les paquets OData nécessaires. Il s'agit de définir le modèle OData, de mettre en place l'intergiciel OData et de configurer les services pour qu'ils prennent en charge les fonctions OData telles que le filtrage, l'ordonnancement et l'expansion.

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#

Description du code

Ce code configure la prise en charge des données OData dans une application .NET 6. Tout d'abord, il importe les espaces de noms nécessaires et crée une instance de WebApplicationBuilder. La méthode GetEdmModel définit le modèle OData à l'aide de l'ODataConventionModelBuilder, qui spécifie un ensemble d'entités pour les entités Service. La méthode AddOData est ensuite appelée pour configurer les services OData, notamment en activant les fonctions select, filter, order by, count, expand et en fixant une valeur maximale de 20 pour les résultats de la requête. Cette configuration garantit que l'application peut traiter efficacement les requêtes OData.

La fonction AddOData() utilise la méthode GetEdmModel() qui récupère le modèle de données utilisé pour l'interrogation, constituant ainsi la base d'un service OData. Ce service utilise un modèle de données abstrait connu sous le nom de modèle de données d'entité (Entity Data Model)(EDM) pour définir les données exposées. La classe ODataConventionModelBuilder génère une GED à l'aide de conventions de nommage par défaut, ce qui réduit les exigences en matière de code. Les développeurs peuvent également utiliser la classe ODataModelBuilder pour mieux contrôler la GED.

Capture d'écran du code

OData C#(Comment ça marche pour les développeurs) : Figure 4 - Code dans Visual Studio

Fonctionnement du service

Après avoir lancé le service, vous pouvez l'interroger à l'aide de diverses options de requête OData, telles que :

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

Résultats du programme

OData C#(Comment ça marche pour les développeurs) : Figure 5 - Sortie du service OData

Introduction à IronPDF

IronPDF est une bibliothèque C# complète conçue pour simplifier laconversion de fichiers en PDF, fractionnement de pages PDFetsuppression de pages d'un PDF dans les applications .NET. Il offre un large éventail de fonctionnalités, notamment la possibilité de générer des PDF à partir de HTML, de CSS, d'images et de JavaScript, ce qui permet aux développeurs de transformer sans effort le contenu web en documents PDF de haute qualité. Grâce à son API intuitive et à son puissant moteur de rendu, IronPDF permet aux développeurs de rationaliser les processus de génération de PDF, facilitant ainsi l'intégration de capacités de génération de documents dynamiques dans leurs applications en toute simplicité.

OData C#(Comment ça marche pour les développeurs) : Figure 6 - IronPDF

Ajout d'IronPDF à un projet

Pour installer IronPDF dans Visual Studio, accédez à la console du gestionnaire de paquets NuGet et utilisez la commande suivante.

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

Générer un PDF

Pour générer un document PDF à partir d'un contenu HTML dans une application .NET, nous pouvons utiliser la classe ChromePdfRenderer d'une bibliothèque comme DinkToPdf ou similaire. Cet exemple montre comment créer un PDF contenant les détails d'un enregistrement d'employé.

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#

Cet exemple crée un simple enregistrement Employé et utilise ensuite IronPDF pour générer un document PDF affichant le nom de la personne. Il montre comment les enregistrements C# peuvent s'intégrer de manière transparente à la génération de PDF dans les applications .NET.

OData C#(Comment ça marche pour les développeurs) : Figure 7 - Sortie PDF

Conclusion

OData simplifie le développement et la consommation d'API RESTful dans .NET en fournissant des capacités d'interrogation et de manipulation standardisées. Nous pouvons également l'intégrer à Entity Framework, ce qui améliore l'efficacité du développement en simplifiant l'accès aux données et leur gestion. OData rationalise le développement d'API, permettant une intégration et une interopérabilité transparentes entre diverses plateformes grâce à ses riches fonctionnalités d'interrogation et à l'amélioration de l'expérience des développeurs. En outre, IronPDF offre des fonctionnalités et une prise en charge complètes pour une manipulation robuste des PDF au sein des applications .NET.

< PRÉCÉDENT
StyleCop C# (Comment ça marche pour les développeurs)
SUIVANT >
IdentityServer .NET (Comment ça marche pour les développeurs)