AYUDA .NET

streamjsonrpc c# (Cómo funciona para desarrolladores)

Actualizado agosto 13, 2024
Compartir:

Introducción

Utilizando el protocolo JSON-RPC, StreamJsonRpc en C# permite una comunicación eficaz entre clientes y servidores a través de varios niveles de transporte. Con la ayuda de esta biblioteca, las llamadas a procedimientos remotos pueden implementarse más fácilmente, lo que permite a los desarrolladores crear sistemas distribuidos fiables en los que los programas pueden llamar a métodos de servidores distantes igual que lo harían localmente. Al permitir la creación dinámica de PDF basada en los datos transferidos a través de JSON-RPC streamJsonRpc mejora las capacidades de la aplicación cuando se utiliza con IronPDF, un completo .NET Framework para la generación y manipulación de PDF. Para los desarrolladores que buscan agilizar el proceso de creación de informes personalizados, facturas o cualquier aplicación centrada en documentos que necesite generar PDF bajo demanda, esta interfaz es bastante útil.

IronPDF ofrece a los desarrolladores flexibilidad y eficacia en la organización y entrega de contenidos, ya que admite la conversión de HTML, ASPX y datos sin procesar en publicaciones PDF de alta calidad. StreamJsonRpc e IronPDF trabajan juntos para permitir a los desarrolladores de C# crear aplicaciones escalables y con capacidad de respuesta que combinan fácilmente PDF complejos con llamadas a procedimientos remotos.

¿Qué es StreamJsonRpc?

StreamJsonRpc es una biblioteca multiplataforma diseñada para facilitar las llamadas a procedimientos remotos (EPR) utilizando un protocolo alámbrico ligero y eficiente. Utiliza un mecanismo de transporte subyacente que soporta varios canales de comunicación como TCP/IP, named pipes y HTTP. La biblioteca aprovecha los eventos .NET para gestionar las solicitudes y respuestas entrantes, proporcionando un mecanismo robusto para la comunicación asíncrona. Los desarrolladores pueden adjuntar implementaciones de métodos para gestionar solicitudes RPC y definir comportamientos personalizados utilizando la API StreamJsonRpc. StreamJsonRpc está disponible como librería .NET portátil, lo que garantiza la compatibilidad con distintas plataformas y permite una integración perfecta en diversas aplicaciones .NET.

streamjsonrpc C# (Cómo funciona para desarrolladores): Figura 1

Una de las características clave de StreamJsonRpc es su fuerte soporte para la comunicación bidireccional, incluyendo notificaciones e informes de progreso. Al admitir varios protocolos de transporte, como HTTP, Named Pipes y TCP/IP, ofrece a los programas más opciones de comunicación. StreamJsonRpc se encarga de la serialización y deserialización de los mensajes JSON-RPC, lo que garantiza la compatibilidad con numerosas plataformas y lenguajes informáticos que admiten JSON.

StreamJsonRpc se diseñó pensando en el rendimiento y la extensibilidad. Es compatible con los programas existentes en C# y puede utilizarse para construir aplicaciones cliente-servidor, arquitecturas de microservicios, sistemas distribuidos y otras aplicaciones en las que la comunicación fiable y eficiente es crucial. A la hora de integrar llamadas a procedimientos remotos en proyectos de C#, los desarrolladores tienden a elegirlo por su fiabilidad y facilidad de uso.

Características de StreamJsonRpc

StreamJsonRpc de C# proporciona una completa colección de funciones destinadas a facilitar y mejorar la comunicación entre aplicaciones cliente-servidor basadas en el protocolo JSON-RPC.

Llamadas a procedimientos remotos (EPR)

Al considerar las operaciones remotas como si fueran llamadas a funciones locales, StreamJsonRpc permite a los clientes llamar a métodos de un servidor mediante llamadas a procedimientos remotos. Al ocultar los entresijos de la comunicación en red, esta abstracción facilita la creación de aplicaciones distribuidas.

Comunicación bidireccional

La biblioteca admite la comunicación bidireccional cliente-servidor. La comunicación y las actualizaciones en tiempo real son posibles gracias a la capacidad de los clientes para enviar peticiones a los servidores, que a su vez pueden responder con notificaciones o resultados.

Agnosticismo de la capa de transporte

Debido a que es agnóstico a la capa de transporte, StreamJsonRpc puede funcionar sobre una variedad de protocolos de transporte, incluyendo HTTP, Named Pipes, y TCP/IP. Gracias a esta adaptabilidad, los desarrolladores pueden seleccionar el mejor método de transporte según las necesidades de sus aplicaciones y la configuración de la red.

Serialización y deserialización

Gestiona la serialización y deserialización de mensajes JSON-RPC, garantizando una comunicación fluida entre diversas plataformas y lenguajes informáticos compatibles con JSON.

Informes de progreso

StreamJsonRpc soporta técnicas de informe de progreso para actividades de larga duración. Esta función mejora la experiencia del usuario y la transparencia al permitir que los servidores informen a los clientes del estado de los procesos en curso.

Tratamiento de errores

Para gestionar las excepciones y los problemas que surgen durante la invocación de métodos remotos, la biblioteca cuenta con amplias funciones de gestión de errores. Esto garantiza la resistencia y fiabilidad de los sistemas dispersos.

Puntos de extensión

StreamJsonRpc puede ser extendido por los desarrolladores para alterar su funcionalidad o incluirlo con arquitecturas de aplicaciones ya existentes. Gracias a su versatilidad, puede adaptarse a una gran variedad de necesidades de integración y escenarios de aplicación.

Optimización del rendimiento

Gracias a la gestión eficaz de mensajes personalizados y a la gestión de la capa de transporte, StreamJsonRpc maximiza el rendimiento en la comunicación cliente-servidor al tiempo que garantiza una baja sobrecarga.

Soporte asíncrono

Mediante el uso de operaciones asíncronas, permite mejorar la capacidad de respuesta y la escalabilidad de las aplicaciones. Es totalmente compatible con los patrones de comunicación asíncrona.

Interoperabilidad

Gracias a su conformidad con el estándar JSON-RPC, StreamJsonRpc facilita una integración fluida en diversos contextos fomentando la interoperabilidad entre aplicaciones C# y servicios creados en otros lenguajes que admiten JSON.

Junto con estas características principales, hay algunas características adicionales más allá de la especificación JSON-RPC que incluye características tales como soporte para serialización binaria compacta y proxy de cliente dinámico.

Crear y Configurar StreamJsonRpc C#

Para crear y configurar StreamJsonRpc en una aplicación C# es necesario configurar un cliente y un servidor. A continuación figuran las instrucciones detalladas de cada pieza:

Configure su proyecto

En primer lugar, asegúrese de que su proyecto .NET está listo. Puede crear uno nuevo con Visual Studio o la CLI .NET.

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

Instalar el paquete StreamJsonRpc

Para implementar la comunicación JSON-RPC, instale el paquete StreamJsonRpc de NuGet. Contiene las bibliotecas necesarias.

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

Implementar el servidor JSON-RPC

Crea una clase que actuará como servidor para JSON-RPC. Observe este sencillo ejemplo:

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#

Clase MyService: Especifica los métodos que el cliente puede llamar remotamente, como AddAsync y GreetAsync.

streamjsonrpc C# (Cómo funciona para desarrolladores): Figura 2

Esto inicia una nueva instancia de JsonRpc, inicializa MyService, y configura un manejador de mensajes WebSocket para escuchar en ws://localhost:8080. El servidor expone MyService como un nuevo objetivo RPC local y comienza a esperar a que lleguen consultas JSON-RPC. Pulsa una tecla para dejar de escuchar y descarta los recursos.

Configuración de clientes

Crea una clase que funcione como cliente para JSON-RPC. Observe este sencillo ejemplo:

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#

Este ejemplo establece una conexión a ws://localhost:8080 para iniciar una instancia de JsonRpc con un gestor de mensajes WebSocket. A continuación, activa los métodos AddAsync y GreetAsync definidos en el servidor (MiServicio) estableciendo una conexión con el servidor JSON-RPC. Por último, muestra los resultados que ha devuelto el servidor y libera los recursos una vez finalizadas las llamadas RPC.

streamjsonrpc C# (Cómo funciona para desarrolladores): Figura 3

Primeros pasos

Las páginas PDF pueden generarse dinámicamente en aplicaciones C# integrando StreamJsonRpc con IronPDF y utilizando los datos intercambiados mediante consultas JSON-RPC. Esta es una guía básica para configurar IronPDF y StreamJsonRpc:

¿Qué es IronPDF?

La biblioteca .NET con más funciones IronPDF puede ser utilizado por programas en C# para crear, leer y editar documentos PDF. Esta herramienta facilita a los desarrolladores la conversión de información HTML, CSS y JavaScript en PDF de alta calidad listos para imprimir. Entre las tareas cruciales se encuentran la adición de encabezados y pies de página, la división y fusión de PDF, el marcado de documentos con marcas de agua y la conversión de HTML a PDF. IronPDF es útil para diversas aplicaciones porque es compatible tanto con .NET Framework como con .NET Core.

Como los PDF son fáciles de usar y ofrecen una gran cantidad de contenidos, los desarrolladores pueden integrarlos fácilmente en sus productos. Dado que IronPDF puede manejar diseños y formatos complejos con facilidad, los PDF de salida que genera casi coinciden con el texto HTML original.

streamjsonrpc C# (Cómo funciona para desarrolladores): Figura 4

Características de IronPDF

Generación de PDF a partir de HTML

Convierte JavaScript, HTML y CSS a PDF. IronPDF es compatible con media queries y responsive design, dos estándares web contemporáneos. Es una herramienta útil para decorar dinámicamente documentos PDF, informes y facturas utilizando HTML y CSS.

Edición de PDF

A los PDF preexistentes se les puede añadir texto, fotos y otros contenidos. Extraiga texto e imágenes de archivos PDF. Los desarrolladores pueden combinar numerosos PDF en un solo archivo, o dividir archivos PDF en varios documentos independientes. Incluye marcas de agua, anotaciones, encabezados y pies de página.

Conversión de PDF

IronPDF permite convertir a PDF una gran variedad de formatos de archivo, como Word, Excel y archivos de imagen. Con él, también puedes realizar conversiones de PDF a imagen (PNG, JPEG, etc.).

**Rendimiento y fiabilidad

El alto rendimiento y la fiabilidad son cualidades de diseño deseadas en los entornos industriales. IronPDF gestiona grandes conjuntos de documentos con facilidad.

Instalar IronPDF

Para obtener las herramientas que necesita para trabajar con archivos PDF en proyectos .NET, instale el paquete 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 con IronPDF

Crear una clase de servicio

Proporcione métodos en la clase de servicio PdfService.cs que crearán PDF a partir de los datos recibidos. A modo de ejemplo:

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#

Configurar servidor StreamJsonRpc

Usa Program.cs como interfaz en el servidor para StreamJsonRpc para ofrecer el método GeneratePdfAsync sobre un stream 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# (Cómo funciona para desarrolladores): Figura 5

Crear cliente IronPDF

Para conectarse al servidor y solicitar la creación de un PDF, implemente el cliente 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#

La clase PdfService.cs es una parte fundamental de la implementación de un servidor StreamJsonRpc que facilita a una aplicación C# la generación de documentos PDF utilizando IronPDF. Utilizando RenderHtmlAsPdf de IronPDF, esta clase de servicio contiene métodos para gestionar la conversión de material HTML a formato PDF. El contenido HTML se acepta como entrada a través del método GeneratePdfAsync, que se designa como asíncrono (async Task GenerarPdfAsync(cadena htmlContenido)).

Este método crea una instancia de HtmlToPdf para llevar a cabo la conversión, produciendo un documento PDF con RenderHtmlAsPdf(htmlContenido). A continuación, los datos binarios del PDF creado se recuperan de forma asíncrona mediante el método (pdf.BinaryDataAsync())que posteriormente devuelve los datos como un byte[] matriz.

streamjsonrpc C# (Cómo funciona para desarrolladores): Figura 6

Este método garantiza una generación de PDF rápida y sensible, por lo que resulta apropiado para aplicaciones que necesitan crear documentos con rapidez. La lógica de generación de PDF está contenida en PdfService.cs, lo que facilita a los desarrolladores la integración y exposición de esta funcionalidad a través de StreamJsonRpc. Esto permite a los clientes remotos invocar sin problemas los trabajos de generación de PDF conservando la modularidad y claridad de su diseño del lado del servidor.

streamjsonrpc C# (Cómo funciona para desarrolladores): Figura 7

Conclusión

En resumen, los desarrolladores pueden crear aplicaciones .NET fiables y eficaces que admitan llamadas a procedimientos remotos (EPR) y hacer uso de las potentes capacidades de producción de PDF combinando StreamJsonRpc con IronPDF. Utilizando JSON-RPC, un protocolo ligero para llamadas a procedimientos remotos, StreamJsonRpc permite una comunicación fluida entre los componentes cliente y servidor. Los desarrolladores pueden utilizarlo junto con IronPDF para generar PDF dinámicos basados en datos que dependan de los resultados de estas llamadas remotas.

A la hora de preparar informes, facturas o cualquier otro documento que deba representar los datos más recientes disponibles, esta integración resulta muy útil, ya que permite recuperar datos en tiempo real y generar archivos PDF. La integración de estas tecnologías optimiza el proceso de desarrollo, aumenta el rendimiento y refuerza la capacidad de la aplicación para satisfacer eficazmente las intrincadas necesidades empresariales.

Con IronPDF y IronSoftwarecon Iron Software, los desarrolladores pueden crear más aplicaciones web y funciones con mayor rapidez, todo ello por un precio inicial de 749 dólares. Lo consigue fusionando sus conceptos básicos con la inmensamente flexible caja de herramientas de Iron Software.

A los desarrolladores les resultará más fácil seleccionar el modelo óptimo si se describen claramente todas las opciones de licencia relevantes para el proyecto. Las ventajas mencionadas facilitan a los desarrolladores la creación de soluciones para una serie de problemas de forma oportuna, coordinada y eficaz.

< ANTERIOR
FireSharp C# (Cómo funciona para desarrolladores)
SIGUIENTE >
Grapevine .NET (Cómo funciona para los desarrolladores)

¿Listo para empezar? Versión: 2024.9 acaba de salir

Descarga gratuita de NuGet Descargas totales: 10,516,730 View Licenses >