developpement:dotnet:msioc
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
developpement:dotnet:msioc [2023/05/12 15:44] – [Hosted Service] sgariepy | developpement:dotnet:msioc [2023/06/19 18:43] (Version actuelle) – [Exemple] sgariepy | ||
---|---|---|---|
Ligne 53: | Ligne 53: | ||
====== Hosted Service ====== | ====== Hosted Service ====== | ||
+ | |||
+ | |||
+ | * Permet d' | ||
+ | * Configuré dans ASP.NET Core ou via un modèle Worker Service | ||
+ | * Worker Service sont faits pour des tâches en arrière-plan | ||
+ | * Utiliser ASP.NET Core pour ajouter un service //hosted// | ||
+ | |||
+ | |||
Ligne 58: | Ligne 66: | ||
using Microsoft.Extensions.Hosting; | using Microsoft.Extensions.Hosting; | ||
- | public class CustomHostedBackgroundService: IHostedService, | + | public class CustomHostedService: IHostedService, |
{ | { | ||
- | public | + | public |
{ | { | ||
Console.WriteLine(" | Console.WriteLine(" | ||
Ligne 84: | Ligne 92: | ||
<code csharp> | <code csharp> | ||
services | services | ||
- | .AddTransient< | + | .AddTransient< |
</ | </ | ||
Ligne 90: | Ligne 98: | ||
<code csharp> | <code csharp> | ||
- | app.Services.GetService(typeof(CustomHostedBackgroundService)); | + | app.Services.GetService(typeof(CustomHostedService)); |
</ | </ | ||
+ | |||
+ | |||
+ | ===== Background Service ===== | ||
+ | |||
+ | |||
+ | <code csharp> | ||
+ | using Microsoft.Extensions.Hosting; | ||
+ | |||
+ | public class CustomBackgroundService: | ||
+ | { | ||
+ | public CustomBackgroundService() | ||
+ | { | ||
+ | Console.WriteLine(" | ||
+ | } | ||
+ | | ||
+ | protected override async Task ExecuteAsync(CancellationToken stoppingToken) | ||
+ | { | ||
+ | await Task.Delay(1000, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | Dans la configuration du _container_: | ||
+ | |||
+ | <code csharp> | ||
+ | services | ||
+ | .AddHostedService< | ||
+ | </ | ||
+ | |||
+ | _Injecter_ le service manuellement: | ||
+ | |||
+ | <code csharp> | ||
+ | app.Services.GetService(typeof(CustomBackgroundService)); | ||
+ | </ | ||
+ | |||
+ | ==== Exemple ==== | ||
+ | |||
+ | |||
+ | <code csharp> | ||
+ | protected override async Task ExecuteTask(CancellationToken cancellationToken) | ||
+ | { | ||
+ | |||
+ | while (!cancellationToken.IsCancellationRequested) | ||
+ | { | ||
+ | using (var scope = _serviceProvider.CreateScope()) | ||
+ | { | ||
+ | var productService = scope.ServiceProvider.GetService< | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ====== Exemple exécutable dans LinqPad 7 ====== | ||
+ | |||
+ | Language: C# Program, .NET 7.0 | ||
+ | |||
+ | <code csharp> | ||
+ | void Main() | ||
+ | { | ||
+ | string[] args = new string[0]; | ||
+ | |||
+ | using IHost host = Host.CreateDefaultBuilder(args) | ||
+ | .ConfigureServices((_, | ||
+ | services | ||
+ | .AddSingleton< | ||
+ | .AddSingleton< | ||
+ | ) | ||
+ | .Build(); | ||
+ | |||
+ | using IServiceScope serviceScope = host.Services.CreateScope(); | ||
+ | IServiceProvider provider = serviceScope.ServiceProvider; | ||
+ | |||
+ | BasicService basicService = provider.GetService< | ||
+ | |||
+ | // host.Run(); | ||
+ | |||
+ | Console.WriteLine(" | ||
+ | } | ||
+ | |||
+ | #region Services | ||
+ | |||
+ | public class BasicService | ||
+ | { | ||
+ | private readonly ISimpleService _simpleService; | ||
+ | |||
+ | public BasicService( | ||
+ | ISimpleService simpleService) | ||
+ | { | ||
+ | _simpleService = simpleService; | ||
+ | |||
+ | SetupService(); | ||
+ | } | ||
+ | |||
+ | |||
+ | private void SetupService() | ||
+ | { | ||
+ | _simpleService.SayHello(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public interface ISimpleService { | ||
+ | public void SayHello(); | ||
+ | } | ||
+ | |||
+ | public class SimpleService: | ||
+ | { | ||
+ | private readonly ISimpleService _simpleService; | ||
+ | |||
+ | public SimpleService() {} | ||
+ | |||
+ | public void SayHello() | ||
+ | { | ||
+ | Console.WriteLine(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | #endregion | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
developpement/dotnet/msioc.1683899073.txt.gz · Dernière modification : 2023/05/12 15:44 de sgariepy