Passer au contenu du pied de page
.NET AIDE

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

Le web moderne prospère grâce à l'interactivité et aux retours en temps réel. Lors de la construction 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.

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

Introduction à SignalR dans ASP.NET Core

ASP.NET Core SignalR fournit une API pour créer des fonctionnalités web en temps réel en utilisant WebSockets et d'autres technologies, comme les événements envoyés par le serveur. Ce n'est pas limité à ASP.NET Core. Vous pouvez utiliser SignalR avec divers clients, comme un navigateur ou une application mobile, garantissant que les clients connectés sont mis à jour instantanément.

Configuration de votre environnement de développement

Pour commencer, vous aurez besoin de :

Construire le hub SignalR

Au cœur, SignalR tourne autour d'un hub SignalR, un point central pour que le client et le serveur interagissent.

Créez un nouveau projet ASP.NET Core. Ajoutez maintenant une nouvelle classe et nommez-la ChatHub. Cela servira de hub SignalR.

using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

// Define a SignalR Hub class named ChatHub
public class ChatHub : Hub
{
    // Asynchronous method to send messages
    public async Task SendMessage(string user, string message)
    {
        // Send a message to all connected clients
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

// Define a SignalR Hub class named ChatHub
public class ChatHub : Hub
{
    // Asynchronous method to send messages
    public async Task SendMessage(string user, string message)
    {
        // Send a message to all connected clients
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
Imports Microsoft.AspNetCore.SignalR
Imports System.Threading.Tasks

' Define a SignalR Hub class named ChatHub
Public Class ChatHub
	Inherits Hub

	' Asynchronous method to send messages
	Public Async Function SendMessage(ByVal user As String, ByVal message As String) As Task
		' Send a message to all connected clients
		Await Clients.All.SendAsync("ReceiveMessage", user, message)
	End Function
End Class
$vbLabelText   $csharpLabel

Dans la classe Startup, intégrons notre hub.

public class Startup
{
    // Configure services and add SignalR
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSignalR(); // Add SignalR services
    }

    // Configure the app to use SignalR and map the hub
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Setup endpoint to route to ChatHub
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<ChatHub>("/chatHub");
        });
    }
}
public class Startup
{
    // Configure services and add SignalR
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSignalR(); // Add SignalR services
    }

    // Configure the app to use SignalR and map the hub
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Setup endpoint to route to ChatHub
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<ChatHub>("/chatHub");
        });
    }
}
Public Class Startup
	' Configure services and add SignalR
	Public Sub ConfigureServices(ByVal services As IServiceCollection)
		services.AddSignalR() ' Add SignalR services
	End Sub

	' Configure the app to use SignalR and map the hub
	Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
		' Setup endpoint to route to ChatHub
		app.UseEndpoints(Sub(endpoints)
			endpoints.MapHub(Of ChatHub)("/chatHub")
		End Sub)
	End Sub
End Class
$vbLabelText   $csharpLabel

Implémentation côté client

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

Utilisation de la bibliothèque cliente SignalR

La bibliothèque cliente 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 cliente 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 hub :

// Create a connection to the SignalR hub
const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub") // The hub URL
    .build();

// Start the connection
connection.start().catch(err => console.error(err.toString()));

// Setup a listener for receiving messages
connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
// Create a connection to the SignalR hub
const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub") // The hub URL
    .build();

// Start the connection
connection.start().catch(err => console.error(err.toString()));

// Setup a listener for receiving messages
connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
JAVASCRIPT

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

Fonctionnalité en temps réel en action

Envoyer des messages

En utilisant nos extraits de code côté client et côté serveur précédents, l'envoi de messages est simplifié. Le serveur et le client peuvent initier la communication.

Du côté serveur :

// Send a message from the server to all connected clients
await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
// Send a message from the server to all connected clients
await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
' Send a message from the server to all connected clients
Await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!")
$vbLabelText   $csharpLabel

Et du côté client :

// Send a message from the client to the server
connection.send("SendMessage", "Client", "Hello from client!")
    .catch(err => console.error(err.toString()));
// Send a message from the client to the server
connection.send("SendMessage", "Client", "Hello from client!")
    .catch(err => console.error(err.toString()));
JAVASCRIPT

Communication avancée en temps réel

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

  1. Grouper les connexions : Segmenter les clients connectés en groupes, diffuser des messages à des segments spécifiques.
  2. Gérer les 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 le service Azure SignalR

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

Intégrer le service Azure SignalR :

  1. Installez le SDK Azure SignalR.
  2. Utilisez Azure Service Bus pour le support du backplane.
  3. Ajustez la classe Startup pour utiliser Azure SignalR.
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Azure SignalR services
        services.AddSignalR().AddAzureSignalR();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Use Azure SignalR and map hub with routes
        app.UseAzureSignalR(routes =>
        {
            routes.MapHub<ChatHub>("/chatHub");
        });
    }
}
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Azure SignalR services
        services.AddSignalR().AddAzureSignalR();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Use Azure SignalR and map hub with routes
        app.UseAzureSignalR(routes =>
        {
            routes.MapHub<ChatHub>("/chatHub");
        });
    }
}
Public Class Startup
	Public Sub ConfigureServices(ByVal services As IServiceCollection)
		' Add Azure SignalR services
		services.AddSignalR().AddAzureSignalR()
	End Sub

	Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
		' Use Azure SignalR and map hub with routes
		app.UseAzureSignalR(Sub(routes)
			routes.MapHub(Of ChatHub)("/chatHub")
		End Sub)
	End Sub
End Class
$vbLabelText   $csharpLabel

Iron Suite enrichissant SignalR avec des outils .NET Premium

Bien que ASP.NET Core SignalR fournisse une excellente base pour les fonctionnalités web en temps réel, les développeurs cherchent souvent des outils pour améliorer l'expérience et la fonctionnalité globale. C'est là qu'intervient Iron Software Suite de Bibliothèques.

Iron Suite est un ensemble de bibliothèques .NET premium, conçu pour dynamiser vos applications ASP.NET Core, y compris celles utilisant SignalR. Chaque produit de cette suite offre des capacités uniques, assurant une expérience applicative plus riche. Explorons les offres :

IronPDF

Signalr C# (Comment ça fonctionne pour les développeurs) Figure 1

En savoir plus sur les capacités d'IronPDF vous permet de générer, modifier et lire des fichiers PDF dans vos applications .NET. Imaginez intégrer SignalR dans un scénario où une équipe collabore sur un document en temps réel. Au fur et à mesure que des modifications sont apportées, le document peut être converti en PDF à la volée, avec des mises à jour poussé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 collaboratifs.

IronPDF convertit le HTML, les URL, et les pages Web complètes en superbes PDFs semblables à l'original. Il est parfait pour sauvegarder des rapports en ligne, des factures, ou toute information basée sur le web que vous souhaitez conserver. Vous cherchez à transformer HTML en PDF ? Essayez IronPDF dès 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 ça fonctionne pour les développeurs) Figure 2

Quand il s'agit de travailler avec des tableurs Excel, Exploration des fonctionnalités d'IronXL est un champion. Dans un cadre professionnel, les tableurs jouent un rôle essentiel. Intégrer SignalR avec IronXL signifie que les équipes financières pourraient travailler sur des feuilles de budget en temps réel, en assistant aux modifications au fur et à mesure qu'elles se produisent. Imaginez un scénario où les saisies de données de divers départements convergent dans une feuille Excel centralisée, avec des mises à jour en temps réel pour toutes les parties prenantes. Le mariage de la communication en temps réel et de la gestion dynamique de feuilles de calcul devient une réalité avec cette combinaison.

IronOCR

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

La reconnaissance optique de caractères (OCR) est devenue un pilier des applications modernes. Voir IronOCR en action permet aux développeurs .NET d'extraire du texte à partir d'images et de documents. Associer cela avec la fonctionnalité en temps réel de SignalR peut être révolutionnaire. Considérez une plateforme où les utilisateurs téléchargent des images contenant des données textuelles. SignalR pourrait être utilisé pour notifier les utilisateurs en temps réel dès qu'IronOCR traite les images, rendant l'extraction de données interactive et instantanée.

IronBarcode

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

Le code-barres est essentiel dans la gestion des stocks, les systèmes de billetterie, et bien plus. Découvrez les capacités d'IronBarcode simplifie la création et la lecture de codes-barres. Maintenant, pensez à intégrer cela avec SignalR dans un système de gestion de stock. À mesure que les articles sont scannés, l'inventaire est mis à jour en temps réel, notifiant les clients connectés des niveaux de stock, et assurant une opération logistique fluide.

Conclusion

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

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

Il vaut la peine de noter la proposition de valeur offerte par Iron Suite. Chaque licence produit commence à partir de $799, offrant aux développeurs un ensemble de fonctionnalités premium. Cependant, si vous hésitez à vous engager immédiatement, chaque produit offre 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 nouvelle fantastique : vous pouvez acheter l'ensemble Iron Suite pour plus de valeur au prix de seulement deux produits ! Cela vous assure non seulement d'obtenir le meilleur rapport qualité-prix, mais vous équipe également d'un ensemble d'outils complet pour révolutionner vos applications ASP.NET Core SignalR.

Questions Fréquemment Posées

Qu'est-ce que SignalR et comment cela améliore-t-il les applications web ?

SignalR est une bibliothèque dans ASP.NET Core qui ajoute la fonctionnalité web en temps réel aux applications, permettant une communication instantanée serveur-client. Cela résulte en des applications web interactives et réactives en permettant des mises à jour et des retours en temps réel.

Comment puis-je configurer SignalR dans mon application C# ?

Pour configurer SignalR dans une application C#, vous devez installer le SDK ASP.NET Core et utiliser Visual Studio pour le développement. Ajoutez les services SignalR dans la classe Startup et mappez les hubs aux points de terminaison pour établir la communication serveur-client.

Quel est le rôle d'un hub SignalR dans la communication en temps réel ?

Un hub SignalR agit comme un composant central qui facilite la communication entre le serveur et les clients connectés. Il permet l'envoi et la réception de messages en temps réel, ce qui en fait une partie essentielle de la fonctionnalité de SignalR.

Comment puis-je gérer la messagerie en temps réel dans SignalR ?

La messagerie en temps réel dans SignalR peut être gérée en créant un hub côté serveur et un script côté client. Le JavaScript côté client établit une connexion au hub et gère l'envoi et la réception de messages avec des méthodes comme connection.on et connection.send.

Quelles sont certaines fonctionnalités avancées de SignalR ?

SignalR offre des fonctionnalités avancées comme le groupement des connexions pour segmenter la communication, gérer les déconnexions de manière élégante, et prendre en charge les protocoles binaires pour améliorer les capacités de communication en temps réel.

Comment le service Azure SignalR aide-t-il à faire évoluer les applications ?

Le service Azure SignalR permet aux applications de se développer en prenant en charge un grand nombre de connexions simultanées. Cela nécessite l'installation du SDK Azure SignalR et la configuration de la classe Startup pour tirer parti de l'infrastructure d'Azure pour une communication en temps réel évolutive.

Comment IronPDF peut-il être utilisé pour générer des PDF dans une application SignalR ?

IronPDF peut être utilisé dans une application SignalR pour générer des documents PDF en convertissant du contenu HTML. La méthode RenderHtmlAsPdf d'IronPDF permet une génération transparente de PDF, qui peut être intégrée avec les mises à jour en temps réel dans SignalR.

Quels avantages IronXL apporte-t-il aux applications SignalR ?

IronXL améliore les applications SignalR en permettant la manipulation de fichiers Excel. Il vous permet de créer, lire et modifier des documents Excel au sein de votre application, offrant des capacités de traitement de données supplémentaires aux fonctionnalités en temps réel.

IronOCR peut-il être intégré dans les applications SignalR pour la reconnaissance de texte ?

Oui, IronOCR peut être intégré dans les applications SignalR pour effectuer la reconnaissance optique de caractères (OCR). Cela permet l'extraction de texte en temps réel à partir d'images, améliorant les applications avec des capacités dynamiques de reconnaissance de texte.

Quel est le potentiel de l'utilisation d'IronBarcode dans les applications SignalR?

IronBarcode peut être utilisé dans les applications SignalR pour générer et lire des codes-barres en temps réel. Cette fonctionnalité est bénéfique pour les applications qui nécessitent un traitement dynamique des codes-barres et une gestion en temps réel des données.

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