.NET 幫助

streamjsonrpc C#(開發人員如何運作)

發佈 2024年8月13日
分享:

簡介

使用 JSON-RPC 協議 StreamJsonRpc 在C#中,跨不同的傳輸層級實現客戶端和伺服器之間的有效通信。有了這個函式庫的幫助,可以更容易地實現遠端程序呼叫,允許開發人員建立可靠的分散式系統,使程式可以像本地一樣呼叫遠端伺服器上的方法。通過允許基於傳輸數據進行動態PDF創建 JSON-RPC 請求,StreamJsonRpc 在與 IronPDF 搭配使用時提高了應用程式性能,IronPDF 是一個完整的 .NET 框架,用於 PDF 生成和操作。對於希望簡化自定義報告、發票或任何需要按需生成 PDF 的文件中心應用程式開發人員來說,此介面非常有幫助。

IronPDF 通過支持將 HTML、ASPX 和原始數據轉換為高質量的 PDF 出版物,為開發人員在組織和交付內容方面提供了靈活性和效率。StreamJsonRpc 和 IronPDF 一起工作,使 C# 開發人員能夠構建響應迅速且可擴展的應用程式,輕鬆將複雜的 PDF 與遠程過程調用結合起來。

什麼是 StreamJsonRpc?

StreamJsonRpc 是一個設計用於促進遠端程序呼叫的跨平台程式庫 (遠端程序呼叫) 使用輕量且高效的通信協定。它利用支援多種通信通道的底層傳輸機制,如TCP/IP、命名管道和HTTP。該庫利用 .NET 事件來處理傳入的請求和回應,提供一個強大的機制來進行非同步通信。開發人員可以附加方法實現來處理RPC請求,並使用StreamJsonRpc API定義自訂行為。StreamJsonRpc作為 .NET 便攜庫提供,確保跨不同平台的相容性,並能無縫整合到各種 .NET 應用程式中。

streamjsonrpc c#(開發人員運作方式):圖 1

StreamJsonRpc 的主要特點之一是對雙向通信(包括通知和進度報告)的強大支持。通過支持包括 HTTP、命名管道和 TCP/IP 在內的各種傳輸協議,它為程式提供了更多的通信選項。StreamJsonRpc 處理 JSON-RPC 訊息的序列化和反序列化,確保其在多個平台和支援 JSON 的計算機語言之間的相容性。

StreamJsonRpc 旨在考慮性能和擴展性。它與現有的 C# 程式相容,可用於構建客戶端-伺服器應用程式、微服務架構、分佈式系統以及其他需要可靠和高效通信的應用程式。由於其可靠性和易用性,開發人員在將遠端過程調用整合到 C# 項目中時通常會選擇它。

StreamJsonRpc 的特色

C# 的 StreamJsonRpc 提供了一個全面的功能集合,旨在促進和改進基於 JSON-RPC 協議的客戶端-伺服器應用程式通訊。

遠端程序呼叫 (遠端程序呼叫)

透過將遠端操作視為本地函數調用,StreamJsonRpc使客戶端可以通過遠程過程調用呼叫服務器上的方法。這個抽象隱藏了網絡通信的複雜性,使分佈式應用程序的創建變得更加容易。

雙向通訊

該庫支持雙向客戶端-伺服器通訊。通過客戶端提交請求給伺服器,伺服器再回應通知或結果的能力,使即時通訊和更新成為可能。

傳輸層無關性

因為它是傳輸層無關的,StreamJsonRpc 可以在多種傳輸協議上運行,包括 HTTP、命名管道和 TCP/IP。由於這種適應性,開發者可以根據其應用程序需求和網絡環境選擇最佳的傳輸方式。

序列化與反序列化

它管理JSON-RPC訊息的序列化和反序列化,保證在各種平台和支持JSON的計算機語言之間順暢交流。

進度報告

StreamJsonRpc 支援進度報告技術,用於長時間運行的活動。此功能通過允許伺服器向客戶端更新當前過程的狀態,提升了用戶體驗和透明度。

錯誤處理

為了處理在調用遠程方法期間出現的異常和問題,該庫具有廣泛的錯誤處理功能。這保證了分佈式系統的彈性和可靠性。

擴展點

StreamJsonRpc 可以由開發人員擴展,以改變其功能或將其包含在已經存在的應用程序架構中。由於其多用途,它可以針對各種整合需求和應用場景進行定制。

性能優化

透過有效的自訂訊息處理和傳輸層管理,StreamJsonRpc 在客戶端與伺服器通信中最大化吞吐量,同時保證低開銷。

異步支援

透過使用異步操作,應用程式能夠實現更佳的響應能力和可擴展性。它完全支持異步通信模式。

可互操作性

通過符合JSON-RPC標準,StreamJsonRpc促進了在各種背景下的順利整合,通過促進C#應用程序與其他支援JSON的語言構建的服務之間的互操作性。

除了這些主要功能,還有一些超越JSON-RPC規範的附加功能,包括對緊湊的二進制序列化和動態客戶端代理的支援。

創建和配置 StreamJsonRpc C

必須設置客戶端和伺服器,以在 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,並配置一個 WebSocket 訊息處理器以在 ws://localhost:8080 監聽。伺服器將 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 方法。 (MyService) 通過建立與 JSON-RPC 伺服器的連接。最後,它顯示伺服器返回的結果並在 RPC 呼叫完成後釋放資源。

streamjsonrpc c#(對開發人員的運作方式):圖3

入門指南

在 C# 應用程式中透過整合 StreamJsonRpc 與 IronPDF,並使用透過 JSON-RPC 查詢交換的數據,可以動態生成 PDF 頁面。以下是如何設置 IronPDF 與 StreamJsonRpc 的基本操作步驟:

IronPDF 是什麼?

功能豐富的 .NET 庫 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 支持媒體查詢和響應式設計,這是現代Web標準。這是一個使用 HTML 和 CSS 動態美化 PDF 文件、報告和帳單的有用工具。

PDF 編輯

可以在已存在的 PDF 中添加文字、照片和其他內容。從 PDF 文件中提取文本和圖像。開發人員可以將多個 PDF 合併為一個文件,或將 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#

StreamJsonRpc 與 IronPDF

建立服務類別

在服務類別 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 伺服器

在伺服器上使用 Program.cs 作為界面,通過 StreamJsonRpc 提供 GeneratePdfAsync 方法來進行流式 JSON-RPC:

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 方法接收作為輸入。 (async Task 生成PdfAsync(字符串 htmlContent))此方法會創建一個 HtmlToPdf 的實例來進行轉換,生成一個帶有 RenderHtmlAsPdf 的 PDF 文件。(html內容). 然後,由方法異步檢索創建的 PDF 二進位數據 (pdf.BinaryDataAsync()),隨後將資料作為位元組返回[] 陣列。

streamjsonrpc c#(開發人員如何運作):圖6

此方法保證了快速和響應式的 PDF 生成,使其適用於需要快速創建文件的應用程式。PDF 生成邏輯包含在 PdfService.cs 中,這使得開發人員能夠輕鬆整合並通過 StreamJsonRpc 暴露此功能。這允許遠端客戶端順利調用 PDF 生成任務,同時保持伺服器端設計的模組性和清晰性。

streamjsonrpc c#(開發人員如何運作):圖7

結論

總之,開發者可以創建支持遠程過程調用的可靠且高效的 .NET 應用程式 (遠端程序呼叫) 並且通過將 StreamJsonRpc 與 IronPDF 結合起來來利用強大的 PDF 生成能力。使用 JSON-RPC,一種輕量級的遠程過程調用協議,StreamJsonRpc 使客戶端和服務器組件之間的通信順暢。開發人員可以將其與 IronPDF 結合使用,以生成依賴於這些遠程調用結果的動態、數據驅動的 PDF。

當準備報告、發票或任何其他必須代表最新數據的文件時,這種集成非常有用,因為它允許實時數據檢索和 PDF 輸出。這些技術的集成優化了開發過程,提高了性能,並加強了應用程序有效滿足複雜業務需求的能力。

使用 IronPDF 和 IronSoftware開發人員可以以起始價 $749 更快地創建更多網頁應用程式和功能。 它通過將其核心概念與極其靈活的 Iron Software 工具箱融合來實現這一點。

如果所有與專案相關的許可選項都明確描述,開發人員將更容易選擇最佳模型。上述好處使開發人員能夠以及時、協調和高效的方式針對各種問題創建解決方案。

< 上一頁
FireSharp C# (對開發者而言的運作方式)
下一個 >
Grapevine .NET (開發人員的工作原理)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >