.NET ヘルプ

streamjsonrpc c# (開発者のための仕組み)

公開済み 2024年8月13日
共有:

イントロダクション

JSON-RPCプロトコルを使用する、ストリームJsonRpcC#は、さまざまなトランスポート・レベルにわたってクライアントとサーバー間の効果的な通信を可能にする。 このライブラリーの助けを借りて、リモート・プロシージャ・コールをより簡単に実装することができ、開発者は、プログラムがローカルと同じように離れたサーバー上のメソッドを呼び出すことができる信頼性の高い分散システムを作ることができる。 を通じて転送されたデータに基づいて、ダイナミックにPDFを作成することができます。JSON-RPCリクエストのStreamJsonRpcは、PDF生成と操作のための完全な.NET FrameworkであるIronPDFと一緒に使用することで、アプリケーションの機能を向上させます。 カスタマイズされたレポートや請求書、あるいはオンデマンドでPDFを生成する必要のあるドキュメント中心のアプリケーションの作成プロセスを合理化したい開発者にとって、このインターフェースは非常に便利だ。

IronPDFはHTML、ASPX、生データから高品質のPDF出版物への変換をサポートすることにより、開発者にコンテンツの整理と配信における柔軟性と効率性を提供します。 StreamJsonRpcとIronPDFは連携し、C#開発者が複雑なPDFとリモートプロシージャーコールを簡単に組み合わせた、レスポンシブでスケーラブルなアプリケーションを構築できるようにします。

StreamJsonRpcとは何ですか?

ストリームJsonRpcは、リモートプロシージャコールを容易にするために設計されたクロスプラットフォームライブラリである。(遠隔プロシージャコール (RPC))軽量で効率的なワイヤ・プロトコルを使用している。 TCP/IP、名前付きパイプ、HTTPなど、さまざまな通信チャネルをサポートする基本的なトランスポート・メカニズムを利用しています。ライブラリは、リクエストとレスポンスの処理に.NETイベントを活用し、非同期通信のための堅牢なメカニズムを提供します。 開発者は、StreamJsonRpc APIを使用して、RPCリクエストを処理するメソッド実装をアタッチし、カスタム動作を定義することができます。 StreamJsonRpcは、.NETポータブル・ライブラリとして提供され、異なるプラットフォーム間の互換性を保証し、多様な.NETアプリケーションへのシームレスな統合を可能にします。

streamjsonrpc C# (開発者のための仕組み):図1

通知や進捗報告を含む双方向通信の強力なサポートは、StreamJsonRpcの主要な特徴の一つである。 HTTP、Named Pipes、TCP/IPなどさまざまなトランスポート・プロトコルをサポートすることで、プログラムにより多くの通信オプションを提供する。 JSON-RPCメッセージのシリアライズとデシリアライズはStreamJsonRpcによって処理され、多くのプラットフォームとJSONをサポートするコンピュータ言語での互換性が保証されます。

StreamJsonRpcはパフォーマンスと拡張性を念頭に設計されました。 既存のC#プログラムと互換性があり、クライアント・サーバー・アプリケーション、マイクロサービス・アーキテクチャ、分散システムなど、信頼性が高く効率的な通信が重要なアプリケーションの構築に使用できる。 C#プロジェクトにリモート・プロシージャ・コールを組み込む場合、開発者はその信頼性と使いやすさからリモート・プロシージャ・コールを選択する傾向がある。

StreamJsonRpcの特徴

C#のStreamJsonRpcは、JSON-RPCプロトコルベースのクライアント-サーバーアプリケーション通信を容易にし、改善することを目的とした包括的な機能コレクションを提供しています。

リモートプロシージャコール(RPC)

StreamJsonRpcは、リモート操作をローカル関数呼び出しのようにみなすことで、クライアントがリモートプロシージャコール経由でサーバー上のメソッドを呼び出すことを可能にします。 ネットワーク通信の複雑さを隠すことで、この抽象化は分散アプリケーションの作成を容易にする。

双方向通信

ライブラリーは双方向のクライアント・サーバー通信をサポートしている。 リアルタイムのコミュニケーションとアップデートは、クライアントがサーバーにリクエストを送信し、サーバーが通知や結果を返信する機能によって可能になる。

トランスポート層不可知論

StreamJsonRpcはトランスポートレイヤーに依存しないため、HTTP、Named Pipes、TCP/IPといった様々なトランスポートプロトコル上で機能する。この適応性により、開発者はアプリケーションのニーズやネットワーク設定に応じて、最適なトランスポート方式を選択することができます。

シリアライズとデシリアライズ

JSON-RPCメッセージのシリアライズとデシリアライズを管理し、さまざまなプラットフォームやJSON対応コンピュータ言語間でのスムーズな通信を保証します。

進捗報告

StreamJsonRpcは、長時間実行されるアクティビティに対して、進捗報告技術をサポートしている。 この機能は、サーバーが現在のプロセスのステータスをクライアントに更新できるようにすることで、ユーザーエクスペリエンスと透明性を向上させる。

エラーハンドリング

リモート・メソッドの呼び出し中に発生する例外や問題を処理するために、ライブラリには広範なエラー処理機能がある。 これにより、分散システムの回復力と信頼性が保証される。

延長ポイント

StreamJsonRpcは、その機能を変更したり、既存のアプリケーション・アーキテクチャに組み込んだりするために、開発者が拡張することができる。 汎用性が高いため、さまざまな統合ニーズやアプリケーションのシナリオに合わせて調整することができる。

パフォーマンス最適化

効果的なカスタム・メッセージ処理とトランスポート・レイヤー管理により、StreamJsonRpcはクライアント・サーバー間通信のスループットを最大化すると同時に、低オーバーヘッドを保証します。

非同期サポート

非同期オペレーションを使用することで、アプリケーションの応答性とスケーラビリティを向上させることができる。 非同期通信パターンを完全にサポートしている。

相互運用性

JSON-RPC標準への準拠を通じて、StreamJsonRpcは、C#アプリケーションとJSONをサポートする他の言語で構築されたサービスとの相互運用性を促進し、多様なコンテキストでのスムーズな統合を容易にします。

これらの主な機能に加えて、JSON-RPC仕様には、コンパクトなバイナリー・シリアライゼーションやダイナミック・クライアント・プロキシなどの機能が含まれています。

StreamJsonRpc C#num の作成と設定;

C#アプリケーションでStreamJsonRpcを作成・設定するには、クライアントとサーバーをセットアップする必要がある。 各パーツの詳しい使い方は以下の通り:

プロジェクトの設定

まず、.NETプロジェクトが準備できていることを確認してください。 Visual Studioまたは.NET CLIで新規作成できます。

dotnet new console -n StreamjsonrpcExample
cd StreamjsonrpcExample
dotnet new console -n StreamjsonrpcExample
cd StreamjsonrpcExample
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

StreamJsonRpcパッケージをインストールする

JSON-RPC通信を実装するには、NuGetからStreamJsonRpcパッケージをインストールします。 必要なライブラリーが含まれている。

dotnet add package StreamJsonRpc
dotnet add package StreamJsonRpc
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

JSON-RPCサーバーの実装

JSON-RPCのサーバーとなるクラスを作成する。 簡単な例を挙げよう:

using Microsoft.AspNetCore.Hosting;
using StreamJsonRpc;
using System;
using System.Threading.Tasks;
public class MyService
{
    public Task<int> AddAsync(int a, int b)
    {
        return Task.FromResult(a + b);
    }
    public Task<string> GreetAsync(string name)
    {
        return Task.FromResult($"Hello, {name}!");
    }
}
class Program
{
    static void Main(string[] args)
    {
        var service = new MyService();
    //initializes a new instance
        var jsonRpc = new JsonRpc(new ServerWebSocketJsonRpcMessageHandler("ws://localhost:8080"));
        jsonRpc.AddLocalRpcTarget(service);
        jsonRpc.StartListening();
        Console.WriteLine("JsonRpc server listening on ws://localhost:8080");
        Console.WriteLine("Press any key to stop the server...");
        Console.ReadKey();
        jsonRpc.Dispose();
    }
}
using Microsoft.AspNetCore.Hosting;
using StreamJsonRpc;
using System;
using System.Threading.Tasks;
public class MyService
{
    public Task<int> AddAsync(int a, int b)
    {
        return Task.FromResult(a + b);
    }
    public Task<string> GreetAsync(string name)
    {
        return Task.FromResult($"Hello, {name}!");
    }
}
class Program
{
    static void Main(string[] args)
    {
        var service = new MyService();
    //initializes a new instance
        var jsonRpc = new JsonRpc(new ServerWebSocketJsonRpcMessageHandler("ws://localhost:8080"));
        jsonRpc.AddLocalRpcTarget(service);
        jsonRpc.StartListening();
        Console.WriteLine("JsonRpc server listening on ws://localhost:8080");
        Console.WriteLine("Press any key to stop the server...");
        Console.ReadKey();
        jsonRpc.Dispose();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

MyServiceクラス:AddAsyncやGreetAsyncなど、クライアントがリモートで呼び出せるメソッドを指定します。

streamjsonrpc C# (開発者のための仕組み):図2

これにより、新しい JsonRpc インスタンスが開始され、MyService が初期化され、ws://localhost:8080 で待ち受けるように WebSocket メッセージ ハンドラが構成されます。サーバーは MyService を新しいローカル RPC ターゲットとして公開し、JSON-RPC クエリが到着するのを待ち始めます。キーを押してリッスンを停止し、リソースを破棄します。

クライアント設定

JSON-RPCのクライアントとして機能するクラスを作成する。 簡単な例を挙げよう:

using StreamJsonRpc;
using System;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        var proxy = new JsonRpc(new ClientWebSocketJsonRpcMessageHandler("ws://localhost:8080"));
    // client proxy
        await proxy.StartListeningAsync();
        var resultAdd = await proxy.InvokeAsync<int>("AddAsync", 10, 20);
        Console.WriteLine($"AddAsync result: {resultAdd}");
        var resultGreet = await proxy.InvokeAsync<string>("GreetAsync", "John");
        Console.WriteLine($"GreetAsync result: {resultGreet}");
        proxy.Dispose();
    }
}
using StreamJsonRpc;
using System;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        var proxy = new JsonRpc(new ClientWebSocketJsonRpcMessageHandler("ws://localhost:8080"));
    // client proxy
        await proxy.StartListeningAsync();
        var resultAdd = await proxy.InvokeAsync<int>("AddAsync", 10, 20);
        Console.WriteLine($"AddAsync result: {resultAdd}");
        var resultGreet = await proxy.InvokeAsync<string>("GreetAsync", "John");
        Console.WriteLine($"GreetAsync result: {resultGreet}");
        proxy.Dispose();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

この例では、ws://localhost:8080 への接続を確立し、WebSocket メッセージ・ハンドラを持つ JsonRpc インスタンスを開始します。 そして、サーバー上で定義されているAddAsyncメソッドとGreetAsyncメソッドを有効にする。(マイサービス)JSON-RPCサーバーとの接続を確立する。 最後に、RPCコールが終了した後、サーバーがリターンした結果を示し、リソースを解放する。

streamjsonrpc C# (開発者のための仕組み):図3

はじめに

IronPDFとStreamJsonRpcを統合し、JSON-RPCクエリで交換されたデータを使用することで、C#アプリケーションでPDFページを動的に生成することができます。 これはIronPDFとStreamJsonRpcの基本的な設定方法です:

IronPDFとは何ですか?

IronPDFは、C#プログラムでPDF文書の作成、読み取り、編集に使用できます。 このツールを使えば、開発者はHTML、CSS、JavaScriptの情報を、印刷に適した高品質のPDFに簡単に変換できます。 重要なタスクには、ヘッダーとフッターの追加、PDFの分割とマージ、文書の透かし、HTMLからPDFへの変換などがあります。 IronPDFは.NET Frameworkと.NET Coreの両方をサポートしているので、様々なアプリケーションに役立ちます。

PDFは使いやすく、コンテンツも豊富なため、開発者は簡単に製品に組み込むことができる。 IronPDFは複雑なレイアウトやフォーマットを簡単に扱うことができるため、出力されるPDFは元のHTMLテキストとほぼ一致します。

streamjsonrpc C#(開発者のための仕組み):図4

IronPDFの機能

HTMLからのPDF生成

JavaScript、HTML、CSSをPDFに変換。 IronPDFはメディアクエリとレスポンシブデザインをサポートしています。 HTMLとCSSを使ってPDF文書、レポート、請求書を動的に装飾する便利なツールです。

**PDF編集

既存のPDFにテキスト、写真、その他のコンテンツを追加することができます。 PDFファイルからテキストや画像を取り出します。 開発者は、多数のPDFを1つのファイルにまとめたり、PDFファイルを複数の別々の用紙に分割したりすることができます。 透かし、注釈、ヘッダー、フッターを含む。

**PDF変換

IronPDFを使ってWord、Excel、画像ファイルなど様々なファイル形式をPDFに変換することができます。 また、PDFから画像への変換も可能です。(PNG、JPEGなど。).

**性能と信頼性

高い性能と信頼性は、産業環境において望まれる設計品質である。 IronPDFは大きな文書セットを簡単に管理します。

IronPDF をインストール

.NETプロジェクトでPDFを扱うために必要なツールを得るには、IronPDFパッケージをインストールしてください。

dotnet add package IronPdf
dotnet add package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronPdf
VB   C#

IronPDFとStreamJsonRpc

サービスクラスの作成

サービスクラスPdfService.csに、受け取ったデータからPDFを作成するメソッドを用意します。 例えば:

using IronPdf;
using System.IO;
using System.Threading.Tasks;
public class PdfService
{
    public async Task<byte[]> GeneratePdfAsync(string htmlContent)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        return await pdf.BinaryDataAsync();
    }
}
using IronPdf;
using System.IO;
using System.Threading.Tasks;
public class PdfService
{
    public async Task<byte[]> GeneratePdfAsync(string htmlContent)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        return await pdf.BinaryDataAsync();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

StreamJsonRpcサーバーの設定

StreamJsonRpcのサーバー上のインターフェイスとしてProgram.csを使用し、ストリームJSON-RPC上でGeneratePdfAsyncメソッドを提供します:

using StreamJsonRpc;
using System;
using System.Net.WebSockets;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        var service = new PdfService();
        var jsonRpc = new JsonRpc(new WebSocketRpcServerMessageHandler(new Uri("ws://localhost:8080")));
        jsonRpc.AddLocalRpcTarget(service);
        jsonRpc.StartListening();
        Console.WriteLine("JsonRpc server listening on ws://localhost:8080");
        Console.WriteLine("Press any key to stop the server...");
        Console.ReadKey();
        await jsonRpc.StopListeningAsync();
        jsonRpc.Dispose();
    }
}
using StreamJsonRpc;
using System;
using System.Net.WebSockets;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        var service = new PdfService();
        var jsonRpc = new JsonRpc(new WebSocketRpcServerMessageHandler(new Uri("ws://localhost:8080")));
        jsonRpc.AddLocalRpcTarget(service);
        jsonRpc.StartListening();
        Console.WriteLine("JsonRpc server listening on ws://localhost:8080");
        Console.WriteLine("Press any key to stop the server...");
        Console.ReadKey();
        await jsonRpc.StopListeningAsync();
        jsonRpc.Dispose();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

streamjsonrpc C#(開発者のための仕組み):図5

IronPDFクライアントの作成

サーバーに接続し、PDFの作成を要求するには、StreamJsonRpcクライアントを実装します。(ClientProgram.cs):

using StreamJsonRpc;
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading.Tasks;
class ClientProgram
{
    static async Task Main(string[] args)
    {
        var proxy = new JsonRpc(new WebSocketRpcClientMessageHandler(new Uri("ws://localhost:8080")));
        await proxy.StartListeningAsync();
        // Example HTML content
        string htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Invoke GeneratePdfAsync method on the server
        var pdfBytes = await proxy.InvokeAsync<byte[]>("GeneratePdfAsync", htmlContent);
        // Save the PDF to a file
        File.WriteAllBytes("GeneratedPdf.pdf", pdfBytes);
        Console.WriteLine("PDF generated: GeneratedPdf.pdf");
        proxy.Dispose();
    }
}
using StreamJsonRpc;
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading.Tasks;
class ClientProgram
{
    static async Task Main(string[] args)
    {
        var proxy = new JsonRpc(new WebSocketRpcClientMessageHandler(new Uri("ws://localhost:8080")));
        await proxy.StartListeningAsync();
        // Example HTML content
        string htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Invoke GeneratePdfAsync method on the server
        var pdfBytes = await proxy.InvokeAsync<byte[]>("GeneratePdfAsync", htmlContent);
        // Save the PDF to a file
        File.WriteAllBytes("GeneratedPdf.pdf", pdfBytes);
        Console.WriteLine("PDF generated: GeneratedPdf.pdf");
        proxy.Dispose();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

PdfService.csクラスはStreamJsonRpcサーバー実装の基本部分であり、C#アプリケーションがIronPDFを使ってPDFドキュメントを簡単に生成できるようにする。 IronPDFのRenderHtmlAsPdfを利用することで、このサービスクラスはHTML素材をPDF形式に変換するメソッドを含んでいます。 HTMLコンテンツは、非同期に指定されたGeneratePdfAsyncメソッドを介して入力として受け入れられる。(非同期タスク GeneratePdfAsync(文字列 htmlContent)).

このメソッドは変換を実行するためにHtmlToPdfのインスタンスを作成し、RenderHtmlAsPdfでPDFドキュメントを生成します。(htmlContent). そして、作成されたPDFのバイナリデータは、メソッド(pdf.BinaryDataAsync())を返す。[]配列である。

streamjsonrpc C#(開発者のための仕組み):図6

この方法は、迅速で応答性の高いPDF生成を保証するため、文書を迅速に作成する必要があるアプリケーションに適しています。 PDF生成ロジックはPdfService.csに含まれているため、開発者はこの機能をStreamJsonRpc上で簡単に統合し、公開することができます。 これによって、サーバサイドの設計のモジュール性と明快さを保ちながら、遠隔地にあるクライアントがPDF生成ジョブをスムーズに呼び出すことができます。

streamjsonrpc C# (開発者のための仕組み):図7

結論

要約すると、開発者は、リモートプロシージャコールをサポートする信頼性の高い効果的な.NETアプリを作成することができます。(遠隔プロシージャコール (RPC))StreamJsonRpcとIronPDFを組み合わせることで、強力なPDF作成機能を利用することができます。 リモートプロシージャコール用の軽量プロトコルであるJSON-RPCを使用することで、StreamJsonRpcはクライアントとサーバーコンポーネント間のスムーズな通信を可能にします。 開発者はこれをIronPDFと組み合わせて使用することで、これらのリモートコールの結果に依存する動的なデータ駆動型PDFを生成することができる。

報告書や請求書など、入手可能な最新のデータを表現しなければならない文書を作成する場合、リアルタイムでデータを検索してPDF出力できるこの統合は非常に便利です。 これらの技術を統合することで、開発プロセスが最適化され、パフォーマンスが向上し、複雑なビジネスニーズを効果的に満たすアプリケーションの能力が強化される。

IronPDFとIronSoftware開発ツール開発者は、より多くのウェブアプリケーションと機能をより迅速に作成することができ、そのすべてが749ドルからという価格で提供されます。これは、そのコアコンセプトと非常に柔軟なIron Softwareのツールボックスを融合させることで実現しています。

プロジェクトに関連するすべてのライセンスオプションが明確に説明されていれば、開発者は最適なモデルを選択しやすくなります。 上記のような利点があるため、開発者はさまざまな問題に対する解決策を、タイムリーかつ協調的、効率的に作成しやすくなる。

< 以前
FireSharp C# (開発者のための仕組み)
次へ >
グレープバイン .NET (開発者のための仕組み)