ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
MediatRは、人気のある.NETライブラリであり、メディエーター・パターンを実装し、オブジェクトが直接ではなくメディエーターを介して互いに通信できるようにします。 このアプローチは、コンポーネント間の結合度を低く保つことが望ましいアプリケーションに特に有用です。 この記事では、C#開発の文脈でMediatRを詳細に見ていき、ウェブアプリケーションプロジェクトにそれを統合するための実践的な例とガイダンスを提供します。 また、次のことを探求します.NETアプリケーションのPDF機能のためのIronPDFライブラリASP.NET CoreプロジェクトにおけるPDF機能の統合のために。
メディエーター・パターンは、オブジェクト間の相互作用を促進するソフトウェア設計パターンであり、オブジェクト間の直接的な依存関係を減少させ、疎結合を促進します。 MediatRは、シンプルで効率的なオブジェクト通信を促進することに重点を置いた、控えめなメディエーターの実装を提供します。
MediatRライブラリの中心には、リクエストと複数のハンドラーの概念があります。 リクエストポイントでは、オブジェクトが操作またはアクションの詳細をカプセル化し、MediatRメカニズムによって処理されるのを待ちます。 各リクエストは、リクエストを実行するビジネスロジックを含む対応するハンドラまたはハンドルメソッドによって処理されます。この構造は、コマンドとクエリの責任分離(Command Query Responsibility Segregation)を実装するために特に有用です。(CQRS)読み取り操作と書き込み操作を分離することで、より保守しやすくスケーラブルなソフトウェアアーキテクチャを実現できるパターン。
ASP.NET CoreプロジェクトでMediatRを使用し始めるには、最初にMediatRパッケージをインストールする必要があります。 これは、Visual Studio のパッケージ マネージャー コンソールで次のコマンドを使用して実行できます:
Install-Package MediatR
パッケージをインストールした後、ASP.NET Coreの依存関係注入コンテナにMediatRを追加する必要があります。 これは通常、使用しているASP.NET Coreのバージョンに応じて、WebアプリケーションプロジェクトのProgram.csまたはStartup.csファイルで行われます。 以下のように、APIプレゼンテーションレイヤーを最小限に抑えたプログラムで実行することができます。
// writing code
var builder = WebApplication.CreateBuilder(args);
// Add MediatR
builder.Services.AddMediatR(typeof(Program).Assembly);
var app = builder.Build();
// writing code
var builder = WebApplication.CreateBuilder(args);
// Add MediatR
builder.Services.AddMediatR(typeof(Program).Assembly);
var app = builder.Build();
' writing code
Dim builder = WebApplication.CreateBuilder(args)
' Add MediatR
builder.Services.AddMediatR(GetType(Program).Assembly)
Dim app = builder.Build()
プログラムクラスで、**var builder = WebApplication.CreateBuilder(引数)ウェブアプリケーションを初期化し、MediatR統合の準備を行います。
MediatRリクエストは、パブリッククラスのメールハンドラのような単純なクラスで、特定の操作を実行するために必要なデータを表します。 こちらは、新しいユーザーを作成するコマンドを表すリクエストパブリッククラスの例です。
public class CreateUserCommand : IRequest<int>
{
public string Name { get; set; }
public string Email { get; set; }
public int id {get; set;}
}
public class CreateUserCommand : IRequest<int>
{
public string Name { get; set; }
public string Email { get; set; }
public int id {get; set;}
}
Public Class CreateUserCommand
Implements IRequest(Of Integer)
Public Property Name() As String
Public Property Email() As String
Public Property id() As Integer
End Class
この例では、CreateUserCommand クラスが IRequest を実装します。
次に、このリクエストのためのハンドラーを作成する必要があります。各ハンドラー内で、public async Task Handle メソッドがリクエストのロジックが実行される中心的な部分です。
public class CreateUserHandler : IRequestHandler<CreateUserCommand, int>
{
public async Task<int> Handle(CreateUserCommand command, CancellationToken token)
{
// Implement logic to create user here
// For this example, let's pretend we create a user and return the ID
return await Task.FromResult(1); // Assume the user's ID is 1
}
}
public class CreateUserHandler : IRequestHandler<CreateUserCommand, int>
{
public async Task<int> Handle(CreateUserCommand command, CancellationToken token)
{
// Implement logic to create user here
// For this example, let's pretend we create a user and return the ID
return await Task.FromResult(1); // Assume the user's ID is 1
}
}
Public Class CreateUserHandler
Implements IRequestHandler(Of CreateUserCommand, Integer)
Public Async Function Handle(ByVal command As CreateUserCommand, ByVal token As CancellationToken) As Task(Of Integer)
' Implement logic to create user here
' For this example, let's pretend we create a user and return the ID
Return Await Task.FromResult(1) ' Assume the user's ID is 1
End Function
End Class
同じプロセスを使用してMediatRの設定を行うことで、アプリケーションのワークフローにそれを統合します。 これは通常、ASP.NET Coreアプリケーションのコントローラーまたはエンドポイントを通じて行われます。 以下は、APIコントローラーを使用した例です:
[ApiController]
[Route("[controller]")]
public class UsersController : ControllerBase
{
private readonly IMediator _mediator;
public UsersController(IMediator mediator)
{
_mediator = mediator;
}
[HttpPost]
public async Task<ActionResult<int>> Create(CreateUserCommand command)
{
var userId = await _mediator.Send(command);
return CreatedAtRoute("GetUser", new { id = userId }, command);
}
}
[ApiController]
[Route("[controller]")]
public class UsersController : ControllerBase
{
private readonly IMediator _mediator;
public UsersController(IMediator mediator)
{
_mediator = mediator;
}
[HttpPost]
public async Task<ActionResult<int>> Create(CreateUserCommand command)
{
var userId = await _mediator.Send(command);
return CreatedAtRoute("GetUser", new { id = userId }, command);
}
}
<ApiController>
<Route("[controller]")>
Public Class UsersController
Inherits ControllerBase
Private ReadOnly _mediator As IMediator
Public Sub New(ByVal mediator As IMediator)
_mediator = mediator
End Sub
<HttpPost>
Public Async Function Create(ByVal command As CreateUserCommand) As Task(Of ActionResult(Of Integer))
Dim userId = Await _mediator.Send(command)
Return CreatedAtRoute("GetUser", New With {Key .id = userId}, command)
End Function
End Class
このコントローラーでは、Create アクションメソッドが _mediator.Send を呼び出して、CreateUserCommand を MediatR に送信します。(コマンド)**. MediatRはこのコマンドに対して適切なハンドラを見つけ、実行します。 結果が返され、同じプロセスでレスポンスを生成するために使用されます。
MediatRは通知とビヘイビアもサポートしています。 通知は、複数のハンドラーが購読および処理できるメッセージであり、アプリケーション内でよりイベント駆動型のアプローチを可能にします。 一方、ビヘイビアは、MediatRリクエストに対するミドルウェアに似ており、ログ記録、バリデーション、トランザクション管理などの横断的な関心事を実装することができます。
IronPDFは、アプリケーション内でPDFファイルを作成、編集、操作するための簡単な方法を必要とする.NET開発者向けに設計されたC#ライブラリです。 開発者は、複雑なAPIに関わることなく、ウェブページやHTMLコードを直接PDF形式に変換. IronPDFはPDFの作成だけに限りません。 また、PDF内でテキスト、画像、ページを追加したり、フォームに入力および編集するなどのPDF編集機能も提供しています。 開発者は、PDFの結合、分割、パスワードや権限によるセキュリティ対策などを含めたPDFの総合的な操作を行うことができます。
この例では、MediatRリクエストがPDFに含めたいメディアコンテンツまたはメタデータの形式を指していると仮定します。 MediatRはIronPDFの機能に直接関係しないため、メディア情報や参照を含むHTMLコンテンツからPDFドキュメントを作成する方法を出発点として取り上げます。
using IronPdf;
public class PdfGenerator
{
public void CreatePdfWithMediaInfo(string htmlContent)
{
License.LicenseKey = "License-Key";
// Initialize the HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Example HTML content - replace this with your actual HTML content
// Here, "htmlContent" should include your MediatR information in HTML format
string htmlTemplate = $@"
<html>
<head>
<title>Media Information</title>
</head>
<body>
<h1>Media Details</h1>
<!-- Insert your media information here -->
{htmlContent}
</body>
</html>";
// Convert HTML string to PDF
var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate);
pdfDocument.SaveAs("MediaInformation.pdf");
}
}
class Program
{
static void Main(string [] args)
{
// Example HTML content with MediatR information
string htmlContent = @"
<div>
<h2>MediaTR Information</h2>
<p>MediaTR is a media tracking system...</p>
</div>";
// Create an instance of PdfGenerator
PdfGenerator pdfGenerator = new PdfGenerator();
// Call the CreatePdfWithMediaInfo method to generate the PDF
pdfGenerator.CreatePdfWithMediaInfo(htmlContent);
Console.WriteLine("PDF generated successfully.");
}
}
using IronPdf;
public class PdfGenerator
{
public void CreatePdfWithMediaInfo(string htmlContent)
{
License.LicenseKey = "License-Key";
// Initialize the HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Example HTML content - replace this with your actual HTML content
// Here, "htmlContent" should include your MediatR information in HTML format
string htmlTemplate = $@"
<html>
<head>
<title>Media Information</title>
</head>
<body>
<h1>Media Details</h1>
<!-- Insert your media information here -->
{htmlContent}
</body>
</html>";
// Convert HTML string to PDF
var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate);
pdfDocument.SaveAs("MediaInformation.pdf");
}
}
class Program
{
static void Main(string [] args)
{
// Example HTML content with MediatR information
string htmlContent = @"
<div>
<h2>MediaTR Information</h2>
<p>MediaTR is a media tracking system...</p>
</div>";
// Create an instance of PdfGenerator
PdfGenerator pdfGenerator = new PdfGenerator();
// Call the CreatePdfWithMediaInfo method to generate the PDF
pdfGenerator.CreatePdfWithMediaInfo(htmlContent);
Console.WriteLine("PDF generated successfully.");
}
}
Imports IronPdf
Public Class PdfGenerator
Public Sub CreatePdfWithMediaInfo(ByVal htmlContent As String)
License.LicenseKey = "License-Key"
' Initialize the HtmlToPdf renderer
Dim renderer = New ChromePdfRenderer()
' Example HTML content - replace this with your actual HTML content
' Here, "htmlContent" should include your MediatR information in HTML format
Dim htmlTemplate As String = $"
<html>
<head>
<title>Media Information</title>
</head>
<body>
<h1>Media Details</h1>
<!-- Insert your media information here -->
{htmlContent}
</body>
</html>"
' Convert HTML string to PDF
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate)
pdfDocument.SaveAs("MediaInformation.pdf")
End Sub
End Class
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Example HTML content with MediatR information
Dim htmlContent As String = "
<div>
<h2>MediaTR Information</h2>
<p>MediaTR is a media tracking system...</p>
</div>"
' Create an instance of PdfGenerator
Dim pdfGenerator As New PdfGenerator()
' Call the CreatePdfWithMediaInfo method to generate the PDF
pdfGenerator.CreatePdfWithMediaInfo(htmlContent)
Console.WriteLine("PDF generated successfully.")
End Sub
End Class
次のコードスニペットでは、htmlContent は、HTML形式でメディア情報を含むべき変数です。 これはテキスト、画像、動画リンク、その他のHTML互換コンテンツを含む可能性があります。 IronPDFは、このHTMLコンテンツをPDFドキュメントに変換し、HTMLで指定されたレイアウトやフォーマットを保持します。
この記事で説明されている手順に従えば、基本的なコマンドおよびクエリ処理から、通知やビヘイビアなどのより高度な機能を活用するまで、MediatRをプロジェクトに組み込むための確固たる基盤を得ることができるはずです。 アプリケーションが成長し進化する中で、MediatRは、コードベースをクリーンで、メンテナブルで、スケーラブルに保つためのツールとパターンを提供します。
結論として、IronPDFなどのさまざまなライブラリやツールを探索して統合することで、.NETプロジェクトをさらに強化することができる点を指摘する価値があります。 IronPDFは高度なPDF機能の無料トライアル. 高度なPDF機能を必要とするプロジェクトのために、IronPDFのライセンスは749ドルから提供されており、アプリケーションの機能を拡張したい.NETの開発者にとって強力なソリューションを提供します。
9つの .NET API製品 オフィス文書用