{"id":33448,"date":"2013-06-16T17:53:00","date_gmt":"2013-06-16T14:53:00","guid":{"rendered":"https:\/\/fatihboy.com\/?p=33448"},"modified":"2021-06-17T10:04:59","modified_gmt":"2021-06-17T07:04:59","slug":"yeni-baslayanlar-icin-owin","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/yeni-baslayanlar-icin-owin\/","title":{"rendered":"Yeni Ba\u015flayanlar i\u00e7in OWIN"},"content":{"rendered":"<p>&nbsp;&nbsp; Web teknolojileri ile ilgileniyorsan\u0131z bir \u015fekilde <a href=\"http:\/\/owin.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">OWIN<\/a>\u2019i duydu\u011funuzu tahmin ediyorum. Duymad\u0131ysan\u0131z da sorun yok, okumaya devam edin. Bu makalemde OWIN\u2019e kulak dolgunlu\u011fu olan ya da ile ilk kez tan\u0131\u015fanlar i\u00e7in dilim d\u00f6nd\u00fc\u011f\u00fcnce ne oldu\u011fundan bahsetmeye \u00e7al\u0131\u015faca\u011f\u0131m. Amac\u0131m teknik detaylara \u00e7ok bo\u011fulmadan, m\u00fcmk\u00fcn oldu\u011funca sade \u015fekilde OWIN \u201cokur yazar\u0131\u201d olman\u0131z\u0131 sa\u011flamak \ud83d\ude09<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00d6ncelikle OWIN kelimesinin <strong>Open Web Interface for .Net<\/strong> (<em>.Net i\u00e7in a\u00e7\u0131k web aray\u00fcz\u00fc<\/em>) oldu\u011fuyla s\u00f6ze ba\u015flayal\u0131m. Bir teknoloji olmaktan ziyade <a href=\"http:\/\/owin.org\/spec\/owin-1.0.0.html\" target=\"_blank\" rel=\"noopener noreferrer\">bir standart olan OWIN<\/a>, .Net web sunucular\u0131 ile yine .Net ile geli\u015ftirilmi\u015f web uygulamalar\u0131n\u0131n birbirleriyle nas\u0131l ileti\u015fim kuraca\u011f\u0131n\u0131 anlatmakta, bir aray\u00fcz\u00fc tan\u0131mlamaktad\u0131r. Bu tan\u0131mlamadaki ama\u00e7 ise sunucu ve uygulamalar\u0131 birbirlerinden net \u00e7izgilerle ay\u0131rmak ve uygulamalar\u0131 sunuculardan ba\u011f\u0131ms\u0131z hale getirmek.<\/p>\n\n\n\n<p>&nbsp;&nbsp; <a href=\"http:\/\/owin.org\/spec\/owin-1.0.0.html\" target=\"_blank\" rel=\"noopener noreferrer\">OWIN tan\u0131mlad\u0131\u011f\u0131 standart<\/a> ile uyumlu geli\u015ftirilen web sunucular\u0131, IIS gibi kompleks ve pek \u00e7ok senaryoyu ayn\u0131 anda destekleyen sunucular\u0131 yerine, geli\u015ftiricilerin istedi\u011fi bile\u015fenleri uygulamalar\u0131n ihtiya\u00e7lar\u0131 do\u011frultusunda birle\u015ftirdi\u011fi ve yal\u0131n HTTP\u2019nin hemen \u00fczerinde yer alan ince bir katman olarak d\u00fc\u015f\u00fcn\u00fclebilir. Sadece geli\u015ftirici olarak bizlerin ihtiyac\u0131 olan mod\u00fcllerin y\u00fcklenmesi beraberinde \u00f6nemli bir performans kazan\u0131m\u0131 getirmekle birlikte, ayn\u0131 zamanda sunucu y\u00fczeyini k\u00fc\u00e7\u00fclterek olas\u0131 sald\u0131r\u0131lar\u0131n say\u0131s\u0131n\u0131 da azaltacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u201c<em>Buraya kadar her \u015fey g\u00fczel; ama neden sunucu ba\u011f\u0131ms\u0131zl\u0131\u011f\u0131? yani, elimizde sadece IIS oldu\u011funu d\u00fc\u015f\u00fcnecek olursak?!<\/em>\u201d<\/p>\n\n\n\n<p>&nbsp;&nbsp; Yukar\u0131daki sat\u0131rlar\u0131 okurken eminim ki akl\u0131n\u0131za bu soru gelmi\u015ftir. \u00d6ncelikle elimizde web sunucusu olarak sadece IIS bulunmuyor. A\u00e7\u0131k kaynak kodlu web sunucular\u0131n\u0131 bir tarafa bile b\u0131rakacak olursak, en basitinden, Microsoft bile Visual Studio ile birlikte geli\u015ftirme ama\u00e7l\u0131 bir web sunucu sunmakta. \u0130\u015fin i\u00e7ine bir de Mono\u2019yu katt\u0131\u011f\u0131m\u0131zda resim daha da b\u00fcy\u00fcyecektir. Bunu bir ad\u0131m daha ileri ta\u015f\u0131yal\u0131m ve kendi geli\u015ftirdi\u011fimiz bir uygulamaya g\u00f6m\u00fcl\u00fc web sunucu \u00fczerinden sundu\u011fumuz web uygulamalar\u0131n\u0131 da i\u015fin i\u00e7ine katal\u0131m\u2026 Bu durumda geli\u015ftirdi\u011fimiz bir uygulaman\u0131n alt tarafta yer alan platformdan, <em>web sunucusundan<\/em>, ba\u011f\u0131ms\u0131z ve mod\u00fcler olmas\u0131 bizler a\u00e7\u0131s\u0131ndan \u00f6nemli bir art\u0131 olacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bir di\u011fer \u00f6nemli noktada da \u015fu ki web olabildi\u011fine h\u0131zla geli\u015fmekte. Bu h\u0131zl\u0131 geli\u015fme kar\u015f\u0131s\u0131nda topluluklar\u0131n geli\u015ftirdi\u011fi projelerin ve sunucular\u0131n ortak bir aray\u00fcze sahip olmas\u0131 beraberinde getirdi\u011fi mod\u00fcler mimari ile hem projelerin hem de sunucular\u0131n \u00f6ne \u00e7\u0131kmas\u0131nda faydal\u0131 olacakt\u0131r. Bu da t\u00fcm payda\u015flar i\u00e7in tam bir kazan-kazan ortam\u0131 sunacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu uzun giri\u015ften sonra umuyorum ki OWIN standard\u0131n\u0131\/konseptini kafan\u0131zda biraz olsun netle\u015ftirebilmi\u015fimdir. \u015eimdi s\u0131rada temel OWIN konseptlerini tan\u0131mada;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/06\/OWIN-Layers.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/06\/OWIN-Layers_thumb.png\" alt=\"OWIN katmanlar\u0131\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; OWIN, temelde host, server (<em>sunucu<\/em>), middleware (<em>katmanlar<\/em>) web frameworks (<em>web yap\u0131lar\u0131<\/em>) ve web application (<em>web uygulamas\u0131<\/em>) rolleri etraf\u0131nda toplanm\u0131\u015ft\u0131r;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> <strong>Host<\/strong> : Uygulamay\u0131 ba\u015flatmaktan sorumlu olan s\u00fcre\u00e7\/yap\u0131d\u0131r. IIS gibi baz\u0131 web sunucular\u0131 hem host hem de server rollerini \u00fcstlenmektedirler. <\/li><li> <strong>Server (Sunucu)<\/strong> : \u0130stemcilerle HTTP \u00fczerinden do\u011frudan ileti\u015fim i\u00e7erisinde olan yap\u0131d\u0131r. Sunucu rol\u00fc HTTP protokol\u00fc \u00fczerinden gelen isteklerin takip eden rollerce i\u015flenmesinden ve \u00e7\u0131kt\u0131n\u0131n istemciye iletilmesinden sorumludur. <\/li><li> <strong>Middleware (Katman)<\/strong> : Sunucu ile uygulama aras\u0131nda yer alan ve denetleme, yetkilendirme, do\u011frulama, y\u00f6nlendirme v.b. \u00f6zel i\u015flemleri ger\u00e7ekle\u015ftiren rollerdir. <\/li><li> <strong>Web Frameworks (Web Yap\u0131lar\u0131)<\/strong> : Web uygulamas\u0131 geli\u015ftirme s\u0131ras\u0131nda ger\u00e7ekle\u015ftirilen ortak i\u015flerin daha h\u0131zl\u0131 ve kolay ger\u00e7ekle\u015fmesinden sorumlu rollerdir. <\/li><li> <strong>Web Application (Web Uygulamas\u0131)<\/strong> : OWIN uyumlu sunucularda ve web yap\u0131lar\u0131 \u00fczerinde \u00f6zel bir ama\u00e7 i\u00e7in geli\u015ftirilmi\u015f uygulama rolleridir. <\/li><\/ul>\n\n\n\n<p>&nbsp;&nbsp; OWIN uyumlu mimarilerin yukar\u0131da s\u0131ralad\u0131\u011f\u0131m rolleri desteklemesi gereklidir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu rollere \u00f6rnek verdi\u011fimizde ise kar\u015f\u0131m\u0131za a\u015fa\u011f\u0131daki gibi bir tablo \u00e7\u0131kacakt\u0131r;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/OWIN-Layer-Details.png\"><img decoding=\"async\" src=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/OWIN-Layer-Details_thumb.png\" alt=\"OWIN-Layer-Details\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Durup b\u00fcy\u00fck resme bakt\u0131\u011f\u0131m\u0131zda ortaya \u00e7\u0131kan bu mod\u00fcler yap\u0131 sayesinde geli\u015ftirdi\u011fimiz uygulama i\u00e7in en uygun mimariyi ayn\u0131 lego par\u00e7alar\u0131n\u0131 birle\u015ftirir gibi olu\u015fturarak platform ba\u011f\u0131ms\u0131z bir \u015fekilde sunma \u015fans\u0131na sahip oluyoruz. Bir yaz\u0131l\u0131m geli\u015ftirici olarak geli\u015ftirme a\u015famas\u0131nda \u00f6rne\u011fin bir yetkilendirme i\u00e7in endi\u015felenmek yerine sadece uygulama mant\u0131\u011f\u0131m\u0131z\u0131 iyi kurgulamaya odaklan\u0131yoruz\u2026<\/p>\n\n\n\n<p>&nbsp;&nbsp; Ok, OWIN projesini teorik olarak bu kadar tan\u0131mak san\u0131r\u0131m yeterli olacak. \u015eimdi s\u0131ra geldi ellerimizi biraz koda bula\u015ft\u0131rmaya\u2026<\/p>\n\n\n\n<p>&nbsp;&nbsp; OWIN standard\u0131n\u0131 inceledi\u011finizde olduk\u00e7a sade bir mimarisi oldu\u011funu g\u00f6receksiniz. <em>3.1 Application Delegate<\/em> ba\u015fl\u0131\u011f\u0131 alt\u0131nda birincil yap\u0131 ta\u015f\u0131 olan ve bundan sonra da s\u0131k\u00e7a g\u00f6rece\u011finiz a\u015fa\u011f\u0131daki delegate tan\u0131m\u0131 yer almaktad\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using AppFunc = Func &lt;\n       IDictionary &lt;string, object>, \/\/ Environment\n       Task>; \/\/ Done<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Anahtar-De\u011fer ikililerinden olu\u015fan bir veri s\u00f6zl\u00fc\u011f\u00fc ve i\u015flem yapacak olan bir g\u00f6rev nesnesi\u2026<\/p>\n\n\n\n<p>&nbsp;&nbsp; Geni\u015fletilebilir bir yap\u0131da tan\u0131mlanm\u0131\u015f olan ve OWIN\u2019in temel ta\u015flar\u0131ndan ilki olan veri s\u00f6zl\u00fc\u011f\u00fcn\u00fcn sahip olmas\u0131 gereken minimum seti yine OWIN standard\u0131 3.2 Environment ba\u015fl\u0131\u011f\u0131 alt\u0131nda belirtilmi\u015ftir. Gelen istek ve sunucu hakk\u0131nda \u00f6nemli bilgilerin bulundu\u011fu ve OWIN i\u00e7erisinde temel bile\u015fenlerin tan\u0131ml\u0131 oldu\u011fu bu s\u00f6zl\u00fck, iste\u011fin i\u015flenmesinde \u00f6nemli bir girdi oldu\u011fu kadar katmanlar aras\u0131nda veri iletimi i\u00e7inde olmazsa olmaz bir bile\u015fendir. \u00d6rne\u011fin yetkilendirme katman\u0131nda kullan\u0131c\u0131n\u0131n sahip oldu\u011fu roller tespit edilerek bu s\u00f6zl\u00fck i\u00e7erisine at\u0131labilir ve bu bilgi di\u011fer katmanlarcada i\u015flenerek kullan\u0131c\u0131 rollerine uygun aray\u00fczlerin g\u00f6sterilmesi sa\u011flanabilir. Bu tasar\u0131m ayn\u0131 zamanda bile\u015fenlerin birbirinden ba\u011f\u0131ms\u0131z olarak geli\u015ftirilebilmesine de olanak vermektedir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Yukar\u0131da iletti\u011fim <strong>AppFunc<\/strong> delegate\u2019inde yer alan task ise veri s\u00f6zl\u00fc\u011f\u00fc ile iletilen bu verileri kullanan ve katman\u0131n i\u015f mant\u0131\u011f\u0131n\u0131n yer ald\u0131\u011f\u0131 fonksiyonu belirtmektedir. Task tan\u0131mlamas\u0131 sayesinde b\u00fct\u00fcn sistem asenkron olarak \u00e7al\u0131\u015fma gibi \u00f6nemli bir yetene\u011fe sahip olarak daha y\u00fcksek bir kapasite sunabilecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u015eimdi i\u015fe koyulma zaman\u0131, hadi Visual Studio\u2019lar\u0131n\u0131z\u0131n ba\u015f\u0131na\u2026<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u0130\u015fe bir s\u0131n\u0131f k\u00fct\u00fcphanesi projesi olu\u015fturmakla ba\u015flayal\u0131m;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/OWIN-New-Project.png\"><img decoding=\"async\" src=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/OWIN-New-Project_thumb.png\" alt=\"OWIN-New-Project\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp; Projemiz a\u00e7\u0131ld\u0131ktan sonra class1.cs dosyas\u0131n\u0131 IsMantigi.cs ad\u0131yla yeniden adland\u0131rarak i\u00e7eri\u011fini a\u015fa\u011f\u0131daki \u015fekilde yapal\u0131m;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace Enterprisecoding.MerhabaOWIN {\n    using AppFunc = Func &lt;IDictionary&lt;string, object>, Task>;\n\n    public class IsMantigi {\n        private readonly AppFunc birSonrakiKatman;\n\n        public IsMantigi(AppFunc birSonrakiKatman) {\n            if (birSonrakiKatman == null) {\n                throw new ArgumentNullException(\"birSonrakiKatman\");\n            }\n\n            this.birSonrakiKatman = birSonrakiKatman;\n        }\n\n        public Task Invoke(IDictionary &lt;string, object> environment) {\n            System.Diagnostics.Trace.WriteLine(\"\u0130stek i\u015f mant\u0131\u011f\u0131nca i\u015fleniyor\");\n\n            return birSonrakiKatman(environment);\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u0130\u015fte bu kadar.. \u0130lk OWIN katman\u0131m\u0131z\u0131 (middleware) yazd\u0131k bile\u2026 Fark ettiyseniz <strong>Invoke <\/strong>fonksiyonu daha \u00f6nce sizlere belirtti\u011fim <strong>AppFunc<\/strong> delegate\u2019iyle ayn\u0131 imzaya sahip. Yani veri s\u00f6zl\u00fc\u011f\u00fc bu fonksiyon taraf\u0131ndan kabul edilerek ilgili i\u015f mant\u0131\u011f\u0131nca i\u015flenecek. S\u00f6zl\u00fck i\u015f mant\u0131\u011f\u0131 neticesinde d\u00fczenlendikten sonra i\u015flenmesi i\u00e7in bir sonraki katman tetiklenecek. Dikkat ederseniz s\u0131n\u0131f\u0131m\u0131z ilklendirilirken tetiklenecek bir sonraki katman da parametre olarak verilmekte. OWIN mant\u0131\u011f\u0131n\u0131 anlayabilmeniz ad\u0131na kodu olabildi\u011fince sade tutarak sadece i\u015f mant\u0131\u011f\u0131n\u0131n i\u015flendi\u011fine dair bir log yazd\u0131rd\u0131m. Ger\u00e7ek hayatta bu sat\u0131rlar\u0131n yerinde ger\u00e7ek i\u015f mant\u0131\u011f\u0131 kodlar\u0131 olacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u015eimdi, geldi\u011fimiz noktada ilk kodlar\u0131m\u0131z\u0131 yazd\u0131k; ama ortada hala elle tutulur bir \u015fey yok! Bunun sebebi yazd\u0131\u011f\u0131m\u0131z bu middleware kodunun \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131 bir bar\u0131nd\u0131r\u0131c\u0131, sunucu hatta bir web uygulamas\u0131 bulunmamas\u0131.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu sebeple s\u0131ra test yapabilece\u011fimiz basit bir web uygulamas\u0131 olu\u015fturmakta. Bunun i\u00e7in solution i\u00e7erisine yeni bir web projesi olu\u015ftural\u0131m. Benim tercihim basit olmas\u0131 ad\u0131na bo\u015f bir MVC projesi oldu;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/MVC-Web-Project.png\"><img decoding=\"async\" src=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/MVC-Web-Project_thumb.png\" alt=\"MVC-Web-Project\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/Empty-MVC-Web-Project.png\"><img decoding=\"async\" src=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/Empty-MVC-Web-Project_thumb.png\" alt=\"Empty-MVC-Web-Project\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Asl\u0131nda bu proje i\u00e7in illaki bir bo\u015f MVC projesi olu\u015fturmam\u0131za gerek yoktu, bir s\u0131n\u0131f k\u00fct\u00fcphanesi projesi de i\u015fimizi g\u00f6rebilirdi. Yine de ilerleyen makalelerinde kullanabilmek ad\u0131na bo\u015f MVC projesi ile devam edelim. Yaz\u0131m\u0131n ba\u015flar\u0131nda payla\u015ft\u0131\u011f\u0131m mimariyi hat\u0131rlay\u0131n. Bar\u0131nd\u0131r\u0131c\u0131 ve sunucu i\u00e7in elimizde bir \u00e7ok farkl\u0131 se\u00e7enek bulunuyor. Bu noktada sunucu i\u00e7in ben tercihimi Microsoft taraf\u0131ndan a\u00e7\u0131k kaynak kodlu olarak geli\u015ftirilen HttpListener\u2019dan yana kullan\u0131yorum.&nbsp; Bunun i\u00e7in bo\u015f MVC projemizde a\u015fa\u011f\u0131daki komutlar yard\u0131m\u0131yla <strong>Owin <\/strong>ve <strong>Microsoft.Owin.Host.HttpListener<\/strong> NuGet paketlerini kurmal\u0131y\u0131z;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"msdos\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Install-Package Owin\nInstall-Package Microsoft.Owin.Host.HttpListener -Pre<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/Install-Package-Owin.png\"><img decoding=\"async\" src=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/Install-Package-Owin_thumb.png\" alt=\"Install-Package-Owin\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Hat\u0131rlarsan\u0131z OWIN bir standart demi\u015ftik; peki OWIN NuGet paketi nereden \u00e7\u0131kt\u0131?!<\/p>\n\n\n\n<p>&nbsp; Asl\u0131nda bu paket i\u00e7erisinde sadece IAppBuilder aray\u00fcz\u00fc bulunan ve OWIN toplulu\u011funca y\u00f6netilen olabildi\u011fine sade bir paket.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u015eimdi olu\u015fturdu\u011fumuz bo\u015f MVC projesinde startup ad\u0131yla bir s\u0131n\u0131f olu\u015fturup i\u00e7erisine a\u015fa\u011f\u0131daki kodlar\u0131 ekleyin;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using Owin;\n\nnamespace Enterprisecoding.MerhabaOWIN.Web {\n    public class Startup {\n        public void Configuration(IAppBuilder builder) {\n            builder.Use(typeof(IsMantigi));\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp; Tabi bu kodun derlenebilmesi i\u00e7in IsMantigi s\u0131n\u0131f\u0131m\u0131z\u0131n bulundu\u011fu projeyi referanslara eklememiz \u015fart \ud83d\ude09<\/p>\n\n\n\n<p>&nbsp; <strong>Startup <\/strong>s\u0131n\u0131f\u0131 ve i\u00e7erisindeki <strong>Configuration <\/strong>fonksiyonu, <em>detaylar\u0131n\u0131 makalemin devam\u0131nda bulabilece\u011finiz \u015fekilde<\/em>, bar\u0131nd\u0131r\u0131c\u0131 (host) uygulama taraf\u0131ndan tespit edilerek yap\u0131land\u0131rma s\u0131ras\u0131nda kullan\u0131lacakt\u0131r. owin.dll\u2019i i\u00e7erisinde yer alan ve Configuration fonksiyonuna parametre olarak ge\u00e7ilen IAppBuilder yard\u0131m\u0131yla bar\u0131nd\u0131r\u0131c\u0131n\u0131n az \u00f6nce olu\u015fturdu\u011fumuz <strong>IsMant\u0131g\u0131<\/strong> katman\u0131n\u0131 (middleware) kullanmas\u0131n\u0131 istiyoruz.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Ba\u015f\u0131ndan beri g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi OWIN mimarisi olabildi\u011fine basit tasarlanm\u0131\u015ft\u0131r. Do\u011fal olarak bu basitlik ilkesini kendisini yap\u0131land\u0131rma s\u0131ras\u0131nda g\u00f6stermekte. Pek \u00e7ok OWIN yap\u0131s\u0131 ba\u015flarken i\u00e7inde bulundu\u011fu dizinde yer alan assembly\u2019leri tarayarak Startup olarak adland\u0131r\u0131lm\u0131\u015f s\u0131n\u0131flar\u0131 ve bu s\u0131n\u0131flar i\u00e7erisindeki sadece IAppBuilder parametresini kabul eden Configuration fonksiyonunu arayacakt\u0131r. Bulunan s\u0131n\u0131f ilklendirilir ve i\u00e7erisindeki Configuration fonksiyonu ilgili parametre ile tetiklenir.<\/p>\n\n\n\n<p>&nbsp; Geldi\u011fimiz noktada b\u00fcy\u00fck resme d\u00f6n\u00fcp bakt\u0131\u011f\u0131m\u0131zda katman\u0131m\u0131z (<em>middleware<\/em>), web uygulamam\u0131z (<em>web application<\/em>), sunucu (<em>server<\/em>) rolleri haz\u0131r durumda. Web yap\u0131lar\u0131 (Web frameworks) rol\u00fcn\u00fcn se\u00e7imli oldu\u011funu d\u00fc\u015f\u00fcnecek olursak geriye bar\u0131nd\u0131r\u0131c\u0131 (<em>host<\/em>) kal\u0131yor. Bu noktada elimizde pek \u00e7ok farkl\u0131 se\u00e7enek olmakla birlikte ben tercihimi Microsoft taraf\u0131ndan a\u00e7\u0131k kaynak kodlu olarak geli\u015ftirilen <a href=\"http:\/\/katanaproject.codeplex.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Katana projesi<\/a>nden yana kullanaca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Katana\u2019y\u0131 kurman\u0131z\u0131n en h\u0131zl\u0131 yolu <a href=\"\/en\/?p=11829\">bir \u00f6nceki makalemde sizlerle payla\u015ft\u0131\u011f\u0131m Chocolately<\/a>\u2019i kullanmak. Detaylar\u0131n\u0131 \u00f6nceki yaz\u0131mda bulabilece\u011finiz Chocolatey sisteminize kurulduktan sonra tek yapman\u0131z gereken a\u015fa\u011f\u0131daki basit komut ile Katana\u2019y\u0131 sisteminize kurmak;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"msdos\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cinst Katana \u2013pre<\/pre>\n\n\n\n<p>&nbsp; Bu ad\u0131mlar ard\u0131ndan projemizi derleyerek komut sat\u0131r\u0131ndan \u00e7\u0131kt\u0131 klas\u00f6r\u00fcne gidelim. \u00c7\u0131kt\u0131 klas\u00f6r\u00fcnde Katanay\u0131 a\u015fa\u011f\u0131daki parametrelerle \u00e7al\u0131\u015ft\u0131rmam\u0131z yeterli olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"msdos\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">katana -p5000 -v<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Katana\u2019ya verdi\u011fimiz \u2013p5000 parametresi 5000 nolu soketin kullan\u0131laca\u011f\u0131n\u0131, \u2013v parametresi ise ayr\u0131nt\u0131l\u0131 loglama modunda ba\u015flat\u0131laca\u011f\u0131n\u0131 belirtmekte. Ard\u0131ndan bir browser \u00fczerinden <a title=\"http:\/\/localhost:5000\/\" href=\"http:\/\/localhost:5000\/\">http:\/\/localhost:5000\/<\/a> adresini a\u00e7t\u0131\u011f\u0131m\u0131zdaaaa\u2026 404 hatas\u0131 alacaks\u0131n\u0131z \ud83d\ude00 neden \u015far\u015f\u0131rd\u0131n\u0131z ki? sonu\u00e7ta yan\u0131t i\u00e7in herhangi bir \u015fey yapmad\u0131k, sadece loglad\u0131k.. Dolay\u0131s\u0131yla yan\u0131t olarak 404 alsak bile konsolda a\u015fa\u011f\u0131daki log\u2019u g\u00f6rece\u011fiz \ud83d\ude09<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/Katana-Output.png\"><img decoding=\"async\" src=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/Katana-Output_thumb.png\" alt=\"Katana konsol \u00e7\u0131kt\u0131s\u0131\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Dikkat ederseniz katana\u2019ya sunucu olarak ne kullanmas\u0131 gerekti\u011fini de s\u00f6ylemedik. Microsoft.Owin.Host.HttpListener.dll\u2019i otomatik olarak \u00e7\u0131kt\u0131 klas\u00f6r\u00fcne kopyalanacakt\u0131r. Katana\u2019da aksi belirtilmedi\u011fi s\u00fcrece Microsoft.Owin.Host.HttpListener\u2019\u0131 kullanmak \u00fczere yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. B\u00fcy\u00fck resimde, Katana pek \u00e7ok OWIN rol\u00fcn\u00fc bir araya getiren bir tutkal g\u00f6revi g\u00f6rd\u00fc.<\/p>\n\n\n\n<p>&nbsp; Al\u0131\u015fk\u0131n oldu\u011fumuz gibi projemizi F5\u2019e bas\u0131p hata ay\u0131klama oturumunu ba\u015flatmak farkl\u0131 bir y\u00f6ntem takip ettik. Bu durum yo\u011fun geli\u015ftirme s\u00fcre\u00e7lerinde tabi ki s\u0131k\u0131nt\u0131 do\u011furacakt\u0131r. Bu sebeple a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 takip ederek F5\u2019e basarak bu s\u00fcrecin otomatik ba\u015flamas\u0131n\u0131 ve hata ay\u0131klama oturumunun a\u00e7\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz;<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00d6ncelikle olu\u015fturdu\u011fumuz bo\u015f MVC projesi ba\u015flang\u0131\u00e7 projesi olarak ayarlanmal\u0131. Ard\u0131ndan bu projenin ayarlar\u0131ndan web segmesine gelerek \u201cstart external program\u201d se\u00e7ene\u011fi se\u00e7ilmeli ve Katana.exe\u2019nin bulundu\u011fu klas\u00f6r, \u2013p5000 \u2013v parametresi ve projenin \u00e7\u0131kt\u0131 klas\u00f6r\u00fc belirtilmelidir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/Visual-Studio-Start-External-Program.png\"><img decoding=\"async\" src=\"https:\/\/www.enterprisecoding.com\/wp-content\/uploads\/2013\/06\/Visual-Studio-Start-External-Program_thumb.png\" alt=\"Visual-Studio-Start-External-Program\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Bu kadar basit\u2026<\/p>\n\n\n\n<p>&nbsp;&nbsp; Makalemin sonunda, geldi\u011fimiz noktaya d\u00f6n\u00fcp bakacak olursak; IIS\u2019ten ba\u011f\u0131ms\u0131z olarak ve en basit haliyle bir web uygulamas\u0131 geli\u015ftirdik. Bu uygulamam\u0131zdan ba\u011f\u0131ms\u0131z olarak hizmet veren bir i\u015f mant\u0131\u011f\u0131 olu\u015fturup sunucuya her istek geldi\u011finde \u00e7al\u0131\u015ft\u0131r\u0131labilmesini sa\u011flad\u0131k. \u00dcstelik t\u00fcm bunlar\u0131 bir konsol uygulamas\u0131 \u00fczerinden son kullan\u0131c\u0131ya sunduk. \u0130\u015fin g\u00fczel yan\u0131 t\u00fcm bunlar\u0131 bir ka\u00e7 de\u011fi\u015fiklik ile kendi geli\u015ftirdi\u011fimiz bir konsol uygulamas\u0131, IIS ya da Mono sayesinde Linux \u00fczerine kurulu bir web sunucu \u00fczerinden sunmam\u0131z da m\u00fcmk\u00fcn.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00dcstelik bu OWIN\u2019in bize sundu\u011fu \u015feylerden yaln\u0131zca birisi. Farkl\u0131 farkl\u0131 topluluklar\u0131n ve geli\u015ftiricilerin OWIN katmanlar\u0131 geli\u015ftirdi\u011fini d\u00fc\u015f\u00fcnecek olursak yak\u0131n zamanda OWIN deste\u011fi sunan web sunucular\u0131n\u0131n olduk\u00e7a avantajl\u0131 duruma gelece\u011fini s\u00f6ylemek m\u00fcmk\u00fcn.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Web teknolojileri ile ilgileniyorsan\u0131z bir \u015fekilde OWIN\u2019i duydu\u011funuzu tahmin ediyorum. Duymad\u0131ysan\u0131z da sorun yok, okumaya devam edin. Bu makalemde OWIN\u2019e kulak dolgunlu\u011fu olan ya da ile ilk kez tan\u0131\u015fanlar i\u00e7in dilim d\u00f6nd\u00fc\u011f\u00fcnce ne oldu\u011fundan bahsetmeye \u00e7al\u0131\u015faca\u011f\u0131m. Amac\u0131m teknik detaylara \u00e7ok bo\u011fulmadan, m\u00fcmk\u00fcn oldu\u011funca sade \u015fekilde OWIN \u201cokur yazar\u0131\u201d olman\u0131z\u0131 sa\u011flamak \ud83d\ude09 &nbsp;&nbsp; \u00d6ncelikle OWIN&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/yeni-baslayanlar-icin-owin\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":33449,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[317,76],"class_list":["post-33448","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-turkce","tag-owin","tag-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Yeni Ba\u015flayanlar i\u00e7in OWIN - Fatih Boy<\/title>\n<meta name=\"description\" content=\"OWIN (Open Web Interface for .Net) ile yeni tan\u0131\u015fanlar i\u00e7in detayl\u0131 olan OWIN yap\u0131s\u0131n\u0131 \u00f6rnek bir uygulama ile bu makalede bulabilirsiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/yeni-baslayanlar-icin-owin\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Yeni Ba\u015flayanlar i\u00e7in OWIN - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"OWIN (Open Web Interface for .Net) ile yeni tan\u0131\u015fanlar i\u00e7in detayl\u0131 olan OWIN yap\u0131s\u0131n\u0131 \u00f6rnek bir uygulama ile bu makalede bulabilirsiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/yeni-baslayanlar-icin-owin\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-16T14:53:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-17T07:04:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"1201\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Yeni Ba\u015flayanlar i\u00e7in OWIN\",\"datePublished\":\"2013-06-16T14:53:00+00:00\",\"dateModified\":\"2021-06-17T07:04:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/\"},\"wordCount\":2274,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg\",\"keywords\":[\"Owin\",\"Web\"],\"articleSection\":[\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/\",\"url\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/\",\"name\":\"Yeni Ba\u015flayanlar i\u00e7in OWIN - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg\",\"datePublished\":\"2013-06-16T14:53:00+00:00\",\"dateModified\":\"2021-06-17T07:04:59+00:00\",\"description\":\"OWIN (Open Web Interface for .Net) ile yeni tan\u0131\u015fanlar i\u00e7in detayl\u0131 olan OWIN yap\u0131s\u0131n\u0131 \u00f6rnek bir uygulama ile bu makalede bulabilirsiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg\",\"width\":1800,\"height\":1201},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Yeni Ba\u015flayanlar i\u00e7in OWIN\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Yeni Ba\u015flayanlar i\u00e7in OWIN - Fatih Boy","description":"OWIN (Open Web Interface for .Net) ile yeni tan\u0131\u015fanlar i\u00e7in detayl\u0131 olan OWIN yap\u0131s\u0131n\u0131 \u00f6rnek bir uygulama ile bu makalede bulabilirsiniz.","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:\/\/fatihboy.com\/en\/yeni-baslayanlar-icin-owin\/","og_locale":"en_US","og_type":"article","og_title":"Yeni Ba\u015flayanlar i\u00e7in OWIN - Fatih Boy","og_description":"OWIN (Open Web Interface for .Net) ile yeni tan\u0131\u015fanlar i\u00e7in detayl\u0131 olan OWIN yap\u0131s\u0131n\u0131 \u00f6rnek bir uygulama ile bu makalede bulabilirsiniz.","og_url":"https:\/\/fatihboy.com\/en\/yeni-baslayanlar-icin-owin\/","og_site_name":"Fatih Boy","article_published_time":"2013-06-16T14:53:00+00:00","article_modified_time":"2021-06-17T07:04:59+00:00","og_image":[{"width":1800,"height":1201,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Yeni Ba\u015flayanlar i\u00e7in OWIN","datePublished":"2013-06-16T14:53:00+00:00","dateModified":"2021-06-17T07:04:59+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/"},"wordCount":2274,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg","keywords":["Owin","Web"],"articleSection":["T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/","url":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/","name":"Yeni Ba\u015flayanlar i\u00e7in OWIN - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg","datePublished":"2013-06-16T14:53:00+00:00","dateModified":"2021-06-17T07:04:59+00:00","description":"OWIN (Open Web Interface for .Net) ile yeni tan\u0131\u015fanlar i\u00e7in detayl\u0131 olan OWIN yap\u0131s\u0131n\u0131 \u00f6rnek bir uygulama ile bu makalede bulabilirsiniz.","breadcrumb":{"@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/toys-motherboard.jpg","width":1800,"height":1201},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/yeni-baslayanlar-icin-owin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Yeni Ba\u015flayanlar i\u00e7in OWIN"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=33448"}],"version-history":[{"count":1,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33448\/revisions"}],"predecessor-version":[{"id":33450,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33448\/revisions\/33450"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/33449"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=33448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=33448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=33448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}