在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
MediatR是一個受歡迎的 .NET 程式庫,實現中介者模式,使物件能透過中介者進行相互溝通,而非直接溝通。 這種方法在希望保持組件之間低耦合度的應用程式中特別有用。 在本文中,我們將詳細探討在 C# 開發中使用 MediatR,並提供實際範例和指南,說明如何將其整合到您的 Web 應用專案中。 我們也將探索IronPDF 函式庫用於 .NET 應用程式中的 PDF 功能用於在ASP.NET Core專案中整合PDF功能。
中介者模式是一種軟體設計模式,可以促進物件之間的互動,從而減少它們之間的直接依賴,促進鬆散耦合。 MediatR 提供了一種並不雄心勃勃的中介者實現,著重於簡單性和效率,以促進對象之間的通信。
MediatR 庫的核心概念是請求和多個處理器。 在請求點,一個對象封裝了操作或行動的細節,等待 MediatR 機制的處理。 每個請求由相應的處理器或處理方法負責處理,其中包含執行請求的業務邏輯。此結構對於實現命令查詢責任分離特別有用。(命令查詢責任分離)模式,其中讀寫操作的分離可以導致更具可維護性和可擴展的軟體架構。
要在 ASP.NET Core 專案中開始使用 MediatR,您首先需要安裝 MediatR 套件。 這可以透過在 Visual Studio 中的套件管理員主控台使用以下命令來完成:
Install-Package MediatR
安裝套件後,需要將 MediatR 添加到 ASP.NET Core 相依性注入容器中。 這通常是在您的 web 應用程式專案的 Program.cs 或 Startup.cs 文件中完成,具體取決於您使用的 ASP.NET Core 版本。 以下是如何在具有最小 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();
在程序類別中,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;}
}
在此範例中,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
}
}
通過遵循與設定 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);
}
}
在此控制器中,Create 動作方法通過調用 _mediator.Send 將 CreateUserCommand 發送給 MediatR。(命令).** MediatR 然後找到此命令的適當處理程式並執行它。 結果被返回並在同一過程中用於生成響應。
MediatR 也支持通知和行為。 通知是多個處理程序可以訂閱和處理的消息,使您的應用程式更具事件驅動性。 另一方面,行為類似於您 MediatR 請求的中介軟體,允許您實現橫切關注點,例如日誌記錄、驗證或事務管理。
IronPDF 是一個 C# 程式庫,專為需要簡單方式在其應用程式中建立、編輯和處理 PDF 檔案而不用擔心寫入問題的 .NET 開發人員設計。 開發人員可以通過只轉換網頁來生成 PDF,而無需接觸複雜的 API。將 HTML 代碼直接轉換為 PDF 格式. IronPDF 不僅限於建立 PDF; 它還提供編輯 PDF 的功能,例如添加文字、圖像和頁面,甚至可以在 PDF 文件中填寫和編輯表單。 開發人員可以全面處理 PDF,包括合併、拆分和使用密碼及權限保護 PDF 文件等任務。
IronPDF專門從事轉換HTML轉PDF精確地保留原有佈局和樣式。 這使其非常適合從基於網絡的內容(如報告、發票和文件)生成 PDF。 它支持將 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");
}
}
在此範例中,假設 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.");
}
}
在這段程式碼中,htmlContent 是一個變數,應包含您的媒體信息,以 HTML 格式呈現。 這可能包括文本、圖片、視頻鏈接或任何其他與 HTML 相容的內容。 IronPDF將把這個HTML內容轉換為PDF文件,保留HTML中指定的佈局和格式。
透過遵循本文章中描述的步驟,您現在應該對於將 MediatR 併入您的專案有了堅實的基礎,從基本的命令和查詢處理,到利用更高級的功能如通知和行為。 隨著您的應用程式不斷成長和演變,MediatR 提供的工具和模式可以幫助保持您的代碼庫清晰、可維護且可擴展。
在結論中,值得注意的是探索和整合不同的程式庫和工具,例如 IronPDF,可以進一步提升您的 .NET 專案。 IronPDF 提供一個免費試用進階 PDF 功能. 對於需要高級 PDF 功能的項目,IronPDF 的授權起價為 $749,為尋求擴展應用程式功能的 .NET 開發人員提供了一個強大的解決方案。