{"id":306,"date":"2015-06-22T00:15:57","date_gmt":"2015-06-21T21:15:57","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=306"},"modified":"2019-04-24T12:27:43","modified_gmt":"2019-04-24T09:27:43","slug":"cqrs-command-query-responsibility-segregation-nedir","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/cqrs-command-query-responsibility-segregation-nedir\/","title":{"rendered":"CQRS (Command Query Responsibility Segregation) Nedir?"},"content":{"rendered":"<p>Bu makalemde kimine g\u00f6re basit bir pattern kimine g\u00f6re de architectural bir yakla\u015f\u0131m olan<br \/>\n<em><strong>CQRS<\/strong><\/em> yani <em><strong>Command Query Responsibility Segregation<\/strong><\/em> (Komut ve Sorgu Sorumluluklar\u0131n\u0131n Ayr\u0131\u015fmas\u0131) konusunun k\u0131saca \u00fczerinde duruyor olaca\u011f\u0131z.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/06\/cqrs.png\"><img decoding=\"async\" class=\"aligncenter wp-image-313 lazyload\" data-src=\"\/wp-content\/uploads\/2015\/06\/cqrs.png\" alt=\"cqrs\" width=\"626\" height=\"468\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/06\/cqrs.png 845w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/06\/cqrs-300x224.png 300w\" data-sizes=\"(max-width: 626px) 100vw, 626px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 626px; --smush-placeholder-aspect-ratio: 626\/468;\" \/><\/a><\/p>\n<p>Son zamanlarda g\u00f6zlemledi\u011fim kadar\u0131yla yabanc\u0131 bloglar da ve stackoverflow \u00fczerindeki tart\u0131\u015fmalarda <em>CQRS<\/em>&#8216;in yava\u015f yava\u015f pop\u00fclerli\u011fini kazanmakta ve hala anla\u015f\u0131lmas\u0131 \u00fczerinde soru i\u015faretleri olan bir pattern t\u00fcr\u00fc oldu\u011funu g\u00f6r\u00fcyorum.<\/p>\n<p>Bende ara\u015ft\u0131rmalar\u0131ma farkl\u0131 kaynaklardan yola \u00e7\u0131karak (makalemin sonunda payla\u015faca\u011f\u0131m sizlerle) hem benim kavrayabilmem hem de kavraya bildiklerimi sizlerle payla\u015fabilmem ama\u00e7l\u0131 bu makaleyi yazmaya karar verdim. :)<\/p>\n<h2>Haydi bir bakal\u0131m neymi\u015f bu <em>CQRS<\/em>?<\/h2>\n<p><em><strong>CQRS<\/strong><\/em> pattern&#8217;i <em>Greg Young<\/em> ve <em>Udi Dahan<\/em> taraf\u0131ndan tan\u0131t\u0131lm\u0131\u015f ve onlar da bu fikri <em><strong>Command Query Separation<\/strong><\/em> isimli <em>Bertrand Meyer<\/em>&#8216;in &#8220;<em><strong>Object Oriented Software Construction<\/strong><\/em>&#8221; kitab\u0131ndan esinlenerek alm\u0131\u015flard\u0131r.<\/p>\n<h3><em>CQS<\/em> alt\u0131ndaki ana fikir:<\/h3>\n<blockquote><p>Bir method objenin durumunu de\u011fi\u015ftirmelidir yada geriye bir sonu\u00e7 d\u00f6nmelidir fakat her ikisini birden de\u011fil.<\/p>\n<p>Biraz kar\u0131\u015f\u0131k gelmi\u015f olabilir. \u015eimdi birde <em>Wikipedia<\/em> de\u011fimiyle bakmak gerekirse, e\u011fer geriye d\u00f6necek de\u011ferler <strong>referentially transparent<\/strong> (birazdan de\u011finece\u011fim) ise ve hi\u00e7bir yan etkiye sahip de\u011filse (referentially transparent fonksiyonun yan etkisi yoktur) method&#8217;lar geriye bu de\u011ferleri d\u00f6nmelidir.<\/p><\/blockquote>\n<p><strong>Referentially Transparent:\u00a0<\/strong><\/p>\n<p>Herhangi bir fonksiyonun \u00e7\u0131kt\u0131s\u0131n\u0131n sadece girdisine ba\u011fl\u0131 olmas\u0131 durumudur diyebiliriz ve yukar\u0131da belirtti\u011fim gibi yan etkisi yoktur ve ayn\u0131 parametreler verildi\u011finde daima ayn\u0131 sonucu \u00fcretir.<\/p>\n<h3><em>CQS<\/em>&#8216;e g\u00f6re metotlar iki par\u00e7aya ayr\u0131lmal\u0131d\u0131r:<\/h3>\n<ul>\n<li><strong>Commands: <\/strong>Objenin veya sistemin durumunu de\u011fi\u015ftirir.<\/li>\n<li><strong>Queries:<\/strong> Sadece sonucu geriye d\u00f6ner herhangi bir objenin veya sistemin durumunu de\u011fi\u015ftirmez.<\/li>\n<\/ul>\n<p>Bak\u0131ld\u0131\u011f\u0131nda <em><strong>CQS<\/strong><\/em> bize method&#8217;lar\u0131n ne yap\u0131p ne yapmad\u0131\u011f\u0131n\u0131 anlamam\u0131z\u0131 sa\u011fl\u0131yor. Bu durumda e\u011fer bir d\u00f6n\u00fc\u015f de\u011feri varsa nesnenin durumunu de\u011fi\u015ftiremez. E\u011fer nesnenin durumunu de\u011fi\u015ftiriyorsa, d\u00f6n\u00fc\u015f de\u011feri void olmal\u0131d\u0131r. B\u00f6ylelikle nesneleri daha kolay ele alabilmemizi ve kodumuzun daha readable, structured ve reusable olmas\u0131n\u0131 sa\u011fl\u0131yor.<\/p>\n<p><em><strong>CQRS<\/strong><\/em> ise <em><strong>CQS<\/strong><\/em>&#8216;in bir uzant\u0131s\u0131 olarak kabul edilir. <em><strong>CQRS<\/strong><\/em>&#8216;in tan\u0131m\u0131 <em><strong>CQS<\/strong><\/em> ile ayn\u0131d\u0131r fakat ikisi tamamen ayr\u0131 patternlerdir. Aralar\u0131ndaki temel farkl\u0131l\u0131k ise <em><strong>CQRS<\/strong><\/em> i\u00e7inde nesneler,\u00a0<strong>Commands<\/strong> ve <strong>Queries<\/strong> olmak \u00fczere <strong>iki farkl\u0131 nesne<\/strong> olarak application level&#8217;\u0131nda ele al\u0131n\u0131rlar.<\/p>\n<p>Basit bir servis tan\u0131mlayal\u0131m <em>CQRS<\/em>&#8216;i daha iyi ele alabilmek i\u00e7in:<\/p>\n<pre class=\"lang:c# decode:true \">CustomerService\r\n\r\nvoid MakeCustomerPreferred(CustomerId)\r\nCustomer GetCustomer(CustomerId)\r\nCustomerSet GetCustomersWithName(Name)\r\nCustomerSet GetPreferredCustomers()\r\nvoid ChangeCustomerLocale(CustomerId, NewLocale)\r\nvoid CreateCustomer(Customer)\r\nvoid EditCustomerDetails(CustomerDetails)<\/pre>\n<p>\u015eimdi <strong>CustomerService<\/strong>&#8216;e <em>CQRS<\/em> uyguland\u0131\u011f\u0131nda\u00a0bize <em>Commands<\/em> ve <em>Queries<\/em> i\u015flemlerini yapacak iki farkl\u0131\u00a0nesne verecektir.<\/p>\n<pre class=\"lang:c# decode:true \">CustomerWriteService\r\n\r\nvoid MakeCustomerPreferred(CustomerId)\r\nvoid ChangeCustomerLocale(CustomerId, NewLocale)\r\nvoid CreateCustomer(Customer)\r\nvoid EditCustomerDetails(CustomerDetails)\r\n\r\nCustomerReadService\r\n\r\nCustomer GetCustomer(CustomerId)\r\nCustomerSet GetCustomersWithName(Name)\r\nCustomerSet GetPreferredCustomers()<\/pre>\n<p>G\u00f6r\u00fcn\u00fcrde \u00e7ok basit bir i\u015flem olsa da mevcut olan sistem \u00fczerinde bir\u00e7ok problemin \u00e7\u00f6z\u00fclmesini sa\u011flamaktad\u0131r. Bu service, <strong>Read<\/strong> taraf\u0131 ve <strong>Write<\/strong> taraf\u0131 yani <em><strong>Command<\/strong><\/em> ve <em><strong>Query<\/strong><\/em> olarak iki farkl\u0131 servise b\u00f6l\u00fcnm\u00fc\u015ft\u00fcr.<\/p>\n<p>Bu ayr\u0131m <em>Command<\/em> taraf\u0131n\u0131n ve <em>Query<\/em> taraf\u0131n\u0131n farkl\u0131 ihtiya\u00e7lara sahip oldu\u011fu d\u00fc\u015f\u00fcncesindedir. B\u00f6ylece data store ve model&#8217;i ay\u0131rabilmemize olanak sa\u011flamaktad\u0131r.<\/p>\n<h2>Ne zaman\u00a0<em>CQRS<\/em> kullan\u0131lmal\u0131?<\/h2>\n<ul>\n<li>Geni\u015f ve bir \u00e7ok kat\u0131l\u0131mc\u0131n\u0131n oldu\u011fu verilerde(collaborative data veya collaborative domain), \u00e7ok kullan\u0131c\u0131l\u0131 sistemlerde, kompleks ve her zaman de\u011fi\u015fen i\u015f\u00a0kurallar\u0131n\u0131n oldu\u011fu durumlarda kullan\u0131labilir.<\/li>\n<li><em>CQRS<\/em> ile read ve write i\u015flemleri \u00fczerinde harika performanslar\u00a0elde edilebilir, bu i\u015flemler optimize edilerek istenirse farkl\u0131 veritabanlar\u0131na da b\u00f6l\u00fcnebilir.<\/li>\n<li><em>CQRS<\/em> altyap\u0131sal i\u015flemlerde bizi karma\u015f\u0131k domain logic i\u015flemlerinden kurtulmam\u0131z\u0131 sa\u011flar.<\/li>\n<li><em>CQRS<\/em> geli\u015ftirme a\u015famalar\u0131n\u0131 da farkl\u0131 tak\u0131mlara b\u00f6lebilmemizi sa\u011flar ve b\u00f6ylelikle\u00a0her tak\u0131m domain logic \u00fczerinde \u00e7al\u0131\u015fabilir hale gelir.<\/li>\n<\/ul>\n<p>Avantajlar\u0131na bakt\u0131\u011f\u0131m\u0131zda g\u00f6ze ho\u015f geliyor fakat haydi <em>CQRS<\/em> kullanal\u0131m deyipte kullan\u0131lacak t\u00fcrden de\u011fil. Kullan\u0131laca\u011f\u0131 zaman zaten proje kendisi s\u00f6yleyecektir. Yukar\u0131daki maddelerden yola \u00e7\u0131karak uygulaman\u0131n \u00f6l\u00e7eklenebilirli\u011fi(scalability) azald\u0131\u011f\u0131nda ve domain logic git gide kompleks bir hal almaya ba\u015flad\u0131\u011f\u0131nda uygulanmas\u0131 gerekli bir hale gelecektir.<\/p>\n<p><em>CQRS<\/em> ile birlikte kullan\u0131lan\u00a0event sourcing ve\u00a0consistency \u00fczerine ara\u015ft\u0131rmalar\u0131ma devam edece\u011fim ve elde etti\u011fim yeni bilgileri bir sonraki makalemde payla\u015f\u0131yor olaca\u011f\u0131m.<\/p>\n<p>\u015eimdilik sa\u011fl\u0131cakla. :)<\/p>\n<h2>Kaynaklar:<\/h2>\n<blockquote><p><a href=\"https:\/\/cqrs.wordpress.com\/documents\/cqrs-introduction\/\">https:\/\/cqrs.wordpress.com\/documents\/cqrs-introduction\/<\/a><br \/>\n<a href=\"http:\/\/www.codeproject.com\/Articles\/555855\/Introduction-to-CQRS\">http:\/\/www.codeproject.com\/Articles\/555855\/Introduction-to-CQRS<\/a><br \/>\n<a href=\"http:\/\/martinfowler.com\/bliki\/CQRS.html\">http:\/\/martinfowler.com\/bliki\/CQRS.html<\/a><br \/>\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Command%E2%80%93query_separation\">https:\/\/en.wikipedia.org\/wiki\/Command%E2%80%93query_separation<\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Bu makalemde kimine g\u00f6re basit bir pattern kimine g\u00f6re de architectural bir yakla\u015f\u0131m olan CQRS yani Command Query Responsibility Segregation (Komut ve Sorgu Sorumluluklar\u0131n\u0131n Ayr\u0131\u015fmas\u0131) konusunun k\u0131saca \u00fczerinde duruyor olaca\u011f\u0131z. Son zamanlarda g\u00f6zlemledi\u011fim kadar\u0131yla yabanc\u0131 bloglar da ve stackoverflow \u00fczerindeki tart\u0131\u015fmalarda CQRS&#8216;in yava\u015f yava\u015f pop\u00fclerli\u011fini&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/cqrs-command-query-responsibility-segregation-nedir\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">CQRS (Command Query Responsibility Segregation) Nedir?<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68],"tags":[71,69,70],"class_list":["post-306","post","type-post","status-publish","format-standard","hentry","category-architectural","tag-command-query-responsibility-segregation","tag-cqrs","tag-cqrs-nedir","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CQRS (Command Query Responsibility Segregation) Nedir? - G\u00f6khan G\u00f6kalp<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CQRS (Command Query Responsibility Segregation) Nedir? - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-21T21:15:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-24T09:27:43+00:00\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"CQRS (Command Query Responsibility Segregation) Nedir?\",\"datePublished\":\"2015-06-21T21:15:57+00:00\",\"dateModified\":\"2019-04-24T09:27:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/\"},\"wordCount\":758,\"commentCount\":12,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"keywords\":[\"Command Query Responsibility Segregation\",\"CQRS\",\"CQRS nedir\"],\"articleSection\":[\"Architectural\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/\",\"name\":\"CQRS (Command Query Responsibility Segregation) Nedir? - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"datePublished\":\"2015-06-21T21:15:57+00:00\",\"dateModified\":\"2019-04-24T09:27:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/cqrs-command-query-responsibility-segregation-nedir\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CQRS (Command Query Responsibility Segregation) Nedir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CQRS (Command Query Responsibility Segregation) Nedir? - G\u00f6khan G\u00f6kalp","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:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/","og_locale":"tr_TR","og_type":"article","og_title":"CQRS (Command Query Responsibility Segregation) Nedir? - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2015-06-21T21:15:57+00:00","article_modified_time":"2019-04-24T09:27:43+00:00","author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"4 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"CQRS (Command Query Responsibility Segregation) Nedir?","datePublished":"2015-06-21T21:15:57+00:00","dateModified":"2019-04-24T09:27:43+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/"},"wordCount":758,"commentCount":12,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"keywords":["Command Query Responsibility Segregation","CQRS","CQRS nedir"],"articleSection":["Architectural"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/","url":"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/","name":"CQRS (Command Query Responsibility Segregation) Nedir? - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"datePublished":"2015-06-21T21:15:57+00:00","dateModified":"2019-04-24T09:27:43+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/cqrs-command-query-responsibility-segregation-nedir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"CQRS (Command Query Responsibility Segregation) Nedir?"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=306"}],"version-history":[{"count":17,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/306\/revisions"}],"predecessor-version":[{"id":2679,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/306\/revisions\/2679"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}