当前位置: 首页 > news >正文

推广网站代码南京华夏天成建设有限公司网站

推广网站代码,南京华夏天成建设有限公司网站,网站改版的步骤,上海企业网站制作服务现代软件开发中#xff0c;构建跨平台的应用程序变得愈加重要。C# 和 .NET 6 的出现使得在 Windows、Linux 和 macOS 上创建背景服务变得简单而高效。在本指南中#xff0c;我们将通过创建一个使用 .NET 6 的 Worker Service 来展示如何实现跨平台后台服务。 项目概述 我们…        现代软件开发中构建跨平台的应用程序变得愈加重要。C# 和 .NET 6 的出现使得在 Windows、Linux 和 macOS 上创建背景服务变得简单而高效。在本指南中我们将通过创建一个使用 .NET 6 的 Worker Service 来展示如何实现跨平台后台服务。 项目概述   我们将创建一个简单的后台服务该服务每隔一秒记录当前时间到日志中。此示例将使用 Visual Studio 2022 的 Worker Service 模板来实现并演示如何在不同的平台上运行和部署。 1. 创建跨平台 Worker Service 1.1 安装 Visual Studio 2022 确保您已经安装了 Visual Studio 2022并且在安装过程中选择了 .NET 6.0 工作负载。 1.2 创建 Worker Service 项目 启动 Visual Studio 2022。点击 创建新项目。在搜索框中输入 Worker。选择 Worker Service 模板点击 下一步。输入项目名称例如 MyCrossPlatformService选择位置并点击 创建。 此时Visual Studio 将生成一个基本的 Worker Service 项目结构。 2. 项目结构 创建的项目结构如下 MyCrossPlatformService/ ├── MyCrossPlatformService.csproj ├── Program.cs └── Worker.cs3. 实现 Worker Service服务 3.1 编辑 Worker.cs 打开 Worker.cs 文件修改代码以实现每隔一秒记录当前时间的逻辑 using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging;public class Worker : BackgroundService {private readonly ILoggerWorker _logger;public Worker(ILoggerWorker logger){_logger logger;}protected override async Task ExecuteAsync(CancellationToken stoppingToken){while (!stoppingToken.IsCancellationRequested){_logger.LogInformation(Worker running at: {time}, DateTimeOffset.Now);await Task.Delay(1000, stoppingToken); // 每秒执行一次}} }4. 配置主程序 4.1 编辑 Program.cs 在 Program.cs 中配置和启动应用 using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting;public class Program {public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureServices((hostContext, services) {services.AddHostedServiceWorker();}); }5. 运行服务 5.1 在 Windows 上运行 在 Visual Studio 2022 中可以直接使用调试工具运行服务 点击菜单中的 调试 开始调试或按 F5。控制台窗口将打开并每秒记录当前时间。 5.2 在 Linux 上运行 要在 Linux 上运行此服务您需要发布它并使用命令行运行。可以使用以下步骤 在 Visual Studio 中右键单击项目选择 “发布”。选择目标例如文件夹设置输出路径并选择发布配置Release。点击 “发布”。 发布完成后您可以将输出文件夹中的内容部署到 Linux 系统上然后使用以下命令运行 dotnet MyCrossPlatformService.dll6. 部署为系统服务 在 Linux 上可以将该应用注册为 systemd 服务以便于管理。 6.1 创建 systemd 服务文件 创建一个 systemd 服务文件文件名为 /etc/systemd/system/mycrossplatformservice.service内容如下 [Unit] DescriptionMy Cross-Platform Service[Service] WorkingDirectory/path/to/your/publish ExecStart/usr/bin/dotnet /path/to/your/publish/MyCrossPlatformService.dll Restartalways SyslogIdentifiermycrossplatformservice[Install] WantedBymulti-user.target确保将 /path/to/your/publish 替换为您实际的发布路径。 6.2 启用和启动服务 执行以下命令启用并启动服务 sudo systemctl enable mycrossplatformservice sudo systemctl start mycrossplatformservice6.3 检查服务状态 您可以使用以下命令检查服务的状态 sudo systemctl status mycrossplatformservice7. 日志记录 7.1 配置日志记录 在 Worker 中我们使用了 ILoggerWorker 来记录信息。在 Visual Studio 中您可以通过 appsettings.json 文件配置日志记录设置。例如 {Logging: {LogLevel: {Default: Information,Microsoft: Warning,Microsoft.Hosting.Lifetime: Information}},AllowedHosts: * }我们也可以使用log4net、NLog等第三方日志库来记录日志尤其是log4net非常的强大具体使用在此不进行具体介绍因为网络上资源很多了。 8. 高级特性与扩展 在完成基本服务后可以通过以下方式进一步增强服务的功能和可维护性 8.1 使用依赖注入 您可以通过依赖注入来实现服务间的解耦。 添加自定义服务 创建一个新的接口和实现 ​ public interface IMyService {void DoWork(); }public class MyService : IMyService {public void DoWork(){// 自定义逻辑例如调用 API 或处理数据库操作Console.WriteLine(MyService is working...);} }​ 在 Program.cs 中注册该服务 services.AddTransientIMyService, MyService(); 在 Worker.cs 中使用该服务 private readonly IMyService _myService;public Worker(ILoggerWorker logger, IMyService myService) {_logger logger;_myService myService; }protected override async Task ExecuteAsync(CancellationToken stoppingToken) {while (!stoppingToken.IsCancellationRequested){_myService.DoWork();_logger.LogInformation(Worker running at: {time}, DateTimeOffset.Now);await Task.Delay(1000, stoppingToken);} }8.2 配置管理 .NET Core 和 .NET 6 提供了强大的配置管理系统可以通过 appsettings.json 文件或环境变量来进行配置管理。可以将配置注入到服务中以根据不同环境进行调整。 添加配置文件 appsettings.json 创建 appsettings.json 文件并在其中添加所需的配置项例如 {MyServiceConfig: {Setting1: Value1,Setting2: Value2} }使用配置 在 Program.cs 中加载配置 public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((context, config) {config.AddJsonFile(appsettings.json, optional: true, reloadOnChange: true);}).ConfigureServices((hostContext, services) {services.ConfigureMyServiceConfig(hostContext.Configuration.GetSection(MyServiceConfig));services.AddHostedServiceWorker();services.AddTransientIMyService, MyService();});在 Worker.cs 中注入并使用配置 public class Worker : BackgroundService {private readonly ILoggerWorker _logger;private readonly IMyService _myService;private readonly IOptionsMyServiceConfig _config;public Worker(ILoggerWorker logger, IMyService myService, IOptionsMyServiceConfig config){_logger logger;_myService myService;_config config;}protected override async Task ExecuteAsync(CancellationToken stoppingToken){while (!stoppingToken.IsCancellationRequested){_logger.LogInformation(Setting1: {setting1}, _config.Value.Setting1);_myService.DoWork();await Task.Delay(1000, stoppingToken);}} }public class MyServiceConfig {public string Setting1 { get; set; }public string Setting2 { get; set; } }8.3 健康检查与监控 通过健康检查确保服务的正常运行。 在 Program.cs 中添加健康检查支持 services.AddHealthChecks();实现自定义健康检查逻辑 public class MyHealthCheck : IHealthCheck {public TaskHealthCheckResult CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken default){bool isHealthy true; // 检查服务是否正常return isHealthy? Task.FromResult(HealthCheckResult.Healthy(The service is healthy.)): Task.FromResult(HealthCheckResult.Unhealthy(The service is unhealthy.));} }在 Program.cs 中注册健康检查 services.AddHealthChecks().AddCheckMyHealthCheck(My Health Check);9. 日志持久化 将日志记录到文件、数据库或第三方日志管理系统。 安装 Serilog 的 NuGet 包 dotnet add package Serilog.Extensions.Logging dotnet add package Serilog.Sinks.File在 Program.cs 中配置 Serilog using Serilog;public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).UseSerilog((context, config) {config.WriteTo.Console();config.WriteTo.File(logs/log.txt, rollingInterval: RollingInterval.Day);}).ConfigureServices((hostContext, services) {services.AddHostedServiceWorker();});10. 容器化支持 使用 Docker 将服务容器化便于部署。 10.1 创建 Dockerfile 在项目的根目录下创建一个 Dockerfile # 使用官方的 .NET SDK 镜像作为构建阶段 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /app# 复制并构建应用程序 COPY . . RUN dotnet restore RUN dotnet publish -c Release -o out# 使用 .NET 运行时镜像作为运行阶段 FROM mcr.microsoft.com/dotnet/aspnet:6.0 WORKDIR /app COPY --frombuild /app/out .# 启动服务 ENTRYPOINT [dotnet, MyCrossPlatformService.dll]10.2 构建和运行 Docker 镜像 在 Visual Studio 中打开命令提示符构建 Docker 镜像 docker build -t mycrossplatformservice .运行容器 docker run -d --name mycrossplatformservice mycrossplatformservice11. 总结 通过使用 Visual Studio 2022 和 .NET 6您可以轻松创建一个跨平台的后台服务支持 Windows、Linux 和 macOS。通过添加依赖注入、健康检查、日志记录和容器化等功能您可以构建出复杂且高可维护性的跨平台服务。这使得 C# 和 .NET 6 成为构建现代背景服务的理想技术栈。您可以根据需求进一步扩展服务功能例如数据库连接、API 集成、消息队列等满足不同业务需求。
http://www.tj-hxxt.cn/news/224378.html

相关文章:

  • 建设厅网站上的信息采集表网站跳出率因素
  • 蓝希菏泽网站建设做公司网站都需要什么
  • 海宁市住房和城乡建设网站网页制作创建站点
  • 郑州网站建设案例wordpress如何添加页面子目录下
  • 网站建设属于移动互联网德宏企业网站建设公司6
  • 企业网站搭建程序广州外贸网站设计
  • 西樵网站设计制作做网站最下面写什么
  • 广西建设厅考试网站首页数字营销传播
  • 长春网站建设公司怎么样购物网站建设模板下载
  • 长春 万网 网站建设苏州网站设计公司有哪些
  • 用drupal做的网站淘宝评价采集wordpress
  • 做彩票网站能挣到钱吗电脑网页制作
  • 速卖通网站怎么做推广网站数据库 mysql
  • 杭州建设网官方网站建筑工程网络计划图绘制软件
  • 门户网站建设探究wordpress 自动换行
  • 网站流量数据分析炫酷网站欣赏
  • 做的网站怎么进后台怎么建网上商城
  • 外贸网站建设服务器大地保险网站
  • 什么网站做贸易好百度 网站地图怎么做
  • 全网营销和网站建设阿里云网站建设教程
  • 网站开发用什么好加强门户网站建设宣传
  • 做网站如何变现百度网站推广外包
  • 网站页面怎么设计西安风险等级最新
  • 青岛网站开发培训价格哪个网站专门做游戏脚本
  • 杭州公司建设网站wordpress 查询页面
  • 儿童网站模板免费下载厦门营销型网站
  • 南通企业网站seo建站目的
  • 沈阳做网站在哪wordpress自动视频播放
  • 网站访问大小小程序搭建需要多久
  • 哪个网站可以做室内设计seo的公司排名