跳至頁尾內容
開發者更新

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

.NET Aspire 是一個決定性的雲端就緒堆疊框架,專為構建可觀察、適合生產環境的分散式應用程式而設計。 通過一組NuGet套件交付,Aspire高效地處理各種雲端原生服務發現考量,旨在提供一致的設置模式。 在.NET雲端原生應用程式的領域中,規範涉及較小且相互連結的組件或微服務於分散式應用中,與傳統的單體程式碼結構不同。 這些應用程式通常依賴於眾多服務,如資料庫、消息系統、雲資源和快取。

在這種情況下,分散式應用程式利用跨多個節點的計算資源,例如在不同主機上運行的容器。 跨網路邊界的有效通信對這些節點共同提供給最終使用者的回應至關重要。 具體而言,雲端原生分散式應用程式是分散式應用程式中的一個獨特類別,利用雲端原生應用基礎設施內在的可擴展性、彈性和可管理性。

在本文中,我們將討論.NET Aspire元件以建立網頁應用程式。 此外,我們將使用IronPDF程式庫來建立和下載Aspire .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 Workload: 使用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雲端原生應用程式堆疊,用於構建可觀察的准生產就緒的.NET Aspire入門應用程式。

.NET Aspire(開發者如何工作):圖1 - Aspire主頁

現在點擊連結以與.NET互動。 目前,點擊.NET Aspire網頁前端專案和套件引用。 它將打開一個使用不同端口名稱的新網頁。

.NET Aspire(開發者如何工作):圖2 - 新網頁

5. Introducing IronPDF C

IronPDF文件將其描述為一個功能強大且靈活的C#庫,使開發者能夠輕鬆地將先進的PDF生成和操作功能整合到他們的應用程式中。 由Iron Software開發,這個功能豐富的庫提供了一整套工具,用於直接在C#應用程式中建立、修改和呈現PDF文件。

使用IronPDF,開發者可以從HTML、圖像和現有文件等各種來源無縫生成PDF,同時精確控制格式和佈局。 無論是建立動態報告、將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;

    /// <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(開發者如何工作):圖3 - Blazor

要建立和下載PDF文件,請點擊列印按鈕。 它將建立並下載名為output.pdf的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的部落格教程。 要獲得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任務。

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

要排除IronPDF問題,請確保正確安裝了NuGet套件,並正確引用了所有依賴項。檢查控制台中的任何錯誤資訊,並查閱IronPDF文件或支援以獲取進一步指導。

.NET Aspire框架的主要元件是什麼?

.NET Aspire包括編排能力,加速開發的預包裝元件,以及與Visual Studio和.NET CLI整合的工具,所有這些都旨在加快雲端原生應用程式的開發和管理。

.NET Aspire在微服務架構中提供什麼優勢?

.NET Aspire提供一致的設置模式、強大的編排和元件的無縫整合,使管理和部署微服務架構在雲端原生環境中變得更加輕鬆。

我可以在哪裡了解更多關於在.NET應用程式中使用IronPDF的資訊?

要了解更多關於在.NET應用程式中使用IronPDF的資訊,您可以存取IronPDF部落格和文件以獲取教程和範例。這些資源提供有關整合和有效使用IronPDF的詳細指導。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話