{"id":2996,"date":"2024-11-05T03:30:18","date_gmt":"2024-11-05T00:30:18","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/"},"modified":"2024-11-05T03:30:18","modified_gmt":"2024-11-05T00:30:18","slug":"cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/","title":{"rendered":"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni"},"content":{"rendered":"<p>C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni<\/p>\n<p>Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131na sahip uygulamalar geli\u015ftirmek i\u00e7in farkl\u0131 tasar\u0131m desenleri kullan\u0131l\u0131r. Bu desenlerden biri de <strong>Zincir Sorumluluk Deseni<\/strong> (Chain of Responsibility Pattern) olarak bilinir. Bu desen, bir istek zincirini olu\u015fturarak, her istek i\u00e7in belirli bir i\u015flevi yerine getiren nesnelerin birbirine ba\u011flanmas\u0131na olanak tan\u0131r. Bu sayede, istekler zincir boyunca hareket eder ve kar\u015f\u0131la\u015f\u0131lan ilk uygun nesne taraf\u0131ndan i\u015flenir. Bu yakla\u015f\u0131m, kodunuzun daha d\u00fczenli, esnek ve geni\u015fletilebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Zincir Sorumluluk Deseni Nedir?<\/h2>\n<p>Zincir Sorumluluk Deseni, bir iste\u011fin i\u015flenmesi sorumlulu\u011funu bir nesne zincirine devreden bir tasar\u0131m deseni. Bu zincirde, her nesne bir istek i\u015flemeyi deneyebilir. \u0130stek i\u015flenemiyorsa, bir sonraki nesneye devredilir. Bu desen, istek i\u015fleme mant\u0131\u011f\u0131n\u0131 mod\u00fcler hale getirmek ve karma\u015f\u0131kl\u0131\u011f\u0131 azaltmak i\u00e7in kullan\u0131labilir. Orta Katmanlar (Middlewares) olarak da bilinen bu desen, g\u00fcn\u00fcm\u00fcz web uygulamalar\u0131nda yayg\u0131n olarak kullan\u0131l\u0131r. <\/p>\n<h2>Orta Katmanlar (Middlewares)<\/h2>\n<p>Orta Katmanlar (Middlewares), bir istek i\u015flenmeden \u00f6nce veya sonra belirli eylemler ger\u00e7ekle\u015ftiren ve uygulaman\u0131za ek i\u015flevsellik sa\u011flayan nesnelerdir. \u00d6rnek olarak, kimlik do\u011frulama, yetkilendirme, g\u00fcnl\u00fck kayd\u0131, hata i\u015fleme gibi i\u015flevleri ger\u00e7ekle\u015ftirebilirler. Orta Katmanlar, Zincir Sorumluluk Desenini kullanarak birbirlerine ba\u011flan\u0131r ve istekler zincir boyunca hareket eder.<\/p>\n<h2>C#\u2019da Orta Katmanlar\u0131 Uygulama<\/h2>\n<p>C#\u2019da Orta Katmanlar\u0131 uygulamak i\u00e7in, bir ara y\u00fcz (interface) tan\u0131mlayarak ba\u015flayabiliriz. Bu ara y\u00fcz, orta katmanlar\u0131n temel i\u015flevini, yani bir sonraki orta katmana bir istek ge\u00e7irmeyi tan\u0131mlar. A\u015fa\u011f\u0131da, bir <code>IMiddleware<\/code> ara y\u00fcz\u00fc \u00f6rne\u011fi g\u00f6sterilmi\u015ftir:<\/p>\n<pre><code>\npublic interface IMiddleware\n{\n    Task InvokeAsync(HttpContext context, RequestDelegate next);\n}\n<\/code><\/pre>\n<p>Bu ara y\u00fcz, <code>InvokeAsync<\/code> adl\u0131 bir metot i\u00e7erir. Bu metot, <code>HttpContext<\/code> nesnesi ve bir sonraki orta katman\u0131 temsil eden <code>RequestDelegate<\/code> nesnesini parametre olarak al\u0131r. Orta katmanlar, bu metodu istekleri i\u015flemek i\u00e7in kullan\u0131r. A\u015fa\u011f\u0131daki \u00f6rnekte, bir <code>LoggerMiddleware<\/code> s\u0131n\u0131f\u0131 g\u00f6sterilmi\u015ftir. Bu s\u0131n\u0131f, <code>IMiddleware<\/code> ara y\u00fcz\u00fcn\u00fc uygular ve <code>InvokeAsync<\/code> metodunda istek ba\u015flang\u0131\u00e7 ve biti\u015f zamanlar\u0131n\u0131 kaydeder.<\/p>\n<pre><code>\npublic class LoggerMiddleware : IMiddleware\n{\n    private readonly ILogger _logger;\n\n    public LoggerMiddleware(ILogger logger)\n    {\n        _logger = logger;\n    }\n\n    public async Task InvokeAsync(HttpContext context, RequestDelegate next)\n    {\n        var startTime = DateTime.Now;\n        _logger.LogInformation(\"Request started at {Time}\", startTime);\n\n        await next(context);\n\n        var endTime = DateTime.Now;\n        _logger.LogInformation(\"Request completed at {Time}\", endTime);\n    }\n}\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>LoggerMiddleware<\/code> s\u0131n\u0131f\u0131, <code>InvokeAsync<\/code> metodunda bir istek i\u015flenirken ba\u015flang\u0131\u00e7 ve biti\u015f zamanlar\u0131n\u0131 g\u00fcnl\u00fck kayd\u0131 sistemi \u00fczerinden kaydeder. Daha sonra, <code>next(context)<\/code> koduyla iste\u011fin i\u015flenmesi bir sonraki orta katmana devredilir.<\/p>\n<h2>Zincir Sorumluluk Desenini Kullanarak Orta Katmanlar Olu\u015fturma<\/h2>\n<p>Orta Katmanlar, bir istek i\u015flenmeden \u00f6nce veya sonra belirli eylemler ger\u00e7ekle\u015ftiren ve uygulaman\u0131za ek i\u015flevsellik sa\u011flayan nesnelerdir. Birden fazla Orta Katman kullanarak iste\u011fin i\u015flenmesi s\u0131ras\u0131nda farkl\u0131 eylemler ger\u00e7ekle\u015ftirebilirsiniz. \u00d6rne\u011fin, kimlik do\u011frulama, yetkilendirme ve hata i\u015fleme gibi i\u015flevleri ayr\u0131 orta katmanlar kullanarak ger\u00e7ekle\u015ftirebilirsiniz. Orta Katmanlar\u0131 birbirine ba\u011flayarak iste\u011fin i\u015flenmesi s\u0131ras\u0131ndaki eylemleri belirleyebilirsiniz.<\/p>\n<p>A\u015fa\u011f\u0131daki \u00f6rnekte, bir <code>AuthenticationMiddleware<\/code> s\u0131n\u0131f\u0131 g\u00f6sterilmi\u015ftir. Bu s\u0131n\u0131f, kullan\u0131c\u0131n\u0131n kimlik do\u011frulamas\u0131n\u0131 yapar. E\u011fer kullan\u0131c\u0131 ge\u00e7erli bir kimlikle giri\u015f yapm\u0131\u015fsa, iste\u011fin i\u015flenmesi bir sonraki orta katmana devredilir. Aksi takdirde, kullan\u0131c\u0131 giri\u015f sayfas\u0131na y\u00f6nlendirilir.<\/p>\n<pre><code>\npublic class AuthenticationMiddleware : IMiddleware\n{\n    private readonly RequestDelegate _next;\n\n    public AuthenticationMiddleware(RequestDelegate next)\n    {\n        _next = next;\n    }\n\n    public async Task InvokeAsync(HttpContext context, RequestDelegate next)\n    {\n        if (!context.User.Identity.IsAuthenticated)\n        {\n            context.Response.Redirect(\"\/login\");\n            return;\n        }\n\n        await next(context);\n    }\n}\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>AuthenticationMiddleware<\/code> s\u0131n\u0131f\u0131, <code>InvokeAsync<\/code> metodunda kullan\u0131c\u0131n\u0131n kimlik do\u011frulamas\u0131n\u0131 yapar. E\u011fer kullan\u0131c\u0131 ge\u00e7erli bir kimlikle giri\u015f yapm\u0131\u015fsa, <code>next(context)<\/code> koduyla iste\u011fin i\u015flenmesi bir sonraki orta katmana devredilir. Aksi takdirde, kullan\u0131c\u0131 giri\u015f sayfas\u0131na y\u00f6nlendirilir.<\/p>\n<h2>Orta Katmanlar\u0131 Birbirine Ba\u011flama<\/h2>\n<p>Orta Katmanlar\u0131 birbirine ba\u011flamak i\u00e7in, bir <code>MiddlewareBuilder<\/code> s\u0131n\u0131f\u0131 tan\u0131mlayabilirsiniz. Bu s\u0131n\u0131f, orta katmanlar\u0131 bir listede tutar ve bir istek geldi\u011finde, bu listedeki orta katmanlar\u0131 s\u0131rayla \u00e7a\u011f\u0131r\u0131r.<\/p>\n<pre><code>\npublic class MiddlewareBuilder\n{\n    private readonly List<IMiddleware> _middlewares = new List<IMiddleware>();\n\n    public MiddlewareBuilder Use(IMiddleware middleware)\n    {\n        _middlewares.Add(middleware);\n        return this;\n    }\n\n    public async Task InvokeAsync(HttpContext context)\n    {\n        var next = new RequestDelegate(async ctx => await Task.CompletedTask);\n\n        foreach (var middleware in _middlewares.Reverse())\n        {\n            next = async ctx => await middleware.InvokeAsync(ctx, next);\n        }\n\n        await next(context);\n    }\n}\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>MiddlewareBuilder<\/code> s\u0131n\u0131f\u0131, <code>Use<\/code> metodu ile yeni orta katmanlar eklemeyi sa\u011flar. <code>InvokeAsync<\/code> metodu ise orta katman listesini tersine \u00e7evirir ve her orta katman\u0131 s\u0131rayla \u00e7a\u011f\u0131r\u0131r. Bu \u015fekilde, istek zincir boyunca hareket eder ve her orta katman taraf\u0131ndan i\u015flenir. <code>next<\/code> de\u011fi\u015fkeni, bir sonraki orta katman\u0131 temsil eder ve her orta katman, <code>next(context)<\/code> koduyla iste\u011fin i\u015flenmesini bir sonraki orta katmana devreder.<\/p>\n<h2>Zincir Sorumluluk Deseninin Avantajlar\u0131<\/h2>\n<p>Zincir Sorumluluk Deseni, a\u015fa\u011f\u0131daki avantajlar\u0131 sa\u011flar:<\/p>\n<ul>\n<li><strong>Esneklik:<\/strong> Yeni orta katmanlar eklemek veya mevcut orta katmanlar\u0131 de\u011fi\u015ftirmek kolayd\u0131r. Bu sayede, uygulaman\u0131z\u0131n i\u015f mant\u0131\u011f\u0131n\u0131 kolayca geni\u015fletebilirsiniz.<\/li>\n<li><strong>Mod\u00fclerlik:<\/strong> Her orta katman, belirli bir i\u015flevi yerine getirir. Bu sayede, kodunuzu daha d\u00fczenli ve anla\u015f\u0131labilir hale getirebilirsiniz.<\/li>\n<li><strong>Sorumluluk Ayr\u0131m\u0131:<\/strong> Her orta katman, belirli bir sorumlulu\u011fa sahiptir. Bu sayede, kodunuzu daha kolay y\u00f6netmeniz ve hatalar\u0131 bulman\u0131z m\u00fcmk\u00fcn olur.<\/li>\n<\/ul>\n<h2>Zincir Sorumluluk Deseninin Uygulama Alanlar\u0131<\/h2>\n<p>Zincir Sorumluluk Deseni, a\u015fa\u011f\u0131daki gibi alanlarda kullan\u0131labilir:<\/p>\n<ul>\n<li><strong>Web Uygulamalar\u0131:<\/strong> Kimlik do\u011frulama, yetkilendirme, g\u00fcnl\u00fck kayd\u0131, hata i\u015fleme gibi i\u015flevleri ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>Dosya \u0130\u015fleme:<\/strong> Bir dosyan\u0131n a\u00e7\u0131lmas\u0131, okunmas\u0131, i\u015flenmesi ve kaydedilmesi i\u015flemlerini ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>Oyun Geli\u015ftirme:<\/strong> Oyun i\u00e7i olaylar\u0131 i\u015flemeyi ve oyun mant\u0131\u011f\u0131n\u0131 y\u00f6netmeyi kolayla\u015ft\u0131rmak i\u00e7in kullan\u0131labilir.<\/li>\n<\/ul>\n<h2>Sonu\u00e7<\/h2>\n<p>Zincir Sorumluluk Deseni, yaz\u0131l\u0131m geli\u015ftirmede yayg\u0131n olarak kullan\u0131lan bir tasar\u0131m deseni. Bu desen, bir iste\u011fin i\u015flenmesi sorumlulu\u011funu bir nesne zincirine devrederek, kodunuzu daha d\u00fczenli, esnek ve geni\u015fletilebilir hale getirir. Orta Katmanlar (Middlewares) olarak bilinen bu desen, g\u00fcn\u00fcm\u00fcz web uygulamalar\u0131nda yayg\u0131n olarak kullan\u0131l\u0131r. Zincir Sorumluluk Desenini kullanarak, uygulamalar\u0131n\u0131z\u0131 daha kolay ve etkin bir \u015fekilde geli\u015ftirebilirsiniz.<\/p>\n<p><strong>Not:<\/strong> Bu makalede, \u00f6rnek kodlar sadece kavramlar\u0131 g\u00f6stermek i\u00e7indir. Ger\u00e7ek uygulamalarda, bu kodlar\u0131n daha detayl\u0131 ve kapsaml\u0131 olmas\u0131 gerekebilir.<\/p>\n<h2>\u00d6neriler<\/h2>\n<p>E\u011fer C#\u2019da tasar\u0131m desenleri hakk\u0131nda daha fazla bilgi edinmek istiyorsan\u0131z, a\u015fa\u011f\u0131daki kaynaklara g\u00f6z atabilirsiniz:<\/p>\n<ul>\n<li><a href=\"https:\/\/fatihsoysal.com\" target=\"_blank\" rel=\"noopener\">Fatih Soysal Blog<\/a><\/li>\n<li><a href=\"https:\/\/www.dofactory.com\/net\/design-patterns\" target=\"_blank\" rel=\"noopener\">Dofactory<\/a><\/li>\n<li><a href=\"https:\/\/www.tutorialsteacher.com\/csharp\/design-patterns\" target=\"_blank\" rel=\"noopener\">TutorialsTeacher<\/a><\/li>\n<\/ul>\n<p>#Etiketler<br \/>\nC#, Zincir Sorumluluk Deseni, Orta Katman, Middleware, Design Pattern, Tasar\u0131m Deseni, Uygulama, Geli\u015ftirme, Yaz\u0131l\u0131m, Kod, Esneklik, Mod\u00fclerlik, Sorumluluk Ayr\u0131m\u0131, Web Uygulamalar\u0131, Dosya \u0130\u015fleme, Oyun Geli\u015ftirme<\/p>\n","protected":false},"excerpt":{"rendered":"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131na sahip uygulamalar geli\u015ftirmek i\u00e7in farkl\u0131&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-2996","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni<\/title>\n<meta name=\"description\" content=\"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131na sahip uygulamalar geli\u015ftirmek i\u00e7in farkl\u0131 tasar\u0131m desenleri kullan\u0131l\u0131r. Bu desenlerden biri de Zincir Sorumluluk Deseni (Chain of Responsibility Pattern) olarak bilinir. Bu desen, bir istek zincirini olu\u015fturarak, her istek i\u00e7in belirli bir i\u015flevi yerine getiren nesnelerin birbirine ba\u011flanmas\u0131na olanak tan\u0131r. Bu sayede, istekler zincir boyunca hareket eder ve kar\u015f\u0131la\u015f\u0131lan ilk uygun nesne taraf\u0131ndan i\u015flenir. Bu yakla\u015f\u0131m, kodunuzun daha d\u00fczenli, esnek ve geni\u015fletilebilir olmas\u0131n\u0131 sa\u011flar.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni\" \/>\n<meta property=\"og:description\" content=\"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131na sahip uygulamalar geli\u015ftirmek i\u00e7in farkl\u0131 tasar\u0131m desenleri kullan\u0131l\u0131r. Bu desenlerden biri de Zincir Sorumluluk Deseni (Chain of Responsibility Pattern) olarak bilinir. Bu desen, bir istek zincirini olu\u015fturarak, her istek i\u00e7in belirli bir i\u015flevi yerine getiren nesnelerin birbirine ba\u011flanmas\u0131na olanak tan\u0131r. Bu sayede, istekler zincir boyunca hareket eder ve kar\u015f\u0131la\u015f\u0131lan ilk uygun nesne taraf\u0131ndan i\u015flenir. Bu yakla\u015f\u0131m, kodunuzun daha d\u00fczenli, esnek ve geni\u015fletilebilir olmas\u0131n\u0131 sa\u011flar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-05T00:30:18+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni\",\"datePublished\":\"2024-11-05T00:30:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/\"},\"wordCount\":1022,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/#respond\"]}],\"copyrightYear\":\"2024\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/\",\"name\":\"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2024-11-05T00:30:18+00:00\",\"description\":\"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131na sahip uygulamalar geli\u015ftirmek i\u00e7in farkl\u0131 tasar\u0131m desenleri kullan\u0131l\u0131r. Bu desenlerden biri de Zincir Sorumluluk Deseni (Chain of Responsibility Pattern) olarak bilinir. Bu desen, bir istek zincirini olu\u015fturarak, her istek i\u00e7in belirli bir i\u015flevi yerine getiren nesnelerin birbirine ba\u011flanmas\u0131na olanak tan\u0131r. Bu sayede, istekler zincir boyunca hareket eder ve kar\u015f\u0131la\u015f\u0131lan ilk uygun nesne taraf\u0131ndan i\u015flenir. Bu yakla\u015f\u0131m, kodunuzun daha d\u00fczenli, esnek ve geni\u015fletilebilir olmas\u0131n\u0131 sa\u011flar.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni","description":"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131na sahip uygulamalar geli\u015ftirmek i\u00e7in farkl\u0131 tasar\u0131m desenleri kullan\u0131l\u0131r. Bu desenlerden biri de Zincir Sorumluluk Deseni (Chain of Responsibility Pattern) olarak bilinir. Bu desen, bir istek zincirini olu\u015fturarak, her istek i\u00e7in belirli bir i\u015flevi yerine getiren nesnelerin birbirine ba\u011flanmas\u0131na olanak tan\u0131r. Bu sayede, istekler zincir boyunca hareket eder ve kar\u015f\u0131la\u015f\u0131lan ilk uygun nesne taraf\u0131ndan i\u015flenir. Bu yakla\u015f\u0131m, kodunuzun daha d\u00fczenli, esnek ve geni\u015fletilebilir olmas\u0131n\u0131 sa\u011flar.","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:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/","og_locale":"tr_TR","og_type":"article","og_title":"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni","og_description":"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131na sahip uygulamalar geli\u015ftirmek i\u00e7in farkl\u0131 tasar\u0131m desenleri kullan\u0131l\u0131r. Bu desenlerden biri de Zincir Sorumluluk Deseni (Chain of Responsibility Pattern) olarak bilinir. Bu desen, bir istek zincirini olu\u015fturarak, her istek i\u00e7in belirli bir i\u015flevi yerine getiren nesnelerin birbirine ba\u011flanmas\u0131na olanak tan\u0131r. Bu sayede, istekler zincir boyunca hareket eder ve kar\u015f\u0131la\u015f\u0131lan ilk uygun nesne taraf\u0131ndan i\u015flenir. Bu yakla\u015f\u0131m, kodunuzun daha d\u00fczenli, esnek ve geni\u015fletilebilir olmas\u0131n\u0131 sa\u011flar.","og_url":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2024-11-05T00:30:18+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni","datePublished":"2024-11-05T00:30:18+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/"},"wordCount":1022,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/#respond"]}],"copyrightYear":"2024","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/","url":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/","name":"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2024-11-05T00:30:18+00:00","description":"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131na sahip uygulamalar geli\u015ftirmek i\u00e7in farkl\u0131 tasar\u0131m desenleri kullan\u0131l\u0131r. Bu desenlerden biri de Zincir Sorumluluk Deseni (Chain of Responsibility Pattern) olarak bilinir. Bu desen, bir istek zincirini olu\u015fturarak, her istek i\u00e7in belirli bir i\u015flevi yerine getiren nesnelerin birbirine ba\u011flanmas\u0131na olanak tan\u0131r. Bu sayede, istekler zincir boyunca hareket eder ve kar\u015f\u0131la\u015f\u0131lan ilk uygun nesne taraf\u0131ndan i\u015flenir. Bu yakla\u015f\u0131m, kodunuzun daha d\u00fczenli, esnek ve geni\u015fletilebilir olmas\u0131n\u0131 sa\u011flar.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/cda-zincir-sorumluluk-desenini-uygulama-orta-katman-deseni\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C#\u2019da Zincir Sorumluluk Desenini Uygulama: Orta Katman Deseni"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/2996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=2996"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/2996\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=2996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=2996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=2996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}