.NET ヘルプ

SignalR C#(開発者向けの動作原理)

公開済み 2023年11月14日
共有:

現代のウェブはインタラクティビティとリアルタイムフィードバックで成り立っています。 レスポンシブなアプリケーションを構築する際、リアルタイムのウェブ機能は不可欠です。この点で、SignalRが際立っています。 ASP.NET Core SignalRは、アプリケーションにリアルタイムのWeb機能を追加することを、思っているよりも簡単にするライブラリです。

このチュートリアルでは、SignalRの基本とニュアンスについての旅に出かけましょう。 それでは始めましょう!

ASP.NET CoreにおけるSignalRの紹介

ASP.NET Core SignalRは、WebSocketsやサーバー送信イベントなどの技術を使用してリアルタイムのWeb機能を作成するためのAPIを提供します。 それはASP.NET Coreに限定されません。 SignalRを使用すると、ブラウザやモバイルアプリのようなさまざまなクライアントを利用でき、接続されたクライアントが即座に更新されることを保証します。

開発環境の設定

始めるには、次のものが必要です:

・ASP.NET Core SDK

SignalR Hubの構築

基本的に、SignalRはクライアントとサーバーが相互作用するための中心的なポイントであるSignalRハブを軸に展開します。

新しいASP.NET Coreプロジェクトを作成します。 次に、新しいクラスを追加し、その名前をChatHubにします。 これは、我々の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
VB   C#

パブリッククラス Startup で、ハブを統合しましょう。

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
VB   C#

クライアントサイドの実装

SignalRは多用途です。このチュートリアルでは、ASP.NET CoreおよびJavaScriptクライアントライブラリに焦点を当てていますが、SignalRは.NETからJavaまでさまざまなクライアントをサポートします。

SignalR クライアント ライブラリの使用

SignalRクライアントライブラリを使用すると、クライアント側のコードがサーバー側と直接接続して通信できます。例として、JavaScriptを使用しましょう。

最初に、SignalR JavaScript クライアントライブラリを追加してください:

<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>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
VB   C#

では、ハブに接続することができます:

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)
VB   C#

このシンプルなクライアント・サイドのコードは、ハブに接続して送信されるメッセージを受信します。

アクション内のリアルタイム機能

メッセージの送信

先ほどのクライアント側およびサーバー側のコードスニペットを使用すると、メッセージの送信は簡単です。 サーバーとクライアントの両方が通信を開始できます。

サーバー側から:

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!")
VB   C#

そしてクライアントから:

connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!")
VB   C#

高度なリアルタイムコミュニケーション

ASP.NET Core SignalRは、先進的なリアルタイムコミュニケーション機能を提供します。

  1. 接続のグループ化:接続されたクライアントをグループに分け、特定のセグメントにメッセージをブロードキャストする。

  2. 切断の処理: クライアントの接続と切断を自動的に管理します。

  3. バイナリプロトコル:SignalRはデフォルトでテキストベースのプロトコルを使用しますが、バイナリプロトコルもサポートしています。

Azure SignalR サービスを使用した SignalR

スケーラブルなリアルタイム機能のために、統合しますAzure SignalR サービス. この完全に管理されたサービスは、大量の同時接続をサポートしており、高需給なアプリに最適です。

Azure SignalR サービスの統合:

  1. インストールAzure SignalR SDK(エスディーケー).

  2. バックプレーンサポートのために Azure Service Bus を使用します。

  3. パブリッククラスStartupを調整して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
VB   C#

Iron Suite プレミアム .NET ツールで SignalR を強化

ASP.NET Core SignalRはリアルタイムウェブ機能のための優れた基盤を提供しますが、開発者はしばしば全体の体験と機能を強化するためのツールを探します。 申し訳ありませんが、翻訳するコンテンツが提供されていないようです。以下に続くテキストをご提供いただければ、それを日本語に翻訳いたします。Ironソフトウェアスイートライブラリ登場します。

Iron Suiteは、SignalRを利用したアプリケーションを含む ASP.NET Core アプリケーションを強化するために設計されたプレミアム .NET ライブラリのスイートです。 このスイートに含まれる各製品は、独自の機能を提供し、より豊かなアプリケーション体験を保証します。 それでは、提供内容を見てみましょう。

IronPDF

SignalR C#(開発者向けの仕組み)図1

IronPDFの機能についてもっと知る.NETアプリケーション内でPDFファイルを生成、編集、読み取りすることができます。 SignalR を統合して、チームがリアルタイムでドキュメントを共同作業するシナリオを想像してください。変更が加えられると、ドキュメントはオンザフライでPDFに変換され、更新がシームレスにすべての接続されたクライアントにプッシュされます。 SignalRのリアルタイム機能とIronPDFの機能を組み合わせることで、協働ツールに革命をもたらす可能性があります。

IronXL

IronXL は、.NET、Python、および他のプログラミング言語で Excel 形式の読み取り、書き込み、編集を可能にするライブラリです。ユーザーは、Microsoft Excel を使わずに、スプレッドシートをプログラムで管理することができます。主要な機能には、Excel ファイルの作成、既存ファイルの読み込み、セルの書き換え、グリッドデータの操作などが含まれます。データ分析、自動化、レポート生成のために最適なツールです。

IronXL の特長は、使いやすさと柔軟性にあります。どのレベルのプログラマーでも、数行のコードで Excel 操作を実行できます。開発者は、RBGA カラー、フォントスタイル、ボーダースタイルなど、ビジュアル要素のカスタマイズも簡単に行えます。

以下のプラットフォームで使用可能です:

  • IronXL for .NET
  • IronXL for Python

Signalr C#(開発者向けの仕組み)図 2

Excelスプレッドシートを使用する際は、IronXLの機能を見るはチャンピオンです。 ビジネス環境において、スプレッドシートは重要な役割を果たしています。 SignalRとIronXLを組み合わせることで、財務チームは予算表をリアルタイムで作業し、変化を目の当たりにすることができます。 さまざまな部門からのデータ入力が一元化されたExcelシートに流れ込み、すべての関係者にリアルタイムで更新されるシナリオを想像してください。 リアルタイムコミュニケーションとダイナミックスプレッドシート管理の融合が、この組み合わせによって実現します。

IronOCR

IronOCR(IronOCR) は、高精度の光学文字認識 (Optical Character Recognition, OCR) ライブラリです。以下はその主な機能と利点です。

  • 高精度: IronOCR は、画像やPDFから文字情報を高精度で抽出します。複雑なフォントや手書き文字にも対応しています。
  • 多言語対応: IronOCR は、多数の言語に対応しており、グローバルなプロジェクトに最適です。
  • 簡単な統合: .NET アプリケーションに簡単に統合できるため、開発者の手間を大幅に削減します。
  • 豊富なフォーマットサポート: PDF、TIFF、JPG、PNG など、さまざまなファイル形式をサポートしています。
  • カスタマイズ可能な OCR 設定: パフォーマンスや精度を最適化するために、様々な設定を調整できます。

サポートされている開発プラットフォームには、.NET Framework、.NET Core、Xamarin などがあります。 IronOCR(IronOCR) は、開発者が迅速かつ効率的にOCR機能を統合するための強力なツールです。

さらに詳しい情報やデモ版のダウンロードは、公式ウェブサイト https://ironsoftware.com からご覧いただけます。

Signalr C#(開発者向けの動作原理)図3

光学文字認識 (OCR)(OCR (光学式文字認識))は、現代のアプリケーションには欠かせないものとなりました。 IronOCRの使用例を見る.NET開発者が画像および文書からテキストを抽出する能力を提供します。 SignalRのリアルタイム機能と組み合わせることで、画期的な変化をもたらすことができます。 ユーザーがテキストデータを含む画像をアップロードするプラットフォームを考えてください。 IronOCRが画像を処理すると、SignalRを使用してユーザーにリアルタイムで通知し、データ抽出をインタラクティブかつ即座に行うことができます。

IronBarcode

SignalR C#(開発者向けの動作方法)図4

バーコード化は、在庫管理やチケットシステムなどにおいて不可欠です。 IronBarcodeの機能を見るバーコードの作成と読み取りを簡単にします。 それでは、これをSignalRと倉庫管理システムに統合することを考えてみましょう。 商品がスキャンされると、在庫がリアルタイムで更新され、接続されたクライアントに在庫レベルが通知されるため、円滑な物流オペレーションが確保されます。

結論

開発者向けSignalR C#(動作の仕組み)図5

ASP.NET Core SignalRとIron Suiteの強力なツールの融合は、開発者とエンドユーザーの両方にとってより高度な体験を提供します。 リアルタイム web 機能は、単なるコミュニケーションにとどまらず、適切なリソースである Iron Suite と組み合わせることで、インタラクティブアプリケーションを再定義する革新的なツールになります。

Iron Suiteが提供する価値提案に注目する価値があります。各製品ライセンスはLite Licenseから始まり、開発者にプレミアムな機能セットを提供します。 ただし、即座に決断することに不安がある場合、各製品は寛大にIronソフトウェア製品の無料トライアル. これは、決定を下す前に機能を試すことができるようにします。

また、複数のツールの統合を検討している場合、素晴らしいニュースがあります:付加価値を得るためにIron Suite全体を購入するわずか2製品の価格で! これにより、コストパフォーマンスが最大限にされるだけでなく、ASP.NET Core SignalRアプリケーションを革新するための包括的なツールキットが提供されます。

< 以前
C# 真偽値(開発者のための仕組み)
次へ >
C# SQLite (開発者向けの仕組み)