From 1f30be648dbb64a7c5bc1a42d5e3ad8638db16ec Mon Sep 17 00:00:00 2001 From: d_compcontrol Date: Tue, 15 Apr 2025 14:19:26 +0200 Subject: [PATCH] Init --- TemplateNETService/BaseWorker.cs | 36 ++++++++++++ TemplateNETService/Business/Config.cs | 15 +++++ TemplateNETService/Install/InstallService.bat | 8 +++ .../Install/UnInstallService.bat | 4 ++ TemplateNETService/Models/General.cs | 13 +++++ TemplateNETService/Program.cs | 55 +++++++++++++++++++ TemplateNETService/Startup.cs | 28 ++++++++++ TemplateNETService/TemplateNETService.csproj | 33 +++++++++++ TemplateNETService/TemplateNETService.sln | 25 +++++++++ TemplateNETService/appsettings.json | 5 ++ 10 files changed, 222 insertions(+) create mode 100644 TemplateNETService/BaseWorker.cs create mode 100644 TemplateNETService/Business/Config.cs create mode 100644 TemplateNETService/Install/InstallService.bat create mode 100644 TemplateNETService/Install/UnInstallService.bat create mode 100644 TemplateNETService/Models/General.cs create mode 100644 TemplateNETService/Program.cs create mode 100644 TemplateNETService/Startup.cs create mode 100644 TemplateNETService/TemplateNETService.csproj create mode 100644 TemplateNETService/TemplateNETService.sln create mode 100644 TemplateNETService/appsettings.json diff --git a/TemplateNETService/BaseWorker.cs b/TemplateNETService/BaseWorker.cs new file mode 100644 index 0000000..85f0996 --- /dev/null +++ b/TemplateNETService/BaseWorker.cs @@ -0,0 +1,36 @@ +using Microsoft.Extensions.Hosting; +using Serilog; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TemplateNETService +{ + internal class BaseWorker : BackgroundService + { + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + OnStart(); + + while (!stoppingToken.IsCancellationRequested) + { + Log.Debug("Worker läuft..."); + await Task.Delay(1000, stoppingToken); + } + OnStop(); + } + + public void OnStart() + { + Log.Debug("Der Service wurde gestartet."); + } + + public void OnStop() + { + Log.Information("Der Service wird gestoppt."); + } + + } +} diff --git a/TemplateNETService/Business/Config.cs b/TemplateNETService/Business/Config.cs new file mode 100644 index 0000000..88724d3 --- /dev/null +++ b/TemplateNETService/Business/Config.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TemplateNETService.Models; + +namespace TemplateNETService.Business +{ + public class Config + { + public static General general { get; set; } + } +} + diff --git a/TemplateNETService/Install/InstallService.bat b/TemplateNETService/Install/InstallService.bat new file mode 100644 index 0000000..cbf9626 --- /dev/null +++ b/TemplateNETService/Install/InstallService.bat @@ -0,0 +1,8 @@ +SET InstallUtilPath=C:\Windows\Microsoft.NET\Framework64\v4.0.30319 +SET ServiceExePath=C:\CompControl\CompControl.ProductControl\ProductControl\ProductControl.Service\bin\Debug\net8.0 +SET ServiceName=TestService +SET ExeFileName=CompControl.ProductControl.Service.exe + +CD /d %InstallUtilPath% +sc create %ServiceName% binPath= %ServiceExePath%\%ExeFileName% +PAUSE \ No newline at end of file diff --git a/TemplateNETService/Install/UnInstallService.bat b/TemplateNETService/Install/UnInstallService.bat new file mode 100644 index 0000000..5e5545b --- /dev/null +++ b/TemplateNETService/Install/UnInstallService.bat @@ -0,0 +1,4 @@ +SET ServiceName=TestService +sc stop %ServiceName% +sc delete %ServiceName% +PAUSE \ No newline at end of file diff --git a/TemplateNETService/Models/General.cs b/TemplateNETService/Models/General.cs new file mode 100644 index 0000000..2b5efdc --- /dev/null +++ b/TemplateNETService/Models/General.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TemplateNETService.Models +{ + public class General + { + public int ThisPort { get; set; } + } +} diff --git a/TemplateNETService/Program.cs b/TemplateNETService/Program.cs new file mode 100644 index 0000000..1b553cc --- /dev/null +++ b/TemplateNETService/Program.cs @@ -0,0 +1,55 @@ +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Serilog; +using Log = Serilog.Log; +using Serilog.Events; +using Microsoft.AspNetCore.Hosting; +using TemplateNETService.Models; + +namespace TemplateNETService.Business +{ + public class Program + { + public static void Main(string[] args) + { + Directory.CreateDirectory("_LOG"); + Log.Logger = new LoggerConfiguration() + .WriteTo.Console() + .MinimumLevel.Debug() + .MinimumLevel.Override("Microsoft", LogEventLevel.Error) // Für Microsoft-Komponenten nur Warning+ + .WriteTo.File(Path.Combine(AppContext.BaseDirectory, "_LOG/TEST.log"), rollingInterval: RollingInterval.Day) + .Filter.ByExcluding(logEvent => logEvent.Level == LogEventLevel.Information) + .CreateLogger(); + + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .UseWindowsService() + .ConfigureAppConfiguration((context, config) => + { + config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); + }) + .UseSerilog() + .ConfigureWebHostDefaults(webBuilder => + { + var config = new ConfigurationBuilder() + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .Build(); + + Config.general = config.GetSection("General").Get(); + + webBuilder.UseStartup(); + webBuilder.UseKestrel(options => + { + options.ListenAnyIP(Config.general.ThisPort); + }) + .ConfigureServices(services => + { + services.AddHostedService(); + }); + }); + } +} diff --git a/TemplateNETService/Startup.cs b/TemplateNETService/Startup.cs new file mode 100644 index 0000000..b6ed8fa --- /dev/null +++ b/TemplateNETService/Startup.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; + +namespace TemplateNETService +{ + public class Startup + { + public void ConfigureServices(IServiceCollection services) + { + services.AddControllers(); + } + + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + app.UseDeveloperExceptionPage(); + + app.UseRouting(); + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + } + + } +} diff --git a/TemplateNETService/TemplateNETService.csproj b/TemplateNETService/TemplateNETService.csproj new file mode 100644 index 0000000..0cc70fe --- /dev/null +++ b/TemplateNETService/TemplateNETService.csproj @@ -0,0 +1,33 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + + + + + + + + Always + + + PreserveNewest + + + PreserveNewest + + + + diff --git a/TemplateNETService/TemplateNETService.sln b/TemplateNETService/TemplateNETService.sln new file mode 100644 index 0000000..c9badff --- /dev/null +++ b/TemplateNETService/TemplateNETService.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemplateNETService", "TemplateNETService.csproj", "{BBF90686-16D8-4FE0-8867-6065F0AFD2AC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BBF90686-16D8-4FE0-8867-6065F0AFD2AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BBF90686-16D8-4FE0-8867-6065F0AFD2AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BBF90686-16D8-4FE0-8867-6065F0AFD2AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BBF90686-16D8-4FE0-8867-6065F0AFD2AC}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3A39DCF0-8EA1-4982-81F7-B1A96E5A6F49} + EndGlobalSection +EndGlobal diff --git a/TemplateNETService/appsettings.json b/TemplateNETService/appsettings.json new file mode 100644 index 0000000..018106c --- /dev/null +++ b/TemplateNETService/appsettings.json @@ -0,0 +1,5 @@ +{ + "General": { + "ThisPort": 7654 + } +}