IRONSOFTWAREHOME
開發者更新

Topshelf C#(對於開發者的運行原理)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年4月21日

一個廣受歡迎的開源套件名為Topshelf,它旨在簡化在.NET中建立Windows服務的過程。 它提供的框架簡化並合理化建立、部署和管理Windows服務,讓開發者專注於業務邏輯,而不是服務控制管理的複雜性。 結合IronPDF,一個功能豐富的C#庫用於建立和修改PDF文件,開發者可以構建可靠而強大的服務來處理複雜的文件處理任務。

此結合透過自動化在完整Windows服務框架內的PDF建立、修訂和分發,為企業提供了一個無縫的解決方案,滿足其高效和自動化文件工作流程的需求。 開發者可以透過在C#中使用IronPDF for .NET搭配Topshelf來獲得高功能性和可維護性,保證應用的穩健性和易用性。

Topshelf C# 是什麼?

開源專案Topshelf .NET套件簡化了Windows服務的開發、設置和實施。 透過在建立Windows服務的過程中去除了許多複雜性,開發者能更專注於應用的核心功能,而非Windows服務管理的細節。

Topshelf使開發者對應用進行少量程式碼更改即可輕鬆將控制台應用轉換為服務。 它還提供了一個流暢的API,用於設定服務設置,包括依賴性、恢復選項以及啟動和停止服務的動作。 對於希望有效地建立穩定且可管理的Windows服務的.NET開發者來說,Topshelf是一個受歡迎的選擇,因為它的易用性和適應性。

Topshelf C#(對於開發者的運作方式):圖1

Topshelf提供的多個功能使得在.NET中設計和維護Windows服務變得更輕鬆。 以下是其幾個突出特點:

易用性

Topshelf提供了一個基本而流暢的API,以簡化使用它來配置和管理Windows服務的過程。 開發者可以通過少量或無需程式碼修改即可將控制台應用輕鬆轉換為服務。

配置靈活性

它支持啟動、停止、暫停和繼續等配置選項。 開發者還可以為服務類別指定服務依賴性和恢復選項。

安裝和解除安裝

使用.NET Framework編寫的託管服務的部署是透過Topshelf內建的安裝和解除安裝服務功能促成的。 服務可以程式化或通過命令行進行安裝。

日誌

Topshelf通過與知名的日誌框架如log4net、NLog和Serilog的整合,提高了開發者高效記錄服務操作和故障的能力。

服務控制

它與所有常見的Windows服務控制相容,如暫停、繼續、啟動和停止。開發者現在對整個服務生命周期擁有完全的控制。

異常處理

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

多個服務實例

透過允許在同一應用中建立和管理多個服務實例,它提供了複雜服務架構的靈活性。

自訂命令行選項

自訂命令行選項允許開發者進一步自訂和控制服務的行為。

環境感知能力

不論是生產伺服器、測試環境還是開發系統,Topshelf都能識別並適應其環境。

對依賴注入的支持

當與依賴注入框架一起使用時,Topshelf提高了軟體架構的質量,並使得管理服務依賴更容易。

跨平台能力

Topshelf主要為Windows設計,但當利用.NET Core時,其也可以在Linux和macOS上執行服務,從而提高了其與其他操作系統的相容性。

Create and Config Topshelf C#

在C#中使用Topshelf建立和配置Windows服務,請按以下步驟操作:

建立一個新的Visual Studio專案

使用Visual Studio建立控制台項目很容易。 在Visual Studio環境中啟動控制台應用,請按照以下簡單步驟:

在使用Visual Studio之前,請確保您已在計算機上安裝它。

開啟新項目

在選擇文件、專案後,選擇'新建'選單。

Topshelf C#(對於開發者的運作方式):圖2

在下面的專案模板引用列表中選擇"Console App"或"Console App (.NET Core)"。

請填寫"名稱"字段為您的專案命名。

Topshelf C#(對於開發者的運作方式):圖3

選擇專案儲存的位置。

當您點擊"建立"時,控制台應用項目將打開。

Topshelf C#(對於開發者的運作方式):圖4

通過NuGet安裝Topshelf

最初使用NuGet包管理器將Topshelf新增到您的專案中。 在包管理器和控制台應用中,執行以下命令:

PM > Install-Package 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.");
            });
        }
    }
}

Topshelf C#(對於開發者的運作方式):圖5

配置服務

啟動和終止服務的機制包含在MyService類中。 服務的定義及其生命週期方法(啟動和停止)與Program類中對應的服務操作相關聯,該類包含Topshelf配置。 服務的屬性,如名稱、顯示名稱和描述,使用單一服務類的運行方法來設置。 使用Topshelf管理和部署Windows服務因為這個簡潔的配置變得簡單。

構建和安裝服務

在構建專案時,確保它沒有錯誤。 使用安裝命令和編譯過的可執行文件從命令行啟動服務:

MyWindowsService.exe install
SHELL

啟動服務

在安裝服務後,使用以下命令運行服務:

MyWindowsService.exe start
SHELL

解除安裝服務

如果需要,使用以下命令提示您解除安裝服務:

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易於整合且有豐富的文件,開發者可以輕鬆地將其整合到他們的程式中。 IronPDF透過輕鬆處理複雜的布局和格式,確保生成的PDF文件與源HTML內容高度相似。

Topshelf C#(對於開發者的運作方式):圖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包。

PM > 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.");
            });
        }
    }
}

開發者可以藉由將Topshelf與IronPDF在C#中結合,快速設計強大的Windows服務以生成和操控PDF文件。 Topshelf提供流暢且使用者友好的API,使得設置和管理Windows服務變得更加容易。

Topshelf C#(對於開發者的運作方式):圖7

一個Stop)該服務的方法,將服務邏輯封裝於所給範例中。 IronPDF用於Start方法中,從HTML文字中建立一個簡單的PDF文件 使用HTML。 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#(對於開發者的運作方式):圖8

此整合展示了Topshelf如何管理服務的生命周期,以確保它作為完整的Windows服務運行,而IronPDF則毫不費力地掌握建立PDF的挑戰過程。 這種整合在C#中將Topshelf和IronPDF的組合能力集合起來,適用於需要自動化文件建立或修改的應用程式。 它提供了可靠性和便於維護性。

結論

總之,Topshelf和IronPDF在C#中的結合使得建立和管理包含生成和操控PDF的Windows服務成為可能。 透過為服務配置和管理提供者友好的API,Topshelf簡化了Windows服務的部署。 IronPDF則在此過程中改進了功能,通過在服務邏輯內部從HTML資訊平順生成PDF文件。

這種整合保證了在自動化文件工作流程中的可靠和強大性能,同時也簡化了開發過程。 無論是用於建立報告、帳單還是其他基於PDF的任務,Topshelf與IronPDF在C#中被視為一種靈活且有效的選擇,使開發者能夠輕鬆建立複雜的文件處理解決方案。

IronPDF和Iron Software Licensing Information將Iron Software的極其靈活系統和套件與其核心支援結合起來,以提供更多線上應用程式和功能以及更有效的開發。

如果授權選項明確且專案特定,開發者可以更輕易地確定哪種模型是最佳的。 這些優勢使得開發者能夠以明確、有效和連貫整合的方式解決多種問題。

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

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起