跳至页脚内容
.NET 帮助

.NET Aspire(开发者如何使用)

.NET Aspire是一个决定性、云就绪的堆栈框架,专为构建可观察的、生产就绪的分布式应用程序而量身定制。 通过一组NuGet包交付,Aspire高效地解决了各种云原生服务发现问题,旨在提供一致的设置模式。 在.NET云原生应用程序领域,标准涉及较小的、互联的组件或微服务在分布式应用程序中使用,与传统的单体代码结构不同。 这些应用程序通常依赖于许多服务,如数据库、消息系统、云资源和缓存。

在这种情况下,分布式应用程序利用跨多个节点的计算资源,例如在不同主机上运行的容器。 跨网络边界的有效通信对于这些节点协作响应最终用户至关重要。 具体来说,云原生分布式应用程序是分布式应用程序中的一个独特类别,利用了云原生应用程序基础设施中内在的可扩展性、弹性和可管理性。

在本文中,我们将讨论.NET Aspire组件来创建一个Web应用程序。 此外,我们将使用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 Web应用程序主页的网页。

这个主页将包含我们的.NET Aspire云原生应用程序栈,用于构建可观察的生产就绪.NET Aspire入门应用程序。

.NET Aspire(它如何为开发人员工作):图1 - Aspire主页

现在点击链接以与.NET进行交互。 现在点击.NET Aspire 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。 只需将以下命令复制并粘贴到包管理器控制台并按回车键:

Install-Package IronPdf

5.2. 将IronPDF与Aspire组件集成

将IronPDF与Aspire组件集成与将其与Blazor Web应用程序集成相同,因为Aspire组件可以将Blazor应用程序用作组件。 在此代码示例中,我们将更改Counter页面的代码来创建和下载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主体标签范围内的脚本标签中。 以下是要添加到项目中的代码。

<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 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 框架的关键组件是什么?

.NET Aspire 包含编排功能、为更快开发准备的预打包组件,以及集成在 Visual Studio 和 .NET CLI 内的工具,这些都是为了简化云原生应用程序的开发和管理而设计的。

.NET Aspire 在微服务架构方面提供了哪些优势?

.NET Aspire 提供一致的设置模式、强大的编排以及组件的无缝集成,使得在云原生环境中管理和部署微服务架构更加容易。

在哪里可以了解更多关于在 .NET 应用程序中使用 IronPDF 的信息?

要了解更多关于在 .NET 应用程序中使用 IronPDF 的信息,您可以访问 IronPDF 博客和文档以获取教程和示例。这些资源提供了有关有效集成和使用 IronPDF 的详细指南。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。