.NET幫助 OpenTelemetry .NET(對於開發者的運行原理) Curtis Chau 更新日期:6月 22, 2025 Download IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article Introduction 創建動態的、數據驅動的、豐富的 PDF 文件是現代軟件開發的許多行業中的典型需求。 企業極大依賴於快速生成高質量的 PDF 的能力,無論是創建帳單、報告還是文檔。 然而,隨著應用程序變得越來越複雜和大規模,跟踪和理解 PDF 生成過程的有效性成為保持應用程序健康和確保用戶滿意的重要因素。 本文旨在討論開發者如何利用 IronPDF 和 OpenTelemetry.NET 的功能改進 PDF 生成操作,並提供有關應用程序性能的重要見解。 我們將探索這兩項技術的特徵和優勢,並展示它們如何協調合作以優化 .NET 應用程序中的 PDF 創建和監控。 什麼是 OpenTelemetry? OpenTelemetry 是專門為雲原生應用程序創建的供應商中立的可觀測性框架。OpenTelemetry 自動化儀表提供了一個單一的 API,用於收集遙測信息,包括日誌、追蹤和度量。 通過使用這些豐富的數據,開發者可以有效地調試問題,識別性能瓶頸,並全面了解程序行為。 OpenTelemetry 支持自動和手動儀表,以便全面靈活地收集遙測數據。 OpenTelemetry 的主要組件 API:OpenTelemetry 規範了一組標準化的 API 用於儀表化應用程序和生成遙測數據。這簡化了儀表化過程,並保證了不同比較語言的一致性。 SDKs:OpenTelemetry 提供 SDK 應用於特定語言的應用程序儀表化。開發者可以使用 .NET SDK 輕鬆將 OpenTelemetry 的功能集成到他們的 .NET 項目中。 - Exporters:這些部件負責將收集的遙測數據傳輸到後端系統,以便存儲和檢查。 OpenTelemetry 支持許多流行的後端系統的導出器,例如 Zipkin(追蹤)、Prometheus(度量)和 Jaeger(追蹤)。 - 自動儀表化:這種方法簡化了對 .NET Core 應用程序的程式。 OpenTelemetry 庫可以自動捕獲網絡應用程序或服務中常見操作的數據。這消除了手動代碼修改,簡化了集成過程。 - 手動儀表化:對於數據收集的細粒度控制,OpenTelemetry 提供了強大的 API 用於手動儀表化。 這種方法允許您捕獲與您特有的應用程序邏輯相關的特定度量和追蹤。 這在 .NET Framework 應用程序或自動儀表化不涵蓋您特定需求的情景中特別有用。 ### 在 .NET 中使用 OpenTelemetry 的好處 在您的 .NET 應用程序中集成 OpenTelemetry 提供了多重優勢: 供應商中立性:OpenTelemetry 輕鬆集成了多種後端系統,使您的應用程序未來更具靈活性。 切換後端系統時,您的儀表化代碼無需更改。 - 標準化方法:統一的 API 使得儀表化您應用程序的不同區域更容易。 開發者可以使用相同的 API 來收集日誌、追蹤和度量,這導致代碼更易讀和維護。 - 深入的性能分析:OpenTelemetry 提供了豐富的數據(度量,追蹤和日誌)進行全面的性能分析。 通過這一全面的視圖,您可以定位優化區域並確定問題的根本原因。 - 更好的故障排除:開發者可以根據 OpenTelemetry 捕獲的豐富追蹤數據更容易地檢測和解決問題,通過應用程序中的請求路徑。 提高的可擴展性:應用程式的複雜性不會影響 OpenTelemetry 的可擴展性。 新的功能或服務可以在不需要大量代碼修改的情況下輕鬆地被儀表化。 ## 創建和配置 OpenTelemetry 在 ASP.NET 應用程序中配置 OpenTelemetry OpenTelemetry 需要在您的應用程式中配置; 對於 ASP.NET Core 應用程式,這通常在 Startup.cs 文件的 ConfigureServices 方法中完成。這是 Jaeger 導出器配置的示例: 使用實際的服務名稱替換 "YourServiceName"。根據您的 Jaeger 配置選項調整 Jaeger 代理主機和端口。 using OpenTelemetry.Trace; using OpenTelemetry.Exporter.Jaeger; using OpenTelemetry.Resources; public void ConfigureServices(IServiceCollection services) { // Configure OpenTelemetry services.AddOpenTelemetry().WithTracing(builder => { // Configure Jaeger exporter. The 'serviceName' can be read from environment variables builder .SetResourceBuilder( ResourceBuilder.CreateDefault() .AddService("YourServiceName")) .AddAspNetCoreInstrumentation() .AddJaegerExporter(opt => { opt.AgentHost = "localhost"; // Jaeger agent host opt.AgentPort = 14250; // Jaeger agent port }); }); // Other service configurations... } using OpenTelemetry.Trace; using OpenTelemetry.Exporter.Jaeger; using OpenTelemetry.Resources; public void ConfigureServices(IServiceCollection services) { // Configure OpenTelemetry services.AddOpenTelemetry().WithTracing(builder => { // Configure Jaeger exporter. The 'serviceName' can be read from environment variables builder .SetResourceBuilder( ResourceBuilder.CreateDefault() .AddService("YourServiceName")) .AddAspNetCoreInstrumentation() .AddJaegerExporter(opt => { opt.AgentHost = "localhost"; // Jaeger agent host opt.AgentPort = 14250; // Jaeger agent port }); }); // Other service configurations... } Imports OpenTelemetry.Trace Imports OpenTelemetry.Exporter.Jaeger Imports OpenTelemetry.Resources Public Sub ConfigureServices(ByVal services As IServiceCollection) ' Configure OpenTelemetry services.AddOpenTelemetry().WithTracing(Sub(builder) ' Configure Jaeger exporter. The 'serviceName' can be read from environment variables builder.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("YourServiceName")).AddAspNetCoreInstrumentation().AddJaegerExporter(Sub(opt) opt.AgentHost = "localhost" ' Jaeger agent host opt.AgentPort = 14250 ' Jaeger agent port End Sub) End Sub) ' Other service configurations... End Sub $vbLabelText $csharpLabel 添加 OpenTelemetry 中間件 您必須在 ASP.NET Core 應用程序中包含 OpenTelemetry 中間件來自動儀表化進入的 HTTP 請求。 在 Startup.cs 文件的 Configure 方法中添加中間件: ### 開始追蹤 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Add Prometheus metrics middleware if using Prometheus app.UseHttpMetrics(); // Other middleware configurations... } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Add Prometheus metrics middleware if using Prometheus app.UseHttpMetrics(); // Other middleware configurations... } Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment) ' Add Prometheus metrics middleware if using Prometheus app.UseHttpMetrics() ' Other middleware configurations... End Sub $vbLabelText $csharpLabel 設置完成後,OpenTelemetry 將開始追蹤進入的 HTTP 請求並自動向配置的 Jaeger 後端發送遙測信息。 驗證和監控 您可以在 Jaeger 後端檢查追蹤,以確認 OpenTelemetry 是否正常運行。 打開 Jaeger 用戶界面(通常可通過 http://localhost:16686 訪問 Jaeger UI),並查找與您服務相關的追蹤。 ### 選擇後端系統(可選) OpenTelemetry 不是基礎儀表化的必備,但它與其他後端操作系統集成,存儲和處理遙測數據。 流行的選項由官方支持的操作系統組成: - Jaeger(追蹤) Prometheus(度量) Zipkin(追蹤) 流行的 .NET 包 IronPDF 允許您在 .NET 程序中創建、編輯和呈現 PDF 文件。 入門指南 什麼是 IronPDF? 工作於 PDF 的功能眾多,包括將 HTML 頁面轉換為 PDF,從 PDF 提取文本和圖像,向現有的 PDF 文件添加文本、圖像和形狀,並從 HTML 內容、照片或原始數據生成 PDF。 IronPDF 的兩個主要優點是其易用性和簡單性。 借助直觀的 API 和詳細的文檔,開發者可以輕鬆開始在其 .NET 項目中創建 PDF。 IronPDF 的效率和速度是幫助開發者快速高效創建高質量 PDF 文檔的其他特性。 IronPDF 的一些優點: 從 HTML、圖片和原始數據生成 PDF 從 PDF 文件中提取文本和圖片 將水印、頁眉和頁尾合併到 PDF 文件中 PDF 文件受加密和密碼保護 簽署和完成表格的能力 OpenTelemetry 的不同組件提供多個 NuGet 包。 安裝 NuGet 套件 根據您的需求,您可以安裝所需的程序包。 要向可見性後端(如 Jaeger、Zipkin 或 Prometheus)發送遙測數據,至少需要 OpenTelemetry 包、應用程序框架的儀表化包(如 ASP.NET Core)和導出程序包。 此外,請確保在您的項目中安裝了 IronPDF 包。 要安裝它,請使用 NuGet 包管理器控制台: ## 在 IronPDF 中使用 OpenTelemetry Install-Package OpenTelemetry Install-Package OpenTelemetry.Instrumentation.AspNetCore Install-Package OpenTelemetry.Exporter.Jaeger Install-Package IronPdf 打開您的 ASP.NET Core 應用程序的 Startup.cs 文件以訪問 ConfigureServices 方法。 要設置 IronPDF,包含以下代碼。 該代碼通過將 IronPDF 的 HtmlToPdf 服務配置為單例,確保應用程式只創建和使用 HtmlToPdf 實例一次。 using IronPdf; public void ConfigureServices(IServiceCollection services) { // Configure IronPDF services.AddSingleton<HtmlToPdf>(); // Other service configurations... } using IronPdf; public void ConfigureServices(IServiceCollection services) { // Configure IronPDF services.AddSingleton<HtmlToPdf>(); // Other service configurations... } Imports IronPdf Public Sub ConfigureServices(ByVal services As IServiceCollection) ' Configure IronPDF services.AddSingleton(Of HtmlToPdf)() ' Other service configurations... End Sub $vbLabelText $csharpLabel 通過將 OpenTelemetry.NET 與 IronPDF 集成,您可以在 .NET 應用程序中追蹤和觀察 PDF 生成過程。 讓我們深入研究代碼示例,逐步分析每一步: - 我們將 HtmlToPdf、ILogger 和 TracerProvider 注入到 DemoController 中。 using Microsoft.AspNetCore.Mvc; using OpenTelemetry.Trace; using System.Diagnostics; using Microsoft.Extensions.Logging; using IronPdf; namespace DemoWebApplication.Controllers { [ApiController] [Route("[controller]")] public class DemoController : ControllerBase { private readonly HtmlToPdf _htmlToPdf; private readonly ILogger<DemoController> _logger; private readonly Tracer _tracer; public DemoController(ILogger<DemoController> logger, HtmlToPdf htmlToPdf, TracerProvider tracerProvider) { _tracer = tracerProvider.GetTracer("Demo"); _htmlToPdf = htmlToPdf; _logger = logger; } [HttpGet] public FileContentResult Generate() { // Define the PDF file name string fileName = "Sample.pdf"; // Generate PDF from HTML content _logger.LogInformation("Generating PDF..."); var pdfBytes = GeneratePdf("Hello, IronPDF!"); // Return the PDF as a file result return new FileContentResult(pdfBytes, "application/pdf") { FileDownloadName = fileName }; } private byte[] GeneratePdf(string htmlContent) { // Start a tracing activity for PDF generation using (var activity = _tracer.StartActiveSpan("PDF Generation")) { var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent); // Log PDF generation _logger.LogInformation("PDF generated successfully."); return pdfDocument.BinaryData; } } } } using Microsoft.AspNetCore.Mvc; using OpenTelemetry.Trace; using System.Diagnostics; using Microsoft.Extensions.Logging; using IronPdf; namespace DemoWebApplication.Controllers { [ApiController] [Route("[controller]")] public class DemoController : ControllerBase { private readonly HtmlToPdf _htmlToPdf; private readonly ILogger<DemoController> _logger; private readonly Tracer _tracer; public DemoController(ILogger<DemoController> logger, HtmlToPdf htmlToPdf, TracerProvider tracerProvider) { _tracer = tracerProvider.GetTracer("Demo"); _htmlToPdf = htmlToPdf; _logger = logger; } [HttpGet] public FileContentResult Generate() { // Define the PDF file name string fileName = "Sample.pdf"; // Generate PDF from HTML content _logger.LogInformation("Generating PDF..."); var pdfBytes = GeneratePdf("Hello, IronPDF!"); // Return the PDF as a file result return new FileContentResult(pdfBytes, "application/pdf") { FileDownloadName = fileName }; } private byte[] GeneratePdf(string htmlContent) { // Start a tracing activity for PDF generation using (var activity = _tracer.StartActiveSpan("PDF Generation")) { var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent); // Log PDF generation _logger.LogInformation("PDF generated successfully."); return pdfDocument.BinaryData; } } } } Imports Microsoft.AspNetCore.Mvc Imports OpenTelemetry.Trace Imports System.Diagnostics Imports Microsoft.Extensions.Logging Imports IronPdf Namespace DemoWebApplication.Controllers <ApiController> <Route("[controller]")> Public Class DemoController Inherits ControllerBase Private ReadOnly _htmlToPdf As HtmlToPdf Private ReadOnly _logger As ILogger(Of DemoController) Private ReadOnly _tracer As Tracer Public Sub New(ByVal logger As ILogger(Of DemoController), ByVal htmlToPdf As HtmlToPdf, ByVal tracerProvider As TracerProvider) _tracer = tracerProvider.GetTracer("Demo") _htmlToPdf = htmlToPdf _logger = logger End Sub <HttpGet> Public Function Generate() As FileContentResult ' Define the PDF file name Dim fileName As String = "Sample.pdf" ' Generate PDF from HTML content _logger.LogInformation("Generating PDF...") Dim pdfBytes = GeneratePdf("Hello, IronPDF!") ' Return the PDF as a file result Return New FileContentResult(pdfBytes, "application/pdf") With {.FileDownloadName = fileName} End Function Private Function GeneratePdf(ByVal htmlContent As String) As Byte() ' Start a tracing activity for PDF generation Using activity = _tracer.StartActiveSpan("PDF Generation") Dim pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent) ' Log PDF generation _logger.LogInformation("PDF generated successfully.") Return pdfDocument.BinaryData End Using End Function End Class End Namespace $vbLabelText $csharpLabel 在此範例中: Generate 方法啟動文件下載,返回動態創建的 PDF,內容為“Hello, IronPDF!”。 GeneratePdf 方法使用 HtmlToPdf.RenderHtmlAsPdf 來渲染 PDF,並輸出 PDF 的二進制數據。 代碼使用 OpenTelemetry 跟蹤 PDF 生成過程並記錄追蹤數據。 從上面代碼生成的 PDF 輸出: !OpenTelemetry .NET(開發者如何使用):圖 1 - 使用 IronPDF 和 OpenTelemetry 的代碼生成的輸出 下方是 Jaeger UI 中生成的追蹤屏幕: !OpenTelemetry .NET(開發者如何使用):圖 2 - Jaeger UI 生成的輸出追蹤 OpenTelemetry 是 .NET 應用程序性能優化和健康監控的改變者。 結論 它通過提供一種供應商中立和標準化的方法來收集、分析和導出遙測數據(度量,追蹤和日誌),為開發者提供了深入了解應用程序內部運作的途徑。 通過將 OpenTelemetry.NET 與 IronPDF 集成,開發者可以改善創建 PDF 的工作流程並獲得有關其應用程序性能的見解。 利用 OpenTelemetry.NET 的實現進行手動儀表化 PDF 生產過程,開發者可以跟蹤執行路徑,監控性能指標,並確定需要優化的區域。 此外,通過將遙測數據導出到可觀測性平台,實現集中式的監控指標收集和分析,開發者能夠保持其應用程式的健康狀況並提供無縫的用戶體驗。 OpenTelemetry.NET 實現及 IronPDF 的集成可以增強開發者創建 PDF 的工作流程,保證 .NET 應用程序的可擴展性、性能和可靠性。 這些技術的集成幫助開發者滿足現代軟件開發的需求並取得優異的成果,無論是創建帳單、報告還是文檔。 作為套餐購買時,IronPDF 價格合理且包含終身許可。 此套餐僅需一次性支付 $799 費用,適用於多個系統,非常超值。 為許可持有者提供全天候的在線工程支持。 請訪問 Iron Software 官方網站 了解費用的更多詳細信息。 探索 Iron Software 的產品 以了解他們提供的解決方案。 Explore Iron Software's products to learn more about the solutions they offer. 常見問題解答 什麼是 OpenTelemetry,它如何增強 .NET 應用程式? OpenTelemetry 是一個中立於供應商的可觀察性框架,專為雲原生應用程式設計。它透過提供標準化的 API 和 SDK 來增強 .NET 應用程式,以捕獲日誌、跟蹤和指標,這有助於診斷問題、識別性能瓶頸,並全面了解應用程式行為。 如何將 OpenTelemetry 與 ASP.NET Core 集成以進行自動儀器化? 可以通過在 `Startup.cs` 文件中配置服務和中介軟件將 OpenTelemetry 與 ASP.NET Core 集成,以啟用自動儀器化。這包括設置跟蹤和導出器,如 Jaeger,以傳輸遙測數據和監控應用程式性能。 IronPDF 在 .NET 應用程式的 PDF 生成中扮演什麼角色? IronPDF 是一個 .NET 庫,簡化了在 .NET 應用程式中創建和操作 PDF。它支持將 HTML 轉換為 PDF、從 PDF 中提取文本,以及添加水印和加密等功能,使其成為處理 PDF 文檔的多功能工具。 開發人員如何使用 OpenTelemetry 跟蹤和分析 PDF 生成過程? 開發人員可以通過將 OpenTelemetry.NET 與 IronPDF 集成來跟蹤和分析 PDF 生成過程。這種集成允許收集和分析遙測數據,提供 PDF 生成工作流的見解,並幫助優化應用程式性能。 在 .NET 應用程式中使用 OpenTelemetry 與 IronPDF 有哪些好處? 在 .NET 應用程式中使用 OpenTelemetry 與 IronPDF 提供了多項優勢,包括改善應用程式擴展性、增強性能分析和優化 PDF 生成工作流。這一組合允許開發人員有效地監控和改善其應用程式的健康狀況。 開發人員如何在 ASP.NET Core 應用程式中使用 IronPDF 生成 PDF? 在 ASP.NET Core 應用程式中,開發人員可以將 `HtmlToPdf` 類注入控制器中,將 HTML 內容渲染為 PDF,然後以文件結果的形式返回生成的 PDF 以供下載。 OpenTelemetry 支持哪些後端系統的導出器? OpenTelemetry 支持多種後端系統的導出器,包括用於跟蹤的 Jaeger、用於指標的 Prometheus 和用於跟蹤的 Zipkin。這些導出器能夠存儲和分析跨不同系統的遙測數據。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 相關文章 更新日期 9月 4, 2025 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新日期 9月 4, 2025 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 更新日期 8月 5, 2025 C#開關模式匹配(對開發者來說是如何工作的) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 Dotnetopenauth .NET Core(對於開發者的運行原理)Autofac .NET 6(對於開發者的...