{"id":821,"date":"2023-01-12T17:13:53","date_gmt":"2023-01-12T17:13:53","guid":{"rendered":"https:\/\/okankaradag.com\/?p=821"},"modified":"2023-01-13T07:14:05","modified_gmt":"2023-01-13T07:14:05","slug":"net-6-0-background-service","status":"publish","type":"post","link":"https:\/\/okankaradag.com\/en\/net-6-0\/net-6-0-background-service","title":{"rendered":".Net 6.0 Background Service"},"content":{"rendered":"<p>Bu g\u00f6nderide background servislere giri\u015f yapaca\u011f\u0131z, nedir, nas\u0131l \u00e7al\u0131\u015f\u0131r, hangi ama\u00e7larla kullan\u0131ld\u0131\u011f\u0131n\u0131 ve.<strong>net 7.0<\/strong> ile nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 inceleyip proje yapaca\u011f\u0131z.<\/p>\n\n\n\n<h5 id=\"background-servisler-nedir\">Background Servisler Nedir?<\/h5>\n\n\n\n<p>Background Service <strong>IHostedService<\/strong>&#8216;den miras al\u0131nm\u0131\u015f asenkron \u015feklinde \u00e7al\u0131\u015fabilen, ayr\u0131 bir <strong>worker<\/strong> olarak \u00e7al\u0131\u015fmas\u0131na kar\u015f\u0131n .net core web uygulamas\u0131 i\u00e7inde de \u00e7al\u0131\u015fabilir. <\/p>\n\n\n\n<h5 id=\"kullanim-alanlari\">Kullan\u0131m Alanlar\u0131<\/h5>\n\n\n\n<ul><li>Arkaplanda asenkron olarak \u00e7al\u0131\u015farak, kaynaklar\u0131m\u0131z\u0131 d\u00fczg\u00fcn payla\u015ft\u0131rma imkan\u0131 vermesi. <\/li><li><strong>Rabbitmq<\/strong>, <strong>kafka <\/strong>gibi mesaj broker implematasyonu ile asenkron ileti\u015fim sa\u011flamas\u0131.<\/li><li>G\u00fcnl\u00fck, ayl\u0131k gibi \u00e7al\u0131\u015fmas\u0131 gereken s\u00fcre\u00e7leri y\u00f6netebilme kolayl\u0131\u011f\u0131 sa\u011flamas\u0131.<\/li><\/ul>\n\n\n\n<p><strong>Faydal\u0131 K\u00fct\u00fcphaneler<\/strong><\/p>\n\n\n\n<p>A\u015fa\u011f\u0131daki k\u00fct\u00fcphaneler background joblar\u0131n\u0131z\u0131 y\u00f6netmenizde b\u00fcy\u00fck kolayl\u0131k sa\u011fl\u0131yor fakat basit uygulamalar\u0131n\u0131z i\u00e7in ise gereksiz y\u00fck olabilece\u011finden dotnet&#8217;in kendi servisini kullanmak daha faydal\u0131 olacakt\u0131r.<\/p>\n\n\n\n<ul><li>Hangfire<\/li><li>Quartz<\/li><\/ul>\n\n\n\n<p>\u00d6rnek proje \u00fczerinden nas\u0131l <strong>implement <\/strong>edilir ona bakaca\u011f\u0131z, ard\u0131ndan da <strong>CancellationToken <\/strong>ve <strong>HostedService <\/strong>tabanl\u0131 bir inceleme yapaca\u011f\u0131z.<\/p>\n\n\n\n<h5 id=\"proje-nasil-implement-edilir\">Proje (Nas\u0131l \u0130mplement edilir)<\/h5>\n\n\n\n<p>.Net 5.0, 6.0,7.0 s\u00fcr\u00fcmlerinden herhangi birine uygulayabilirsiniz. Ben <strong>.net 7.0<\/strong> ile projeyi olu\u015fturaca\u011f\u0131m. Web api uygulamas\u0131 olacak, i\u00e7ine birden \u00e7ok servis ekleyebilece\u011fiz ilk olarak service nas\u0131l kaydetti\u011fimize ve \u00e7al\u0131\u015fma mant\u0131\u011f\u0131na bakal\u0131m.<\/p>\n\n\n\n<p><strong>Kullan at tek seferlik servis :<\/strong><\/p>\n\n\n\n<p>Program.cs&#8217;ye <strong>hostedservice<\/strong> olarak kaydedelim.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true\">builder.Services.AddHostedService&lt;FireForgotService&gt;();<\/pre><\/div>\n\n\n\n<p>Ayr\u0131ca a\u015fa\u011f\u0131daki \u015fekilde de kaydedilebilir.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true\">builder.Services.AddSingleton&lt;IHostedService, FireAndForgetService&gt;();<\/pre><\/div>\n\n\n\n<p><strong>Service:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true\">public class FireForgotService : BackgroundService\n{\n    private readonly ILogger&lt;FireForgotService&gt; _logger;\n    private int _counter = 0;\n    public FireForgotService(ILogger&lt;FireForgotService&gt; logger)\n    {\n        _logger = logger;\n    }\n    protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n    {\n        while (!stoppingToken.IsCancellationRequested)\n        {\n            _logger.LogInformation(\"TimerService is working. Count: {Count}\", ++_counter);\n            await Task.Delay(1000, stoppingToken);\n            await StopAsync(stoppingToken);\n            await Task.CompletedTask;\n        }\n    }\n}<\/pre><\/div>\n\n\n\n<p><strong>StopAsync()<\/strong> <strong>BackgroundService <\/strong>class&#8217;\u0131n bir \u00fcyesi bu metod ile servisi durdurabiliyoruz.<\/p>\n\n\n\n<p><strong>Cancelletion token<\/strong> uygulamam\u0131z \u00e7al\u0131\u015f\u0131rken kapanmas\u0131, taskin iptal edilmesi gibi process durdurulma durumlar\u0131nda service&#8217;deki i\u015flemi de durduracak bir i\u015flem t\u00fcr\u00fcd\u00fcr. \u00d6rne\u011fin uygulama \u00e7al\u0131\u015f\u0131rken konsoldan ctrl c ile sh\u0131tdown yapabilirsiniz.<\/p>\n\n\n\n<p><strong>Zaman bazl\u0131 \u00e7al\u0131\u015ft\u0131rabilme (Cron )<\/strong><\/p>\n\n\n\n<p>Background joblar\u0131n en \u00e7ok i\u015fe yarad\u0131\u011f\u0131 nokta planl\u0131 i\u015flerimizi \u00e7al\u0131\u015ft\u0131rabilmeye imkan verebilmesidir. \u00d6rne\u011fin g\u00fcnde 1 kez, her ay\u0131n 15&#8217;inde, 10 dakika da bir gibi \u00e7al\u0131\u015fabilmesi.<\/p>\n\n\n\n<p><strong>Cron Job \u00d6rnekleri<\/strong><\/p>\n\n\n\n<p>5 alandan olu\u015fur e\u011fer ki 6 hane olursa ilk ifade saniyeyi temsil eder.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"547\" src=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2023\/01\/cron_expression_syntax-1024x547.png\" alt=\"\" class=\"wp-image-834\" srcset=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2023\/01\/cron_expression_syntax-1024x547.png 1024w, https:\/\/okankaradag.com\/wp-content\/uploads\/2023\/01\/cron_expression_syntax-300x160.png 300w, https:\/\/okankaradag.com\/wp-content\/uploads\/2023\/01\/cron_expression_syntax-768x410.png 768w, https:\/\/okankaradag.com\/wp-content\/uploads\/2023\/01\/cron_expression_syntax-18x10.png 18w, https:\/\/okankaradag.com\/wp-content\/uploads\/2023\/01\/cron_expression_syntax.png 1251w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\">* * * ? * *<\/td><td>Her saniye<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">0 *\/10 * ? * *<\/td><td>10 dakikada bir<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">0 0 * ? * *<\/td><td>Her saat<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">0 0 1 * * ?<\/td><td>Her g\u00fcn gece 1<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">0 0 12 1 * ?<\/td><td>Her ay\u0131n 1&#8217;i gece 12<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h5 id=\"zaman-bazli-calistirilabilen-joblar-schedule-job\">Zaman Bazl\u0131 \u00c7al\u0131\u015ft\u0131r\u0131labilen Joblar (Schedule Job) <\/h5>\n\n\n\n<p>Web api projesi i\u00e7ine ayarlad\u0131\u011f\u0131m\u0131z cron ifadesine g\u00f6re \u00e7al\u0131\u015facak \u00f6rnek bir service yazal\u0131m.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"toolbar:0 lang:c# decode:true\" >public class TimerService : BackgroundService\n{\n    private readonly ILogger&lt;TimerService&gt; _logger;\n    private readonly string cronExp = \"0\/5 * * * * ?\"; \/\/ 5 seconds\n    private DateTime nextRunTime = DateTime.UtcNow;\n    public TimerService(ILogger&lt;TimerService&gt; logger)\n    {\n        _logger = logger;\n        SetNextDate();\n    }\n\n    protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n    {\n        while (!stoppingToken.IsCancellationRequested)\n        {\n            await Task.Delay(GetDelayTime(), stoppingToken);\n            _logger.LogInformation(\"TimerService is working.\");\n            nextRunTime = GetNextDate();\n        }\n    }\n    private int GetDelayTime()\n    {\n        var delayTime = (nextRunTime - DateTime.UtcNow).TotalMilliseconds;\n        if (delayTime &lt; 0)\n        {\n            nextRunTime = GetNextDate();\n            delayTime = (nextRunTime - DateTime.UtcNow).TotalMilliseconds;\n        }\n        return (int)delayTime;\n    }\n    private DateTime GetNextDate()\n    {\n        var cron = CronExpression.Parse(cronExp, CronFormat.IncludeSeconds);\n        var next = cron.GetNextOccurrence(DateTime.UtcNow);\n        return next ?? DateTime.UtcNow;\n    }\n    private void SetNextDate()\n    {\n        nextRunTime = GetNextDate();\n    }\n\n}<\/pre><\/div>\n\n\n\n<p>Yukar\u0131daki cron ifadesi her 5 saniyede bir \u00e7al\u0131\u015facak anlam\u0131na gelir ayr\u0131ca bu expression&#8217;\u0131 \u00e7\u00f6z\u00fcmlemek i\u00e7in a\u015fa\u011f\u0131daki paketi y\u00fckleyebilirsiniz.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:sh decode:true\">Install-Package Cronos\nor\ndotnet add package Cronos<\/pre><\/div>\n\n\n\n<p><strong>Elle durdurma ve \u00e7al\u0131\u015ft\u0131rma<\/strong><\/p>\n\n\n\n<p>Uygulama ilk aya\u011fa kalkt\u0131\u011f\u0131 anda servislerimiz \u00e7al\u0131\u015fmaya ba\u015flar fakat sonsuz bir d\u00f6ng\u00fcde devam edebilir. Bu sebeple ve bazen ko\u015fullara g\u00f6re bu servisleri durdurma ihtiya\u00e7lar\u0131m\u0131z olabilir. Endpoint \u00fczerinden istek atarak servisi durdurmay\u0131 deneyelim.<\/p>\n\n\n\n<p>\u00d6ncelikle servisimizin bir instance&#8217;\u0131n\u0131 olu\u015fturup sonra o instance ile injection yapmam\u0131z gerekiyor.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true\">builder.Services.AddSingleton&lt;TimerService&gt;();\nbuilder.Services.AddHostedService(service =&gt; service.GetRequiredService&lt;TimerService&gt;());<\/pre><\/div>\n\n\n\n<p> <strong>Api<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true\">app.MapGet(\"api\/stopTimer\", async (ILoggerFactory loggerFactory, IServiceProvider serviceProvider) =&gt;\n{\n    var timer2Service = serviceProvider.GetRequiredService&lt;TimerService&gt;();\n    await timer2Service.StopAsync(CancellationToken.None);\n    return \"success\";\n});\n\napp.MapGet(\"api\/startTimer\", async (ILoggerFactory loggerFactory, IServiceProvider serviceProvider) =&gt;\n{\n    var timer2Service = serviceProvider.GetRequiredService&lt;TimerService&gt;();\n    await timer2Service.StartAsync(CancellationToken.None);\n    return \"success\";\n});<\/pre><\/div>\n\n\n\n<p>Bu halde api&#8217;ye istek atarsak <strong>throw exception<\/strong> ile uygulaman\u0131n tamam\u0131 duracakt\u0131r bu y\u00fczden i\u00e7in ilgili servisin execute metodunu <strong>try catch<\/strong> bloklar\u0131 i\u00e7ine al\u0131p hatay\u0131 yakalayal\u0131m.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true\">protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n{\n    try\n    {\n        while (!stoppingToken.IsCancellationRequested)\n        {\n            await Task.Delay(GetDelayTime(), stoppingToken);\n            _logger.LogInformation(\"Timer2Service is working. {0}\", _counter++);\n            nextRunTime = GetNextDate();\n        }\n     }\n     catch (TaskCanceledException e)\n     {\n        _logger.LogError(e, \"Error\");\n     }\n     catch (Exception e)\n     {\n        throw e;\n     }\n}<\/pre><\/div>\n\n\n\n<p><strong>TaskCanceledException<\/strong> hatas\u0131 StopAsync \u00e7a\u011f\u0131rma durumumuz da yakalancakt\u0131r b\u00f6ylece uygulamam\u0131z tamamen kapanmay\u0131p loglara kay\u0131t atacakt\u0131r.<\/p>\n\n\n\n<p>Github : <a href=\"https:\/\/github.com\/okankrdg\/BackgroundServices\">okankrdg\/BackgroundServices (github.com)<\/a><\/p>\n\n\n\n<p>Ba\u015fka bir yaz\u0131da g\u00f6r\u00fc\u015fmek \u00fczere esen kal\u0131n.<\/p>","protected":false},"excerpt":{"rendered":"<p>Bu g\u00f6nderide background servislere giri\u015f yapaca\u011f\u0131z, nedir, nas\u0131l \u00e7al\u0131\u015f\u0131r, hangi ama\u00e7larla kullan\u0131ld\u0131\u011f\u0131n\u0131 ve.net 6.0 ve 7.0 ile nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 inceleyip proje yapaca\u011f\u0131z<\/p>","protected":false},"author":1,"featured_media":842,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[91,87,110,17],"tags":[56,111,112,45,113],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>.Net 6.0 Background Service - Okan Karada\u011f<\/title>\n<meta name=\"description\" content=\"Bu g\u00f6nderide background servislere giri\u015f yapaca\u011f\u0131z, nedir, nas\u0131l \u00e7al\u0131\u015f\u0131r, hangi ama\u00e7larla kullan\u0131ld\u0131\u011f\u0131n\u0131 ve.net 6.0 ve 7.0 ile nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 inceleyip proje yapaca\u011f\u0131z\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/okankaradag.com\/en\/net-6-0\/net-6-0-background-service\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\".Net 6.0 Background Service - Okan Karada\u011f\" \/>\n<meta property=\"og:description\" content=\"Bu g\u00f6nderide background servislere giri\u015f yapaca\u011f\u0131z, nedir, nas\u0131l \u00e7al\u0131\u015f\u0131r, hangi ama\u00e7larla kullan\u0131ld\u0131\u011f\u0131n\u0131 ve.net 6.0 ve 7.0 ile nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 inceleyip proje yapaca\u011f\u0131z\" \/>\n<meta property=\"og:url\" content=\"https:\/\/okankaradag.com\/en\/net-6-0\/net-6-0-background-service\/\" \/>\n<meta property=\"og:site_name\" content=\"Okan Karada\u011f\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-12T17:13:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-13T07:14:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2023\/01\/sand-clock-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Okan Karada\u011f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Okan Karada\u011f\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service#article\",\"isPartOf\":{\"@id\":\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service\"},\"author\":{\"name\":\"Okan Karada\u011f\",\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"headline\":\".Net 6.0 Background Service\",\"datePublished\":\"2023-01-12T17:13:53+00:00\",\"dateModified\":\"2023-01-13T07:14:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service\"},\"wordCount\":551,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"keywords\":[\"asp.net core\",\"background-service\",\"cron\",\"dotnet core\",\"schedule\"],\"articleSection\":[\".Net\",\".Net 6.0\",\".Net 7.0\",\"C#\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service\",\"url\":\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service\",\"name\":\".Net 6.0 Background Service - Okan Karada\u011f\",\"isPartOf\":{\"@id\":\"https:\/\/okankaradag.com\/#website\"},\"datePublished\":\"2023-01-12T17:13:53+00:00\",\"dateModified\":\"2023-01-13T07:14:05+00:00\",\"description\":\"Bu g\u00f6nderide background servislere giri\u015f yapaca\u011f\u0131z, nedir, nas\u0131l \u00e7al\u0131\u015f\u0131r, hangi ama\u00e7larla kullan\u0131ld\u0131\u011f\u0131n\u0131 ve.net 6.0 ve 7.0 ile nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 inceleyip proje yapaca\u011f\u0131z\",\"breadcrumb\":{\"@id\":\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/okankaradag.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\".Net 6.0 Background Service\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/okankaradag.com\/#website\",\"url\":\"https:\/\/okankaradag.com\/\",\"name\":\"Okan Karada\u011f\",\"description\":\"Programlama \u00dczerine\",\"publisher\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/okankaradag.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\",\"name\":\"Okan Karada\u011f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g\",\"caption\":\"Okan Karada\u011f\"},\"logo\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/okankaradag.com\"],\"url\":\"https:\/\/okankaradag.com\/en\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":".Net 6.0 Background Service - Okan Karada\u011f","description":"Bu g\u00f6nderide background servislere giri\u015f yapaca\u011f\u0131z, nedir, nas\u0131l \u00e7al\u0131\u015f\u0131r, hangi ama\u00e7larla kullan\u0131ld\u0131\u011f\u0131n\u0131 ve.net 6.0 ve 7.0 ile nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 inceleyip proje yapaca\u011f\u0131z","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/okankaradag.com\/en\/net-6-0\/net-6-0-background-service\/","og_locale":"en_US","og_type":"article","og_title":".Net 6.0 Background Service - Okan Karada\u011f","og_description":"Bu g\u00f6nderide background servislere giri\u015f yapaca\u011f\u0131z, nedir, nas\u0131l \u00e7al\u0131\u015f\u0131r, hangi ama\u00e7larla kullan\u0131ld\u0131\u011f\u0131n\u0131 ve.net 6.0 ve 7.0 ile nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 inceleyip proje yapaca\u011f\u0131z","og_url":"https:\/\/okankaradag.com\/en\/net-6-0\/net-6-0-background-service\/","og_site_name":"Okan Karada\u011f","article_published_time":"2023-01-12T17:13:53+00:00","article_modified_time":"2023-01-13T07:14:05+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/okankaradag.com\/wp-content\/uploads\/2023\/01\/sand-clock-scaled.jpg","type":"image\/jpeg"}],"author":"Okan Karada\u011f","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Okan Karada\u011f","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service#article","isPartOf":{"@id":"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service"},"author":{"name":"Okan Karada\u011f","@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"headline":".Net 6.0 Background Service","datePublished":"2023-01-12T17:13:53+00:00","dateModified":"2023-01-13T07:14:05+00:00","mainEntityOfPage":{"@id":"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service"},"wordCount":551,"commentCount":0,"publisher":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"keywords":["asp.net core","background-service","cron","dotnet core","schedule"],"articleSection":[".Net",".Net 6.0",".Net 7.0","C#"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service#respond"]}]},{"@type":"WebPage","@id":"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service","url":"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service","name":".Net 6.0 Background Service - Okan Karada\u011f","isPartOf":{"@id":"https:\/\/okankaradag.com\/#website"},"datePublished":"2023-01-12T17:13:53+00:00","dateModified":"2023-01-13T07:14:05+00:00","description":"Bu g\u00f6nderide background servislere giri\u015f yapaca\u011f\u0131z, nedir, nas\u0131l \u00e7al\u0131\u015f\u0131r, hangi ama\u00e7larla kullan\u0131ld\u0131\u011f\u0131n\u0131 ve.net 6.0 ve 7.0 ile nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 inceleyip proje yapaca\u011f\u0131z","breadcrumb":{"@id":"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/okankaradag.com\/net-6-0\/net-6-0-background-service#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/okankaradag.com\/"},{"@type":"ListItem","position":2,"name":".Net 6.0 Background Service"}]},{"@type":"WebSite","@id":"https:\/\/okankaradag.com\/#website","url":"https:\/\/okankaradag.com\/","name":"Okan Karada\u011f","description":"Programlama \u00dczerine","publisher":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/okankaradag.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52","name":"Okan Karada\u011f","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/okankaradag.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g","caption":"Okan Karada\u011f"},"logo":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/okankaradag.com"],"url":"https:\/\/okankaradag.com\/en\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/821"}],"collection":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/comments?post=821"}],"version-history":[{"count":13,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/821\/revisions"}],"predecessor-version":[{"id":857,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/821\/revisions\/857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/media\/842"}],"wp:attachment":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/media?parent=821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/categories?post=821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/tags?post=821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}