跳至頁尾內容
.NET 幫助

Rebus .NET Core 範例(開發者使用方法)

在錯綜複雜的 .NET 開發世界中,管理服務之間的非同步通訊是建立強大且可擴展應用程式的關鍵面向。 Rebus .NET 應運而生,它是一個功能強大的函式庫,可以簡化 .NET 生態系統中基於訊息的通訊和路由。 讓我們來探討 Rebus 如何利用提供的關鍵字,幫助開發者充分發揮服務總線和排隊服務呼叫機制的潛力。

開發人員可以將 Rebus .NET 與IronPDF 的 PDF 產生功能結合,建構複雜的分散式系統,使其能夠在訊息傳遞操作中產生 PDF 文件。 例如,一個用 Rebus 建構的系統可能會收到產生 PDF 文件的請求,用 Rebus 處理程序處理該請求,然後使用 IronPDF 產生文件並回覆該請求。

開發者可以使用 Rebus 和 IronPDF 創建功能豐富、可擴展且可靠的分散式應用程序,這些應用程式可以輕鬆整合到訊息工作流程中以產生 PDF。 該集成為開發各種應用程式(如報表工具和文件管理系統)提供了堅實的基礎。

什麼是謎語?

分散式系統的核心在於高效率的訊息路由和處理。 Rebus 概述和資源,憑藉其直覺的 API 和全面的功能,充當分散式應用程式不同元件之間的橋樑。 無論是協調微服務之間的通訊還是管理非同步任務,Rebus 都提供了必要的工具來簡化訊息處理和傳遞。

服務總線和訊息路由

使用 Rebus,根據預定義標準路由訊息變得輕而易舉。 開發人員可以利用 Rebus 的路由功能將訊息導向到特定的處理程序或佇列,從而確保每個訊息都能有效率地到達其預期目的地。 透過使用 Rebus 的擴展方法定義路由規則,開發人員可以根據其應用程式架構的獨特要求自訂訊息流。

多功能訊息傳遞模式

Rebus .NET 相容於多種訊息傳遞模式,例如訊息路由、命令/查詢、請求/回應和發布/訂閱。憑藉這種多功能性,開發人員可以選擇最適合其特定用例的設計。

非同步訊息傳遞

Rebus.NET 使分散式系統的元件能夠相互通信,而無需等待回應或相互阻塞。 這種非同步通訊方式增強了系統的反應速度和可擴展性。

分散式架構

Rebus.NET 旨在用於開發分散式系統,其中使用多個進程或網路作為元件之間通訊的手段。 它提供了處理訊息序列化和反序列化、維護訊息傳遞可靠性以及管理訊息佇列的功能。

可擴展性

Rebus.NET 具有很強的可擴充性,程式設計師可以根據自身需求修改和擴充其功能。 它提供與多個中間件平台、序列化格式和訊息代理程式的整合點。

錯誤處理和重試技術

Rebus.NET 有內建的重試和錯誤處理技術,即使網路出現短暫中斷或問題,也能確保訊息得到一致的處理。 開發人員可以設定重試策略和錯誤處理技術,以滿足應用程式的彈性需求。

訊息加密與安全

Rebus.NET 透過提供訊息加密和安全功能,使開發人員能夠保護在分散的元件、託管環境和混合雲端應用程式之間傳輸的敏感資料。 它透過輕鬆整合加密庫和協議,確保混合雲端應用程式的安全通訊通道。

非同步訊息處理

處理非同步訊息是 Rebus 的核心功能之一。 透過使用 await 總線模式,開發人員可以讓應用程式程式碼等待訊息到達並非同步執行相應的訊息處理程序。 這樣可以實現非阻塞訊息處理,確保應用程式即使在高負載下也能保持回應性和可擴展性。

容錯和故障訊息管理

在分散式系統中,故障是不可避免的。 Rebus 為開發者提供了一個優雅地管理和處理失敗訊息的機制。 透過設定錯誤日誌記錄和重試策略,開發人員可以定義 Rebus 如何處理失敗的訊息,無論是重試傳遞錯誤訊息、將訊息移至死信佇列,或是記錄錯誤以進行進一步的日誌記錄和分析。

建立和配置 Rebus

與 .NET Core 集成

Rebus 與 .NET Core 完全相容,是現代跨平台應用程式的理想選擇。 無論您是建立微服務、無伺服器函數、混合雲應用程式還是原生應用程序,Rebus 都能為 .NET Core 生態系統中的非同步通訊和訊息處理提供堅實的基礎。

配置訊息處理程序

接下來需要建立訊息處理類別來處理傳入的訊息。 每個訊息處理類別都應該實作IHandleMessages接口,其中MyMessage是處理程序類別將要處理的訊息類型。

public class MyMessageHandler : IHandleMessages<MyMessage>
{
    public async Task Handle(MyMessage message)
    {
        // Process the incoming message here
        // Example: Log the message or perform some business logic
    }
}
public class MyMessageHandler : IHandleMessages<MyMessage>
{
    public async Task Handle(MyMessage message)
    {
        // Process the incoming message here
        // Example: Log the message or perform some business logic
    }
}
$vbLabelText   $csharpLabel

配置訊息傳輸

若要傳送和接收訊息,Rebus 必須配置訊息傳輸機制。 Rebus 與多種傳輸方式相容,例如用於測試的記憶體傳輸、Azure 服務匯流排、RabbitMQ 和 SQL Server。 透過這種方式,它不僅限於任何特定的佇列技術,還可以遷移到任何託管環境。

例如,要使用 RabbitMQ 作為訊息傳輸協定:

var services = new ServiceCollection();
// Configure the message transport with RabbitMQ
services.AddRebus(configure => configure
    .Transport(t => t.UseRabbitMq("amqp://guest:guest@localhost", "my-queue"))
    .Routing(r => r.TypeBased().Map<MyMessage>("my-queue")));
var services = new ServiceCollection();
// Configure the message transport with RabbitMQ
services.AddRebus(configure => configure
    .Transport(t => t.UseRabbitMq("amqp://guest:guest@localhost", "my-queue"))
    .Routing(r => r.TypeBased().Map<MyMessage>("my-queue")));
$vbLabelText   $csharpLabel

初始化 Rebus

最後,您必須啟動訊息處理循環程序並使用配置的服務初始化 Rebus。

var serviceProvider = services.BuildServiceProvider();
var bus = serviceProvider.GetRequiredService<IBus>();
await bus.Start(); // Start the Rebus message processing loop
var serviceProvider = services.BuildServiceProvider();
var bus = serviceProvider.GetRequiredService<IBus>();
await bus.Start(); // Start the Rebus message processing loop
$vbLabelText   $csharpLabel

附加配置

重試策略:透過在設定中包含重試選項,您可以設定 Rebus 在發生故障時重試訊息處理。

並發控制:透過調整工作執行緒或處理程序的數量,Rebus 使您能夠調節訊息處理的並發性。

訊息序列化: Rebus 能夠以多種格式序列化訊息,包括 JSON、XML 和 Protobuf。 序列化設定可根據您的應用程式程式碼和需求進行配置。

入門

IronPDF是什麼?

IronPDF是一個流行的 .NET 庫,它允許我們在程式內部建立、修改和渲染 PDF 文件。 處理 PDF 文件的方法有很多種,包括使用 IronPDF 範例將 HTML 頁面轉換為 PDF ,以及在現有 PDF 文件中插入文字、圖像和形狀。更棒的是,您還可以使用 IronPDF 的 HTML 功能建立新的 PDF 文檔,該功能支援將應用程式程式碼、圖像或原始資料轉換為 PDF

IronPDF 在HTML 轉 PDF 方面表現出色,可確保精確保留原始佈局和樣式。 它非常適合從基於 Web 的內容(例如報告、發票和文件)建立 PDF。 IronPDF 支援 HTML 檔案、URL 和原始 HTML 字串,可以輕鬆產生高品質的 PDF 文件。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
$vbLabelText   $csharpLabel

IronPDF 的易用性是其主要優勢之一。 由於其用戶友好的 API 和豐富的文檔,開發人員可以快速地在 .NET 應用程式中建立 PDF 文件。 IronPDF 的高效率和速度是另外兩個有助於開發人員快速建立高品質 PDF 文件的功能。

! Rebus .NET Core 範例(開發人員的使用方法):圖 1 - IronPDF for .NET:C# PDF 函式庫

IronPDF 的優勢

IronPDF功能的一些優勢:

  • 從 HTML、圖片和未處理的資料建立 PDF。
  • 從PDF文件中刪除文字和圖像。
  • 在 PDF 檔案中新增浮水印、頁首和頁尾。
  • 使用密碼和加密技術來保護 PDF 檔案。
  • 具備以電子方式完成和簽署文件的能力。

安裝庫

要將 Rebus 用於訊息傳遞,將 IronPDF 用於 PDF 生成,必須先進行設置,才能在 .NET 應用程式中使用它們。 以下是詳細操作步驟:

Install-Package Rebus
Install-Package Rebus.ServiceProvider
Install-Package IronPdf
Install-Package Rebus
Install-Package Rebus.ServiceProvider
Install-Package IronPdf
SHELL

配置您的應用程式以處理 Rebus 訊息傳遞。 若要傳送和接收訊息,請將 Rebus 設定為訊息傳輸機制(如 RabbitMQ 或 Azure 服務總線)。 此服務可以處理失敗的訊息。

以下是一個簡單的範例,其中使用RabbitMQ設定訊息傳輸的佇列名稱:

// Create service broker config
var services = new ServiceCollection();
// Add Rebus configuration to the services
services.AddRebus(configure => configure
    .Transport(t => t.UseRabbitMq("amqp://guest:guest@localhost", "my-queue"))
    .Routing(r => r.TypeBased().Map<MyMessage>("my-queue")));
var serviceProvider = services.BuildServiceProvider();
var bus = serviceProvider.GetRequiredService<IBus>();
await bus.Start();
// Create service broker config
var services = new ServiceCollection();
// Add Rebus configuration to the services
services.AddRebus(configure => configure
    .Transport(t => t.UseRabbitMq("amqp://guest:guest@localhost", "my-queue"))
    .Routing(r => r.TypeBased().Map<MyMessage>("my-queue")));
var serviceProvider = services.BuildServiceProvider();
var bus = serviceProvider.GetRequiredService<IBus>();
await bus.Start();
$vbLabelText   $csharpLabel

Rebus 和 IronPDF 現在可以集成,以支援和管理使用 IronPDF 作業建立 PDF,作為訊息傳遞工作流程的一部分。 對於 Rebus 實例,您可以使用 Rebus 設計訊息處理程序,當收到特定訊息時,就會產生 PDF。

public class GeneratePdfMessageHandler : IHandleMessages<GeneratePdfMessage>
{
    public async Task Handle(GeneratePdfMessage message)
    {
        // Create an instance of ChromePdfRenderer to render HTML as PDF
        var renderer = new IronPdf.ChromePdfRenderer();

        // Render the incoming HTML content to a PDF document
        var pdfDocument = renderer.RenderHtmlAsPdf(message.HtmlContent);

        // Save the generated PDF to the specified output path
        pdfDocument.SaveAs(message.OutputPath);
    }
}
public class GeneratePdfMessageHandler : IHandleMessages<GeneratePdfMessage>
{
    public async Task Handle(GeneratePdfMessage message)
    {
        // Create an instance of ChromePdfRenderer to render HTML as PDF
        var renderer = new IronPdf.ChromePdfRenderer();

        // Render the incoming HTML content to a PDF document
        var pdfDocument = renderer.RenderHtmlAsPdf(message.HtmlContent);

        // Save the generated PDF to the specified output path
        pdfDocument.SaveAs(message.OutputPath);
    }
}
$vbLabelText   $csharpLabel

最後,您可以透過向 Rebus 發送訊息來啟動 PDF 建立任務。 舉例來說:

var message = new GeneratePdfMessage
{
    HtmlContent = "<h1>Hello, IronPDF!</h1>",
    OutputPath = "Sample.pdf"
};
await bus.Send(message); // Send the message to the configured queue
var message = new GeneratePdfMessage
{
    HtmlContent = "<h1>Hello, IronPDF!</h1>",
    OutputPath = "Sample.pdf"
};
await bus.Send(message); // Send the message to the configured queue
$vbLabelText   $csharpLabel

輸出

以下是上述原始碼的輸出結果。

! Rebus .NET Core 範例(開發人員的工作方式):圖 2 - 使用 IronPDF 和 Rebus .NET 產生的輸出 PDF"Sample.pdf"。

結論

最後,由於RebusIronPDF 的特性和功能,開發人員現在擁有一個強大的工具箱,可以在 .NET 應用程式中建立整合文件產生的分散式系統。

透過 Rebus 強大且適應性強的訊息傳遞架構,開發人員可以設計多樣化的訊息傳遞模式,並協調各種分散式系統元件之間的通訊。 相反,IronPDF 為 .NET 應用程式中產生 PDF 提供了一套完整的解決方案。開發人員可以使用 IronPDF 從 HTML 內容、照片或原始資料建立專業外觀的 PDF 文檔,並且可以根據自身需求更改 PDF 的樣式和佈局。

綜上所述,開發人員可以透過結合RebusIronPDF 解決方案,創建具有整合文件產生功能的功能豐富、可擴展且可靠的分散式系統。 Rebus 和 IronPDF 為開發尖端的 .NET 應用程式和服務提供了強大的基礎,無論這些應用程式和服務是用於即時產生文件、報告還是發票,都能使消費者受益。

IronPDF 也提供了IronPDF 各項功能的詳細文檔,以及多個詳細的程式碼範例

IronPDF 的套裝中包含價格實惠的終身許可證。 軟體包價格非常優惠,各種系統只需$799 。 它為持證用戶提供全天候線上工程技術支援。 它還提供IronPDF 的免費試用版,以便用戶可以獲取更多價格資訊。 請造訪Iron Software 網站,以了解有關 Iron Software 產品/服務的更多資訊。

常見問題解答

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

您可以使用 IronPDF 將 HTML 轉換為 PDF,例如使用RenderHtmlAsPdf方法處理 HTML 字串,或使用RenderHtmlFileAsPdf方法處理 HTML 檔案。 IronPDF 可確保在轉換過程中精確保留版面和樣式。

.NET 中的 Rebus 是什麼?它如何促進通信?

Rebus 是一個 .NET 函式庫,旨在簡化分散式系統中基於訊息的通訊和路由。它支援非同步訊息傳遞,使組件能夠高效通訊而無需等待回應,從而提高系統的響應速度和可擴展性。

將 IronPDF 與 Rebus 整合有哪些好處?

透過將 IronPDF 與 Rebus 集成,開發人員可以建立將 PDF 生成功能融入訊息傳遞工作流程的分散式應用程式。這種組合支援文件管理或報告產生是通訊過程一部分的複雜系統。

如何在基於 Rebus 的應用程式中實現錯誤處理?

Rebus 提供內建的重試和錯誤處理機制,即使在發生臨時故障或網路問題時,也能確保訊息處理的一致性。開發人員可以根據應用程式的彈性需求配置這些功能。

Rebus 可以與 .NET Core 結合使用,用於跨平台應用程式嗎?

是的,Rebus 與 .NET Core 完全相容,為跨平台非同步通訊提供了堅實的基礎。它是構建 .NET Core 生態系統中現代化、可擴展應用程式的理想選擇。

Rebus支援哪些訊息序列化格式?

Rebus 支援多種訊息序列化格式,包括 JSON、XML 和 Protobuf。這種靈活性允許開發人員選擇最適合其應用程式需求的序列化格式。

Rebus 和 IronPDF 如何支援分散式應用程式中的報表產生?

Rebus 負責促進產生報告所需各項服務之間的通訊和協調,而 IronPDF 則負責建立和渲染 PDF 文件。二者協同工作,使得開發能夠高效產生和管理報告的系統成為可能。

Rebus支援哪些訊息傳遞模式?

Rebus 支援多種訊息傳遞模式,例如訊息路由、命令/查詢、請求/回應和發布/訂閱,使其能夠靈活地適應不同的應用程式設計。

Rebus 如何增強 .NET 應用程式中的訊息安全性?

Rebus 整合了加密庫和協議,提供訊息加密功能,確保分散式元件之間的資料傳輸安全。此功能對於保護通訊頻道中的敏感資訊至關重要。

在 .NET 專案中設定 Rebus 和 PDF 函式庫需要哪些步驟?

若要在 .NET 專案中設定 Rebus 和像 IronPDF 這樣的 PDF 庫,請安裝對應的 NuGet 套件。配置 Rebus 以進行訊息傳遞,並將 PDF 庫整合到應用程式的工作流程中,以處理文件產生。

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 技術的創新,同時指導下一代技術領導者。