跳過到頁腳內容
.NET幫助

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

在現代的軟體開發環境中,建立和部署分散式應用程式是一件複雜且具挑戰性的工作。 管理多種服務、相依性和部署環境通常需要大量的努力和協調。 為了因應這些挑戰,Microsoft 推出 Project Tye 這個開發人員工具,旨在簡化 .NET 應用程式的開發、測試和部署。 在這篇文章中,我們將深入 Tye 的世界,探索其功能、優勢以及 .NET 開發人員的實際應用。 我們還將瞭解 IronPDF 的 PDF 生成庫 Iron Software ,並在實例中使用 TyeIronPDF

瞭解 Project Tye .NET

Tye是一個開放原始碼的實驗性開發人員工具,可簡化建立、測試和部署 .NET 專案應用程式的流程,只需最少的設定。 Tye由 Microsoft 工程團隊開發,旨在提供一致、有主見的方法來管理微服務及其相依性,從而簡化開發工作流程。 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

3.為您的微服務建立新資料夾。

4.導覽到資料夾,並建立一個前端專案 (例如 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

5.執行前端專案,啟動 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 受益於一個充滿活力的貢獻者和用戶社區,他們積極為 Tye 的開發、文件和生態系統做出貢獻。

Project Tye 授權條款

Project Tye 隨附 MIT License,可免費用於開發和商業用途。

介紹 IronPDF

tye .NET (How It Works For Developers):圖 1 - IronPDF for .NET: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/A 和 PDF/UA 等 PDF 標準。 支援 UTF-8 字元編碼,並能處理圖片、CSS 和字型等資產。

現在讓我們來看看使用這兩個函式庫的實例。

使用 IronPDF 和 Tye to Run 生成 PDF 文件

首先,讓我們建立一個 Visual Studio Razor 應用程式。 開啟 Visual Studio 並建立新專案,選擇 Razor 應用程式,如下所示。

tye .NET (How It Works For Developers):圖 2 - 開啟 Visual Studio 並建立新的 ASP.NET Core Web App (Razor Pages).

提供專案名稱和地點。

tye .NET (How It Works For Developers):圖 3 - 透過指定專案名稱和位置來設定專案。 然後按下一步。

在下一步中,選擇 .NET Framework 版本,然後按一下建立。 由於 Tye 只在 .NET 3.1 上運作,因此我們將選擇相同的版本。

tye .NET (How It Works For Developers):圖 4 - 選擇 .NET Core 3.1 架構,然後按一下建立

從 Visual Studio Package Manager 安裝 IronPDF from NuGet Package

tye .NET (How It Works For Developers):圖 5 - 使用管理 NuGet Package for Solution 安裝 IronPDF,方法是在 NuGet Package Manager 的搜尋列中搜尋IronPDF,然後選擇專案並點選安裝按鈕

接下來,開啟檔案瀏覽器並導航至解決方案資料夾。 然後開啟 CMD 提示。

使用下列指令安裝 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

使用下列指令初始化 Tye:

tye init
tye init
SHELL

這將創建一個模板 YAML 檔案,如下所示:

# 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

使用以下指令執行 Tye:

tye run frontend
tye run frontend
SHELL

這將在 URL: http://127.0.0.1:8000/ 開啟 Tye 控制面板,以查看應用程式的運作情況。

Tye儀表板

tye .NET (How It Works For Developers):圖 6 - 在 localhost 上使用 Tye 執行 Razor 應用程式

接下來,將以下程式碼加入專案中,只要按一下按鈕,就能從任何網站的 URL 產生 PDF 文件。

將以下程式碼加入 Index.cshtml 檔案:

@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>

然後將以下程式碼加入 Index.cshtml.cs:

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,如下所示:

tye .NET (How It Works For Developers):圖 7 - 使用命令:tye run frontend 執行 tye

這將啟動 Tye 面板。

tye .NET (How It Works For Developers):圖 8 - Tye Dashboard

現在按一下綁定部分中的任何連結,即可開啟 PDF 生成器應用程式,並輸入範例 URL 以生成 PDF。

tye .NET (How It Works For Developers):圖 9 - 使用 IronPDF 的 URL 至 PDF 產生器

按一下產生按鈕以獲得以下 PDF 輸出:

tye .NET (How It Works For Developers):圖 10 - 使用 IronPDF 將 HTML URL 轉換為 PDF

程式碼解釋

  1. Index.cshtml 包含用於擷取網站 URL 並觸發 PDF 產生的輸入欄位和按鈕。
  2. Index.cshtml.cs 是包含使用 IronPDF 產生 PDF 文件邏輯的程式碼隱藏檔案。
  3. 使用 ChromePdfRenderer 類別和 RenderUrlAsPdf() 方法從 URL 產生 PDF。 4.生成的 URL 會作為 POST 方法的回應傳回。
  4. 使用 tye run 指令將啟動 Tye 控制面板,您可以在其中查看所有正在執行的服務。 6.點選 Tye 面板中的 Frontend 服務,開啟應用程式並產生 PDF 文件。

IronPDF 授權

請造訪 IronPDF授權頁面。

請將許可證金鑰放入 appSettings.json 檔案中,如下所示:

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

結論

總而言之,Tye 代表了 .NET 生態系統的一大進步,提供了一種簡化的方法來建立、測試和部署分散式應用程式。 無論您是經驗豐富的 .NET 開發人員,或是容器化和微服務的新手,Tye 都能提供一個易於使用的平台,讓您擁抱現代開發實務,並加速邁向雲原生架構的旅程。

IronPDF 是一個 .NET 函式庫,可讓開發人員從 HTML 內容輕鬆建立、處理和渲染 PDF 文件。 它支援將 HTML 轉換為 PDF、合併和分割 PDF,以及新增頁眉、頁腳和水印。 IronPDF 以其易用性、高品質渲染以及與 .NET Core 和 .NET Framework 應用程式的相容性而聞名。 瞭解 IronPDF 函式庫和 Tye 建立工具,開發人員就能獲得進階技能,開發具有 PDF 生成功能的現代應用程式。

常見問題解答

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 透過自動化常見開發任務、改進團隊協作、增強雲原生準備來加速市場上線時間,這共同簡化了開發工作流程並減少了開銷。

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

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

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