跳過到頁腳內容
.NET HELP

tye .NET (How It Works For Developers)

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

了解 Project Ty .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 清單和 Helm 圖表,簡化部署流程,並推廣雲端原生環境中容器編排的最佳實務。

6. 監測和可觀測性

Tye 與 Prometheus 和 Grafana 等流行的可觀測性工具集成,以提供有關應用程式效能和運行狀況的見解。 它公開應用程式元件的指標和日誌,使開發人員能夠即時監控資源利用率、識別瓶頸並診斷問題。

泰伊的實際應用

讓我們來探討一些 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 文件,請導航至 microservices 目錄並執行以下命令以產生預設的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

使用紮帶的好處

1.簡化的開發工作流程: Tye 提供了一套統一的工具集,用於在本地構建、測試和調試 .NET 應用程序,從而簡化了開發工作流程。 2.加快產品上市速度:透過自動化服務發現、依賴關係管理和容器化等常見任務,Tye 減少了將應用程式部署到生產環境所需的時間和精力。 3.改善協作: Tye 透過提供管理應用程式依賴項和部署配置的通用平台,促進開發、維運和 DevOps 團隊之間的協作。 4.雲端原生準備: Tye 為 .NET 應用程式配備了在雲端原生環境(例如 Kubernetes)中運行所需的工具和實踐,使組織能夠自信地採用現代基礎設施範式。 5.社區支持和貢獻:作為微軟支持的開源項目,Tye 受益於一個充滿活力的貢獻者和用戶社區,他們積極為 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 文件並運行

首先,我們來建立一個 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 上運行,因此我們將選擇 .NET 3.1。

! tye .NET(開發人員的工作方式):圖 4 - 選擇 .NET Core 3.1 框架,然後按一下"建立"。

透過 Visual Studio 套件管理器從 NuGet 套件安裝 IronPDF

! tye .NET(開發人員的操作方法):圖 5 - 使用 NuGet 套件管理員的搜尋列中搜尋"IronPDF",然後選擇專案並點擊"安裝"按鈕,即可透過"管理解決方案的 NuGet 套件"安裝 IronPDF。

接下來,打開文件瀏覽器並導航到解決方案資料夾。 然後打開命令提示字元。

使用以下指令安裝 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>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");
        }
    }
}
$vbLabelText   $csharpLabel

現在按以下步驟運行 Tye:

! tye .NET(開發者使用指南):圖 7 - 使用指令執行 tye:tye run frontend

這將啟動 Tye 控制面板。

Tye .NET(開發者使用指南):圖 8 - Tye 控制面板

現在點擊綁定部分中的任何鏈接,打開 PDF 生成器應用程序,然後輸入示例 URL 以生成 PDF。

! tye .NET(開發者使用方法):圖 9 - 使用 IronPDF 的 PDF 產生器 URL

點擊生成按鈕,即可取得以下 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 透過自動偵測微服務之間的依賴關係來增強 .NET 應用程式中的服務發現,並使用專案元資料和 Docker 容器來促進無縫通訊和協調。

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 設定為全局工具,並使用 tye run 等指令來執行應用程式。Tye 的儀表板有助於有效監控和管理服務。

使用 Project Tye 適用哪些授權條款?

Project Tye 採用 MIT 授權釋出,允許開發與商業用途的自由使用,有助於在各種專案中廣泛採用。

Tye 如何促進 .NET 應用程式更快上市?

Tye 可透過自動化常見的開發任務、改善團隊協作,以及加強雲端原生的就緒度來加速產品上市的時間,共同簡化開發工作流程並降低開銷。

Jacob Mellor,技術長 @ Team Iron
首席技術長

Jacob Mellor 是 Iron Software 的首席技術長,也是開創 C# PDF 技術的有遠見的工程師。作為 Iron Software 核心程式碼庫背後的原始開發人員,他從公司成立之初就塑造了公司的產品架構,與首席執行官 Cameron Rimington 一起將公司轉型為一家 50 多人的公司,為 NASA、Tesla 和全球政府機構提供服務。

Jacob 持有曼徹斯特大學土木工程一級榮譽工程學士學位 (BEng)(1998-2001 年)。

Jacob 於 1999 年在倫敦開設了他的第一家軟體公司,並於 2005 年創建了他的第一個 .NET 元件,之後,他專門解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF & Iron Suite for .NET 函式庫在全球的 NuGet 安裝量已超過 3000 萬次,他的基礎程式碼持續為全球使用的開發人員工具提供動力。Jacob 擁有 25 年的商業經驗和 41 年的編碼專業知識,他一直專注於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代的技術領導者。