跳至页脚内容
.NET 帮助

tye .NET(开发人员如何使用)

在现代软件开发领域,构建和部署分布式应用程序可能是复杂且具有挑战性的。 管理多个服务、依赖项和部署环境通常需要大量的努力和协调。 为了解决这些挑战,微软推出了Project Tye,这是一种开发者工具,旨在简化 .NET 应用程序的开发、测试和部署。 在本文中,我们将深入探讨Tye的世界,探索其功能、优势以及对 .NET 开发者的实际应用。 We will also learn about IronPDF, a PDF generation library from Iron Software, and use Tye and IronPDF in a practical example.

理解 Project Tye .NET

Tye 是一个开源的实验性开发者工具,通过最少的配置简化 .NET 项目应用程序的构建、测试和部署过程。 由微软工程团队开发,Tye 旨在通过提供一致的、意见化的方法来简化开发工作流程,以管理微服务及其依赖。 在其核心,Tye 采用了容器化、编排和开发者生产力的原则,以实现无缝的应用程序开发和部署。

Tye .NET 的关键特性

1. 服务发现和依赖管理

Tye 会自动检测和管理 .NET 应用程序中服务之间的依赖关系。 它利用项目元数据和 Docker 容器来推断服务关系,使得协调微服务之间的通信和编排变得更容易。 这使得在多个项目中开发微服务变得更加容易。

2. 集成开发体验

Tye 无缝集成了 Visual Studio 和 Visual Studio Code,提供了 .NET 开发者熟悉的开发环境。 它为应用程序组件提供了调试、日志和监控工具,使得开发过程中的快速迭代和故障排除成为可能。

3. Docker 容器化

Tye 采用 Docker 容器作为 .NET 应用程序的部署单位。 它根据项目配置自动生成每个服务的 Dockerfile,促进跨开发和生产环境的一致且可重复的容器构建,从而简化了微服务的测试和部署。

4. 本地开发环境

Tye 通过在单一环境中编排依赖和服务简化了本地开发。 开发者只需一个命令即可启动整个应用程序栈,消除了手动设置和配置依赖项的需要。

5. 部署到 Kubernetes

Tye 提供了对 .NET 应用程序部署到 Kubernetes 集群的内建支持。 它根据项目规范生成 Kubernetes manifests 和 Helm charts,简化了部署过程,并促进了云原生环境中容器编排的最佳实践。

6. 监控和可观测性

Tye 集成了热门的可观测性工具,如 Prometheus 和 Grafana,为应用程序性能和健康状况提供洞察。 它暴露了应用程序组件的指标和日志,使开发人员能够实时监控资源利用率、识别瓶颈并诊断问题。

Tye 的实际应用

让我们探讨一些 Tye 可以简化 .NET 应用程序开发和部署的实际场景:

1. 本地开发环境

# Start Tye in local development mode with the tye run command
tye run
# Start Tye in local development mode with the tye run command
tye run
SHELL

2. Docker 容器化

# Build Docker images for Tye services with the available solution file
tye build
# Build Docker images for Tye services with the available solution file
tye build
SHELL

3. 部署到 Kubernetes

# Deploy Tye application to Kubernetes cluster 
tye deploy --interactive # deploy microservices and distributed applications
# Deploy Tye application to Kubernetes cluster 
tye deploy --interactive # deploy microservices and distributed applications
SHELL

开始使用 Tye

开始使用 Tye:

  1. 在您的机器上安装 .NET Core 3.1(不支持更高版本)。

  2. 使用以下命令将 Tye 安装为全局工具:
dotnet tool install -g Microsoft.Tye --version "0.2.0-alpha.20258.3"
dotnet tool install -g Microsoft.Tye --version "0.2.0-alpha.20258.3"
SHELL
  1. 为您的微服务创建一个新文件夹。

  2. 导航到该文件夹并创建一个前端项目(例如,Razor Pages):
mkdir microservices
cd microservices
dotnet new razor -n frontend  # frontend service
mkdir microservices
cd microservices
dotnet new razor -n frontend  # frontend service
SHELL
  1. 运行前端项目,启动 Tye 仪表板:
tye run frontend  # run frontend project
tye run frontend  # run frontend project
SHELL

这将构建、运行并监控前端应用程序。 您可以访问 http://localhost:8000 的 Tye 仪表板以查看服务的状态。

Tye 的配置架构

Tye 有一个可选的配置文件,tye.yaml,允许自定义设置。 这个 YAML 文件包括所有项目和外部依赖。 如果您有现有解决方案,Tye 将自动填充您当前的所有项目。

要初始化此 YAML 文件,请导航到微服务目录并运行以下命令以生成默认的 tye.yaml 文件:

tye init
tye init
SHELL

一个 tye.yaml 文件被创建如下所示:

name: myawesomeapplication
services:
- name: backendtest
  project: backend/backend.csproj
  bindings:
  - port: 7000
- name: frontendtest
  project: frontend/frontend.csproj
  replicas: 2
  bindings:
  - port: 8000
- name: workertest
  project: worker/worker.csproj
- name: rabbit
  image: rabbitmq:3-management
  bindings:
    - port: 5672
      protocol: rabbitmq
name: myawesomeapplication
services:
- name: backendtest
  project: backend/backend.csproj
  bindings:
  - port: 7000
- name: frontendtest
  project: frontend/frontend.csproj
  replicas: 2
  bindings:
  - port: 8000
- name: workertest
  project: worker/worker.csproj
- name: rabbit
  image: rabbitmq:3-management
  bindings:
    - port: 5672
      protocol: rabbitmq
YAML

使用 Tye 的好处

  1. 简化的开发工作流程:Tye通过提供统一的工具集在本地构建、测试和调试 .NET 应用程序,从而简化了开发工作流程。
  2. 加速上市时间:通过自动化服务发现、依赖管理和容器化等常见任务,Tye 减少了将应用程序部署到生产环境所需的时间和精力。
  3. 改进的协作:Tye 通过提供一个共同的平台来管理应用程序的依赖项和部署配置,从而促进开发、运营和 DevOps 团队之间的协作。
  4. 云原生就绪:Tye 为 .NET 应用程序提供了必要的工具和实践,以便在 Kubernetes 等云原生环境中运行,使得组织能够自信地采纳现代化基础设施范式。
  5. 社区支持和贡献:作为一个微软支持的开源项目,Tye 受益于一个活跃的贡献者和用户社区,他们积极为其发展、文档和生态系统做出贡献。

Project Tye 许可证

Project Tye 附有 MIT 许可证,可免费用于开发和商业用途。

IronPDF 简介

tye .NET(开发者如何运作):图 1 - IronPDF for .NET: The C# PDF Library

IronPDF 是一个强大的 C# 库,旨在从 HTML、CSS、图像和 JavaScript 创建、编辑和签署 PDF。 它提供商用级别性能,内存占用低。

IronPDF 的主要功能

1. HTML 到 PDF 转换

将 HTML 文件、HTML 字符串和 URL 转换为 PDF。 例如,使用 Chrome PDF 渲染器将网页渲染为 PDF。

2. 跨平台支持

兼容各种 .NET 平台,包括 .NET Core、.NET Standard 和 .NET Framework。 支持 Windows、Linux 和 macOS。

3. 编辑和签名

设置属性、通过密码和权限添加安全性,以及将数字签名应用于 PDF。

4. 页模板和设置

自定义 PDF 中的页眉、页脚、页码和可调边距。 支持响应式布局和自定义纸张大小。

5. 标准合规性

符合 PDF 标准,如 PDF/A 和 PDF/UA。 支持 UTF-8 字符编码,并处理图片、CSS 和字体等资产。

现在让我们看一下使用这两个库的实际示例。

使用 IronPDF 生成 PDF 文档并通过 Tye 运行

首先,让我们创建一个 Visual Studio Razor 应用程序。 打开 Visual Studio,创建一个新项目并选择 Razor 应用,如下所示。

tye .NET(开发者如何运作):图 2 - 打开 Visual Studio,创建一个新的 ASP.NET Core Web 应用程序(Razor Pages)。

提供项目名称和位置。

tye .NET(开发者如何运作):图 3 - 通过指定项目名称和位置设置项目。然后点击下一步。 在下一步中,选择 .NET Framework 版本并单击创建。

由于 Tye 仅在 .NET 3.1 上工作,我们也将选择相同版本。 tye .NET(开发者如何运作):图 4 - 选择 .NET Core 3.1 框架,然后点击创建。

从 Visual Studio 包管理器安装 IronPDF from NuGet Package

tye .NET(开发者如何运作):图 5 - 使用解决方案管理 NuGet 包安装 IronPDF,搜索 IronPDF,然后选择项目并点击安装按钮。

接下来,打开文件浏览器,导航到解决方案文件夹。

然后打开 CMD 提示符。 使用以下命令安装 Tye:

或如果您已经安装了 Tye 并想更新它,使用以下命令:

dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
SHELL

使用以下命令初始化 Tye:

dotnet tool update -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
dotnet tool update -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
SHELL

这将创建一个模板 YAML 文件如下所示:

tye init
tye init
SHELL

使用以下命令运行 Tye:

# tye application configuration file
# read all about it at https://github.com/dotnet/tye
#
# when you've given us a try, we'd love to know what you think:
#    https://aka.ms/AA7q20u
#
# define global settings here
# name: exampleapp # application name
# registry: exampleuser # dockerhub username or container registry hostname
# define multiple services here
services:
- name: frontend
  project: Frontend\Frontend.csproj # msbuild project path (relative to this file)
  # executable: app.exe # path to an executable (relative to this file)
    args: -f=netcoreapp3.1 # arguments to pass to the process
  # replicas: 5 # number of times to launch the application
  # env: # array of environment variables
  #  - name: key
  #    value: value
  # bindings: # optional array of bindings (ports, connection strings)
    # - port: 8080 # number port of the binding
# tye application configuration file
# read all about it at https://github.com/dotnet/tye
#
# when you've given us a try, we'd love to know what you think:
#    https://aka.ms/AA7q20u
#
# define global settings here
# name: exampleapp # application name
# registry: exampleuser # dockerhub username or container registry hostname
# define multiple services here
services:
- name: frontend
  project: Frontend\Frontend.csproj # msbuild project path (relative to this file)
  # executable: app.exe # path to an executable (relative to this file)
    args: -f=netcoreapp3.1 # arguments to pass to the process
  # replicas: 5 # number of times to launch the application
  # env: # array of environment variables
  #  - name: key
  #    value: value
  # bindings: # optional array of bindings (ports, connection strings)
    # - port: 8080 # number port of the binding
YAML

这将在 URL:http://127.0.0.1:8000/ 打开 Tye 仪表板以查看运行中的应用程序。

tye run frontend
tye run frontend
SHELL

Tye 仪表板

tye .NET(开发者如何运作):图 6 - 使用 Tye 在本地主机运行的 Razor 应用程序

接下来,向项目添加以下代码,通过点击按钮从任何网站 URL 生成 PDF 文档。

Index.cshtml 文件添加以下代码:

然后向 Index.cshtml.cs 添加以下代码:

@page
@model IndexModel
@{
    ViewData["Title"] = "Generate PDF";
}
<form method="post" class="text-center flex-row">
    <h1 class="display-4">Welcome To URL To PDF Generator</h1>
    <p>Enter Website URL:</p>
    <input type="text" asp-for="UrlInput" />
    <button type="submit">Generate PDF</button>
    @if (Model.Message != null)
    {
        <p>@Model.Message</p>
    }
</form>

现在如下运行 Tye:

using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;

namespace Frontend.Pages
{
    public class IndexModel : PageModel
    {
        public string Message { get; set; }

        [BindProperty]
        public string UrlInput { get; set; }

        private readonly ILogger<IndexModel> _logger;

        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }

        public void OnGet()
        {
        }

        public IActionResult OnPost()
        {
            if (string.IsNullOrEmpty(UrlInput))
            {
                ModelState.AddModelError("UrlInput", "Please enter a URL.");
                return Page();
            }

            // Create a PDF from the given URL using ChromePdfRenderer
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderUrlAsPdf(UrlInput);

            // Return the PDF as a file result
            var pdfBytes = pdf.BinaryData;
            return File(pdfBytes, "application/pdf", "GeneratedDocument.pdf");
        }
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;

namespace Frontend.Pages
{
    public class IndexModel : PageModel
    {
        public string Message { get; set; }

        [BindProperty]
        public string UrlInput { get; set; }

        private readonly ILogger<IndexModel> _logger;

        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }

        public void OnGet()
        {
        }

        public IActionResult OnPost()
        {
            if (string.IsNullOrEmpty(UrlInput))
            {
                ModelState.AddModelError("UrlInput", "Please enter a URL.");
                return Page();
            }

            // Create a PDF from the given URL using ChromePdfRenderer
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderUrlAsPdf(UrlInput);

            // Return the PDF as a file result
            var pdfBytes = pdf.BinaryData;
            return File(pdfBytes, "application/pdf", "GeneratedDocument.pdf");
        }
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports Microsoft.Extensions.Logging

Namespace Frontend.Pages
	Public Class IndexModel
		Inherits PageModel

		Public Property Message() As String

		<BindProperty>
		Public Property UrlInput() As String

		Private ReadOnly _logger As ILogger(Of IndexModel)

		Public Sub New(ByVal logger As ILogger(Of IndexModel))
			_logger = logger
		End Sub

		Public Sub OnGet()
		End Sub

		Public Function OnPost() As IActionResult
			If String.IsNullOrEmpty(UrlInput) Then
				ModelState.AddModelError("UrlInput", "Please enter a URL.")
				Return Page()
			End If

			' Create a PDF from the given URL using ChromePdfRenderer
			Dim renderer = New ChromePdfRenderer()
			Dim pdf = renderer.RenderUrlAsPdf(UrlInput)

			' Return the PDF as a file result
			Dim pdfBytes = pdf.BinaryData
			Return File(pdfBytes, "application/pdf", "GeneratedDocument.pdf")
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

tye .NET(开发者如何运作):图 7 - 使用命令运行 tye:tye run frontend

这将启动 Tye 仪表板。

tye .NET(开发者如何运作):图 8 - Tye 仪表板

现在点击绑定部分的任何链接以打开 PDF 生成器应用程序并输入示例 URL 进行 PDF 生成。

tye .NET(开发者如何运作):图 9 - 使用 IronPDF 的 URL 到 PDF 生成器

点击生成按钮以输出如下的 PDF:

tye .NET(开发者如何运作):图 10 - 使用 IronPDF 的 HTML URL 到 PDF 转换

代码解释

  1. Index.cshtml 包含输入字段和按钮,用于捕获网站 URL 并触发 PDF 生成。

  2. Index.cshtml.cs 是代码隐藏文件,包含使用 IronPDF 生成 PDF 文档的逻辑。
  3. 使用 ChromePdfRenderer 类和 RenderUrlAsPdf() 方法从 URL 生成 PDF。
  4. 生成的 URL 作为响应返回给 POST 方法。
  5. tye run 命令将启动 Tye 仪表板,您可以在其中查看所有运行的服务。
  6. 点击 Tye 仪表板中的前端服务,打开应用程序并生成 PDF 文档。 访问IronPDF Licensing页面。

IronPDF 许可证

将许可证密钥放置在 appSettings.json 文件中,如下所示:

总之,Tye 代表了 .NET 生态系统的一个重大进步,提供了一种简化的途径来构建、测试和部署分布式应用程序。

{
  "IronPdf.License.LicenseKey": "The Key Here"
}

结论

无论您是经验丰富的 .NET 开发者,还是容器化和微服务的新手,Tye 都为您提供了一个用户友好的平台,以便采纳现代开发实践,加快您向云原生架构迈进的步伐。 IronPDF 是一个 .NET 库,允许开发者轻松地从 HTML 内容创建、操作和渲染 PDF 文档。

它支持将 HTML 转换为 PDF,合并和拆分 PDF,并添加页眉、页脚和水印。 IronPDF 以使用方便、高质量渲染和与 .NET Core 和 .NET Framework 应用程序的兼容性而闻名。 了解Tye构建工具,开发人员可以获得高级技能,以开发具有 PDF 生成能力的现代应用程序。 Knowing both the IronPDF library and the Tye build tool, developers can gain advanced skills to develop modern applications with PDF generation capabilities.

常见问题解答

Tye 可以如何简化 .NET 应用程序开发?

Tye 通过最少的配置管理微服务及其依赖项来简化 .NET 应用程序开发。它利用如 Docker 和 Kubernetes 的容器化和编排工具来简化构建、测试和部署过程。

使用 Tye 对于 .NET 应用程序的服务发现有什么好处?

Tye 增强了 .NET 应用程序中的服务发现功能,它通过自动检测微服务之间的依赖关系,使用项目元数据和 Docker 容器促进无缝通信和编排。

Tye 如何与 Visual Studio 和 Visual Studio Code 集成?

Tye 与 Visual Studio 和 Visual Studio Code 集成,为开发人员提供调试、日志记录和监控工具,从而提升 .NET 应用程序的开发体验和生产力。

如何与 Tye 配合使用 Docker 容器?

Tye 使用 Docker 容器来部署 .NET 应用程序。它根据项目设置自动为每个服务创建 Docker 文件,确保容器构建在不同环境中保持一致和可复现。

使用 Tye 将 .NET 应用程序部署到 Kubernetes 的步骤是什么?

要使用 Tye 将 .NET 应用程序部署到 Kubernetes,工具会从项目规范生成 Kubernetes 清单和 Helm 图表。通过自动化创建 Kubernetes 集群所需的资源,简化了部署过程。

IronPDF 如何通过 PDF 功能增强 .NET 应用程序?

IronPDF 通过提供创建、操作和渲染来自 HTML 内容的 PDF 的能力来增强 .NET 应用程序。它支持 HTML 到 PDF 转换、PDF 编辑和添加页眉页脚等元素,从而扩展了应用程序的功能。

是什么使 Tye 适合云原生应用程序开发?

Tye 适用于云原生应用程序开发,因为它为 .NET 应用程序提供了在 Kubernetes 等环境中运行的必要工具和做法,促进了现代基础设施和部署模式的采用。

开发人员如何快速使用 Tye 开始工作?

开发人员可以通过安装 .NET Core 3.1、将 Tye 设置为全局工具并使用tye run之类的命令来开始使用 Tye。Tye 的仪表板有助于高效监控和管理服务。

使用 Project Tye 适用哪些许可条款?

Project Tye 在 MIT 许可下分发,允许免费用于开发和商业目的,促进了在各种项目中的广泛采用。

Tye 如何促进 .NET 应用程序更快的上市时间?

Tye 通过自动化常见开发任务、改善团队协作以及增强云原生准备性来加速上市时间,这共同简化了开发工作流程并减少了开销。

Curtis Chau
技术作家

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

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