Zum Fußzeileninhalt springen
.NET HILFE

Signalr C# (Wie es für Entwickler funktioniert)

Das moderne Web gedeiht durch Interaktivität und Echtzeit-Feedback. Beim Erstellen von responsive Anwendungen sind Echtzeit-Webfunktionen ein Muss. Hier glänzt SignalR. ASP.NET Core SignalR ist eine Bibliothek, die das Hinzufügen von Echtzeit-Webfunktionen zu Ihren Anwendungen einfacher macht, als Sie vielleicht denken.

In diesem Tutorial beginnen wir eine Reise durch die Grundlagen und Nuancen von SignalR. Lassen Sie uns starten!

Einführung in SignalR in ASP.NET Core

ASP.NET Core SignalR bietet eine API zum Erstellen von Echtzeit-Webfunktionen mit WebSockets und anderen Technologien wie serverseitigen Ereignissen. Es ist nicht nur auf ASP.NET Core beschränkt. Sie können SignalR mit verschiedenen Clients verwenden, wie einem Browser oder einer mobilen App, und sicherstellen, dass verbundene Clients sofort aktualisiert werden.

Einrichten Ihrer Entwicklungsumgebung

Um anzufangen, benötigen Sie:

Aufbau des SignalR-Hubs

Im Kern dreht sich bei SignalR alles um einen SignalR-Hub, einen zentralen Punkt, bei dem sowohl der Client als auch der Server interagieren.

Erstellen Sie ein neues ASP.NET Core-Projekt. Fügen Sie nun eine neue Klasse hinzu und nennen Sie sie ChatHub. Dies wird als unser SignalR-Hub fungieren.

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

In der Startup-Klasse integrieren wir unseren 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

Client-seitige Implementierung

SignalR ist vielseitig. Während sich dieses Tutorial auf die ASP.NET Core und die JavaScript-Clientbibliothek konzentriert, unterstützt SignalR verschiedene Clients, von .NET bis Java.

Verwendung der SignalR-Client-Bibliothek

Die SignalR-Clientbibliothek ermöglicht es Ihrem Client-seitigen Code, direkt mit der Serverseite zu verbinden und zu kommunizieren. Für unser Beispiel verwenden wir JavaScript.

Fügen Sie zuerst die SignalR-JavaScript-Clientbibliothek hinzu:

<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

Jetzt können Sie sich mit dem Hub verbinden:

// 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

Dieser einfache Client-seitige Code verbindet sich mit dem Hub und lauscht auf alle gesendeten Nachrichten.

Echtzeit-Funktionalität in Aktion

Nachrichten versenden

Mit unseren früheren Code-Snippets auf der Client- und Serverseite ist das Senden von Nachrichten einfach. Sowohl der Server als auch der Client können die Kommunikation initiieren.

Von der Serverseite:

// 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

Und vom 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

Fortgeschrittene Echtzeit-Kommunikation

ASP.NET Core SignalR bietet erweiterte Echtzeit-Kommunikationsfunktionen:

  1. Verbindungen gruppieren: Verbundene Clients in Gruppen segmentieren und Nachrichten an bestimmte Segmente senden.
  2. Umgang mit Verbindungen: Client-Verbindungen und -Trennungen automatisch verwalten.
  3. Binäres Protokoll: Während SignalR standardmäßig ein textbasiertes Protokoll verwendet, unterstützt es auch ein binäres Protokoll.

SignalR mit Azure SignalR Service

Für skalierbare Echtzeit-Funktionalitäten integrieren Sie den Azure SignalR-Dienst. Dieser vollständig verwaltete Dienst unterstützt eine massive Anzahl gleichzeitiger Verbindungen und ist ideal für Anwendungen mit hoher Nachfrage.

Integration des Azure SignalR-Dienstes:

  1. Installieren Sie das Azure SignalR SDK.
  2. Azure Service Bus für Backplane-Unterstützung verwenden.
  3. Passen Sie die Startup-Klasse an, um Azure SignalR zu verwenden.
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 erweitert SignalR mit hochwertigen .NET-Tools

Während ASP.NET Core SignalR eine hervorragende Grundlage für Echtzeit-Webfunktionen bietet, suchen Entwickler oft nach Tools, um das Gesamterlebnis und die Funktionalitäten zu verbessern. Hier kommt die Iron Software Suite of Libraries ins Spiel.

Iron Suite ist ein Paket von Premium .NET-Bibliotheken, das darauf ausgelegt ist, Ihre ASP.NET Core-Anwendungen zu stärken, einschließlich derjenigen, die SignalR verwenden. Jedes Produkt in dieser Suite bietet einzigartige Fähigkeiten und sorgt für ein reichhaltigeres Anwendungserlebnis. Lassen Sie uns die Angebote näher betrachten:

IronPDF

Signalr C# (Wie es für Entwickler funktioniert) Abbildung 1

Erfahren Sie mehr über IronPDF-Funktionen ermöglicht es Ihnen, PDF-Dateien innerhalb Ihrer .NET-Anwendungen zu erstellen, zu bearbeiten und zu lesen. Stellen Sie sich vor, Sie integrieren SignalR in ein Szenario, in dem ein Team in Echtzeit an einem Dokument zusammenarbeitet. Während Änderungen vorgenommen werden, kann das Dokument im Handumdrehen in ein PDF konvertiert werden, mit Aktualisierungen, die nahtlos an alle verbundenen Clients übertragen werden. Die Echtzeitfunktion von SignalR gepaart mit den Funktionen von IronPDF könnte kollaborative Tools revolutionieren.

IronPDF konvertiert HTML, URLs und vollständige Webseiten in atemberaubende PDFs wie das Original. Es eignet sich perfekt zum Speichern von Online-Berichten, Rechnungen oder jeder webbasierten Information, die Sie aufbewahren möchten. Möchten Sie HTML in PDF umwandeln? Testen Sie IronPDF heute!

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# (Wie es für Entwickler funktioniert) Abbildung 2

Wenn es um die Arbeit mit Excel-Tabellen geht, ist Erkunden Sie die Features von IronXL ein Meister. In Unternehmen sind Tabellenkalkulationen entscheidend. Das Zusammenführen von SignalR und IronXL bedeutet, dass Finanzteams in Echtzeit an Budgetblättern arbeiten können und Änderungen sehen, während sie passieren. Stellen Sie sich ein Szenario vor, in dem Dateneinträge verschiedener Abteilungen in ein zentrales Excel-Blatt fließen, mit Echtzeit-Updates für alle Beteiligten. Die Kombination von Echtzeitkommunikation und dynamischem Tabellenmanagement wird mit dieser Kombination Wirklichkeit.

IronOCR

Signalr C# (Wie es für Entwickler funktioniert) Abbildung 3

Optische Zeichenerkennung (OCR) ist in modernen Anwendungen zum Standard geworden. Sehen Sie IronOCR in Aktion befähigt .NET-Entwickler, Text aus Bildern und Dokumenten zu extrahieren. Die Kombination mit der Echtzeitfunktion von SignalR kann bahnbrechend sein. Stellen Sie sich eine Plattform vor, auf der Benutzer Bilder mit Textdaten hochladen. SignalR könnte verwendet werden, um Benutzer in Echtzeit zu benachrichtigen, sobald IronOCR die Bilder verarbeitet hat, wodurch die Datenauswertung interaktiv und augenblicklich wird.

IronBarcode

Signalr C# (Wie es für Entwickler funktioniert) Abbildung 4

Barcodes sind integraler Bestandteil der Bestandsverwaltung, Ticketingsystemen und mehr. Entdecken Sie die Möglichkeiten von IronBarcode vereinfacht die Erstellung und das Lesen von Barcodes. Denken Sie nun daran, dies mit SignalR in einem Lagerverwaltungssystem zu integrieren. Wenn Artikel gescannt werden, wird der Lagerbestand in Echtzeit aktualisiert, was verbundene Clients über den Lagerbestand informiert und einen reibungslosen logistischen Betrieb gewährleistet.

Abschluss

Signalr C# (Wie es für Entwickler funktioniert) Abbildung 5

Die Kombination von ASP.NET Core SignalR mit den leistungsstarken Tools der Iron Suite verspricht ein verbessertes Erlebnis für Entwickler und Endnutzer. Echtzeit-Webfunktionen bedeuten nicht nur Kommunikation, sondern ein transformatives Werkzeug, das, wenn es mit den richtigen Ressourcen wie der Iron Suite kombiniert wird, interaktive Anwendungen neu definieren kann.

Es ist erwähnenswert, welches Wertangebot die Iron Suite bietet. Jede Produktlizenz beginnt ab $799 und bietet Entwicklern einen Premium-Funktionssatz. Wenn Sie sich jedoch nicht sicher sind, ob Sie sich unmittelbar binden möchten, bietet jedes Produkt großzügig eine kostenlose Testversion der Iron Software Produkte an. Dies ermöglicht es Ihnen, die Funktionen zu testen, bevor Sie eine Entscheidung treffen.

Und wenn Sie erwägen, mehrere Tools zu integrieren, gibt es fantastische Neuigkeiten: Sie können die gesamte Iron Suite zum Preis von nur zwei Produkten erwerben! Das stellt nicht nur sicher, dass Sie den besten Gegenwert für Ihr Geld erhalten, sondern stellt Ihnen auch ein umfassendes Toolkit zur Verfügung, um Ihre ASP.NET Core SignalR-Anwendungen zu revolutionieren.

Häufig gestellte Fragen

Was ist SignalR und wie verbessert es Webanwendungen?

SignalR ist eine Bibliothek in ASP.NET Core, die Echtzeit-Webfunktionalität zu Anwendungen hinzufügt und sofortige Server-Client-Kommunikation ermöglicht. Dies führt zu interaktiven und reaktionsschnellen Webanwendungen, indem es Echtzeit-Updates und Rückmeldungen ermöglicht.

Wie kann ich SignalR in meiner C#-Anwendung einrichten?

Um SignalR in einer C#-Anwendung einzurichten, müssen Sie das ASP.NET Core SDK installieren und Visual Studio für die Entwicklung verwenden. Fügen Sie SignalR-Dienste in der Startup-Klasse hinzu und weisen Sie Hubs Endpunkten zu, um die Server-Client-Kommunikation herzustellen.

Welche Rolle spielt ein SignalR-Hub in der Echtzeitkommunikation?

Ein SignalR-Hub fungiert als zentrale Komponente, die die Kommunikation zwischen dem Server und den verbundenen Clients erleichtert. Er ermöglicht das Senden und Empfangen von Nachrichten in Echtzeit und ist ein Schlüsselelement der SignalR-Funktionalität.

Wie kann ich Echtzeit-Messaging in SignalR handhaben?

Echtzeit-Messaging in SignalR kann durch die Erstellung eines serverseitigen Hubs und eines clientseitigen Skripts verwaltet werden. Das clientseitige JavaScript baut eine Verbindung zum Hub auf und handhabt das Senden und Empfangen von Nachrichten mit Methoden wie connection.on und connection.send.

Was sind einige erweiterte Funktionen von SignalR?

SignalR bietet erweiterte Funktionen wie das Gruppieren von Verbindungen zur Segmentierung der Kommunikation, das elegante Handhaben von Client-Abbrüchen und die Unterstützung von Binärprotokollen für verbesserte Echtzeitkommunikationsfunktionen.

Wie hilft der Azure SignalR-Dienst bei der Skalierung von Anwendungen?

Azure SignalR Service ermöglicht es Anwendungen, zu skalieren, indem eine große Anzahl gleichzeitiger Verbindungen unterstützt wird. Dazu gehört die Installation des Azure SignalR SDK und die Konfiguration der Startup-Klasse, um die Infrastruktur von Azure für skalierbare Echtzeitkommunikation zu nutzen.

Wie kann IronPDF verwendet werden, um PDFs in einer SignalR-Anwendung zu erstellen?

IronPDF kann in einer SignalR-Anwendung verwendet werden, um PDF-Dokumente zu erstellen, indem HTML-Inhalte konvertiert werden. Die Methode RenderHtmlAsPdf von IronPDF ermöglicht eine nahtlose PDF-Erstellung, die in Echtzeit-Updates in SignalR integriert werden kann.

Welche Vorteile bringt IronXL für SignalR-Anwendungen?

IronXL verbessert SignalR-Anwendungen, indem es die Verwaltung von Excel-Dateien ermöglicht. Es erlaubt die Erstellung, das Lesen und die Modifizierung von Excel-Dokumenten innerhalb Ihrer Anwendung und bietet zusätzliche Datenverarbeitungsfähigkeiten neben den Echtzeit-Funktionalitäten.

Kann IronOCR in SignalR-Anwendungen für Texterkennung integriert werden?

Ja, IronOCR kann in SignalR-Anwendungen integriert werden, um optische Zeichenerkennung (OCR) durchzuführen. Dies ermöglicht die Echtzeit-Textextraktion aus Bildern und verbessert Anwendungen durch dynamische Texterkennungsfähigkeiten.

Welches Potenzial hat die Verwendung von IronBarcode in SignalR-Anwendungen?

IronBarcode kann in SignalR-Anwendungen verwendet werden, um Barcodes in Echtzeit zu erstellen und zu lesen. Diese Funktionalität ist vorteilhaft für Anwendungen, die dynamische Barcode-Verarbeitung und Echtzeit-Datenverarbeitung erfordern.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen