AIDE .NET

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

Le protocole Open Data (OData) simplifie la création et la consommation des API RESTful dans le développement Microsoft .NET. Il offre une approche standardisée pour interroger et manipuler les données à travers des opérations CRUD (Create, Read, Update, Delete) familières. 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 OData, vous pouvez consulter le dépôt GitHub OData C# pour le code source.

OData C# (Comment ça fonctionne 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 en utilisant un Entity Data Model (EDM) et JSON ou AtomPub pour le codage 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 fonctionne pour les développeurs) : Figure 2 - OData

Avantages de l'utilisation d'OData dans .NET

  • Normalisation : OData impose une méthode cohérente pour définir des modèles de données d'entité, 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.
  • Capacités de requête riches : OData prend en charge une méthode uniforme de requêtage des données pour effectuer des opérations CRUD, le filtrage ($filter), le tri (ordre croissant/ décroissant) ($orderby) et les fonctionnalités de pagination ($top,$skip), permettant aux clients de récupérer efficacement des ensembles de données spécifiques.
  • Expérience développeur améliorée : Les bibliothèques .NET pour OData simplifient le développement d'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 conformes à OData provenant de diverses plateformes peuvent interagir de manière transparente avec votre service OData basé sur .NET, favorisant une intégration d'applications plus large.

Commencer avec OData dans le .NET Framework

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 propose une approche standardisée pour interroger et manipuler les données à travers les 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
$vbLabelText   $csharpLabel

OData C# (Comment ça fonctionne 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
$vbLabelText   $csharpLabel

Description du code

La classe ODataModelBuilder représente une structure de données de base en C# pour gérer 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 un bloc de construction pour créer des fonctionnalités plus complexes liées aux services dans le 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
$vbLabelText   $csharpLabel

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, décorée avec [EnableQuery], permet aux clients d'effectuer des requêtes OData (filtrage, tri, pagination) sur la liste des produits, renvoyant les résultats sous forme d'IActionResult pour les requêtes HTTP GET.

Enregistrer les services OData dans le fichier Program.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
$vbLabelText   $csharpLabel

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 méthode AddOData() utilise la méthode GetEdmModel(), qui récupère le modèle de données utilisé pour les requêtes, formant 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é (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 cela fonctionne 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
$vbLabelText   $csharpLabel

Résultats du programme

OData C# (Comment ça fonctionne pour les développeurs) : Figure 5 - Résultat du service OData

Introduction à IronPDF

IronPDF est une bibliothèque C# complète conçue pour simplifier la conversion de fichiers en PDF, la séparation des pages PDF et la suppression 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 cela fonctionne 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Cet exemple crée un enregistrement simple d'Employé puis utilise 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 cela fonctionne 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.

Chaknith Bin
Ingénieur logiciel
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.
< PRÉCÉDENT
StyleCop C# (Comment ça marche pour les développeurs)
SUIVANT >
IdentityServer .NET (Comment ça marche pour les développeurs)