﻿
{"id":15849,"date":"2020-05-16T22:54:46","date_gmt":"2020-05-16T22:54:46","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=15849"},"modified":"2020-05-16T22:57:03","modified_gmt":"2020-05-16T22:57:03","slug":"odata-nedir-graphqlden-farki-nedir","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/odata-nedir-graphqlden-farki-nedir\/","title":{"rendered":"OData Nedir? GraphQL&#8217;den Fark\u0131 Nedir?"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/odata-vs-graphql-e1589669781542.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/odata-vs-graphql-e1589669781542.jpg\" alt=\"\" width=\"800\" height=\"195\" class=\"aligncenter size-full wp-image-15868\" \/><\/a><\/p>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde veri kaynaklar\u0131n\u0131 url \u00fczerinden sorgulamam\u0131z\u0131 ve b\u00f6ylece API&#8217;lar\u0131n yeteneklerini artt\u0131rmam\u0131z\u0131 sa\u011flayan OData(Open Data Protocol) protokol\u00fc \u00fczerine konu\u015fuyor olacak ve ayn\u0131 i\u015fi yapan GraphQL ile mukayese ederek de\u011ferlendirmede bulunaca\u011f\u0131z.<\/p>\n<h3>OData(Open Data Protocol) Nedir?<\/h3>\n<p>OData, url \u00fczerinden veri kaynaklar\u0131n\u0131 sorgulamak ve elde edilecek sonucu \u00f6zelle\u015ftirmek i\u00e7in kullan\u0131lan REST ve HTTP tabanl\u0131 bir protokold\u00fcr. HTTP tabanl\u0131 olmas\u0131ndan dolay\u0131 t\u00fcm sorgular\u0131 url \u00fczerinden ger\u00e7ekle\u015ftirmektedir. API&#8217;lar da elde edilecek verilerin \u00f6zelle\u015ftirilmesi ve ihtiya\u00e7 do\u011frultusunda farkl\u0131 formatlara b\u00fcr\u00fcnd\u00fcr\u00fclebilmesi i\u00e7in normal durumda farkl\u0131 endpointlerin geli\u015ftirilmesi ihtiyac\u0131n\u0131 ortadan kald\u0131rarak direkt olarak entityler \u00fczerinde sorgulamay\u0131 \u00fcstlenmekte ve developerlar\u0131n sadece business logic ile ilgilenmesini sa\u011flamaktad\u0131r. B\u00f6ylece \u00e7ok h\u0131zl\u0131 bir \u015fekilde veri modellerine ait servisler olu\u015fturulmas\u0131na imkan sa\u011flamaktad\u0131r.<\/p>\n<h5>OData Veri Modeli Nas\u0131ld\u0131r?<\/h5>\n<p>Yap\u0131sal olarak istemciden g\u00f6nderilen sorgu iste\u011fi sunucu taraf\u0131nda i\u015flenerek sonu\u00e7 \u00fcretilmekte ve clienta g\u00f6nderilmektedir. Ayriyetten istemci taraf\u0131ndan talep edilen metadata belgesi ile OData kulland\u0131\u011f\u0131 entitylerin detaylar\u0131ndan istemciyi bilgilendirebilmektedir.<\/p>\n<h3>OData \u0130le Ayn\u0131 \u0130\u015flemi Yapan Pop\u00fcler GraphQL Aras\u0131ndaki Farklar Nelerdir?<\/h3>\n<p>Esas\u0131nda ikiside ayn\u0131 i\u015flemi ger\u00e7ekle\u015ftirmektedir. Lakin bizler burada farklara de\u011finirken ikisi aras\u0131ndaki art\u0131lar\u0131 ve eksileri baz alarak de\u011ferlendirmede bulunacak ve bu de\u011ferlendirme neticesinde hangisini tercih etmemiz gerekti\u011fine dair bir yorumda bulunaca\u011f\u0131z.<\/p>\n<p>Asp.NET Core Web API geli\u015ftiricileri i\u00e7in url \u00fczerinden sorgulama yapmak istendi\u011finde GraphQL yahut OData yap\u0131lar\u0131ndan hangisinin tercih edilmesi gerekti\u011fini \u015fu kriterlerle de\u011ferlendirebiliriz;<\/p>\n<p>Geli\u015ftirici kullan\u0131labilirli\u011fi a\u00e7\u0131s\u0131ndan;<\/p>\n<ul>\n<li>GraphQL&#8217;e nazaran OData uygulamada daha h\u0131zl\u0131 ve sade bir entegrasyon gerektirmektedir.<\/li>\n<li>OData; filtreleme, s\u0131ralama, se\u00e7me yahut geni\u015fletme talimatlar\u0131n\u0131 GraphQL&#8217;e nazaran daha seri bir \u015fekilde desteklemektedir.<\/li>\n<li>GraphQL, Asp.NET Core uygulamalar\u0131nda her sorgu i\u00e7in type, schema, query ve implement resolver(\u00e7\u00f6z\u00fcmleyici uygulamak) olu\u015fumlar\u0131n\u0131n geli\u015ftirilmesini gerektirece\u011finden dolay\u0131 bir\u00e7ok i\u015f y\u00fck\u00fc getirmektedir.<\/li>\n<\/ul>\n<p>Performans a\u00e7\u0131s\u0131ndan;<\/p>\n<ul>\n<li>Performans kullan\u0131lacak yakla\u015f\u0131mdan ziyade yap\u0131lacak sorgu mant\u0131\u011f\u0131na ba\u011fl\u0131d\u0131r. GrapQL veya OData, art\u0131k hangisi olursa olsun her ikisinde de $select operat\u00f6r\u00fc kullan\u0131larak istenilen sorgu \u00fcretilebilmekte ve sonu\u00e7 elde edilebilmektedir.<\/li>\n<li>Esas\u0131nda yap\u0131sal olarak GraphQL her ne kadar g\u00fc\u00e7l\u00fc olsada her platform yahut mimariye uygun k\u00fct\u00fcphanesi bulunmad\u0131\u011f\u0131ndan dolay\u0131 Asp.NET Core uygulamalar\u0131nda OData daha kullan\u0131\u015fl\u0131 ve geli\u015ftirilebilirdir.<\/li>\n<\/ul>\n<p>Ayr\u0131yetten a\u015fa\u011f\u0131daki tablolarda her a\u00e7\u0131dan yap\u0131lan kar\u015f\u0131la\u015ft\u0131rmalar\u0131 inceleyebilirsiniz.<br \/>\n<strong>Standart API<\/strong><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir..jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir..jpg\" alt=\"OData Nedir? GraphQL\u2019den Fark\u0131 Nedir?\" width=\"850\" height=\"278\" class=\"aligncenter size-full wp-image-15860\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir..jpg 850w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-300x98.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-768x251.jpg 768w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/a><br \/>\n<strong>Sorgu Yetene\u011fi<\/strong><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-1.jpg\" alt=\"OData Nedir? GraphQL\u2019den Fark\u0131 Nedir?\" width=\"802\" height=\"210\" class=\"aligncenter size-full wp-image-15861\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-1.jpg 802w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-1-300x79.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-1-768x201.jpg 768w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/a><br \/>\n<strong>Y\u00fczey Kabiliyeti<\/strong><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-2.jpg\" alt=\"OData Nedir? GraphQL\u2019den Fark\u0131 Nedir?\" width=\"827\" height=\"257\" class=\"aligncenter size-full wp-image-15862\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-2.jpg 827w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-2-300x93.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/OData-Nedir-GraphQLden-Fark\u0131-Nedir.-2-768x239.jpg 768w\" sizes=\"auto, (max-width: 827px) 100vw, 827px\" \/><\/a><\/p>\n<p>Bu kar\u015f\u0131la\u015ft\u0131rmalardan yapaca\u011f\u0131m\u0131z \u00e7\u0131kar\u0131m neticesinde, Asp.NET Core uygulamalar\u0131nda CRUD operasyonlar\u0131 i\u00e7in minimum \u00e7aba ile veri kayna\u011f\u0131na eri\u015fim sa\u011flamak istenildi\u011finde OData tercih edilebilir protokol olacakt\u0131r.<\/p>\n<p>Bir sonraki i\u00e7eri\u011fimizde herhangi bir Asp.NET Core Web API uygulamas\u0131na OData entegrasyonunun nas\u0131l ger\u00e7ekle\u015ftirilece\u011fini ele alaca\u011f\u0131z. O halde \u015fimdilik g\u00f6r\u00fc\u015fmek \u00fczere \ud83d\ude09<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde veri kaynaklar\u0131n\u0131 url \u00fczerinden sorgulamam\u0131z\u0131 ve b\u00f6ylece API&#8217;lar\u0131n yeteneklerini artt\u0131rmam\u0131z\u0131 sa\u011flayan OData(Open Data Protocol) protokol\u00fc \u00fczerine konu\u015fuyor olacak ve ayn\u0131 i\u015fi yapan GraphQL ile mukayese ederek de\u011ferlendirmede bulunaca\u011f\u0131z. OData(Open Data Protocol)&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":15868,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3516],"tags":[3517,3514,3518,3515],"class_list":["post-15849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-odata","tag-graphql","tag-odata","tag-odata-graphql-farki","tag-open-data-protocol"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=15849"}],"version-history":[{"count":16,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15849\/revisions"}],"predecessor-version":[{"id":15869,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15849\/revisions\/15869"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/15868"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=15849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=15849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=15849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}