跳過到頁腳內容
.NET幫助

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

.NET Aspire 是專為建構可觀察、可生產的分散式應用程式量身打造的決定性雲端就緒堆疊框架。 Aspire 透過一套 NuGet 套件提供,能有效解決各種雲端原生服務發現的考量,並致力於提供一致的設定模式。 在 .NET cloud-native 應用程式的領域中,規範涉及分散式應用程式中較小且相互連結的元件或微服務,偏離了傳統的單一程式碼架構。 這些應用程式通常會依賴許多服務,例如資料庫、訊息傳輸系統、雲端資源和快取。

在這種情況下,分散式應用程式會利用跨越多個節點的計算資源,例如在不同主機上運作的容器。 跨越網路邊界的有效溝通對於這些節點協同提供回應給終端使用者是非常重要的。 具體而言,雲原生分散式應用程式是分散式應用程式中的一個獨特類別,它充分利用了雲原生應用程式基礎架構中固有的可擴展性、彈性和可管理性。

在本文中,我們將討論 .NET Aspire 元件來建立網頁應用程式。 此外,我們將在 Aspire .NET 專案元件中使用 IronPDF library 來建立和下載 PDF 檔案。

1..NET Aspire 簡介。

.NET Aspire 應用程式是一項有目的性的計畫,目的在於增進 .NET 生態系統中 .NET cloud-native 應用程式的開發經驗。 .NET Aspire 是一套專門用於開發分散式應用程式的工具,它介紹了一套具凝聚力且有主見的工具與設計模式,可協助分散式應用程式的無縫建構與運作。.NET Aspire Starter 應用程式的核心目標包含下列內容:

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 Starter apphost 專案和套件參考,然後按一下下一步。 4.將會出現新視窗。 在此新視窗中寫入專案名稱,然後按一下下一步。 5.在此視窗中選擇目標框架,然後按一下建立按鈕。

.NET Aspire 應用程式將在幾秒鐘內建立,您就可以開始進行開發與客製化了。

4.執行和測試 .NET Aspire 應用程式。

專案建立完成後,只要按一下執行按鈕,就會花一些時間建立建置,之後就會開啟 Aspire 網路應用程式首頁的網頁。

本首頁將包含我們的 .NET Aspire Cloud-native 應用程式堆疊,用於建立可觀察的生產就緒 .NET Aspire 開發應用程式。

.NET Aspire (How it Works For Developers):圖 1 - Aspire 首頁

現在點擊連結與 .NET 進行互動。 目前請點選 .NET Aspire Web 前端專案與套件參考。 它會以不同的 port 名稱開啟新網頁。

.NET Aspire (How it Works For Developers):圖 2 - 新網頁

5.介紹 IronPDF C#。

IronPDF說明文件將其描述為功能強大且用途廣泛的 C# 函式庫,可讓開發人員毫不費力地將先進的 PDF 產生與處理功能整合至其應用程式中。 此功能豐富的函式庫由 Iron Software 所開發,提供一套全面的工具,可直接在 C# 應用程式中建立、修改及渲染 PDF 文件。

使用 IronPdf,開發人員可以從 HTML、圖片和現有文件等各種來源無縫生成 PDF,同時保持對格式和版面的精確控制。 無論是建立動態報表、將 HTML 內容轉換為 PDF,或是在現有文件中加入註解,IronPDF 都能簡化 PDF 的處理流程,對於尋求可靠、高效解決方案以滿足文件管理需求的 C# 開發人員而言,它是無價的資產。

5.1.安裝 IronPdf

若要無縫安裝 IronPDF,請利用 Visual Studio 內的 NuGet Package Manager。 指定安裝的套件名為 IronPdf。 只需將下列指令複製並貼入套件管理員控制台,然後按下 Enter 即可:

Install-Package IronPdf

5.2.將 IronPDF 與 Aspire Component 整合。

將 IronPDF 與 Aspire 元件整合,就等同於與 Blazor 網路應用程式整合,因為 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 標籤中。 以下是要加入專案的程式碼。

<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 檔案,請按一下列印按鈕。 它將建立並下載 PDF 檔案,檔案名稱為 output.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 在 Web 應用程式中有哪些常見用途?

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

在 .NET 專案中使用 IronPDF 時,如何排除故障?

若要排除 IronPDF 問題,請確認已正確安裝 NuGet 套件,並正確引用所有相依性。檢查主控台中是否有任何錯誤訊息,並諮詢 IronPDF 文件或支援以獲得進一步指導。

.NET Aspire Framework 的主要組成部分是什麼?

.NET Aspire 包括協調功能、可加快開發速度的預打包元件,以及 Visual Studio 和 .NET CLI 內的整合工具,所有這些都是為了簡化雲端原生應用程式的開發和管理而設計。

.NET Aspire 為微服務架構提供哪些優勢?

.NET Aspire 提供一致的設定模式、強大的協調功能,以及元件的無縫整合,讓雲原生環境中的微服務架構更容易管理與部署。

我在哪裡可以進一步了解 IronPDF for .NET 應用程式?

若要瞭解關於 IronPDF 與 .NET 應用程式搭配使用的更多資訊,您可以造訪 IronPDF 的部落格與文件,以取得教學與範例。這些資源提供了有效整合和使用 IronPDF 的詳細指導。

Jacob Mellor, Team Iron 首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。

Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。

他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。