フッターコンテンツにスキップ
.NETヘルプ

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

現代のウェブはインタラクティブ性とリアルタイムフィードバックで成り立っています。 応答性のあるアプリケーションを構築する際には、リアルタイムのウェブ機能が必要です。ここでSignalRが活躍します。 ASP.NET Core SignalRは、あなたのアプリケーションにリアルタイムのウェブ機能を追加するのを考えているよりも簡単にするライブラリです。

このチュートリアルでは、SignalRの基本とニュアンスを学ぶ旅に出かけます。 では、始めましょう!

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

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

開発環境の設定

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

SignalRハブの構築

本質的には、SignalRはSignalRハブを中心に回ります。これはクライアントとサーバーの相互作用の中心点です。

新しい ASP.NET Core プロジェクトを作成します。 次に、新しいクラスを追加し、ChatHub という名前を付けます。 これが私たちの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);
    }
}
$vbLabelText   $csharpLabel

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

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");
        });
    }
}
$vbLabelText   $csharpLabel

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

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

次に、ハブに接続することができます。

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

この単純なクライアントサイドコードは、ハブに接続し、ブロードキャストされたメッセージをリスンします。

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

メッセージの送信

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

サーバーサイドから:

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

クライアントから:

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

高度なリアルタイム通信

ASP.NET Core SignalRは高度なリアルタイム通信機能を提供します:

1.接続のグループ化:接続されたクライアントをグループに分割し、特定のセグメントにメッセージをブロードキャストします。 2.切断の処理:クライアントの接続と切断を自動的に管理します。 3.バイナリ プロトコル: SignalR はデフォルトでテキストベースのプロトコルを使用しますが、バイナリ プロトコルもサポートしています。

Azure SignalRサービスとのSignalR

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

Azure SignalRサービスの統合:

  1. Azure SignalR SDKをインストールします。
  2. バックプレーンサポートのためにAzure Service Busを使用します。
  3. Azure SignalR を使用するように Startup クラスを調整します。
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");
        });
    }
}
$vbLabelText   $csharpLabel

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

ASP.NET Core SignalRは優れたリアルタイムウェブ機能の基盤を提供しますが、開発者はしばしば全体的な体験と機能を強化するためのツールを探します。 そこでIron Softwareのライブラリスイートが登場します。

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

IronPDF

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

IronPDFの機能について詳しく学ぶことにより、.NETアプリケーション内でPDFファイルを生成、編集、および読み取ることができます。 チームがリアルタイムでドキュメントを共同作成するシナリオでSignalRを統合することを想像してください。変更が行われると、ドキュメントが即座に更新されたすべての接続されたクライアントにプッシュされ、飛躍的にPDFに変換されます。 SignalRのリアルタイム機能とIronPDFの能力が組み合わさることで、コラボレーションツールが革新される可能性があります。

IronPDFはHTML、URL、およびフルウェブページをオリジナルのように美しいPDFに変換します。 オンラインレポート、請求書、または保存したいウェブベースの情報を保存するのに最適です。HTMLからPDF変換を希望していますか? IronPDFを今日試してください!

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");
    }
}
$vbLabelText   $csharpLabel

IronXL

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

Excelスプレッドシートの操作に関しては、IronXLの機能を探索するが最適です。 ビジネスシーンでは、スプレッドシートは重要な役割を果たします。 SignalRとIronXLを組み合わせることで、経理チームがリアルタイムで予算表に取り組み、その変化を目の当たりにすることができるようになります。 様々な部門からのデータがリアルタイムで更新され、すべての関係者に提示される、集中化されたExcelシートに流れ込むシナリオを想像してください。 リアルタイムコミュニケーションと動的スプレッドシート管理の融合は、この組み合わせで実現します。

IronOCR

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

光学文字認識(OCR)は、現代のアプリケーションで不可欠です。 IronOCRをアクションで見ることで、.NET開発者が画像やドキュメントからテキストを抽出できることがわかります。 SignalRのリアルタイム機能と組み合わせることで、画期的な存在になるでしょう。 ユーザーがテキストデータを含む画像をアップロードするプラットフォームを考えてみてください。 IronOCRが画像を処理したらすぐにユーザーにリアルタイムで通知するためにSignalRが使われ、データ抽出がインタラクティブで即座に行われます。

IronBarcode

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

バーコーディングは、在庫管理、発券システムなどにおいて不可欠です。 IronBarcodeの機能を発見することで、バーコードの作成と読み取りを簡単にします。 次に、倉庫管理システムで SignalR と統合することを考えてください。 物品がスキャンされると、在庫がリアルタイムで更新され、接続されたクライアントに在庫レベルが通知され、スムーズな物流運営が保証されます。

結論

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

ASP.NET Core SignalRとIron Suiteの強力なツールが融合することで、開発者とエンドユーザーの両方にとって向上した体験が約束されています。 リアルタイムのウェブ機能は通信だけではなく、適切なリソースであるIron Suiteと組み合わさることで、インタラクティブなアプリケーションを再定義する変革ツールになります。

Iron Suiteが提供する価値提案は注目に値します。各製品ライセンスは $799 から始まり、開発者にプレミアム機能セットを提供します。 ですが、すぐに決めることが不安な場合は、各製品がIron Softwareプロダクトの無料トライアルを寛大に提供しています。 これにより、決定前に機能を試すことができます。

そして、複数のツールを統合することを考えている場合は、素晴らしいニュースがあります:Iron Suite全体を購入することで、わずか二つの製品の値段で追加の価値が得られます! これは、コストパフォーマンスを最大限に活用するだけでなく、ASP.NET Core SignalRアプリケーションを革新するための包括的なツールキットを手に入れることも保証されています。

よくある質問

SignalRとは何で、どのようにウェブアプリケーションを強化するのですか?

SignalRはASP.NET Coreのライブラリで、リアルタイムのウェブ機能をアプリケーションに追加し、サーバーとクライアントの瞬時の通信を可能にします。これにより、リアルタイム更新やフィードバックを許すことで、インタラクティブで応答性の高いウェブアプリケーションが実現します。

C#アプリケーションでSignalRをセットアップするにはどうすればよいですか?

C#アプリケーションでSignalRをセットアップするためには、ASP.NET Core SDKをインストールし、開発にはVisual Studioを使用します。StartupクラスにSignalRサービスを追加し、ハブをエンドポイントにマッピングすることで、サーバークライアント間の通信を確立します。

リアルタイム通信におけるSignalR Hubの役割は何ですか?

SignalR Hubは、サーバーと接続されたクライアント間の通信を促進する中心的なコンポーネントとして機能します。リアルタイムでのメッセージ送受信を可能にし、SignalRの機能の主要な部分となります。

SignalRでリアルタイムメッセージングをどのように処理できますか?

SignalRでのリアルタイムメッセージングは、サーバーサイドのハブとクライアントサイドのスクリプトを作成することで管理できます。クライアントサイド for JavaScriptはハブへの接続を確立し、connection.onconnection.sendのようなメソッドでメッセージを送受信します。

SignalRの高度な機能にはどのようなものがありますか?

SignalRは、通信をセグメント化するための接続のグループ化、クライアントの切断を優雅に処理する機能、リアルタイム通信能力を強化するためのバイナリプロトコルのサポートなどの高度な機能を提供します。

Azure SignalR Serviceはアプリケーションのスケーリングにどのように役立ちますか?

Azure SignalR Serviceは、多数の同時接続をサポートすることでアプリケーションをスケーリングすることを可能にします。Azure SignalR SDKをインストールし、スタートアップクラスを構成して、スケーラブルなリアルタイム通信のためにAzureのインフラを活用します。

SignalRアプリケーションでPDFを生成するためにIronPDFをどのように使用できますか?

SignalRアプリケーションでPDFドキュメントを生成するためにIronPDFを使用できます。IronPDFのRenderHtmlAsPdfメソッドを用いてHTMLコンテンツをPDFに変換し、SignalRのリアルタイム更新とシームレスに統合できます。

IronXLがSignalRアプリケーションにもたらす利点は何ですか?

IronXLはSignalRアプリケーションをExcelファイルの操作により強化します。アプリケーション内でExcelドキュメントの作成、読み込み、修正を可能にし、リアルタイム機能と共にさらなるデータ処理能力を提供します。

IronOCRをSignalRアプリケーションに統合してテキスト認識を行うことはできますか?

はい、IronOCRはSignalRアプリケーションに統合して光学式文字認識(OCR)を実行することができます。これにより、リアルタイムで画像からテキストを抽出し、動的なテキスト認識能力を持つアプリケーションを強化します。

SignalRアプリケーションでIronBarcodeを使用する可能性は何ですか?

IronBarcodeはSignalRアプリケーションでバーコードの生成とリアルタイムの読み取りに使用できます。この機能は、動的なバーコード処理とリアルタイムデータのハンドリングを要求するアプリケーションにとって有益です。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me