フッターコンテンツにスキップ
.NETヘルプ

Rebus .NET Coreの例(開発者向けの動作方法)

複雑な.NET開発の世界では、サービス間の非同期通信の管理が堅牢でスケーラブルなアプリケーション構築の重要な側面です。 ここでRebus .NETの登場です。これは、.NETエコシステム内でのメッセージベースの通信とルーティングを簡素化する強力なライブラリです。 Rebusがどのように開発者にサービスバスとキューイングサービスコールメカニズムのフルポテンシャルを引き出す手助けをするかを探ってみましょう。

開発者は、Rebus .NETとIronPDFのPDF生成機能を組み合わせることで、メッセージ操作の一部としてPDF文書を生成する機能を備えた複雑な分散システムを構築することができます。 たとえば、Rebusで構築されたシステムはPDF文書の生成依頼を受け取り、それをRebusハンドラーで処理し、IronPDFを使って文書を生成し、それに応答することができます。

開発者は、RebusとIronPDFを使用して、PDF生成のためのメッセージワークフローに簡単に統合できる、機能豊富でスケーラブルで信頼性の高い分散アプリを作成することができます。 この統合により、レポートツールや文書管理システムなど様々なアプリケーションを開発するための強力な基盤が提供されます。

Rebusとは何ですか?

分散システムの中心には効率的なメッセージルーティングと処理の必要性があります。 Rebus概要とリソース により、直感的なAPIと包括的な機能を備え、分散アプリケーションの異なるコンポーネント間の架け橋としての役割を果たします。 マイクロサービス間の通信の編成や非同期タスクの管理のいずれであっても、Rebusはメッセージ処理と配信を効率化するための必要なツールを提供します。

サービスバスとメッセージルーティング

Rebusを使用することで、事前定義された基準に基づいてメッセージをルーティングするのが非常に簡単になります。 開発者はRebusのルーティング機能を活用して、特定のハンドラーやキューにメッセージを振り分け、効率的に目的の宛先にメッセージを届けることができます。 Rebusの拡張メソッドを使用してルーティングルールを定義することで、開発者はアプリケーションアーキテクチャの独自の要件に応じてメッセージフローをカスタマイズすることができます。

多様なメッセージングパターン

Rebus .NETは、メッセージルーティング、コマンド/クエリ、リクエスト/レスポンス、パブリッシュ/サブスクライブなど、数多くのメッセージングパターンに対応しています。この柔軟性により、開発者は自身の特定のユースケースに最も適した設計を選択できます。

非同期メッセージング

Rebus .NETは、分散システムのコンポーネントが互いに応答を待ったりブロックしたりせずに通信できるようにします。 この非同期通信により、システムの応答性とスケーラビリティが向上します。

分散アーキテクチャ

Rebus .NETは、複数のプロセスやネットワークがコンポーネント間の通信手段として用いられる分散システムの開発を意図しています。 メッセージのシリアル化とデシリアル化の処理、メッセージ配信の信頼性維持、メッセージキューの管理の機能を提供します。

拡張性

Rebus .NETは非常に拡張可能であり、プログラマーがその機能を変更し、拡張してニーズに合わせることを可能にします。 複数のミドルウェアプラットフォーム、シリアル化フォーマット、メッセージブローカーとの統合ポイントを提供します。

エラーハンドリングとリトライ技術

Rebus .NETには組み込みの再試行とエラーハンドリング技術が備わっており、短い障害やネットワークの問題が発生してもメッセージが一貫して処理されることを保証します。 開発者はアプリケーションの堅牢性ニーズを満たすために、待機ポリシーとエラーハンドリング技術を設定することができます。

メッセージの暗号化とセキュリティ

Rebus .NETは、分散コンポーネント、ホスティング環境、ハイブリッドクラウドアプリケーションで転送される機密データをメッセージの暗号化とセキュリティ機能を提供し、保護します。 暗号化ライブラリやプロトコルと簡単に統合することで、ハイブリッドクラウドアプリケーションの安全な通信チャネルを保証します。

非同期メッセージ処理

非同期メッセージ処理を扱うのはRebusのコア機能です。 await bus パターンを使用することで、開発者はアプリケーションコードにメッセージの到着を待つよう指示し、対応するメッセージハンドラーを非同期に実行できるようにします。 これにより、アプリケーションが高負荷の下でも反応性とスケーラビリティを保つ非ブロッキングメッセージ処理が可能になります。

フォールトトレランスと失敗メッセージの管理

分散システムにおいては失敗は避けられません。 Rebusは開発者に失敗したメッセージを優雅に管理し、処理するための機構を装備します。 エラーロギングと再試行ポリシーを設定することで、開発者はRebusが失敗メッセージをどのように扱うかを定義できます。メッセージ配信の再試行、メッセージをデッドレターキューに移動、あるいはさらなるロギングと解析のためにエラーをロギングするかという選択が可能です。

Rebusの作成と構成

.NET Coreとの統合

Rebusは.NET Coreと完全に互換性があるため、現代のクロスプラットフォームアプリケーションに最適な選択肢です。 マイクロサービス、サーバーレス関数、ハイブリッドクラウドアプリケーション、ネイティブアプリケーションを構築する際でも、Rebusは.NET Coreエコシステム内での非同期通信とメッセージ処理のための堅実な基盤を提供します。

メッセージハンドラーの構成

受信メッセージを処理するためのメッセージハンドラークラスを作成する必要があります。 MyMessageがハンドラークラスが処理するメッセージの種類である場合、すべてのメッセージハンドラークラスはIHandleMessagesインターフェースを実装する必要があります。

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
    }
}
Public Class MyMessageHandler
	Implements IHandleMessages(Of MyMessage)

	Public Async Function Handle(ByVal message As MyMessage) As Task
		' Process the incoming message here
		' Example: Log the message or perform some business logic
	End Function
End Class
$vbLabelText   $csharpLabel

メッセージトランスポートの構成

メッセージの送受信には、メッセージトランスポートメカニズムを使用して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")));
Dim services = New ServiceCollection()
' Configure the message transport with RabbitMQ
services.AddRebus(Function(configure) configure.Transport(Function(t) t.UseRabbitMq("amqp://guest:guest@localhost", "my-queue")).Routing(Function(r) r.TypeBased().Map(Of 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
Dim serviceProvider = services.BuildServiceProvider()
Dim bus = serviceProvider.GetRequiredService(Of IBus)()
Await bus.Start() ' Start the Rebus message processing loop
$vbLabelText   $csharpLabel

追加構成

再試行戦略:構成に再試行オプションを追加することで、障害発生時にRebusがメッセージ処理を再試行するように設定できます。

同時実行制御:作業者スレッドやハンドラーの数を調整することで、Rebusはメッセージ処理の同時実行性を制御する機能を提供します。

メッセージのシリアル化:RebusはJSON、XML、Protobufなどのさまざまなフォーマットでメッセージをシリアル化する能力があります。 シリアル化設定はアプリケーションコードや要件に合うように設定可能です。

開始方法

IronPDFとは何ですか?

プログラム内でPDF文書を作成、変更、レンダリングすることを可能にする人気の.NETライブラリはIronPDFと呼ばれています。 Working with PDFs can be done in a number of ways, including converting HTML pages to PDFs with IronPDF examples, and inserting text, images, and shapes into ones that already exist. Even better, you can create new PDF documents using IronPDF's use of HTML to create PDFs application code, images, or unprocessed data.

IronPDF は HTML から PDF への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから PDF を作成するのに最適です。 HTML ファイル、URL、または生の HTML 文字列のサポートにより、IronPDF は高品質な 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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

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

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

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPDFの主な利点は使いやすさです。 使いやすいAPIと豊富なドキュメントのため、開発者は.NETアプリケーション内から素早くPDFの作成を開始できます。IronPDFの効率とスピードは、開発者が高品質なPDF文書を素早く作成する助けとなります。

Rebus .NET Core例 (開発者向け動作方法): 図1 - IronPDF for .NET: The C# PDF Library

IronPDFの利点

IronPDFの機能 のいくつかの利点:

  • HTML、画像、生データからのPDF作成。
  • PDFファイルからテキストと画像を削除。
  • PDFファイルに透かし、ヘッダー、フッターを追加。
  • PDFファイルをパスワードと暗号化で保護。
  • 書類の電子的な記入と署名の能力。

ライブラリのインストール

.NETアプリケーションで使用するためには、最初にメッセージング用のRebusとPDF作成用のIronPDFをセットアップする必要があります。 以下は詳細な方法です:

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();
' Create service broker config
Dim services = New ServiceCollection()
' Add Rebus configuration to the services
services.AddRebus(Function(configure) configure.Transport(Function(t) t.UseRabbitMq("amqp://guest:guest@localhost", "my-queue")).Routing(Function(r) r.TypeBased().Map(Of MyMessage)("my-queue")))
Dim serviceProvider = services.BuildServiceProvider()
Dim bus = serviceProvider.GetRequiredService(Of IBus)()
Await bus.Start()
$vbLabelText   $csharpLabel

RebusとIronPDFの統合が現在可能で、PDF creation with IronPDF のジョブをメッセージングワークフローの一環としてサポートおよび管理するためです。 Rebusインスタンスの場合、特定のメッセージが受信されたときにPDFを生成するメッセージハンドラーを設計するためにRebusを使用することができます。

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);
    }
}
Public Class GeneratePdfMessageHandler
	Implements IHandleMessages(Of GeneratePdfMessage)

	Public Async Function Handle(ByVal message As GeneratePdfMessage) As Task
		' Create an instance of ChromePdfRenderer to render HTML as PDF
		Dim renderer = New IronPdf.ChromePdfRenderer()

		' Render the incoming HTML content to a PDF document
		Dim pdfDocument = renderer.RenderHtmlAsPdf(message.HtmlContent)

		' Save the generated PDF to the specified output path
		pdfDocument.SaveAs(message.OutputPath)
	End Function
End Class
$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
Dim message = New GeneratePdfMessage With {
	.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を使用した出力PDF「Sample.pdf」

結論

Finally, developers now have a strong toolbox for creating distributed systems with integrated document generation in .NET apps thanks to the combination of Rebus and IronPDF features and capabilities.

Rebusの強力で柔軟なメッセージングアーキテクチャによって、開発者は多様なメッセージングパターンを設計し、異なる分散システムコンポーネント間の通信を調整することができます。 一方、IronPDFは.NETアプリでのPDF生成のための完全なソリューションを提供します。開発者はIronPDFを使用して、HTMLコンテンツ、写真、生データからプロフェッショナルな外観のPDF文書を作成することができ、またPDFのスタイルとレイアウトを独自のニーズに合わせてカスタマイズすることもできます。

All things considered, developers may create feature-rich, scalable, and dependable distributed systems with integrated document-generating capabilities by combining Rebus and IronPDF solutions. RebusとIronPDFは、瞬時の文書、レポート、請求書の生成サービスのために使用されるかどうかにかかわらず、消費者にメリットを届ける最先端の.NETアプリとサービスの開発のための強固な基盤を提供します。

IronPDF also offers detailed documentation of IronPDF features of its extensive features, along with multiple detailed code examples.

IronPDFは購入パッケージに含まれた手頃な価格の終身ライセンスを提供しています。 そのパッケージは様々なシステムに対して、僅か$799で非常にお得に入手可能です。 ライセンス保持者には、24時間体制のオンラインエンジニアリングサポートを提供します。 また、IronPDFの無料トライアルが価格取得に関する追加情報として提供されています。 Iron Softwareのオファリングに関する追加情報については、Iron Softwareウェブサイトをご覧ください。

よくある質問

C# でライブラリを使用して HTML を PDF に変換するにはどうすればよいですか?

IronPDF を使用すると、HTML 文字列に対して RenderHtmlAsPdf メソッドや HTML ファイルに対して RenderHtmlFileAsPdf メソッドを用いることで、HTML を PDF に変換できます。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 は暗号化ライブラリやプロトコルと統合し、メッセージ暗号化を提供することで、分散コンポーネント間の安全なデータ送信を確保します。この機能は、通信チャネル内の機密情報を保護するために重要です。

Rebus と PDF ライブラリを .NET プロジェクトでセットアップするにはどうすればよいですか?

Rebus と IronPDF のような PDF ライブラリを .NET プロジェクトにセットアップするには、それぞれの NuGet パッケージをインストールします。メッセージング用に Rebus を設定し、ドキュメント生成をアプリケーションのワークフローの一部として処理するために PDF ライブラリを統合します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。