跳至頁尾內容
.NET 幫助

streamjsonrpc c#(開發者使用方法)

使用 JSON-RPC 通訊協定,C# 中的 StreamJsonRpc 可讓用戶端與伺服器之間跨越各種傳輸層級進行有效的通訊。 在這個函式庫的幫助下,遠端程序呼叫可以更容易地實作,讓開發人員可以建立可靠的分散式系統,程式可以在遠端伺服器上呼叫方法,就像在本地一樣。 StreamJsonRpc 允許基於透過 JSON-RPC 請求傳輸的資料動態建立 PDF,當與 IronPDF(一個用於 PDF 生成和操作的完整 .NET Framework)一起使用時,StreamJsonRpc 可改善應用程式功能。 對於希望簡化建立客製化報表、發票或任何以文件為中心、需要依需求產生 PDF 的應用程式的開發人員而言,這個介面相當有幫助。

IronPdf 支援將 HTML、ASPX 和原始資料轉換為高品質的 PDF 出版物,讓開發人員在組織和傳送內容時更具彈性和效率。 StreamJsonRpc 與 IronPDF 攜手合作,讓 C# 開發人員能夠建立反應迅速、可擴充的應用程式,輕鬆將複雜的 PDF 與遠端程序呼叫結合。

什麼是 StreamJsonRpc?

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

streamjsonrpc C# (How It Works For Developers):圖 1

StreamJsonRpc 的主要特點之一是強大的雙向通訊支援,包括通知和進度報告。 透過支援各種傳輸通訊協定,包括 HTTP、Named Pipes 和 TCP/IP,讓程式有更多通訊選擇。 JSON-RPC 訊息序列化和反序列化由 StreamJsonRpc 處理,保證在許多平台和支援 JSON 的電腦語言上的相容性。

StreamJsonRpc 在設計時已將效能與可擴充性納入考量。 它與現有的 C# 程式相容,可用於建構客戶端伺服器應用程式、微服務架構、分散式系統,以及其他對可靠且有效率的通訊至關重要的應用程式。 將遠端程序呼叫整合至 C# 專案時,開發人員傾向選擇 C#,因為它的可靠性和易用性。

StreamJsonRpc 的特點

C# 的 StreamJsonRpc 提供了全面的功能集合,其目的是促進和改善基於 JSON-RPC 通訊協定的客戶端伺服器應用程式通訊。

遠端程序呼叫 (RPC)

StreamJsonRpc 將遠端操作視為本機函式呼叫,因此用戶端可以透過遠端程序呼叫來呼叫伺服器上的方法。 透過掩飾複雜的網路通訊,這種抽象化的方式讓分散式應用程式的建立變得更容易。

雙向溝通

函式庫支援雙向的客戶端與伺服器通訊。 即時通訊和更新是透過客戶端向伺服器提交要求的能力來實現的,而伺服器反過來又可以回覆通知或結果。

傳輸層不可知性

由於 StreamJsonRpc 與傳輸層無關,因此可以在各種傳輸通訊協定上運作,包括 HTTP、Named Pipes 和 TCP/IP。由於這種適應性,開發人員可以根據應用程式的需求和網路設定,選擇最佳的傳輸方式。

序列化和反序列化

它可以管理 JSON-RPC 訊息序列化和反序列化,保證在各種平台和支援 JSON 的電腦語言間進行順暢的通訊。

進度報告

StreamJsonRpc 支援長時間執行活動的進度報告技術。 此功能可讓伺服器向用戶端更新目前程序的狀態,從而改善使用者體驗與透明度。

錯誤處理

為了處理調用遠端方法時產生的異常和問題,函式庫具有廣泛的錯誤處理功能。 這樣才能保證分散式系統的彈性和可靠性。

延伸點

StreamJsonRpc 可以由開發人員擴充,以改變其功能或將其納入現有的應用程式架構中。 由於其多用途性,因此可針對各種整合需求和應用情境量身打造。

效能最佳化

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

異步支援

透過使用異步操作,可讓應用程式達到更佳的回應能力和擴充性。 它完全支援異步通訊模式。

互操作性

StreamJsonRpc 符合 JSON-RPC 標準,可促進 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
SHELL

安裝 StreamJsonRpc 套件

要實現 JSON-RPC 通訊,請從 NuGet 安裝 StreamJsonRpc 套件。 它包含必要的程式庫。

dotnet add package StreamJsonRpc
dotnet add package StreamJsonRpc
SHELL

實作 JSON-RPC 伺服器

製作一個可作為 JSON-RPC 伺服器的類別。 請觀察這個簡單的例子:

using Microsoft.AspNetCore.Hosting;
using StreamJsonRpc;
using System;
using System.Threading.Tasks;

public class MyService
{
    // Asynchronous method to add two integers
    public Task<int> AddAsync(int a, int b)
    {
        return Task.FromResult(a + b);
    }

    // Asynchronous method to greet a user
    public Task<string> GreetAsync(string name)
    {
        return Task.FromResult($"Hello, {name}!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Initialize the service offering RPC methods
        var service = new MyService();

        // Create a StreamJsonRpc server listening on websockets
        var jsonRpc = new JsonRpc(new ServerWebSocketJsonRpcMessageHandler("ws://localhost:8080"));

        // Add service as RPC target
        jsonRpc.AddLocalRpcTarget(service);

        // Start listening for incoming JSON-RPC requests
        jsonRpc.StartListening();

        Console.WriteLine("JsonRpc server listening on ws://localhost:8080");
        Console.WriteLine("Press any key to stop the server...");

        // Wait for user input to stop the server
        Console.ReadKey();

        // Dispose resources when done
        jsonRpc.Dispose();
    }
}
using Microsoft.AspNetCore.Hosting;
using StreamJsonRpc;
using System;
using System.Threading.Tasks;

public class MyService
{
    // Asynchronous method to add two integers
    public Task<int> AddAsync(int a, int b)
    {
        return Task.FromResult(a + b);
    }

    // Asynchronous method to greet a user
    public Task<string> GreetAsync(string name)
    {
        return Task.FromResult($"Hello, {name}!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Initialize the service offering RPC methods
        var service = new MyService();

        // Create a StreamJsonRpc server listening on websockets
        var jsonRpc = new JsonRpc(new ServerWebSocketJsonRpcMessageHandler("ws://localhost:8080"));

        // Add service as RPC target
        jsonRpc.AddLocalRpcTarget(service);

        // Start listening for incoming JSON-RPC requests
        jsonRpc.StartListening();

        Console.WriteLine("JsonRpc server listening on ws://localhost:8080");
        Console.WriteLine("Press any key to stop the server...");

        // Wait for user input to stop the server
        Console.ReadKey();

        // Dispose resources when done
        jsonRpc.Dispose();
    }
}
$vbLabelText   $csharpLabel

MyService 類別:指定用戶端可以遠端呼叫的方法,例如 AddAsyncGreetAsync

streamjsonrpc C# (How It Works For Developers):圖 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)
    {
        // Create a JSON-RPC client connected to the WebSocket server endpoint
        var proxy = new JsonRpc(new ClientWebSocketJsonRpcMessageHandler("ws://localhost:8080"));

        // Start listening for incoming messages from the server
        await proxy.StartListeningAsync();

        // Invoke the AddAsync method on the server
        var resultAdd = await proxy.InvokeAsync<int>("AddAsync", 10, 20);
        Console.WriteLine($"AddAsync result: {resultAdd}");

        // Invoke the GreetAsync method on the server
        var resultGreet = await proxy.InvokeAsync<string>("GreetAsync", "John");
        Console.WriteLine($"GreetAsync result: {resultGreet}");

        // Dispose the proxy when done
        proxy.Dispose();
    }
}
using StreamJsonRpc;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Create a JSON-RPC client connected to the WebSocket server endpoint
        var proxy = new JsonRpc(new ClientWebSocketJsonRpcMessageHandler("ws://localhost:8080"));

        // Start listening for incoming messages from the server
        await proxy.StartListeningAsync();

        // Invoke the AddAsync method on the server
        var resultAdd = await proxy.InvokeAsync<int>("AddAsync", 10, 20);
        Console.WriteLine($"AddAsync result: {resultAdd}");

        // Invoke the GreetAsync method on the server
        var resultGreet = await proxy.InvokeAsync<string>("GreetAsync", "John");
        Console.WriteLine($"GreetAsync result: {resultGreet}");

        // Dispose the proxy when done
        proxy.Dispose();
    }
}
$vbLabelText   $csharpLabel

本範例建立與 ws://localhost:8080 的連線,以啟動具有 WebSocket 訊息處理程式的 JsonRpc 實例。 然後,它會透過與 JSON-RPC 伺服器建立連線,啟用在伺服器 (MyService) 上定義的 AddAsyncGreetAsync 方法。 最後,它會顯示伺服器已返回的結果,並在 RPC 呼叫完成後釋放資源。

streamjsonrpc C# (How It Works For Developers):圖 3

開始

透過將 StreamJsonRpc 與 IronPDF 整合,並使用透過 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# (How It Works For Developers):圖 4

IronPDF 的特點

從 HTML 產生 PDF

將 JavaScript、HTML 和 CSS 轉換為 PDF。 IronPDF 支援媒體查詢和回應式設計這兩種當代網路標準。 它是使用 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
SHELL

StreamJsonRpc 與 IronPDF

建立服務類別

在服務類 PdfService.cs 中提供方法,從接收到的資料中建立 PDF。 舉例說明:

using IronPdf;
using System.IO;
using System.Threading.Tasks;

public class PdfService
{
    // Asynchronously generates a PDF from HTML content
    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
{
    // Asynchronously generates a PDF from HTML content
    public async Task<byte[]> GeneratePdfAsync(string htmlContent)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        return await pdf.BinaryDataAsync();
    }
}
$vbLabelText   $csharpLabel

設定 StreamJsonRpc 伺服器

使用 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)
    {
        // Initialize PdfService which generates PDFs
        var service = new PdfService();

        // Create JSON-RPC server listening on websockets
        var jsonRpc = new JsonRpc(new WebSocketRpcServerMessageHandler(new Uri("ws://localhost:8080")));

        // Add the PdfService as an RPC target
        jsonRpc.AddLocalRpcTarget(service);

        // Start listening for incoming JSON-RPC requests
        jsonRpc.StartListening();

        Console.WriteLine("JsonRpc server listening on ws://localhost:8080");
        Console.WriteLine("Press any key to stop the server...");

        // Wait for user input to stop the server
        Console.ReadKey();

        // Gracefully stop listening and dispose resources when done
        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)
    {
        // Initialize PdfService which generates PDFs
        var service = new PdfService();

        // Create JSON-RPC server listening on websockets
        var jsonRpc = new JsonRpc(new WebSocketRpcServerMessageHandler(new Uri("ws://localhost:8080")));

        // Add the PdfService as an RPC target
        jsonRpc.AddLocalRpcTarget(service);

        // Start listening for incoming JSON-RPC requests
        jsonRpc.StartListening();

        Console.WriteLine("JsonRpc server listening on ws://localhost:8080");
        Console.WriteLine("Press any key to stop the server...");

        // Wait for user input to stop the server
        Console.ReadKey();

        // Gracefully stop listening and dispose resources when done
        await jsonRpc.StopListeningAsync();
        jsonRpc.Dispose();
    }
}
$vbLabelText   $csharpLabel

streamjsonrpc C# (How It Works For Developers):圖 5

創建 IronPDF 用戶端

若要連線至伺服器並要求建立 PDF,請實作 StreamJsonRpc 客戶端(ClientProgram.cs):

using StreamJsonRpc;
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading.Tasks;
using System.IO;

class ClientProgram
{
    static async Task Main(string[] args)
    {
        // Create JSON-RPC client connected to WebSocket server endpoint
        var proxy = new JsonRpc(new WebSocketRpcClientMessageHandler(new Uri("ws://localhost:8080")));

        // Start listening for incoming messages from the server
        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 resulted PDF to a file
        File.WriteAllBytes("GeneratedPdf.pdf", pdfBytes);

        Console.WriteLine("PDF generated: GeneratedPdf.pdf");

        // Dispose the proxy when done
        proxy.Dispose();
    }
}
using StreamJsonRpc;
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading.Tasks;
using System.IO;

class ClientProgram
{
    static async Task Main(string[] args)
    {
        // Create JSON-RPC client connected to WebSocket server endpoint
        var proxy = new JsonRpc(new WebSocketRpcClientMessageHandler(new Uri("ws://localhost:8080")));

        // Start listening for incoming messages from the server
        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 resulted PDF to a file
        File.WriteAllBytes("GeneratedPdf.pdf", pdfBytes);

        Console.WriteLine("PDF generated: GeneratedPdf.pdf");

        // Dispose the proxy when done
        proxy.Dispose();
    }
}
$vbLabelText   $csharpLabel

PdfService.cs 類是 StreamJsonRpc 伺服器實作的基本部分,可讓 C# 應用程式更輕鬆地使用 IronPDF 產生 PDF 文件。 透過利用 IronPDF 的 RenderHtmlAsPdf ,此服務類別包含處理 HTML 資料轉換為 PDF 格式的方法。 HTML 內容透過 GeneratePdfAsync 方法接受輸入,該方法被指定為異步 (async Task<byte[]> GeneratePdfAsync(string htmlContent))。

此方法會建立一個 ChromePdfRenderer 的實例來執行轉換,產生一個 PDF 文件 RenderHtmlAsPdf(htmlContent) 。 建立的 PDF 的二進位資料會透過方法 (pdf.BinaryDataAsync()) 以異步方式擷取,隨後會以 byte[] 陣列的形式傳回資料。

streamjsonrpc C# (How It Works For Developers):圖 6

此方法可保證快速且反應迅速地產生 PDF,因此適用於需要快速建立文件的應用程式。 PDF 生成邏輯包含在 PdfService.cs 中,讓開發人員可以簡單地透過 StreamJsonRpc 整合並揭露此功能。 這可讓遠方的客戶順利調用 PDF 生成工作,同時保留其伺服器端設計的模組化和清晰度。

streamjsonrpc C# (How It Works For Developers):圖 7

結論

總而言之,開發人員可以透過結合 StreamJsonRpc 與 IronPDF,建立可靠且有效的 .NET 應用程式,支援遠端程序呼叫 (RPC),並利用強大的 PDF 製作能力。 StreamJsonRpc 使用 JSON-RPC(遠端程序呼叫的輕量級通訊協定),可讓用戶端與伺服器元件之間進行順暢的通訊。 開發人員可將其與 IronPDF 配合使用,以產生依賴於這些遠端呼叫結果的動態、資料驅動 PDF。

在準備報告、發票或任何其他必須代表最新資料的文件時,此整合非常有用,因為它允許即時資料擷取和 PDF 輸出。 這些技術的整合可優化開發流程、提升效能,並加強應用程式有效滿足複雜業務需求的能力。

有了 IronPdf 和 Iron Software 開發工具,開發人員可以更快地創建更多的 Web 應用程式和功能,而起步價格僅為 $799 。 它通過將其核心概念與靈活多變的 Iron Software 工具箱相融合來實現這一目標。

若能清楚說明與專案相關的所有授權選項,開發人員將更容易選擇最佳模式。 上述優點可讓開發人員更容易及時、協調且有效率地為一系列問題建立解決方案。

常見問題解答

如何在C#中將HTML轉換為PDF?

您可以使用 PDF 庫的RenderHtmlAsPdf方法將 HTML 字串轉換為 PDF。此外,也可以使用RenderHtmlFileAsPdf方法將 HTML 檔案轉換為 PDF。

StreamJsonRpc是什麼?它在C#中是如何運作的?

StreamJsonRpc 是一個 C# 函式庫,它使用 JSON-RPC 協定簡化遠端過程呼叫。它支援客戶端和伺服器之間透過各種傳輸協定(例如 TCP/IP、命名管道和 HTTP)進行雙向通訊。

StreamJsonRpc 如何增強 PDF 生成功能?

StreamJsonRpc 透過允許遠端客戶端透過 JSON-RPC 呼叫 PDF 建立任務來增強 PDF 生成功能,它使用 PDF 庫將 HTML 內容動態轉換為 PDF。

StreamJsonRpc 對分散式系統有何益處?

StreamJsonRpc 對分散式系統有益,因為它能夠實現無縫的遠端方法調用,支援非同步操作,並提供強大的錯誤處理,從而提高系統的可靠性和效率。

在 C# 專案中設定 StreamJsonRpc 需要哪些步驟?

要在 C# 專案中設定 StreamJsonRpc,您需要建立一個 .NET 項目,透過 NuGet 安裝 StreamJsonRpc 套件,並實作一個 JSON-RPC 伺服器和一個客戶端,並配置為透過選定的傳輸協定進行通訊。

StreamJsonRpc 能否用於在 .NET 應用程式中產生報告或發票?

是的,透過將 StreamJsonRpc 與 PDF 生成庫集成,您可以回應 JSON-RPC 請求動態建立報告或發票的 PDF,使其成為以文件為中心的應用程式的理想選擇。

StreamJsonRpc 支援哪些傳輸協定?

StreamJsonRpc 與傳輸層無關,支援多種傳輸協議,包括 HTTP、命名管道和 TCP/IP,允許開發人員根據其應用程式的特定需求進行選擇。

PDF庫如何幫助C#進行文件操作?

C# 中的 PDF 庫簡化了文件操作,讓您可以建立、讀取和編輯 PDF 文件。它支援將 HTML、CSS 和 JavaScript 轉換為 PDF,還可以新增頁首、頁腳,以及執行分割和合併等操作。

在 StreamJsonRpc 中使用非同步操作有哪些好處?

StreamJsonRpc 中的非同步操作透過使用 .NET 事件來有效地處理分散式系統中的傳入請求和回應,從而提高應用程式的回應速度和可擴充性。

StreamJsonRpc 如何確保可靠的錯誤處理?

StreamJsonRpc 透過提供全面的功能來管理遠端方法呼叫期間的異常和問題,從而確保可靠的錯誤處理,進而維護分散式系統的彈性。

Jacob Mellor,Team Iron 首席技術官
首席技術長

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。