跳過到頁腳內容
.NET幫助

.NET Aspire(開發者的工作原理)

.NET Aspire 是一個決定性、雲準備堆棧框架,專為構建可觀察、準備好投產的分佈式應用程序而設計。 通過一組 NuGet 套件交付,Aspire 高效地解決了雲原生服務發現的各種考量,並旨在提供一致的設置模式。 在 .NET 雲原生應用程序的領域中,常規涉及較小的、相互鏈接的組件或微服務在分佈式應用中,偏離了傳統的單體代碼結構。 這些應用程序通常依賴於許多服務,例如資料庫、消息系統、雲資源和緩存。

在此背景下,分佈式應用程序利用跨多個節點的計算資源,例如運行於多個主機的容器。 這些節點之間的有效通信對於協作提供終端用戶的回應是必不可少的。 特別是,雲原生分佈式應用程序,作為分佈式應用程序中的一個獨特類別,充分利用雲原生應用基礎架構所固有的可擴展性、彈性和可管理性。

在本文中,我們將討論.NET Aspire的組件來創建Web應用程序。 同樣,我們將使用IronPDF庫來創建和下載 Apsire .NET 項目組件中的 PDF 文件。

1. .NET Aspire 简介

.NET Aspire應用作為一個有目標的倡議,旨在增強 .NET 生態系統中 .NET 雲原生應用程序的開發體驗。 它引入了一套凝聚力強且意見鮮明的工具和設計模式,旨在促進分佈式應用的無縫構建和運行。 .NET Aspire 啟動應用程序的核心目標包括:

  1. 協同: .NET Aspire協同助功能強大的協同多項目應用程序及其複雜的依賴關係。 此功能確保在.NET項目的多個組件之間順利執行和無縫連接。
  2. 組件:由 .NET Aspire 協同提供的組件被封裝在 NuGet 套件中,代表常用的服務,如本地 Redis 容器資源或 Postgres。 這些組件具有標準化的接口,確保與您的應用無縫集成和一致性。 通過利用這些預包裝的組件,開發人員可以加快開發進程,並使用 .NET Aspire 項目模板維持較高層次的互操作性和可配置的雲原生應用。
  3. 工具: .NET Aspire 啟動模板整合了一套全面的工具,旨在簡化開發工作流程。 項目模板和工具經驗被首次融入 Visual Studio 和 .NET CLI 中,令開發人員可以輕鬆創建和互動 .NET Aspire 應用。 這個全面的工具框架提升了生產力,並為開發和管理 .NET Aspire 應用程序配置及專案模板提供了一個統一的環境。

從本質上講, .NET Aspire 作為一個整體的解決方案,旨在解決特定的雲原生問題,例如協同、組件集成和工具,所有這一切都是為了提高.NET雲原生應用的構建和部署的效率及一致性。

2. 開始使用 .NET Aspire

在使用 .NET Aspire 前,請確保以下組件已在本地安裝:

  1. .NET 8.0: 確保您的系統上已安裝 .NET 8.0。
  2. .NET Aspire 工作負載:通過 VS 安裝程序或執行 dotnet workload install aspire 命令獲取 .NET Aspire 工作負載。
  3. 集成開發環境 (IDE) 或代碼編輯器: 在系統上預先安裝 Visual Studio 2022。

如果滿足所有這些要求,您就可以開始開發第一個處理應用的 .NET Aspire 組件。

3. 創建新的 .NET Aspire 項目

要創建.NET Aspire應用,請按以下步驟進行。

  1. 打開 Visual Studio,然後點擊創建新項目。
  2. 會出現一個新窗口。 在這個新窗口中,在搜索欄中搜索 Aspire。
  3. 下方會出現一個列表,從這個列表中選擇 Aspire 启动 apphost 项目和包引用,然後點擊下一步。
  4. 會出現一個新窗口。 在這個新窗口中寫入專案名稱,然後點擊下一步。
  5. 在此窗口中選擇目標框架,然後點擊創建按鈕。

幾秒鐘後將創建 .NET Aspire 應用,您就可以開始開發和定制。

4.運行和測試.NET Aspire應用程序

創建專案後,只需點擊運行按鈕,它將花費一些時間來創建構建,然後它將打開我們的 Aspire Web 應用程序主頁的網頁。

此主頁將包含我們的.NET Aspire雲原生應用程序堆棧,用於構建可觀察的準備出產的.NET Aspire啟動應用程序。

.NET Aspire (How it Works For Developers): 图 1 - Aspire 首页

現在點擊鏈接與 .NET 交互。 目前,請點擊 .NET Aspire Web 項目前端項目和包引用。 它將用不同的端口名稱打開新網頁。

.NET Aspire (How it Works For Developers): 图 2 - 新网页

5. 介紹 IronPDF C#

IronPDF 文件描述它是一個強大且多功能的 C# 庫,可以驅使開發人員毫不費力地將高級 PDF 生成和操作功能集成到他們的應用中。 這個由 Iron Software 開發的功能豐富的庫為在 C# 應用中直接創建、修改和渲染 PDF 文件提供了全面的工具。

通過 IronPDF,開發人員可以從各種來源無縫生成 PDF,例如 HTML、圖像以及現有文檔,同時精確控制格式和佈局。 無論是創建動態報告、將 HTML 內容轉換成 PDF,還是在現有文件上加註解,IronPDF 都簡化了 PDF 處理過程,對於尋求可靠有效解決方案以管理文件的 C# 開發者來說是不可或缺的資産。

5.1. 安裝 IronPDF

要無縫安裝 IronPDF,可利用 Visual Studio 內的 NuGet 包管理器。 指定安裝的包名為 IronPDF。 只需將以下命令複製並粘貼到包管理器控制台,然後按回車鍵:

Install-Package IronPdf

5.2. 将 IronPDF 集成到 Aspire 组件

將 IronPDF 集成到 Aspire 組件的方式與整合到 Blazor Web 應用一樣,因為 Aspire 組件可以將 Blazor 應用作為組件。 在此代碼示例中,我們將更改計數器頁面的代碼以創建和下載PDF文件。

打開 counter.razor 文件,並用以下代碼替換原代碼。

@page "/PrintPDF"
@rendermode InteractiveServer
@using IronPdf
<PageTitle>Print PDF</PageTitle>
<h1>IronPDF</h1>
<p role="status">Click on the button below to create and download the PDF file </p>
<button class="btn btn-primary" @onclick="IncrementCount">Print</button>
@code {
    private int currentCount = 0;

    /// <summary>
    /// Handles the click event of the "Print" button.
    /// This function will generate a PDF from an HTML string and prompt the user to download it.
    /// </summary>
    private void IncrementCount()
    {
        var renderer = new ChromePdfRenderer();
        // Create a PDF from an HTML string using C#
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        // Export to a file using JavaScript Interop to initiate download
        JSRuntime.InvokeVoidAsync("saveAsFile", "output.pdf", Convert.ToBase64String(pdf.Stream.ToArray()));
    }
}
@page "/PrintPDF"
@rendermode InteractiveServer
@using IronPdf
<PageTitle>Print PDF</PageTitle>
<h1>IronPDF</h1>
<p role="status">Click on the button below to create and download the PDF file </p>
<button class="btn btn-primary" @onclick="IncrementCount">Print</button>
@code {
    private int currentCount = 0;

    /// <summary>
    /// Handles the click event of the "Print" button.
    /// This function will generate a PDF from an HTML string and prompt the user to download it.
    /// </summary>
    private void IncrementCount()
    {
        var renderer = new ChromePdfRenderer();
        // Create a PDF from an HTML string using C#
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        // Export to a file using JavaScript Interop to initiate download
        JSRuntime.InvokeVoidAsync("saveAsFile", "output.pdf", Convert.ToBase64String(pdf.Stream.ToArray()));
    }
}
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: @page "/PrintPDF" @rendermode InteractiveServer using IronPdf <PageTitle> Print PDF</PageTitle> <h1> IronPDF</h1> <p role="status"> Click on the button below to create and download the PDF file </p> <button class="btn btn-primary" onclick="IncrementCount"> Print</button> @code
"btn btn-primary" onclick="IncrementCount"> Print</button> code
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Friend @page "/PrintPDF" @rendermode InteractiveServer using IronPdf <PageTitle> Print PDF</PageTitle> <h1> IronPDF</h1> <p role="status"> Click on the button below to create and download the PDF file </p> <button Class="btn btn-primary" onclick
"status"> Click on the button below [to] create [and] download the PDF file </p> <button Class="btn btn-primary" onclick
Private Private Friend page "/PrintPDF" rendermode InteractiveServer [using] IronPdf (Of PageTitle) Print PDF</PageTitle> (Of h1) IronPDF</h1> <p role="status"> Click on the button below [to] create [and] download the PDF file </p> <button Class
	Private currentCount As Integer = 0

	''' <summary>
	''' Handles the click event of the "Print" button.
	''' This function will generate a PDF from an HTML string and prompt the user to download it.
	''' </summary>
	Private Sub IncrementCount()
		Dim renderer = New ChromePdfRenderer()
		' Create a PDF from an HTML string using C#
		Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
		' Export to a file using JavaScript Interop to initiate download
		JSRuntime.InvokeVoidAsync("saveAsFile", "output.pdf", Convert.ToBase64String(pdf.Stream.ToArray()))
	End Sub
End Class
$vbLabelText   $csharpLabel

然後寫入JavaScript代碼來下載PDF文件。將此代碼寫入HTML body標籤範圍內的腳本標籤中。 以下是要添加到您的項目中的代碼。

<script type="text/javascript">
    function saveAsFile(filename, bytesBase64) {
        if (navigator.msSaveBlob) {
            //Download document in Edge browser
            var data = window.atob(bytesBase64);
            var bytes = new Uint8Array(data.length);
            for (var i = 0; i < data.length; i++) {
                bytes[i] = data.charCodeAt(i);
            }
            var blob = new Blob([bytes.buffer], { type: "application/octet-stream" });
            navigator.msSaveBlob(blob, filename);
            window.navigator.msSaveOrOpenBlob(blob);
        }
        else {
            var link = document.createElement('a');
            link.download = filename;
            link.href = "data:application/octet-stream;base64," + bytesBase64;
            document.body.appendChild(link); // Needed for Firefox
            link.click();
            document.body.removeChild(link);
        }
    }
</script>
<script type="text/javascript">
    function saveAsFile(filename, bytesBase64) {
        if (navigator.msSaveBlob) {
            //Download document in Edge browser
            var data = window.atob(bytesBase64);
            var bytes = new Uint8Array(data.length);
            for (var i = 0; i < data.length; i++) {
                bytes[i] = data.charCodeAt(i);
            }
            var blob = new Blob([bytes.buffer], { type: "application/octet-stream" });
            navigator.msSaveBlob(blob, filename);
            window.navigator.msSaveOrOpenBlob(blob);
        }
        else {
            var link = document.createElement('a');
            link.download = filename;
            link.href = "data:application/octet-stream;base64," + bytesBase64;
            document.body.appendChild(link); // Needed for Firefox
            link.click();
            document.body.removeChild(link);
        }
    }
</script>
JAVASCRIPT

只需運行該代碼後,它將看起來像下面的圖像。

.NET Aspire (How it Works For Developers): 图 3 - Blazor

要創建和下載 PDF 文件,請點擊打印按鈕。 它會創建並下載名為 output.pdf 的 PDF 文件。

.NET Aspire (How it Works For Developers): 图 4 - PDF 下载

6. 結論

.NET Aspire 作為關鍵框架,專為在雲環境中開發堅固、可觀察且分佈的應用而設計。 通過提供一套豐富的工具和設計模式,.NET Aspire 簡化了構建雲原生應用的複雜性,提供無縫的協同、組件集成和用戶友好的工具框架。 著重於可擴展性、彈性及可管理性,.NET Aspire 與向微服務及分佈式架構的範式轉移保持一致。

隨著開發人員踏上他們的 .NET Aspire 之旅,他們可以從協同的多項目應用程序到被封裝在 NuGet 包中的標準化組件中獲得一套完整的功能。 通過滿足先決條件和遵循指南中直接的步驟,開發人員可以輕鬆創建、運行和測試 .NET Aspire 應用程序。

此外,將 IronPDF 集成到 Aspire 組件展示了框架的可擴展性和多功能性,使開發人員可以無縫融入其雲原生應用中的高級 PDF 生成和操作功能。 總之,.NET Aspire 以其明確的目標及用戶友好的方法,將自身定位為對於尋求有效及一致解決方案以在 .NET 環境中構建和部署雲原生應用的開發人員來說是一筆寶貴的資產。

如需有關如何使用IronPDF 與 Blazor Web 應用的詳細教程,請查閲 IronPDF 的博客教程。 要獲得 IronPDF 的免费网站试用,請訪問IronPDF 授權頁面以獲取您的免費試用證書。

常見問題解答

怎樣在 C# 中將 HTML 轉換為 PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字符串轉換為 PDF。您還可以使用 RenderHtmlFileAsPdf 將 HTML 文件轉換為 PDF。

.NET Aspire 在雲原生應用開發中的目的為何?

.NET Aspire 旨在幫助開發人員構建可觀察的、準備好量產的分散式應用程序。它提供了協作編排工具、組件整合,以及全面的設工具以管理雲原生應用程式中的微服務架構。

IronPDF 如何與 .NET Aspire 專案整合?

IronPDF 可以整合到 .NET Aspire 專案中,提供進階的 PDF 生成和操作功能。這允許開發人員在他們的雲原生應用中順利創建和管理 PDF。

IronPDF 在網頁應用中的一些常見用途是什麼?

IronPDF 常在網頁應用中用於生成 PDF 報告、將 HTML 內容轉換為 PDF,以及管理文件工作流程。它為開發人員提供了一套強大的工具來處理 .NET 應用程式中的 PDF 任務。

使用 IronPDF 在 .NET 專案中發生問題時,我該如何解決?

為了解決 IronPDF 的問題,確保 NuGet 包已正確安裝,且所有依賴項都被正確引用。檢查控制台中的任何錯誤信息,並查閱 IronPDF 文件或聯絡支援以獲取進一步指導。

.NET Aspire 框架的核心組件有哪些?

.NET Aspire 包括協作編排能力、更快捷開發的預包裝組件,以及集成於 Visual Studio 和 .NET CLI 的工具,這些都是設計來簡化雲原生應用程序的開發和管理。

.NET Aspire 在微服務架構方面有什麼優勢?

.NET Aspire 提供了一致的設定範式、強大的協作編排和無縫的組件整合,使得在雲原生環境中更容易管理和部署微服務架構。

我可以在哪裡學習更多關於將 IronPDF 用於 .NET 應用的資訊?

要學習更多關於將 IronPDF 用於 .NET 應用的資訊,您可以參閱 IronPDF 的部落格和文件,其中有教程和範例。這些資源提供了關於有效整合和使用 IronPDF 的詳細指導。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。