Passer au contenu du pied de page
.NET AIDE

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

Le protocole Open Data (OData) simplifie la création et la consommation d'API RESTful dans le développement Microsoft .NET. Il offre une approche standardisée pour interroger et manipuler les données via des opérations CRUD (Create, Read, Update, Delete) familières. Cet article explore comment le Protocole Open Data simplifie le développement d'API dans .NET, en fournissant des exemples et en soulignant ses avantages clés. Pour en savoir plus sur OData, vous pouvez consulter le référentiel GitHub OData C# pour le code source.

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

OData suit les pratiques standards pour créer des APIs web RESTful, utilisant des URLs et des verbes HTTP comme GET et POST pour définir les opérations. Il représente les données en utilisant un modèle de données d'entité (EDM) et JSON ou AtomPub pour le codage des messages. Tandis qu'OData simplifie le développement d'API par rapport à GraphQL, il pourrait offrir moins de fonctionnalités avancées.

OData C# (Comment cela fonctionne pour les développeurs) : Figure 2 - OData

Avantages de l'Utilisation d'OData dans .NET

  • Standardisation : OData impose un moyen cohérent de définir des modèles de données d'entité, de gérer les requêtes et de formater les réponses. Cela réduit la complexité du développement et simplifie l'intégration des applications clientes.
  • Capacités de requête enrichies : OData prend en charge un moyen uniforme de requêter les données pour effectuer des opérations CRUD, de filtrage ($filter), de tri (ordre ascendant/ descendant)($orderby), et 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 tirer parti des composants pré-construits pour le routage, la gestion des requêtes, et la sérialisation des données, réduisant la duplication du code et le temps de développement.
  • Interopérabilité : Les clients compatibles OData de différentes plateformes peuvent interagir en douceur avec votre service OData basé sur .NET, promouvant une intégration d'application plus large.

Commencer avec OData dans le Framework .NET

Les bibliothèques .NET pour OData améliorent l'expérience des développeurs en facilitant des moyens efficaces de manipuler des ensembles de données. Cela simplifie la création et la consommation d'API RESTful dans le développement .NET. Il offre une approche standardisée pour interroger et manipuler des données via des opérations CRUD (Create, Read, Update, Delete) familières.

Configuration d'OData dans les Projets .NET

Commencez par ouvrir votre nouveau projet dans Visual Studio. Ensuite, naviguez dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur votre projet, et sélectionnez "Gérer les packages NuGet". Recherchez Microsoft.AspNetCore.OData et installez-le. La version actuelle d'OData est 8.2.5.

Pour installer OData dans la console du gestionnaire de packages NuGet, utilisez la commande suivante.

Install-Package Microsoft.AspNetCore.OData

OData C# (Comment cela fonctionne pour les développeurs) : Figure 3 - Installer OData

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

Créons une simple classe de modèle OData dans une application ASP.NET Core. Dans le code suivant, la classe ci-dessous exposera une liste de services pouvant être interrogés en utilisant 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 Service 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 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 une fonctionnalité liée aux services plus complexe 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 dé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);
    }
}
Imports DemoOData.Models
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.OData.Query
Imports Microsoft.AspNetCore.OData.Routing.Controllers

Namespace DemoOData.Controllers
	<Route("odata/[controller]")>
	Public Class ServiceController
		Inherits ODataController

		Private Shared ReadOnly Products As New List(Of Service) From {
			New Service With {
				.Id = 1,
				.FirstName = "Laptop",
				.Price = 6239.9D
			},
			New Service With {
				.Id = 2,
				.FirstName = "Smartphone",
				.Price = 2585.9D
			}
		}

		<HttpGet>
		<EnableQuery>
		Public Function [Get]() As IActionResult
			Return Ok(Products)
		End Function
	End Class
End Namespace
$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 en utilisant le protocole OData. Il oriente les requêtes vers odata/Service et sert une liste statique d'objets Service, y compris 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, retournant les résultats sous forme de IActionResult pour les requêtes HTTP GET.

Enregistrer les Services OData dans le Program.cs

Pour intégrer OData dans une application .NET 6, nous devons installer et configurer les packages OData nécessaires. Cela implique de définir le modèle OData, de configurer le middleware OData et de configurer les services pour prendre en charge les fonctionnalités OData telles que le filtrage, l'ordre, 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()
    );
Imports DemoOData.Models
Imports Microsoft.AspNetCore.OData
Imports Microsoft.OData.Edm
Imports Microsoft.OData.ModelBuilder

Private 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()

'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'static IEdmModel GetEdmModel()
'{
'	ODataConventionModelBuilder builder = New ODataConventionModelBuilder();
'	builder.EntitySet<Service>("Services");
'	Return builder.GetEdmModel();
'}

builder.Services.AddControllers().AddOData(Function(options) options.AddRouteComponents("odata", GetEdmModel()).Select().Filter().OrderBy().SetMaxTop(20).Count().Expand())
$vbLabelText   $csharpLabel

Description du code

Ce code configure la prise en charge d'OData dans une application .NET 6. Tout d'abord, il importe les espaces de noms nécessaires et crée une instance WebApplicationBuilder. La méthode GetEdmModel définit le modèle OData en utilisant 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, y compris l'activation de la sélection, du filtrage, du tri, du comptage, de l'expansion, et en fixant une valeur maximale de 20 pour les résultats des requêtes. Cette configuration assure que l'application peut gérer efficacement les requêtes OData.

La méthode AddOData() emploie 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 un EDM à travers des conventions de nommage par défaut, minimisant les exigences en matière de code. Alternativement, les développeurs peuvent utiliser la classe ODataModelBuilder pour un contrôle plus grand sur l'EDM.

Capture d'écran du code

OData C# (Comment cela fonctionne pour les développeurs) : Figure 4 - Code dans Visual Studio

Exécution du Service

Après avoir exécuté le service, vous pouvez interroger le Service en utilisant diverses options de requête OData, telles que :

https://localhost:7131/odata/Service

Sortie du programme

OData C# (Comment cela fonctionne pour les développeurs) : Figure 5 - Sortie du service OData

Introduction à IronPDF

IronPDF is a comprehensive C# library designed to simplify the conversion of files to PDF, splitting of PDF pages, and removal of pages from PDF within .NET applications. Il offre une large gamme de fonctionnalités, y compris la capacité de générer des PDF à partir de HTML, CSS, images, et JavaScript, permettant aux développeurs de transformer sans effort le contenu web en documents PDF de haute qualité. Avec son API intuitive et son moteur de rendu puissant, IronPDF permet aux développeurs de rationaliser les processus de génération de PDF, facilitant 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

Ajouter IronPDF au Projet

Pour installer IronPDF dans Visual Studio, naviguez vers la Console du gestionnaire de packages NuGet, et utilisez la commande suivante.

Install-Package IronPdf

Génération de PDF

Pour générer un document PDF à partir de contenu HTML dans une application .NET, nous pouvons utiliser la classe ChromePdfRenderer d'une bibliothèque comme DinkToPdf ou similaire. Cet exemple démontre comment créer un PDF avec 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");
    }
}
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record Employee(string FirstName, string LastName)

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim employee As New Employee("Iron", "Developer")
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {employee.FirstName} {employee.LastName}</p>")
		pdf.SaveAs("PersonRecord.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Cet exemple crée un enregistrement simple de Employee puis utilise IronPDF pour générer un document PDF affichant le nom de la personne. Il montre comment les records C# peuvent s'intégrer de manière transparente avec 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 standardisées de requêtage et de manipulation. Nous pouvons également l'intégrer à Entity Framework, améliorant l'efficacité du développement en simplifiant l'accès et la gestion des données. OData rationalise le développement d'API, permettant une intégration fluide et une interopérabilité sur diverses plateformes avec ses riches fonctionnalités de requête et une expérience développeur améliorée. De plus, IronPDF offre des fonctionnalités complètes et un support pour une manipulation PDF robuste dans les applications .NET.

Questions Fréquemment Posées

Comment OData simplifie-t-il le développement d'API dans .NET ?

OData simplifie le développement d'API dans .NET en fournissant un protocole standardisé pour interroger et manipuler les données à l'aide des opérations CRUD. Il suit les pratiques RESTful avec des URL et des verbes HTTP, utilisant un modèle de données d'entité (EDM) pour représenter les données au format JSON ou AtomPub.

Quels sont les avantages clés de l'utilisation d'OData dans les applications .NET ?

Les avantages clés de l'utilisation d'OData dans les applications .NET incluent la standardisation, des capacités de requête avancées, une expérience développeur améliorée et l'interopérabilité entre différentes plateformes, ce qui réduit la complexité et améliore l'efficacité de la récupération de données.

Comment puis-je configurer un service OData dans une application ASP.NET Core ?

Pour configurer un service OData dans une application ASP.NET Core, vous devez définir un modèle OData et configurer le middleware. Vous pouvez le faire en installant le package NuGet Microsoft.AspNetCore.OData et en utilisant le ODataConventionModelBuilder pour définir votre modèle de données d'entité.

Quel est le rôle de l'attribut EnableQuery dans OData ?

L'attribut EnableQuery dans OData permet aux clients d'effectuer des opérations telles que le filtrage, le tri et la pagination sur les données exposées par un contrôleur OData, améliorant ainsi la flexibilité et la convivialité de l'API.

Comment puis-je générer un PDF à partir de contenu HTML dans .NET ?

Vous pouvez générer un PDF à partir de contenu HTML dans .NET en utilisant la bibliothèque IronPDF. En créant une chaîne HTML et en utilisant la classe ChromePdfRenderer, vous pouvez rendre le HTML en tant que document PDF, qui peut ensuite être enregistré dans un fichier.

Quel est l'objectif d'ODataConventionModelBuilder dans .NET ?

L'ODataConventionModelBuilder dans .NET est utilisé pour générer automatiquement un modèle de données d'entité (EDM) en utilisant les conventions de nommage par défaut, réduisant ainsi la quantité de code nécessaire pour définir le modèle OData dans les applications.

Quelle est une bibliothèque complète pour la manipulation de PDF dans .NET ?

IronPDF est une bibliothèque complète en C# pour la manipulation de PDF, qui facilite des tâches telles que la conversion de fichiers en PDF, la division et la suppression de pages de PDF, et la génération de PDF à partir de HTML dans les applications .NET.

Comment OData améliore-t-il l'interopérabilité dans les services .NET ?

OData améliore l'interopérabilité en permettant aux clients qui adhèrent à la norme OData d'interagir de manière transparente avec des services OData basés sur .NET, favorisant une intégration plus large entre différentes applications et plateformes.

Que sont les opérations CRUD dans le contexte d'OData ?

Les opérations CRUD dans le contexte d'OData se réfèrent aux opérations fondamentales de Création, Lecture, Mise à jour et Suppression, qui sont essentielles pour manipuler les données dans les API RESTful.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite