.NET ヘルプ

Quartz .NET(開発者向けの動作の仕組み)

公開済み 2024年7月1日
共有:

Quartz.NETの紹介

.NETアプリケーション向けには、Quartz.NETは人気のあるオープンソースのタスクリスケジューリングツールキットです。 それはプログラマーに、所定の時刻、間隔、またはトリガーに応じて、ジョブ、スケジュール、またはプロセスを計画および実行するための強固な基盤を提供します。 Quartz.NETは、通知の配信、ジョブのスケジューリング、レポートの生成、または定期的なメンテナンス活動の実行など、.NETアプリケーションで複雑なスケジュールシナリオを構築するのを容易にします。 Quartz.NETは、小規模アプリケーションから大規模エンタープライズシステムの作成まで、ジョブスケジューリングシステムとして最適です。

Quartz.NETの最新バージョンのスケジューラは、さまざまなサポートされているデータベースプロバイダーとのシームレスな統合を提供し、便利な拡張メソッドを使用してその機能を拡張することを可能にし、ホスト型サービスとして信頼性のあるタスク実行を確保します。

.NETアプリケーションで信頼性の高いスケジューリングシステムを構築し、強力なPDF生成機能を実現するには、Quartz.NETとIronPDFを統合することが可能です。 IronPDFはPDFドキュメントの作成、変更、および表示のためのフルスイートツールを提供していますが、Quartz.NETは柔軟で信頼性の高いスケジューリングシステムを提供します。 組み合わせることで、開発者はワークフローの一環としてPDF作成操作を自動化したり、バックグラウンドジョブをスケジュールしたりすることができ、アプリの有用性と機能性を向上させることができます。

主な機能

柔軟なスケジューリング

Quartz.NETは、プログラマーがプログラムをあらかじめ設定した間隔や時間に実行するスケジュールを作成できるようにします。(例: 毎時、毎日、30分ごと). コロン表現などの複雑なスケジュールパターンに対応しており、コード、ジョブ、およびサービスの実行時間を正確に制御できます。

トリガーベースの実行

Quartz.NETでは、ジョブはさまざまなトリガーによって開始できます。 カレンダーに基づくトリガーが含まれます(例えば、週末を除外する)シンプルトリガー(決められたスケジュールに従って動作します), ジョブトリガー、および外部の状況や発生事象に依存するカスタムトリガー。

ジョブ永続性

Quartz.NETは、ジョブを永続的にスケジュールする機能を備えており、計画されたタスクとその完了履歴をデータベースに保存することができます。 アプリケーションの障害や再起動に対するジョブスケジュールのレジリエンスが保証されており、高可用性およびスケーラビリティのためのジョブクラスタリングが可能です。

並行制御

タスクが安全かつ効果的に完了することを保証するために、Quartz.NETには組み込みの並行性制御ツールが備わっています。 ジョブの実行の並行性を制御するために、開発者はスレッドプール、ジョブの優先順位、実行制約を設定することができます。

ジョブ・チェイニングと依存関係管理

ジョブは指定された順序で実行でき、Quartz.NETのジョブチェイニングと依存関係管理のサポートにより、開発者によってジョブ間の関係を定義することができます。 これにより、バックグラウンドジョブ、サービス、および手続きのための複雑なオーケストレーション状況を作成することが可能になります。

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

フェイルオーバーを優雅に管理するために、Quartz.NETにはエラーハンドリングとリトライ技術があります。 一時的な失敗や例外が発生した場合、開発者はリトライポリシーとエラーハンドリング技術を設定して、ジョブが再試行または再スケジュールされることを保証できます。

クラスタリングとスケーラビリティ

Quartz.NET は分散ジョブスケジューリングにおけるクラスタリングをサポートしているため、スケジューラの複数のインスタンスがサーバークラスター全体でタスクを調整および実行することができます。 これは、水平スケーラビリティおよびフォールトトレランスを可能にすることによって、分散コンテキストで信頼性のあるジョブスケジューラと実行を保証します。

.NETエコシステムとの統合

Quartz.NET は、メッセージング システムを含む .NET エコシステムと簡単にインターフェースできるようになっています。(Rebus.NET, MassTransit)ログフレームワーク(Serilog、NLog)および一般的な依存性注入フレームワーク(Autofac、Microsoft.Extensions.DependencyInjection).

Quartz.NET の作成と設定

ジョブとトリガーの定義

実行したいタスクに対して、ジョブとトリガーを設定します。 タスクの完了は、コンテキストオブジェクトとジョブクラスによって表され、ジョブの実行頻度とタイミングはトリガーによって決定されます。

public class MyJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Implement the logic for your job here
    }
}

var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1")
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes
    .Build();
public class MyJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Implement the logic for your job here
    }
}

var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1")
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes
    .Build();
Public Class MyJob
	Implements IJob

	Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
		' Implement the logic for your job here
	End Function
End Class

Private job = JobBuilder.Create(Of MyJob)().WithIdentity("myJob", "group1").Build()

Private trigger = TriggerBuilder.Create().WithIdentity("myTrigger", "group1").WithCronSchedule("0 0/5 * * * ?").Build()
VB   C#

スケジューラの設定と初期化

指定された構成でジョブスケジューラを設定してバックグラウンドタスク、ジョブ、およびトリガーをスケジュールした後、スケジューラを起動してジョブの計画および実行を開始します。

var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()
Await scheduler.ScheduleJob(job, trigger)
VB   C#

ジョブ永続性

Quartz.NETを設定して、ジョブとトリガーのメタデータをデータベースのような永続ストアに保存します。 これは信頼性を保証し、ジョブがアプリケーションの再起動時にも生き残ることを可能にします。

エラーハンドリング

ジョブ実行ロジックにエラーハンドリングと再試行ロジックを組み込んで、失敗を丁寧に扱うようにしましょう。 Quartz.NETは、例外の管理およびタスクの再試行のための組み込みメソッドを提供します。

クラスタリング

分散環境でQuartz.NETを使用する際の高可用性とスケーラビリティを保証するためには、クラスタリングを設定してください。 スケジューラーインスタンスは、クラスタリングのおかげでサーバのクラスタ間でタスクを協力して実行することができます。

依存性注入

Quartz.NET を設定して依存性注入と連携する(DI)依存性注入フレームワークを使用するアプリケーションの場合、ジョブの依存関係、構成、およびライフサイクルを管理するためのコンテナ。

IronPDF

IronPDFは、.NETおよびJava、Python、Node.jsでPDFを生成、編集、読み取るための強力なツールです。プログラマー向けに最適化されており、コードからPDFファイルの作成を容易に行うことができます。IronPDFは、HTML、CSS、JavaScript、および画像をPDFドキュメントに変換する能力を提供します。

機能

  • HTML to PDF: HTML、CSS、JavaScriptを利用してPDFを生成。
  • PDFの編集: 既存のPDFドキュメントにテキスト、画像、ページ番号、さらにはカスタムヘッダーやフッターを追加。
  • PDFの読み取り: PDFファイルからテキスト、画像、メタデータを抽出。
  • セキュリティ: パスワード保護や暗号化オプションでPDFドキュメントを保護。

利点

  • 使いやすさ: シンプルなAPIで時間を節約。
  • 高品質: 正確で美しいPDFドキュメントを生成。
  • 柔軟性: 様々なプラットフォームや言語で利用可能。

対応ライセンス

IronPDFは様々なライセンスオプションがあり、Lite License、Plus License、Professional License、Unlimited Licenseが用意されています。

技術サポートや詳細については、Iron Softwareの公式サイトをご覧ください。

Quartz .NET(開発者にとっての動作原理):図1 - IronPDFウェブページ

.NETプログラム内でPDFドキュメントの作成、修正、およびレンダリングを行うことは、よく知られた.NETパッケージであるIronPDFによって可能になります。 PDFとのやり取りに利用できる多彩な機能が用意されています:HTMLコンテンツ、写真、または未処理データからPDFを作成すること; 既存のPDFドキュメントにテキスト、画像、および図形を追加すること; HTMLページをPDFに変換する。 PDFからテキストや画像を抽出する。

IronPDFのシンプルさとユーザーフレンドリーさは、その主な利点の2つです。 開発者は、使いやすいAPIと充実したドキュメントを使用することで、.NETプロジェクトで簡単にPDFを生成し始めることができます。 IronPDFの速度と効率性は、開発者が高品質のPDFドキュメントを迅速かつ効果的に作成できるようにするさらなる特徴です。

IronPDFコア機能

  • 生データ、HTML、および画像からのPDFの作成。
  • PDFファイルからテキストと画像を抽出する。
  • PDFファイルにヘッダー、フッター、ウォーターマークを含めることができます。
  • パスワードと暗号化セキュリティを使用してPDFドキュメントを作成します。
  • フォームに入力し、デジタル署名するためのツールを提供します。

IronPDF と Quartz を使用する

Quartz.NETと共にIronPDFを使用し始めるには、コンソールまたはASP.NET Coreアプリケーションで、IronPDFを使用してPDF制作に関連するタスクを実行するためのスケジュールされたバックグラウンドジョブを確立することができます。

QuartzおよびIronPDFパッケージのインストール

まず、Visual Studioパッケージマネージャコンソールで以下のコマンドを使用して、.NETプロジェクトに必要なNuGetパッケージであるIronPDFおよびQuartz.NETをインストールしていることを確認してください:

Install-Package Quartz
Install-Package IronPdf
Install-Package Quartz
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package Quartz Install-Package IronPdf
VB   C#

コード例

このセクションでは、IronPDFを使用してPDFドキュメントを作成するQuartzジョブを作成する方法を示します。

public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generate PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new IronPdf.HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);
        // Save PDF to file or perform other actions
        pdfDocument.SaveAs("output.pdf");
    }
}
public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generate PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new IronPdf.HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);
        // Save PDF to file or perform other actions
        pdfDocument.SaveAs("output.pdf");
    }
}
Public Class PdfGenerationJob
	Implements IJob

	Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
		' Generate PDF using IronPDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1>"
		Dim pdfRenderer = New IronPdf.HtmlToPdf()
		Dim pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent)
		' Save PDF to file or perform other actions
		pdfDocument.SaveAs("output.pdf")
	End Function
End Class
VB   C#

Quartz.NETを設定して、事前に決められたスケジュールでPDF作成プロセスを実行するトリガーを利用します。

var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

await scheduler.ScheduleJob(job, trigger);
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

await scheduler.ScheduleJob(job, trigger);
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()

Dim job = JobBuilder.Create(Of PdfGenerationJob)().WithIdentity("pdfGenerationJob", "pdfGenerationGroup").Build()

Dim trigger = TriggerBuilder.Create().WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup").WithSimpleSchedule(Function(x) x.WithIntervalInMinutes(30).RepeatForever()).Build()

Await scheduler.ScheduleJob(job, trigger)
VB   C#

Quartzスケジューラを起動し、計画されたタスクの実行を開始するには:

// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution
// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution
' Start the scheduler
Await scheduler.Start()
' Optionally, monitor scheduler for job execution
VB   C#

以下は上記のコードから生成された出力です。

Quartz .NET(開発者向けの仕組み):図2 - IronPDFとQuartz.NETのコード例の出力

結論

まとめると、Quartz.NET と IronPDF の組み合わせは、.NET アプリケーションで PDF 作成に関連する操作を自動化する強力な方法を提供します。 Quartz.NETの強力で適応可能なスケジューリングシステムの助けを借りて、開発者は所定の間隔または期間でタスクを実行するジョブとトリガーを作成することができます。 一方、IronPDFは、開発者がPDFドキュメントを作成および操作するために必要なすべてのツールを提供します。 HTML、グラフィックス、または生データを使用して、開発者はプロフェッショナルな外観のPDFを作成することができます。

開発者は、IronPDF の PDF 生成機能を Quartz.NET のスケジューリング機能と統合することによって、レポート、請求書、ドキュメントの作成など、分散アプリケーションにおける一般的な PDF 生成操作を、予め設定された間隔やトリガーに反応して自動化することができます。 この統合により、開発者はドキュメント生成のワークフローを合理化し、生産性を向上させ、手作業を削減することで、顧客やクライアントに高品質なPDFドキュメントをより簡単に生成および送信できます。

IronPDFは手頃な価格で、パッケージの一部として購入すると終身ライセンスが付いてきます。 パッケージの価格はわずか$749であり、これは複数のシステムに対する単一の料金であるため、優れた価値を提供します。 ライセンス保持者には、24時間対応のオンラインエンジニアリングサポートを提供します。 Iron Softwareの製品については、Iron Softwareの製品ページをご覧ください。Iron Software ウェブサイト.

< 以前
.NET (開発者のための仕組み)
次へ >
Supersocket C#の例(開発者向けの動作方法)