.NET 帮助

Topshelf C#(它是如何为开发者工作的)

发布 2024年八月13日
分享:

介绍

一个受欢迎的开源软件包叫 顶层架构 旨在使在 .NET 中创建 Windows 服务变得更容易。它提供的框架简化了创建、部署和管理的过程,并使之变得合理。 Windows 服务开发人员可以专注于业务逻辑,而不是复杂的服务控制管理。结合IronPDF,一个功能丰富的C#库,用于创建和修改PDF文件,开发人员可以构建可靠且强大的服务,能够处理复杂的文档处理任务。

这种连接为需要高效和自动化文档工作流程的企业提供了无缝解决方案,通过在完整的Windows服务框架内自动创建、修订和分发PDF。开发人员可以利用Topshelf在他们的服务应用程序中获得高功能性和可维护性,保证其服务既稳健又易于使用。 IronPDF 在C#中。

什么是Topshelf C#?

使用开源项目Topshelf .NET包,可以简化Windows服务的开发、设置和实现过程。Topshelf通过去除创建Windows服务过程中的许多复杂性,使开发人员能够更多地专注于其应用程序的基本功能,而不是Windows服务管理的细节。

通过少量代码更改,Topshelf使开发人员可以轻松地将控制台应用程序转换为服务。它还提供了一个流畅的API,用于建立服务设置,包括依赖项、恢复选项以及启动和停止服务的操作。由于其易用性和适应性,Topshelf 是.NET开发人员希望有效创建稳定和可管理的Windows服务的流行选择。

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 C

按照以下步骤使用Topshelf在C#中创建和配置Windows服务:

创建一个新的 Visual Studio 项目

使用 Visual Studio 创建一个控制台项目非常容易。要在 Visual Studio 环境中启动一个控制台应用程序,请按照以下简单步骤操作:

在使用 Visual Studio 之前,请确保已在您的计算机上安装它。

开始一个新项目

在选择文件、项目后,选择新建菜单。

Topshelf C#(它如何为开发人员工作):图2

选择“控制台应用程序”或“控制台应用程序 (.NET Core)从下面的项目模板参考列表中选择。

请在“名称”字段中为您的项目命名。

Topshelf C#(适用于开发人员的工作方式):图3

选择项目存储位置。

点击“创建”后,将打开控制台应用程序项目。

Topshelf C#(适用于开发人员的工作原理):图 4

通过 NuGet 安装 Topshelf

使用 NuGet 包管理器,最初将 Topshelf 添加到您的项目中。在包管理器和控制台应用程序中,执行以下命令:

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#中快速设计用于PDF生产和操作的强大Windows服务。Topshelf提供了一个流畅且用户友好的API,使得设置和管理Windows服务变得更加容易。

Topshelf C#(开发人员的工作原理):图7

MyPdfService 类,实现了启动方法 (开始) 和结束 (停止) 服务在所给示例中封装了服务逻辑。IronPDF 用在 Start 方法中以创建一个简单的 PDF 文档 从HTML文本。展示了使用IronPDF的HtmlToPdf类将HTML渲染成PDF格式的功能,展示了如何将基本的HTML信息转化为PDF。 (例如 "

你好, PDF!

) 转换为PDF文件 ("GeneratedDocument.pdf").

Topshelf C#(对开发人员的工作原理):图8

此集成演示了Topshelf如何管理服务的生命周期,以确保它作为完整的Windows服务运行,以及IronPDF如何轻松管理创建PDF的复杂过程。结合Topshelf和IronPDF在C#中的功能,此集成非常适合需要自动化文档创建或修改的应用程序。它提供了可靠性和维护的便利性。

结论

总之,通过在C#中结合Topshelf和IronPDF可以创建和管理涉及PDF创建和操作的Windows服务。Topshelf提供了一个用户友好的API用于服务配置和管理,简化了Windows服务的部署过程。在服务逻辑内部,IronPDF通过从HTML信息中流畅生成PDF文档,提升了功能表现。

这种集成保证了在自动化文档工作流程中的可靠和强大的性能,同时简化了开发过程。在C#中使用Topshelf和IronPDF是一种灵活且高效的解决方案,能够使开发人员轻松创建复杂的文档处理解决方案,无论是生成报告、发票还是其他基于PDF的任务。

IronPDF和 铁软件(Iron Software) 结合了Iron Software令人难以置信的灵活系统和套件及其核心支持,为开发人员提供更多的在线应用程序和功能,以及更有效的开发。

如果许可选项清晰且与项目具体匹配,开发人员可以更容易地确定哪种模式是最佳的。这些优势使开发人员能够以明确、有力和紧密集成的方式解决各种问题。

< 前一页
EasyNetQ .NET(开发人员的工作原理)
下一步 >
CSLA .NET(它对开发人员的工作原理)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >