在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
使用 JSON-RPC 协议、StreamJsonRpc在 C# 中,客户端和服务器之间可以跨越各种传输层进行有效通信。 在该库的帮助下,远程过程调用可以更容易地实现,从而使开发人员能够创建可靠的分布式系统,其中的程序可以像在本地一样调用远端服务器上的方法。 通过以下方式,可以根据传输的数据动态创建 PDFJSON-RPC要求,当与 IronPDF(用于 PDF 生成和操作的完整 .NET Framework)一起使用时,StreamJsonRpc 可提高应用程序能力。 对于希望简化创建定制报告、发票或任何需要按需生成 PDF 的以文档为中心的应用程序的流程的开发人员来说,该界面非常有用。
IronPDF 通过支持将 HTML、ASPX 和原始数据转换为高质量的 PDF 出版物,为开发人员组织和交付内容提供了灵活性和效率。 StreamJsonRpc 和 IronPDF 相互配合,使 C# 开发人员能够构建反应灵敏、可扩展的应用程序,轻松地将复杂的 PDF 与远程过程调用结合起来。
StreamJsonRpc是一个旨在促进远程过程调用的跨平台库(RPC)使用轻量级、高效的线协议。 它利用底层传输机制,支持各种通信渠道,如 TCP/IP、命名管道和 HTTP。该库利用 .NET 事件处理传入的请求和响应,为异步通信提供了强大的机制。 开发人员可以附加方法实现来处理 RPC 请求,并使用 StreamJsonRpc API 定义自定义行为。 StreamJsonRpc 可作为 .NET 可移植库使用,确保在不同平台上的兼容性,并可无缝集成到各种 .NET 应用程序中。
StreamJsonRpc 的主要特点之一是对双向通信(包括通知和进度报告)的强大支持。 通过支持包括 HTTP、Named Pipes 和 TCP/IP 在内的各种传输协议,它为程序提供了更多的通信选择。 JSON-RPC 消息的序列化和反序列化由 StreamJsonRpc 处理,保证了在许多平台和支持 JSON 的计算机语言之间的兼容性。
StreamJsonRpc 在设计时充分考虑了性能和可扩展性。 它与现有的 C# 程序兼容,可用于构建客户端-服务器应用程序、微服务架构、分布式系统以及其他对可靠和高效通信至关重要的应用程序。 在将远程过程调用集成到 C# 项目中时,开发人员倾向于选择它,因为它具有可靠性和易用性。
C# 的 StreamJsonRpc 提供了全面的功能集合,旨在促进和改进基于 JSON-RPC 协议的客户端-服务器应用程序通信。
通过将远程操作视为本地函数调用,StreamJsonRpc 使客户端能够通过远程过程调用来调用服务器上的方法。 通过掩盖错综复杂的网络通信,这种抽象方法使分布式应用程序的创建变得更加容易。
该库支持客户端与服务器的双向通信。 客户端可以向服务器提交请求,服务器则可以回复通知或结果,从而实现实时通信和更新。
由于 StreamJsonRpc 与传输层无关,因此可以在各种传输协议上运行,包括 HTTP、Named Pipes 和 TCP/IP。由于这种适应性,开发人员可以根据自己应用程序的需要和网络设置选择最佳传输方式。
它管理 JSON-RPC 消息的序列化和反序列化,保证在各种平台和支持 JSON 的计算机语言之间进行流畅的通信。
对于长期运行的活动,StreamJsonRpc 支持进度报告技术。 该功能可使服务器向客户端更新当前进程的状态,从而改善用户体验并提高透明度。
为了处理调用远程方法时出现的异常和问题,该库具有广泛的错误处理功能。 这样才能保证分散系统的弹性和可靠性。
开发人员可以对 StreamJsonRpc 进行扩展,以改变其功能或将其纳入现有的应用程序架构。 由于其通用性,可以进行定制以满足各种集成需求和应用场景。
通过有效的自定义消息处理和传输层管理,StreamJsonRpc 可最大限度地提高客户端与服务器通信的吞吐量,同时保证较低的开销。
通过使用异步操作,它可以使应用程序实现更高的响应速度和可扩展性。 它完全支持异步通信模式。
通过符合 JSON-RPC 标准,StreamJsonRpc 促进了 C# 应用程序与使用其他支持 JSON 的语言构建的服务之间的互操作性,从而促进了在不同环境下的顺利集成。
除了这些主要功能外,JSON-RPC 规范还有一些额外的功能,其中包括支持紧凑的二进制序列化和动态客户端代理等功能。
为了在 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
要实现 JSON-RPC 通信,请从 NuGet 安装 StreamJsonRpc 软件包。 它包含必要的库。
dotnet add package StreamJsonRpc
dotnet add package StreamJsonRpc
IRON VB CONVERTER ERROR developers@ironsoftware.com
制作一个作为 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
MyService 类:指定客户端可以远程调用的方法,如 AddAsync 和 GreetAsync。
这将启动一个新的 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
此示例建立了与 ws://localhost:8080 的连接,以启动一个带有 WebSocket 消息处理程序的 JsonRpc 实例。 然后启用服务器上定义的 AddAsync 和 GreetAsync 方法(我的服务)通过与 JSON-RPC 服务器建立连接。 最后,它将显示服务器返回的结果,并在 RPC 调用结束后释放资源。
通过将 StreamJsonRpc 与 IronPDF 集成,并使用通过 JSON-RPC 查询交换的数据,可以在 C# 应用程序中动态生成 PDF 页面。 这是设置 IronPDF 和 StreamJsonRpc 的基本方法:
IronPDF可用于 C# 程序创建、阅读和编辑 PDF 文档。 该工具可让开发人员轻松地将 HTML、CSS 和 JavaScript 信息转换为可打印的高质量 PDF。 关键任务包括添加页眉和页脚、分割和合并 PDF、给文档加水印以及将 HTML 转换为 PDF。 IronPDF 支持 .NET Framework 和 .NET Core,因此对各种应用都有帮助。
由于 PDF 易于使用且内容丰富,开发人员可以轻松地将其集成到自己的产品中。 由于 IronPDF 可以轻松处理复杂的布局和格式,其生成的输出 PDF 几乎与原始 HTML 文本一致。
从HTML生成PDF
将JavaScript、HTML和CSS转换为PDF。 IronPdf 支持媒体查询和响应式设计这两种当代网络标准。 它是使用 HTML 和 CSS 对 PDF 文档、报告和账单进行动态装饰的有用工具。
PDF编辑
现有的PDF可以添加文本、照片和其他内容。 从 PDF 文件中提取文本和图像。 开发人员可以将多个 PDF 文件合并为一个文件,也可以将 PDF 文件分成多个单独的文件。 包括水印、注释、页眉和页脚。
PDF 转换
使用 IronPdf 可以将 Word、Excel 和图像文件等多种文件格式转换为 PDF。 有了它,您还可以进行 PDF 到图片的转换(PNG、JPEG 等。).
性能和可靠性
高性能和可靠性是在工业环境中所期望的设计特性。 IronPDF 可轻松管理大型文档集。
要获得在 .NET 项目中处理 PDF 所需的工具,请安装 IronPDF for .NET 软件包。
dotnet add package IronPdf
dotnet add package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package 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
在服务器上使用 Program.cs 作为 StreamJsonRpc 的接口,通过 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
要连接服务器并请求创建 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
PdfService.cs 类是 StreamJsonRpc 服务器实现的基本部分,它使 C# 应用程序更容易使用 IronPDF 生成 PDF 文档。 通过利用 IronPDF 的 RenderHtmlAsPdf,该服务类包含将 HTML 资料转换为 PDF 格式的处理方法。 通过指定为异步的 GeneratePdfAsync 方法接受 HTML 内容作为输入。(异步任务 生成Pdf异步(字符串 htmlContent)).
该方法会创建一个 HtmlToPdf 实例来进行转换,并通过 RenderHtmlAsPdf 生成 PDF 文档(html内容). 然后通过以下方法异步检索创建的 PDF 的二进制数据(pdf.BinaryDataAsync()), 随后将数据以字节形式返回[]阵列。
这种方法可确保快速、灵敏地生成 PDF,因此适用于需要快速创建文档的应用程序。 PDF 生成逻辑包含在 PdfService.cs 中,这使得开发人员可以很容易地通过 StreamJsonRpc 集成和公开该功能。 这样,远方的客户就能顺利调用 PDF 生成工作,同时保留其服务器端设计的模块性和清晰度。
总之,开发人员可以创建支持远程过程调用的可靠、有效的 .NET 应用程序(RPC)并通过将 StreamJsonRpc 与 IronPDF 结合使用,利用强大的 PDF 制作能力。 StreamJsonRpc 使用 JSON-RPC(一种用于远程过程调用的轻量级协议)实现客户端和服务器组件之间的顺畅通信。 开发人员可以将其与 IronPDF 结合使用,生成依赖于这些远程调用结果的动态数据驱动 PDF。
在准备报告、发票或任何其他必须代表最新数据的文档时,这种集成非常有用,因为它允许实时数据检索和 PDF 输出。 这些技术的集成优化了开发流程,提高了性能,并增强了应用程序有效满足复杂业务需求的能力。
有了 IronPDF 和IronSoftware 开发工具通过该工具,开发人员可以更快地创建更多的网络应用程序和功能,而这一切的起步价仅为 749 美元。它通过将其核心概念与无比灵活的 Iron Software 工具箱相融合来实现这一目标。
如果能清楚地介绍与项目相关的所有许可证选项,开发人员就会更容易选择最佳模式。 上述优点使开发人员更容易及时、协调、高效地为一系列问题创建解决方案。