服务windows服务+辅助角色服务

 1、vs2022新建一个windows服务项目

2、修改服务参数

(1)AutoLog: 是否将事件写入到windows的事件日志中。

(2)canpauseandContinue:服务是否可以暂停和继续

3、添加服务安装程序 在界面内右击鼠标 新建一个服务、新建后如下图:

4、选中serviceProcessInstaller1点右键,选择“属性”,打开serviceProcessInstaller1的属性面板:

Account:指示用来运行此服务的账户类型,默认选择User,修改为高权限的LocalSystem

 5、

选中serviceInstaller1点右键,选择“属性”,打开serviceInstaller1的属性面板

  • ServiceName:在Windows服务里面显示的名称
  • Description:在Windows服务里面显示的描述信息
  • StartType:指示启动此服务的方式和时间 Manual:手动启动 Automatic:自动启动
  • DelayedAutoStart:指示服务是否延时启动,默认false,改为True,则表示服务延时启动

二、安装和卸载Windows服务

1、在命令行下面执行“installutil+生成的可执行文件的路径”的命令进行安装

2、卸载Windows服务:

在命令行里面输入“installutil /u 可执行文件路径”命令,然后回车

服务安装步骤:

1、使用管理员权限运行CMD;

        备注:安装和卸载时我们都需要用到微软提供的工具InstallUtil.exe

        默认位置在:C:\Windows\Microsoft.NET\Framework

2、安装服务

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe D:\2.Package\c#\Text\WindowsService.FirstS\bin\Debug\WindowsService.FirstS.exe

 D:\2.Package\c#\Text\WindowsService.FirstS\bin\Debug 为应用程序的物理路径。

3、卸载服务

         卸载服务和安装服务的区别主要在 /u

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u D:\2.Package\c#\Text\WindowsService.FirstS\bin\Debug\WindowsService.FirstS.exe

卸载应用程序的路径:D:\2.Package\c#\Text\WindowsService.FirstS\bin\Debug

 注意:启动和终止服务可以封装成两个.bat 文件来进行注册和卸载服务。

4、启动服务指令如下:

        Net start ServiceName

        备注:如果需要跟随系统启动需要设置服务的启动方式为自动

5、终止服务指令如下:

        Net Stop ServiceName;

无法调试需要将当前程序附加到一个进程中

使用和调试服务程序时需要进行停止服务后然后在继续运行

如果封装成服务并且使用json配置文件,注意json的存放路径,如果设置

 var config = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("AppSettings.json", false, true).Build();

则必须将json文件放置到"C:\Windows\SysWOW64"目录下

三、使用Net6新建服务

        首先新建一个项目

完成之后,安装nuget包(一个是windows服务, 一个是linux服务)

Install-Package Microsoft.Extensions.Hosting.WindowsServices
Install-Package Microsoft.Extensions.Hosting.Systemd

项目完成后,打包生成。

work services项目介绍:

Worker Service是微软提供的一个项目模板,它继承于BackgroundService。在使用.NET Framework时,我们可以使用Windows Service来创建Windows服务,而在使用.NET Core及更高的.NET版本时,就可以使用Worker Service来取代Windows Service,以便创建跨平台服务。
项目创建成功后,windows会预设一个worker Service的模板,它主要文件为program.cs和worker.cs 提供了服务的启动入口,而work则是服务的具体功能实现。

打开program.cs可以看到 他使用了CreateHostBuilder方法返回了一个田间Worker类作为托管服务的host,然后调用它的Build方法生成实例并调用Run方法来运行该实例。整个Program.cs的结构与普通的控制台应用程序基本相同。

应用过程
接下来我们来使用Worker Service创建一个简单Demo服务,具体实现功能就是在一个日志文件中定时记录一些消息。

首先我们创建一个InfoLogWorker类,并使其继承于BackgroundService类,并将Program配置的服务改成InfoLogWorker。

可以看到,BackgroundService提供了三个虚方法和一个抽象方法,我们需要对StartAsync、StopAsync和ExecuteAsync三个方法进行重写。

其中StartAsync会在服务开启时被调用,而StopAsync则是在服务停止时被调用,ExecuteAsync是必须要被实现的方法,它定义了服务运行时需要执行的操作。

在重写完成这个三个方法之后,我们再创建一个ILogger的只读字段,并在构造函数中获取它的实例,之后将会使用它在调试时打印出我们需要的信息。然后我们再定义一个ServiceRunningMethod方法,用以定义服务运行时需要实现的具体功能。
 

注意:.UseWindowsService() //配置为Windows服务

workservice 中暂时不使用.json格式的配置i文件 使用。config的配置文件

部署为服务运行

使用bat脚本进行部署

install.bat

set current_path=D:\Package\Code\C#\6.service\Text\Learn.Text01\Learn.Text01\bin\Debug\net6.0\
sc create WorkerServiceDemo binPath= "D:\Package\Code\C#\6.service\Text\Learn.Text01\Learn.Text01\bin\Debug\net6.0\Learn.text01.exe"
sc description WorkerServiceDemo  "Text my server01"
sc config WorkerServiceDemo start= auto
sc start WorkerServiceDemo

unitstall.bat

sc stop WorkerServiceDemo
sc delete WorkerServiceDemo

异常:

        提示错误1053:服务没有及时响应或控制请求。(有可能没有安装。net运行环境)

修改如下:

.ConfigureServices(services =>
                {
                    var processModule = Process.GetCurrentProcess().MainModule;
                    if(processModule is not null) {
                        var pathtoExe = processModule.FileName;
                        var pathContetRoot = Path.GetDirectoryName(pathtoExe);
                        Directory.SetCurrentDirectory(pathContetRoot);

                    }
                    services.AddHostedService<Worker>();
                })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
1. 技术建议书 1. 系统部署结构及软硬件配置 1. 设备部署方案 常见的集团式部署方案有三种: 集中式部署:目录数据与原文均集中在总部服务器中; 分布式部署:目录数据与原文数据均分散在各个二级单位中存储,再由一套分布式 全文检索系统将全集团数据提供统一门户、统一权限的检索; 混合式部署:目录数据集中存储在总部服务器中,电子文件存放在各个二级单位服 务器中; XXXX根据本次项目需求与特点推举以纯B/S软件平台构成的集中式部署方案。 各种方案优点对比: "对比项目 "集中部署方案 "分布式部署方案 "混合部署方案 " "对广域网网络带宽 "极高, "极低 "较低 " "要求 "大量的数据需要在 "各二级单位的数据 "二级单位在进行数 " " "企业的广域网中传 "均存储在单位内部 "据管理与检索时, " " "输,有可能影响其 ",大量的查询过程 "需要通过广域网进 " " "他的系统运行,甚 "并不经过广域网, "行;但是查询电子 " " "至导致大文件的传 " "文件则无需经过广 " " "输失败 " "域网,带宽要求不 " " " " "高 " "对广域网的稳定性 "极高 "极低 "较高 " "要求 "稍有不稳定的情况 "如果出现网络不稳 "由于目录数据全部 " " "时,会导致所有 "定的情况,也仅仅 "集中存储在总部, " " " "是影响跨单位的档 "如果出现网络连接 " " " "案检索,此部分影 "不稳定时,全集团 " " " "响不会太大 "的管理系统都无法 " " " " "使用 " "易维护性 "极低 "一般 "极低 " " "仅需对总部服务进 "需对统一检索平台 "仅需要对总部软件 " " "行维护即可 "进行维护,统一检 "平台进行维护即可 " " " "索平台与二级单位 " " " " "之间有接口,此处 " " " " "会有维护 " " "总体维护量 "极低 "极高 "极高 " " "无需对各个点进行 "每个二级单位均要 "每个二级单位均要 " " "维护,且由于是B/S"进行维护,但维护 "进行维护,主要保 " " "产品,维护量可以 "工作主要由二级单 "证原文服务正常, " " "忽略 "位完成 "且需要按照统一要 " " " " "求进行部署、运维 " "安全性 "较高 "极低 "较低 " " "由于所有数据均存 "由于数据是分布存 "如出现灾难性问题 " " "储在一点,如出现 "储,降低了灾害发 ",则将会丢失全部 " " "较大灾难,所有数 "生时对数据的损坏 "集团公司的条目数 " " "据将全部丢失 ",由于统一检索平 "据,但此工作如手 " " " "台定期同步二级单 "工重新录入,工作 " " " "位数据,相当于做 "量可承受 " " " "了一次异地容灾 " " "备份可操作性 "很强 "很强 "很低 " " "由于数据在一点存 "由于统一检索平台 "需对每个点的电子 " " "储,仅需对一点做 "中已经集中了二级 "文件进行备份处理 " " "备份即可 "单位的数据,因此 " " " " "对这一单数据做备 " " " " "份即可 " " "总成本考虑 "极低 "极高 "较高 " " "无需太多服务器、 "每个单位均需服务 "每个二级单位均需 " " "操作系统、数据库 "器、操作系统、数 "配置一套原文服务 " " "与中间件。总体第 "据库与中间件 "器,操作系统 " " "三方产品投资总额 " " " " "最低 " " " "成熟度 "较高 "一般 "较低 " " "案例较多 "存在部分案例 "无成熟案例 " 2. 硬件说明 1. Hyper-V硬件需求 安装并使用Hyper-V角色,需要满足以下条件: 一个基于64位的处理器。Hyper-V仅在64位Windows Server 2008中可用——具体包括64位的Windows Server 2008标准版、Windows Server 2008企业版以及Windows Server 2008数据中心版。Hyper- V在32位(x86)版本的或基于安腾系统版本的Windows Server 2008不可用。虽然如此,Hyper-V管理工具仍然提供32位版本。 硬件辅助虚拟化。这可用于包含了虚拟化选项的处理器——具体来说,包括拥有Intel Virtualization Technology(Intel VT)或AMD Virtualization(AMD- V)技术的处理器。 硬件强制数据执行保护(DEP)必须可用并启动。具体来说,必须启用Intel XD bit(execute disable bit)或AMD NX bit(no execute bit)。 硬件辅助虚拟化以及硬件强制DEP在BIOS

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工控匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值