在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
.NET Aspire 是一个决定性的、云就绪的堆栈框架,专为构建可观察的、生产就绪的分布式应用程序而量身定制。 Aspire 通过一套 NuGet 软件包交付,可有效解决各种云原生服务发现问题,并旨在提供一致的设置模式。 在 .NET 云原生应用程序领域,规范涉及分布式应用程序中更小、相互关联的组件或微服务,脱离了传统的单体代码结构。 这些应用程序通常依赖数据库、消息系统、云资源和缓存等众多服务。
在这种情况下,分布式应用程序利用跨越多个节点的计算资源,例如在不同主机上运行的容器。 跨越网络边界的有效沟通对于这些节点协同向最终用户提供响应至关重要。 具体来说,云原生分布式应用是分布式应用中的一个独特类别,它充分利用了云原生应用基础设施固有的可扩展性、弹性和可管理性。
在本文中,我们将讨论.NET Aspire创建网络应用程序的组件。 此外,我们将使用IronPDF 库在 Aspire .NET 项目组件中创建和下载 PDF 文件。
.NET Aspire.NET应用程序是一项有目的的举措,旨在增强.NET生态系统中.NET云原生应用程序的开发体验。 .NET Aspreme》是一本关于.NET开发工具和设计模式的书籍,它介绍了一套具有凝聚力和观点性的工具和设计模式,旨在促进分布式应用程序的无缝构建和运行。.NET Aspire 入门应用程序的核心目标包括:
协调: .NET Aspire 协调辅助工具具有强大的功能,可协调多项目应用程序及其错综复杂的依赖关系。 该功能可确保 .NET 项目不同组件之间的顺利执行和无缝连接。
组件: .NET Aspire 协调提供的组件封装在 NuGet 包中,代表了广泛使用的服务,如本地 Redis 容器资源或 Postgres。 这些组件的特点是接口标准化,可确保与您的应用程序进行一致、无缝的集成。 通过利用这些预打包组件,开发人员可以加快开发过程,并使用 .NET Aspire 项目模板保持更高水平的互操作性和可配置的云原生应用程序。
工具: .NET Aspire 入门模板包含一套全面的工具,专门用于简化开发工作流程。 项目模板和工具体验经过深思熟虑后集成到 Visual Studio 和 .NET CLI 中,使开发人员能够毫不费力地创建 .NET Aspire 应用程序并与之交互。 这个包容性的工具框架提高了工作效率,并为开发和管理 .NET Aspire 应用程序配置和项目模板提供了一个统一的环境。
从本质上讲,.NET Aspire 是一个整体解决方案,解决了特定云原生问题的关键方面,如协调、组件集成和工具,所有这些都旨在提高构建和部署 .NET 云原生应用程序的效率和一致性。
在使用 .NET Aspire 之前,请确保在本地安装了以下组件:
.NET 8.0: 确保您的系统已安装 .NET 8.0。
.NET Aspire 工作负载: 通过使用 VS 安装程序或执行 "dotnet workload install aspire "命令获取 .NET Aspire 工作负载。
集成开发人员环境(IDE)或代码编辑器: 应事先在系统上安装 Visual Studio 2022。
如果满足了所有这些要求,您就可以开始开发第一个处理应用程序的 .NET Aspire 组件了。
要创建 .NET Aspire 应用程序,请按照以下步骤操作。
打开 Visual Studio,点击创建新项目。
一个新窗口将会出现。 在新窗口的搜索栏中搜索 Aspire。
下面将显示一个列表,从中选择 Aspire Starter apphost 项目和软件包引用,然后单击 "下一步"。
一个新窗口将会出现。 在新窗口中写入项目名称,然后点击下一步。
在此窗口中选择目标框架,然后点击创建按钮。
.NET Aspire 应用程序将在几秒钟内创建,您就可以开始开发和定制了。
项目创建完成后,只需点击运行按钮,创建构建需要一些时间,之后将打开 Aspire Web 应用程序主页的一个网页。
本主页将包含我们的 .NET Aspire Cloud-native 应用程序栈,用于构建可观察的生产就绪型 .NET Aspire 启动应用程序。
现在点击链接与 .NET 互动。 现在请点击 .NET Aspire Web 前端项目和软件包参考。 它将以不同的端口名称打开新网页。
IronPDF 文档将其描述为一个功能强大、用途广泛的 C# 库,使开发人员能够毫不费力地将高级 PDF 生成和处理功能集成到他们的应用程序中。 该库由 Iron Software 开发,功能丰富,提供了一套全面的工具,可直接在 C# 应用程序中创建、修改和渲染 PDF 文档。
通过 IronPDF,开发人员可以从 HTML、图像和现有文档等各种来源无缝生成 PDF,同时保持对格式和布局的精确控制。 无论是创建动态报告、将 HTML 内容转换为 PDF,还是为现有文档添加注释,IronPDF 都能简化 PDF 处理流程,使其成为 C# 开发人员寻求可靠高效的文档管理解决方案的宝贵资产。
要无缝安装 IronPdf,请利用 Visual Studio 中的 NuGet 包管理器。 指定安装包的标题为 IronPDF。 只需将以下命令复制并粘贴到软件包管理器控制台,然后点击回车即可:
Install-Package IronPdf
将 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;
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 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 an 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 an 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
然后编写下载 PDF 文件的 JavaScript 代码。将代码写入 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>
只需运行代码,之后就会出现类似下图的效果。
要创建并下载 PDF 文件,请单击 "打印 "按钮。 它将创建并下载名为 output.pdf 文件的 PDF 文件。
.NET Aspire 是一个举足轻重的框架,专为在云环境中开发稳健、可观察和分布式应用程序而设计。 通过提供一套具有凝聚力的工具和设计模式,.NET Aspire 简化了与构建云原生应用程序相关的复杂性,提供了无缝协调、组件集成和用户友好的工具框架。 .NET Aspire 注重可扩展性、弹性和可管理性,符合向微服务和分布式架构转变的模式。
当开发人员开始使用 .NET Aspire 时,他们将获得一套全面的功能,从协调的多项目应用程序到封装在 NuGet 包中的标准化组件。 开发人员只需遵守先决条件并按照指南中列出的简单步骤,就能轻松创建、运行和测试 .NET Aspire 应用程序。
此外,将 IronPDF 集成到 Aspire 组件中展示了该框架的可扩展性和多功能性,使开发人员能够将高级 PDF 生成和操作功能无缝集成到他们的云原生应用程序中。 总之,.NET Aspire 目标明确,使用方便,是开发人员在 .NET 生态系统中构建和部署云原生应用程序时寻求高效、一致的解决方案的宝贵资产。
有关使用使用 Blazor 的 IronPdf网络应用访问 IronPDF 的博客教程。 要获得 IronPDF 的免费试用版,请访问IronPDF 许可页面获取免费试用许可证。