跳至頁尾內容
.NET幫助

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

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

了解 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 應用程式的部署單位。 它基於專案配置自動生成每個服務的 Dockerfiles,促進開發和生產環境中一致和可重複的容器構建,使測試和部署微服務變得容易。

4. 本地開發環境

Tye 通過在單一環境中編排依賴項和服務來簡化本地開發。 開發人員可以通過單一命令啟動整個應用程式堆疊,消除手動設置和配置依賴項的需要。

5. 部署到 Kubernetes

Tye 提供了將.NET應用程式部署到 Kubernetes 集群的內建支援。 它根據專案規格生成 Kubernetes 配置和 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. 社區支持和貢獻:作為一個由 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 生成 PDF 文件,並使用 Tye 運行

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

tye .NET (開發者如何使用):圖 2 - 打開 Visual Studio 並建立一個新的 ASP.NET Core Web App (Razor Pages)。

提供專案名稱和位置。

tye .NET (開發者如何使用):圖 3 - 指定專案名稱和位置以配置專案。 然後點擊下一步。

在下一步中,選擇 .NET Framework 版本,然後點擊"建立"。 由於 Tye 僅適用於 .NET 3.1,我們將選擇相同的版本。

tye .NET (開發者如何使用):圖 4 - 選擇 .NET Core 3.1 框架,然後點擊

從 Visual Studio 套件管理員中安裝來自 NuGet 套件的 IronPDF

tye .NET (How It Works For Developers): Figure 5 - Install IronPDF using the Manage NuGet Package for Solution by searching IronPDF in the search bar of NuGet Package Manager, then select the project and click on the Install button.

接下來,打開文件瀏覽器並導航到解決方案資料夾。 然後打開 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 (開發者如何使用):圖 6 - 使用 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 (開發者如何使用):圖 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 文件中,如下所示:

{
  "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 等容器化和協調工具來簡化構建、測試和部署過程。

在 .NET 應用程式中使用 Tye 進行服務發現有什麼好處?

Tye 通過自動發現微服務之間的依賴關係並使用專案元資料和 Docker 容器來促進無縫通信和編排來增強 .NET 應用程式的服務發現。

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

Tye 與 Visual Studio 和 Visual Studio Code 整合,為開發者提供了偵錯、日誌記錄和監控工具,從而提升 .NET 應用程式的開發體驗和生產力。

Docker 容器如何與 Tye 一起使用?

Tye 使用 Docker 容器來部署 .NET 應用程式。它根據專案設定自動為每個服務建立 Dockerfile,確保容器構建在不同環境中是一致且可重現的。

using Tye 部署 .NET 應用程式到 Kubernetes 包含哪些步驟?

using Tye 部署 .NET 應用程式到 Kubernetes,該工具從專案規格生成 Kubernetes 清單和 Helm 圖表。這通過自動建立 Kubernetes 叢集的必要資源來簡化部署過程。

IronPDF 如何增強 .NET 應用程式的 PDF 功能?

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核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

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