跳至頁尾內容
.NET 幫助

Topshelf C#(開發者使用指南)

Topshelf是一個廣受歡迎的開放原始碼套件,用來讓在 .NET 中建立 Windows 服務更加容易。 它所提供的框架簡化並合理地建立、部署和管理 Windows 服務,讓開發人員得以專注於業務邏輯,而非複雜的服務控制管理。 IronPDF 是一個功能豐富的 C# 函式庫,用於建立和修改 PDF 檔案,結合 IronPDF,開發人員可以建立可靠且強大的服務,以管理複雜的文件處理工作。

此連線透過在完整的 Windows 服務架構中自動化 PDF 的建立、修訂與散佈,為需要有效且自動化文件工作流程的企業提供無縫的解決方案。 開發人員透過使用 Topshelf 與 IronPDF for .NET in C#,可在其服務應用程式中獲得高度的功能性與可維護性,同時保證穩健性與易用性。

什麼是 Topshelf C#?

在開放原始碼專案 Topshelf .NET 套件的協助下,Windows 服務的開發、設定與實作變得更容易。 透過消除建立 Windows 服務過程中的許多複雜性,開發人員能夠更專注於應用程式的基本功能,而非 Windows 服務管理的細微差異。

Topshelf 只需修改很少的程式碼,就能讓開發人員輕鬆地將主控台應用程式轉換為服務。 它也提供了流暢的 API 來建立服務設定,包括相依性、復原選項,以及啟動和停止服務的動作。 對於希望有效建立穩定且可管理的 Windows 服務的 .NET 開發人員而言,Topshelf 因其易用性與適應性而深受喜愛。

Topshelf C# (How It Works For Developers):圖 1

Topshelf 提供的多項功能可讓您更輕鬆地在 .NET 中設計及維護 Windows 服務。 以下是其幾項突出特質:

易用性

Topshelf 提供基本且流暢的 API,可簡化使用它設定和管理 Windows 服務的流程。 控制台應用程式可由開發人員輕鬆轉換為服務,幾乎不需修改程式碼。

配置的靈活性

開始、停止、暫停和繼續動作是它支援的組態選項。 服務的依賴性和服務類別的復原選項也可以由開發人員指定。

安裝與卸載

Topshelf 內建的安裝與卸載服務功能,有助於部署使用 .NET Framework 寫成的主機服務。 可透過程式或命令列安裝服務。

記錄

Topshelf 透過整合知名的日誌框架(如 log4net、NLog 和 Serilog),促進開發人員有效記錄服務作業和故障的能力。

服務控制

它相容於所有常見的 Windows 服務控制,例如暫停、繼續、開始和停止。開發人員現在可以完全控制整個服務生命週期。

異常處理

強大的異常處理是 Topshelf 的一項功能,可保證服務能夠優雅地處理故障並保持穩定。

多重服務實體

它可在同一應用程式中建立和管理多個服務實體,為複雜的服務架構提供彈性。

自訂命令列選項

自訂指令列選項可讓開發人員進一步自訂及控制服務的行為。

環境意識

無論是生產伺服器、測試環境或開發系統,Topshelf 都能辨識並適應周遭環境。

支援依賴注入。

Topshelf 與相依性注入框架結合使用時,可促進更好的軟體架構,並讓服務相依性的管理變得更容易。

跨平台能力

Topshelf 主要是為 Windows 所製作,但在利用 .NET Core 時,它也可以在 Linux 和 macOS 上執行服務,這增加了它與其他作業系統的相容性。

建立和配置 Topshelf C#。

使用 C# 中的 Topshelf,透過下列步驟建立並設定 Windows 服務:

建立新的 Visual Studio 專案

使用 Visual Studio 很容易建立控制台專案。 若要在 Visual Studio 環境中啟動 Console Application,請遵循下列簡單步驟:

使用 Visual Studio 之前,請確定您已在電腦上安裝 Visual Studio。

開始新專案

選擇"檔案"、"專案"後,選擇"新增"功能表。

Topshelf C# (How It Works For Developers):圖 2

請從下列專案範本參考清單中選擇"Console App"或"Console App (.NET Core)"。

若要為您的專案命名,請填寫"名稱"欄位。

Topshelf C# (How It Works For Developers):圖 3

選擇專案的儲存位置。

按一下"建立"時,會開啟 Console 應用程式專案。

Topshelf C# (How It Works For Developers):圖 4

透過 NuGet 安裝 Topshelf。

使用 NuGet Package Manager,將 Topshelf 加入您的專案。 在套件管理員和主控台應用程式中,執行下列指令:

Install-Package Topshelf

建立服務類別

描述類別的服務邏輯。 除其他服務動作外,Start 和 Stop 也應在此類中實作。

using System;
using Topshelf;

namespace MyWindowsService
{
    // Define a simple service class with Start and Stop methods
    public class MyService
    {
        public bool Start()
        {
            // Service start logic
            Console.WriteLine("Service Started.");
            return true;
        }

        public bool Stop()
        {
            // Service stop logic
            Console.WriteLine("Service Stopped.");
            return true;
        }
    }

    // Main program class to run the Topshelf service
    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
            {
                // Configure the service
                x.Service<MyService>(s =>
                {
                    s.ConstructUsing(name => new MyService());
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });

                // Run the service as a local system
                x.RunAsLocalSystem();

                // Set service details
                x.SetServiceName("MyService");
                x.SetDisplayName("My Service");
                x.SetDescription("This is a sample service created using Topshelf.");
            });
        }
    }
}
using System;
using Topshelf;

namespace MyWindowsService
{
    // Define a simple service class with Start and Stop methods
    public class MyService
    {
        public bool Start()
        {
            // Service start logic
            Console.WriteLine("Service Started.");
            return true;
        }

        public bool Stop()
        {
            // Service stop logic
            Console.WriteLine("Service Stopped.");
            return true;
        }
    }

    // Main program class to run the Topshelf service
    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
            {
                // Configure the service
                x.Service<MyService>(s =>
                {
                    s.ConstructUsing(name => new MyService());
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });

                // Run the service as a local system
                x.RunAsLocalSystem();

                // Set service details
                x.SetServiceName("MyService");
                x.SetDisplayName("My Service");
                x.SetDescription("This is a sample service created using Topshelf.");
            });
        }
    }
}
$vbLabelText   $csharpLabel

Topshelf C# (How It Works For Developers):圖 5

設定服務

啟動和終止服務的機制包含在 MyService 類中。 服務定義及其生命週期方法(Start 和 Stop)與 Program 類中相對應的服務動作相連,Program 類中放置了 Topshelf 組態。 服務的屬性,例如名稱、顯示名稱和說明,是使用單一服務類別的 run 方法來設定的。 使用 Topshelf 管理和部署 Windows 服務,可透過此簡明的配置變得簡單。

建立並安裝服務

在您建構專案時,請確保無誤。 將 install 指令與已編譯的可執行檔一起使用,即可從指令列啟動服務:

MyWindowsService.exe install
MyWindowsService.exe install
SHELL

開始服務

服務安裝完成後,請使用下列指令啟動服務:

MyWindowsService.exe start
MyWindowsService.exe start
SHELL

卸載服務

如有必要,請使用下列指令提示您解除安裝服務:

MyWindowsService.exe uninstall
MyWindowsService.exe uninstall
SHELL

本範例說明如何在 C# 中使用 Topshelf 來建立和設定 Windows 服務。Topshelf 簡化了程序,方便 Windows 服務的定義、安裝、設定和管理,幾乎不需要任何程式碼。

開始

若要開始使用 IronPDF 和 Topshelf 以 C# 建立 Windows 服務,請執行下列動作:

什麼是 IronPDF?

IronPDF for .NET Libraries 是一個功能豐富的 .NET 函式庫,C# 程式可用來建立、讀取和編輯 PDF 文件。 透過此程式,開發人員可以輕鬆地將 HTML、CSS 和 JavaScript 內容製作成可供列印的高品質 PDF。 拆分與合併 PDF、為文件加上水印、新增頁首與頁尾,以及將 HTML 轉換為 PDF 是其中幾項基本功能。 IronPDF 同時支援 .NET Framework 和 .NET Core,因此適用範圍廣泛。

由於 PDF 簡單易用且有豐富的說明文件,因此開發人員可以輕鬆地將 PDF 整合到他們的程式中。 IronPDF 可輕鬆處理複雜的版面和格式,確保產生的 PDF 與原始 HTML 內容非常相似。

Topshelf C# (How It Works For Developers):圖 6

IronPDF 的特點

從 HTML 產生 PDF

將 JavaScript、HTML 和 CSS 轉換為 PDF。 支援媒體查詢和回應式設計這兩項當代網路標準。 對於使用 HTML 和 CSS 動態裝飾 PDF 帳單、報告和文件非常有用。

PDF編輯

預先存在的 PDF 可以加入文字、照片和其他內容。 從 PDF 檔案中萃取文字和圖片。 將眾多 PDF 合併為一個檔案。將 PDF 檔案分割成多個獨立的文件。 包括水印、註解、頁首和頁尾。

PDF 轉檔

將多種檔案格式(包括 Word、Excel 和圖片檔案)轉換為 PDF 格式。 PDF 到圖像的轉換(PNG、JPEG 等)。

效能與可靠性

在工業環境中,高效能和可靠度是理想的設計品質。 輕鬆管理大型文件集。

安裝 IronPDF

要獲得在 .NET 專案中使用 PDF 所需的工具,請安裝 IronPDF 套件。

Install-Package IronPdf

使用 IronPdf 創建您的服務類型。

定義 IronPDF 用於建立和修改 PDF 檔案的功能,以及該類的服務邏輯。

using System;
using IronPdf;
using Topshelf;

namespace PdfService
{
    // Define a service class with PDF generation logic
    public class MyPdfService
    {
        public bool Start()
        {
            Console.WriteLine("Service Starting...");
            GeneratePdf();
            return true;
        }

        public bool Stop()
        {
            Console.WriteLine("Service Stopping...");
            return true;
        }

        // Method to generate a PDF using IronPDF
        private void GeneratePdf()
        {
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, PDF!</h1>");
            pdf.SaveAs("GeneratedDocument.pdf");
            Console.WriteLine("PDF Generated.");
        }
    }

    // Main program to configure and run the service using Topshelf
    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
            {
                x.Service<MyPdfService>(s =>
                {
                    s.ConstructUsing(name => new MyPdfService());
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });

                x.RunAsLocalSystem();
                x.SetServiceName("MyPdfService");
                x.SetDisplayName("My PDF Service");
                x.SetDescription("A service that generates PDF files using IronPDF and Topshelf.");
            });
        }
    }
}
using System;
using IronPdf;
using Topshelf;

namespace PdfService
{
    // Define a service class with PDF generation logic
    public class MyPdfService
    {
        public bool Start()
        {
            Console.WriteLine("Service Starting...");
            GeneratePdf();
            return true;
        }

        public bool Stop()
        {
            Console.WriteLine("Service Stopping...");
            return true;
        }

        // Method to generate a PDF using IronPDF
        private void GeneratePdf()
        {
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, PDF!</h1>");
            pdf.SaveAs("GeneratedDocument.pdf");
            Console.WriteLine("PDF Generated.");
        }
    }

    // Main program to configure and run the service using Topshelf
    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
            {
                x.Service<MyPdfService>(s =>
                {
                    s.ConstructUsing(name => new MyPdfService());
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });

                x.RunAsLocalSystem();
                x.SetServiceName("MyPdfService");
                x.SetDisplayName("My PDF Service");
                x.SetDescription("A service that generates PDF files using IronPDF and Topshelf.");
            });
        }
    }
}
$vbLabelText   $csharpLabel

開發人員可透過結合 Topshelf 與 IronPDF in C#,快速設計出強大的 Windows 服務,以進行 PDF 生產與操作。 Topshelf 提供流暢且人性化的 API,讓 Windows 服務的設定與管理變得更容易。

Topshelf C# (How It Works For Developers):圖 7

MyPdfService 類實作了啟動(Start)和結束(Stop)服務的方法,該類封裝了所給示例中的服務邏輯。 IronPDF 使用 Start 方法從 HTML 文字建立一個簡單的 使用 HTML 的 PDF 文件。 The ability to render HTML into a PDF format using IronPDF's HtmlToPdf class is demonstrated, showing how to turn basic HTML information (such as "

Hello, PDF!

") into a PDF file ("GeneratedDocument.pdf").

Topshelf C# (How It Works For Developers):圖 8

此整合示範了 Topshelf 如何管理服務的生命週期,以確保它能像完整的 Windows 服務一樣運作,以及 IronPDF 如何管理輕鬆建立 PDF 的高難度流程。 透過 Topshelf 與 IronPDF 在 C# 中的結合功能,此整合非常適合需要自動化文件建立或修改的應用程式。 它提供了可靠性和易維護性。

結論

總之,透過 Topshelf 與 IronPDF 在 C# 中的結合,創建和管理需要建立和操作 PDF 的 Windows 服務就成為可能。 Topshelf 為服務組態與管理提供方便使用者的 API,可簡化 Windows 服務的部署。 透過促進服務邏輯內的 HTML 資訊順利產生 PDF 文件,IronPDF 可在此期間改善功能。

這種整合可保證自動化文件工作流程中可靠且強大的效能,同時也能簡化開發流程。 Topshelf with IronPDF in C# 是一個靈活有效的選擇,讓開發人員可以輕鬆地建立複雜的文件處理解決方案,無論是建立報表、發票或任何其他基於 PDF 的任務。

IronPDF 和 Iron Software 授權資訊結合了 Iron Software 令人難以置信的彈性系統和套件,以及其核心支援,為開發人員提供更多的線上應用程式和功能,以及更有效率的開發。

如果授權選項明確且具體到專案,開發人員就能更容易決定哪一種模式是最佳的。 這些優點能讓開發人員以明確、有效且具凝聚力的整合方式解決各種問題。

常見問題解答

Topshelf 如何簡化 .NET 中 Windows 服務的建立?

Topshelf 提供了一個簡潔的 API,讓開發人員能夠以最小的程式碼變更將控制台應用程式轉換為 Windows 服務。它注重易用性、配置靈活性和強大的異常處理能力,使開發人員能夠專注於業務邏輯,而不是複雜的服務管理。

Topshelf 能否在 Windows 以外的平台上使用?

是的,雖然 Topshelf 主要針對 Windows 系統設計,但它也可以使用 .NET Core 在 Linux 和 macOS 系統上運行,從而增強了其跨平台功能。

將 IronPDF 與 Topshelf 整合有哪些好處?

將 IronPDF 與 Topshelf 集成,開發人員即可在 Windows 服務中實現 PDF 文件工作流程的自動化。這種組合提供了一個強大的解決方案,用於建立、修改和分發 PDF 文檔,充分利用了 Topshelf 的服務管理功能和 IronPDF 的 PDF 功能。

如何使用 C# 將 HTML 內容轉換為 PDF 文件?

您可以使用 IronPDF 將 HTML、CSS 和 JavaScript 內容轉換為 PDF 文檔,它採用專為 HTML 轉 PDF 而設計的轉換方法。 IronPDF 支援現代 Web 標準和響應式設計,確保高品質的 PDF 輸出。

使用 Topshelf 建立 Windows 服務的流程是什麼?

若要使用 Topshelf 建立 Windows 服務,請在 Visual Studio 中建立新項目,透過 NuGet 安裝 Topshelf,編寫一個包含StartStop方法的服務類,使用 Topshelf 的 API 配置服務,然後產生專案。最後,使用命令列命令安裝並啟動服務。

Topshelf在服務管理上的主要功能有哪些?

Topshelf 具有易用性、配置靈活性、日誌記錄、強大的異常處理、支援多個服務實例以及與常見的 Windows 服務控制項相容等功能,使其成為 .NET 開發人員的多功能工具。

如何使用 Windows 服務實現自動化文件工作流程?

透過將 Topshelf 與 IronPDF 集成,可以實現自動化文件工作流程,建立 Windows 服務來處理 PDF 生成、修改和分發等任務,所有這些都在服務框架內完成。

IronPDF有哪些授權許可選項?

IronPDF 提供靈活的許可選項,可根據不同的專案需求量身定制,使開發人員能夠根據其特定要求,有效地將 PDF 功能整合到他們的應用程式中。

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

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。