跳過到頁腳內容
.NET幫助

tye .NET(對於開發者的運行原理)

在現代軟體開發的環境中,構建和部署分佈式應用程式可能會變得複雜且具有挑戰性。 管理多個服務、依賴項和部署環境通常需要大量的努力和協調。 為了解決這些挑戰,Microsoft 推出了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 專案應用程式的過程。 由 Microsoft 工程團隊開發,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 清單和 Helm 圖表,精簡部署過程,並促進在雲原生環境中的容器編排的最佳實踐。

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. 社群支持和貢獻:作為 Microsoft 支持的開源專案,Tye 受益於一個活躍的貢獻者和用戶社群,他們積極參與其開發、文檔和生態系統。

Project Tye 許可證

Project Tye 配備了 MIT 許可證,可免費用於開發和商業用途。

介绍 IronPDF

tye .NET(它如何為開發者工作):圖 1 - IronPDF for .NET:C# PDF 庫

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 和 Tye 運行生成 PDF 文件

首先,我們來創建一個 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 從 NuGet 包

tye .NET(它如何為開發人員工作):圖 5 - 使用“NuGet 包管理解決方案”安裝 IronPDF,通過在 NuGet 包管理器搜索欄中搜索“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 上打開 Tye 儀表板:http://127.0.0.1:8000/來查看應用程式運行。

tye run frontend
tye run frontend
SHELL

Tye 儀表板

tye .NET(它如何為開發人員工作):圖 6 - Razoo 應用程式使用 Tye 在本地主機上運行

接下來,將以下代碼添加到專案中,從任何網站 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 許可證頁面。

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 透過自動檢測微服務之間的相依性,使用專案的中繼資料和 Docker 容器來促進平滑的通信和協調,增強 .NET 應用程式中的服務發現。

Tye 如何與 Visual Studio 和 Visual Studio Code 整合?

Tye 與 Visual Studio 和 Visual Studio Code 整合,為開發人員提供除錯、日誌紀錄和監控工具,從而改善 .NET 應用程式的開發體驗和生產力。

如何利用 Docker 容器與 Tye?

Tye 使用 Docker 容器來部署 .NET 應用程式。它根據專案設定自動為每個服務創建 Dockerfile,確保容器建置在不同環境中都能保持一致和再現。

使用 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 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。