.NET 幫助

.NET Aspire(它如何為開發者工作)

發佈 2024年1月4日
分享:

.NET Aspire 是一個決定性的、雲就緒的堆棧框架,專為構建可觀測的生產就緒分佈式應用程序而設計。通過一組 NuGet 套件提供,Aspire 有效地解決了各種雲原生服務發現考量,並旨在提供一致的設置模式。在 .NET 雲原生應用程序的領域中,常態是分佈式應用中的較小、互相關聯的組件或微服務,這與傳統的單體代碼結構有所不同。這些應用程序通常依賴於許多服務,如數據庫、消息系統、雲資源和緩存。

在這種背景下,分佈式應用利用橫跨多個節點的計算資源,如運行在不同主機上的容器。跨網路邊界的有效通信對於這些節點協作地向最終用戶提供回應至關重要。具體而言,雲原生分佈式應用是分佈式應用中的一個獨特類別,利用雲原生應用基礎設施中固有的可擴展性、彈性和可管理性。

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

1. 介紹 .NET Aspire

.NET Aspire 應用程式作為一項有目的的倡議,旨在提升.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. 集成開發環境 (Integrated Developer Environment) (集成開發環境) 或代碼編輯器:** 系統應事先安裝 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 雲原生應用程式棧,用於構建可觀察的、準備生產的 .NET Aspire 入門應用程式。

.NET Aspire(對開發人員如何運作):圖 1 - Aspire 主頁

現在點擊連結以操作.NET。現在點擊Web前端專案和套件引用連結。它將開啟具有不同端口名稱的新網頁。

.NET Aspire(對於開發者的工作方式):圖 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。只需將以下命令複製並粘貼到套件管理器控制台中,然後按 Enter 鍵:

Install-Package IronPdf

5.2. 整合 IronPDF 與 Aspire 元件

整合 IronPDF 與 Aspire 元件與整合 Blazor 網頁應用程式相同,因為 Aspire 元件可以使用 Blazor 應用程式作為元件。在此代碼範例中,我們將修改 Counter Page 的代碼以生成並下載 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;
    private void IncrementCount()
    {
        var renderer = new ChromePdfRenderer();
        // Create a PDF from a HTML string using C#
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        // Export to a file or Stream
        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;
    private void IncrementCount()
    {
        var renderer = new ChromePdfRenderer();
        // Create a PDF from a HTML string using C#
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        // Export to a file or Stream
        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
	Private Sub IncrementCount()
		Dim renderer = New ChromePdfRenderer()
		' Create a PDF from a HTML string using C#
		Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
		' Export to a file or Stream
		JSRuntime.InvokeVoidAsync("saveAsFile", "output.pdf", Convert.ToBase64String(pdf.Stream.ToArray()))
	End Sub
End Class
VB   C#

之後,編寫 JavaScript 代碼以下載 PDF 文件。把這段代碼寫在 HTML body 標籤範圍內的 script 標籤中。以下是需要添加到您的項目中的代碼。

<!DOCTYPE html>
<html lang="zh-TW">
<head>
    <meta charset="UTF-8">
    <title>Download PDF</title>
</head>
<body>
    <button id="downloadPdf">下載 PDF</button>
    <script>
        document.getElementById('downloadPdf').addEventListener('click', function() {
            var link = document.createElement('a');
            link.href = 'path/to/your/pdf/file.pdf';
            link.download = 'file.pdf';
            link.click();
        });
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="zh-TW">
<head>
    <meta charset="UTF-8">
    <title>Download PDF</title>
</head>
<body>
    <button id="downloadPdf">下載 PDF</button>
    <script>
        document.getElementById('downloadPdf').addEventListener('click', function() {
            var link = document.createElement('a');
            link.href = 'path/to/your/pdf/file.pdf';
            link.download = 'file.pdf';
            link.click();
        });
    </script>
</body>
</html>
HTML
<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>
<script type="text/javascript"> [function] saveAsFile(filename, bytesBase64)
If True Then
		If navigator.msSaveBlob Then
			'Download document in Edge browser
			Dim data = window.atob(bytesBase64)
			Dim bytes = New Uint8Array(data.length)
			For i = 0 To data.length - 1
				bytes (i) = data.charCodeAt(i)
			Next i
			Dim blob As New Blob((bytes.buffer), { type:= "application/octet-stream" })
			navigator.msSaveBlob(blob, filename)
			window.navigator.msSaveOrOpenBlob(blob)
		Else
			Dim link = document.createElement("a"c)
			link.download = filename
			link.href = "data:application/octet-stream;base64," & bytesBase64
			document.body.appendChild(link) ' Needed for Firefox
			link.click()
			document.body.removeChild(link)
		End If
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'</script>
VB   C#

只需執行該程式碼,之後它將看起來像下面的圖像。

.NET Aspire(對開發人員的工作方式):圖3 - Blazor

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

.NET Aspire(適用於開發人員的工作方式):圖 4 - PDF下載

6. 結論

.NET Aspire 是一個關鍵的框架,專門設計用於在雲端環境中開發強大、可觀察和分散的應用程序。通過提供一整套工具和設計模式,.NET Aspire 簡化了構建原生雲應用程序的複雜性,提供無縫的編排、組件集成和用戶友好的工具框架。專注於可擴展性、彈性和可管理性,.NET Aspire 與微服務和分散架構的範式轉變保持一致。

當開發人員開始使用 .NET Aspire,他們可以訪問一套完整的功能,從多項目應用的編排到以 NuGet 包封裝的標準化組件。通過遵守前提條件並按照指南中概述的簡單步驟,開發人員可以輕鬆地創建、運行和測試 .NET Aspire 應用程序。

此外,將 IronPDF 集成到 Aspire 組件中展示了框架的可擴展性和多功能性,使開發人員能夠無縫地將高級 PDF 生成和操作功能集成到其原生雲應用程序中。總體而言,.NET Aspire 以其明確的目標和用戶友好的方法,成為開發人員尋求在 .NET 生態系統中構建和部署原生雲應用程序的高效一致解決方案的一個有價值的資產。

有關完整的使用教程 IronPDF 請造訪與Blazor網頁應用程式 這裡若要獲取IronPDF的免費試用版,請訪問此處以獲取您的 免費試用授權.

< 上一頁
C# 保護 (開發人員如何使用)
下一個 >
Automapper C#(對開發人員的作用原理)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >