AIDE .NET

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

Chaknith Bin
Chaknith Bin
novembre 14, 2023
Partager:

Le web moderne se nourrit d'interactivité et de retour d'information en temps réel. Lors de la création d'applications réactives, la fonctionnalité web en temps réel est indispensable. C'est là que SignalR brille. ASP.NET Core SignalR est une bibliothèque qui simplifie l'ajout de fonctionnalités web en temps réel à vos applications plus que vous ne le pensez.

Dans ce tutoriel, nous allons nous lancer dans un voyage à travers les bases et les nuances de SignalR. Plongeons-nous dedans !

Introduction à SignalR dans ASP.NET Core

ASP.NET Core SignalR fournit une API permettant de créer des fonctionnalités web en temps réel à l'aide de WebSockets et d'autres technologies, comme les événements envoyés par le serveur. Elle n'est pas seulement limitée à ASP.NET Core. Vous pouvez utiliser SignalR avec différents clients, comme un navigateur ou une application mobile, ce qui garantit que les clients connectés sont mis à jour instantanément.

Configuration de l'environnement de développement

Pour commencer, vous aurez besoin de

Construire le hub SignalR

SignalR s'articule autour d'un hub SignalR, point central d'interaction entre le client et le serveur.

Créez un nouveau projet ASP.NET Core. Maintenant, ajoutez une nouvelle classe et nommez-la ChatHub. Il s'agira de notre centre SignalR.

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
Imports Microsoft.AspNetCore.SignalR

Public Class ChatHub
	Inherits Hub

	Public Async Function SendMessage(ByVal user As String, ByVal message As String) As Task
		Await Clients.All.SendAsync("ReceiveMessage", user, message)
	End Function
End Class
$vbLabelText   $csharpLabel

Dans la classe publique Startup, nous intégrons notre hub.

public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chatHub");
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chatHub");
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddSignalR()
End Sub

Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseEndpoints(Sub(endpoints)
		endpoints.MapHub(Of ChatHub)("/chatHub")
	End Sub)
End Sub
$vbLabelText   $csharpLabel

Mise en œuvre côté client

SignalR est polyvalent. Bien que ce tutoriel se concentre sur ASP.NET Core et la bibliothèque cliente JavaScript, SignalR prend en charge divers clients, de .NET à Java.

Utilisation de la bibliothèque client SignalR

La bibliothèque client SignalR permet à votre code côté client de se connecter et de communiquer directement avec le côté serveur. Pour notre exemple, utilisons JavaScript.

Tout d'abord, ajoutez la bibliothèque client JavaScript SignalR :

<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
HTML

Vous pouvez maintenant vous connecter au concentrateur :

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub")
    .build();

connection.start();

connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub")
    .build();

connection.start();

connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
const connection = (New signalR.HubConnectionBuilder()).withUrl("/chatHub").build()

connection.start()

connection.on("ReceiveMessage", Sub(user, message)
	console.log(`${user} says:= ${message}`)
End Sub)
$vbLabelText   $csharpLabel

Ce simple code côté client se connecte au hub et écoute les messages diffusés.

Fonctionnalité en temps réel en action

Envoi de messages

En utilisant les extraits de code côté client et côté serveur que nous avons présentés précédemment, l'envoi de messages est simple. Le serveur et le client peuvent tous deux initier la communication.

Côté serveur :

await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
Await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!")
$vbLabelText   $csharpLabel

Et du client :

connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!")
$vbLabelText   $csharpLabel

Communication avancée en temps réel

ASP.NET Core SignalR offre des fonctionnalités avancées de communication en temps réel :

  1. Regroupement des connexions : Segmenter les clients connectés en groupes et diffuser des messages à des segments spécifiques.

  2. Gestion des déconnexions : Gérer automatiquement les connexions et déconnexions des clients.

  3. Protocole binaire : Bien que SignalR utilise par défaut un protocole textuel, il prend également en charge un protocole binaire.

SignalR avec Azure SignalR Service

Pour une fonctionnalité en temps réel évolutive, intégrez Azure SignalR Service. Ce service entièrement géré prend en charge un grand nombre de connexions simultanées, ce qui le rend idéal pour les applications à forte demande.

Intégration du service Azure SignalR :

  1. Installez le SDK Azure SignalR.

  2. Utilisez Azure Service Bus pour la prise en charge du fond de panier.

  3. Ajustez la classe publique Startup pour utiliser Azure SignalR.
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddAzureSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAzureSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddAzureSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAzureSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddSignalR().AddAzureSignalR()
End Sub

Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseAzureSignalR(Sub(routes)
		routes.MapHub(Of ChatHub)("/chatHub")
	End Sub)
End Sub
$vbLabelText   $csharpLabel

Iron Suite : amélioration de SignalR grâce à des outils .NET haut de gamme

Si ASP.NET Core SignalR constitue une base exceptionnelle pour les fonctionnalités web en temps réel, les développeurs recherchent souvent des outils pour améliorer l'expérience et les fonctionnalités globales. C'est là que Iron Software Suite of Libraries entre en jeu.

Iron Suite est une suite de bibliothèques .NET haut de gamme, conçue pour suralimenter vos applications ASP.NET Core, notamment celles qui utilisent SignalR. Chaque produit de cette suite offre des capacités uniques, garantissant une expérience d'application plus riche. Voyons ce qu'il en est :

IronPDF

Signalr C# (Fonctionnement pour les développeurs) Figure 1

En savoir plus sur les capacités de IronPDF vous permet de générer, modifier et lire des fichiers PDF au sein de vos applications .NET. Imaginez l'intégration de SignalR dans un scénario où une équipe collabore sur un document en temps réel. Lorsque des modifications sont apportées, le document peut être converti en PDF à la volée, et les mises à jour sont envoyées à tous les clients connectés de manière transparente. La fonctionnalité en temps réel de SignalR associée aux capacités d'IronPDF pourrait révolutionner les outils de collaboration.

IronPDF convertit les HTML, URL et pages web entières en superbes PDFs comme l'original. C'est parfait pour enregistrer des rapports en ligne, des factures ou toute information basée sur le web que vous souhaitez conserver. Cherchez-vous à convertir HTML en PDF ? Essayez IronPDF aujourd'hui !

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronXL

Signalr C# (Comment cela fonctionne pour les développeurs) Figure 2

Lorsqu'il s'agit de travailler avec des feuilles de calcul Excel, Explore IronXL Features est un champion. Dans un contexte professionnel, les feuilles de calcul jouent un rôle essentiel. L'intégration de SignalR aux côtés d'IronXL signifie que les équipes financières pourraient travailler sur les feuilles de budget en temps réel, en étant témoins des changements au fur et à mesure qu'ils se produisent. Imaginez un scénario dans lequel les données saisies par les différents services sont intégrées dans une feuille Excel centralisée, avec des mises à jour en temps réel pour toutes les parties prenantes. La fusion de la communication en temps réel et de la gestion dynamique des feuilles de calcul devient une réalité grâce à cette combinaison.

IronOCR

Signalr C# (Comment cela fonctionne pour les développeurs) Figure 3

La reconnaissance optique de caractères (OCR) est devenue essentielle dans les applications modernes. Voir IronOCR en action permet aux développeurs .NET d'extraire du texte à partir d'images et de documents. L'association de ce système avec la fonctionnalité en temps réel de SignalR peut changer la donne. Prenons l'exemple d'une plateforme sur laquelle les utilisateurs téléchargent des images contenant des données textuelles. SignalR pourrait être utilisé pour avertir les utilisateurs en temps réel une fois qu'IronOCR traite les images, ce qui rendrait l'extraction des données interactive et instantanée.

IronBarcode

Signalr C# (Comment cela fonctionne pour les développeurs) Figure 4

Les codes-barres font partie intégrante de la gestion des stocks, des systèmes de billetterie, etc. Découvrez les capacités d'IronBarcode simplifie la création et la lecture de codes-barres. Imaginez maintenant l'intégration de ce système avec SignalR dans un système de gestion d'entrepôt. Au fur et à mesure que les articles sont scannés, l'inventaire est mis à jour en temps réel, ce qui permet d'informer les clients connectés des niveaux de stock et de garantir une opération logistique sans heurts.

Conclusion

Signalr C# (Comment cela fonctionne pour les développeurs) Figure 5

La fusion d'ASP.NET Core SignalR avec les puissants outils d'Iron Suite promet une expérience élevée pour les développeurs et les utilisateurs finaux. La fonctionnalité web en temps réel n'est plus seulement une question de communication, mais un outil de transformation qui, associé aux bonnes ressources comme Iron Suite, peut redéfinir les applications interactives.

Il convient de noter la proposition de valeur offerte par Iron Suite. Chaque licence de produit commence à partir de $749, offrant aux développeurs un ensemble de fonctionnalités premium. Cependant, si vous n'êtes pas sûr de vous engager immédiatement, chaque produit propose généreusement un essai gratuit des produits Iron Software. Cela vous permet de tester les capacités avant de prendre une décision.

Et, si vous envisagez d'intégrer plusieurs outils, il y a une excellente nouvelle : vous pouvez acheter l'intégralité de l'Iron Suite pour une valeur ajoutée au prix de seulement deux produits ! Cela vous permet non seulement d'en avoir pour votre argent, mais aussi de vous doter d'une boîte à outils complète pour révolutionner vos applications ASP.NET Core SignalR.

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
C# Vrai Faux (Comment ça marche pour les développeurs)
SUIVANT >
C# SQLite (Comment ça marche pour les développeurs)