.NET 幫助

Topshelf C#(它對開發人員的運作方式)

發佈 2024年8月13日
分享:

介紹

一個受歡迎的開源軟體包叫做 頂層 是為了讓在 .NET 中創建 Windows 服務變得更簡單而創建的。它提供的框架可以簡化並且對創建、部署和管理更加合理。 Windows 服務,讓開發者可以專注於業務邏輯,而不是服務控制管理的複雜性。結合功能豐富的 C# 庫 IronPDF 來創建和修改 PDF 文件,開發者可以構建可靠而強大的服務,以處理複雜的文檔處理工作。

這種結合為需要高效和自動化文檔工作流程的企業提供了一個無縫的解決方案,通過在完整的 Windows 服務框架內自動創建、修改和分發 PDF。開發者可以通過使用 Topshelf 獲得其服務應用程序的高功能性和可維護性,保證其穩定性和易用性。 IronPDF 在 C# 中。

什麼是 Topshelf C#?

Topshelf .NET 套件是一個開源專案,幫助簡化 Windows 服務的開發、設置和實施。通過消除創建 Windows 服務過程中的許多複雜性,開發人員能夠更多地專注於應用程序的基本功能,而不是 Windows 服務管理的細節。

Topshelf 使開發人員能夠簡單地將控制台應用程序轉變為服務,且只需少量的代碼更改。此外,它還提供了一個順暢的 API,用於設置服務配置,包括依賴項、恢復選項以及啟動和停止服務的操作。由於使用方便和靈活性,Topshelf 成為了希望有效創建穩定且易於管理的 Windows 服務的 .NET 開發人員的熱門選擇。

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 上執行服務,從而提高了與其他操作系統的兼容性。

創建和配置 Topshelf

使用 Topshelf 在 C# 中創建和配置 Windows 服務,可按照以下步驟進行:

建立一個新的 Visual Studio 專案

使用 Visual Studio 建立主控台專案非常簡單。在 Visual Studio 環境中啟動主控台應用程式,請按照以下的簡單步驟:

在使用 Visual Studio 之前,請確保您已安裝該軟體於您的電腦上。

開始新專案

選擇「檔案」、「專案」後,選擇「新建」選單。

Topshelf C#(適用於開發人員的運作原理):圖二

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

為了給您的專案命名,請填寫「名稱」欄位。"

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

選擇專案儲存的位置。

當您點擊「Create」時,控制台應用程式專案將會開啟。

Topshelf C#(如何為開發人員工作):圖4

透過 NuGet 安裝 Topshelf

使用 NuGet 套件管理器,最初將 Topshelf 添加到您的專案中。在套件管理器和 Console 應用程式中,執行以下命令:

Install-Package Topshelf
Install-Package Topshelf
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

建立服務類別

描述此類別的服務邏輯。應在此類別中實現啟動和停止等服務操作。

using System;
using Topshelf;
namespace MyWindowsService
{
    public class MyService
    {
        public bool Start()
        {
            // Write start logic here
            Console.WriteLine("Service Started.");
            return true;
        }
        public bool Stop()
        {
            // Write stop logic here
            Console.WriteLine("Service Stopped.");
            return true;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
            {
                x.Service<MyService>(s =>
                {
                    s.ConstructUsing(name => new MyService());
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });
                x.RunAsLocalSystem();
                x.SetServiceName("MyService");
                x.SetDisplayName("My Service");
                x.SetDescription("This is a sample service created using Topshelf.");
            });
        }
    }
}
using System;
using Topshelf;
namespace MyWindowsService
{
    public class MyService
    {
        public bool Start()
        {
            // Write start logic here
            Console.WriteLine("Service Started.");
            return true;
        }
        public bool Stop()
        {
            // Write stop logic here
            Console.WriteLine("Service Stopped.");
            return true;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
            {
                x.Service<MyService>(s =>
                {
                    s.ConstructUsing(name => new MyService());
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });
                x.RunAsLocalSystem();
                x.SetServiceName("MyService");
                x.SetDisplayName("My Service");
                x.SetDescription("This is a sample service created using Topshelf.");
            });
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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

配置服務

啟動和終止服務的機制包含在MyService類中。服務定義及其生命周期方法 (開始和停止) 連接至 Program 類別中的相應服務操作,該類別包含 Topshelf 的配置。使用 run 方法設定服務的屬性,例如其名稱、顯示名稱和描述,這些屬性均設定於單一服務類別中。使用 Topshelf 管理和部署 Windows 服務的過程,由於這種簡潔的配置而變得簡單。

建置並安裝服務

在構建專案時,確保它是無錯誤的。使用安裝命令和編譯後的執行檔從命令行啟動服務:

MyWindowsService.exe install
MyWindowsService.exe install
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

啟動服務

使用以下指令在安裝後啟動服務:

MyWindowsService.exe start
MyWindowsService.exe start
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

卸載服務

使用以下命令提示符來卸載服務(如果需要):

MyWindowsService.exe uninstall
MyWindowsService.exe uninstall
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

此範例向您展示如何在 C# 中使用 Topshelf 創建和配置 Windows 服務。Topshelf 簡化了這一過程,使得定義、安裝、設置和管理 Windows 服務變得幾乎不需要編寫代碼。

開始

要使用 IronPDF 和 Topshelf 在 C# 中構建 Windows 服務,請採取以下行動:

什麼是 IronPDF?

IronPDF 是一個功能豐富的 .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 套件。

Install-Package IronPDF
Install-Package IronPDF
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPDF
VB   C#

使用 IronPDF 創建您的服務類別

定義 IronPDF 用於創建和修改 PDF 文件的功能以及類別的服務邏輯。

using System;
using IronPdf;
using Topshelf;
namespace PdfService
{
    public class MyPdfService
    {
        public bool Start()
        {
            Console.WriteLine("Service Starting...");
            GeneratePdf();
            return true;
        }
        public bool Stop()
        {
            Console.WriteLine("Service Stopping...");
            return true;
        }
        private void GeneratePdf()
        {
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, PDF!</h1>");
            pdf.SaveAs("GeneratedDocument.pdf");
            Console.WriteLine("PDF Generated.");
        }
    }
    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
{
    public class MyPdfService
    {
        public bool Start()
        {
            Console.WriteLine("Service Starting...");
            GeneratePdf();
            return true;
        }
        public bool Stop()
        {
            Console.WriteLine("Service Stopping...");
            return true;
        }
        private void GeneratePdf()
        {
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, PDF!</h1>");
            pdf.SaveAs("GeneratedDocument.pdf");
            Console.WriteLine("PDF Generated.");
        }
    }
    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.");
            });
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

開發人員可以將Topshelf與IronPDF結合在C#中,快速設計強大的Windows服務進行PDF生成和操作。Topshelf提供了一個流暢且用戶友好的API,使設置和管理Windows服務更加容易。

Topshelf C#(對開發人員的工作原理):圖 7

MyPdfService 類別,實現了啟動方法 (開始) 和結尾 (停止) 服務,在給出的例子中封裝了服務邏輯。在 Start 方法中使用 IronPDF 來創建一個簡單的 PDF文檔 從 HTML 文本。演示了使用 IronPDF 的 HtmlToPdf 類將 HTML 渲染成 PDF 格式的能力,展示了如何將基礎的 HTML 信息轉換成 PDF。 (例如 "

你好,PDF!

) 轉換成 PDF 檔案 ("GeneratedDocument.pdf").

Topshelf C#(它如何為開發人員工作):圖 8

此整合展示了Topshelf如何管理服務的生命週期,確保其作為完整的Windows服務運行,並且展示了IronPDF如何輕鬆地管理製作PDF的複雜過程。結合了Topshelf和IronPDF在C#中的功能,這個整合非常適合需要自動化文件創建或修改的應用程式。它提供了可靠性和易於維護性。

結論

總而言之,結合Topshelf和IronPDF在C#中創建和管理Windows服務,使得建立和操作PDF變得可行。通過提供用於服務配置和管理的用戶友好API,Topshelf簡化了Windows服務的部署。在服務邏輯中,IronPDF能夠平滑地從HTML信息生成PDF文檔,從而在這期間提高了功能性。

這種集成保證了自動化文檔工作流程中的可靠而強大的性能,同時也簡化了開發過程。C#中的Topshelf與IronPDF結合,脫穎而出成為一個靈活且高效的選擇,使開發人員能夠輕鬆創建複雜的文檔處理解決方案,無論是生成報告、發票還是任何其他基於PDF的任務。

IronPDF 和 IronSoftware 結合來自Iron Software的極其靈活系統和套件及其核心支持,以提供開發人員更多線上應用程式和功能,並更有效地進行開發。

如果授權選項明確且具體適用於項目,開發人員可以更容易地確定最佳模型。這些好處使開發人員能以清晰明了、有效且統一集成的方式解決各種問題。

< 上一頁
EasyNetQ .NET(對開發者來說如何運作)
下一個 >
CSLA .NET (如何運作給開發人員)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >