{"id":34331,"date":"2025-11-15T07:31:07","date_gmt":"2025-11-15T04:31:07","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/"},"modified":"2025-11-15T07:31:07","modified_gmt":"2025-11-15T04:31:07","slug":"net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/","title":{"rendered":"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi"},"content":{"rendered":"<p><body><\/p>\n<p>Modern uygulama geli\u015ftirme s\u00fcre\u00e7leri, \u00f6zellikle mikroservis mimarileri ve da\u011f\u0131t\u0131k sistemler s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k hale gelebilir. Geli\u015ftiriciler, \u00e7ok say\u0131da servisi y\u00f6netmek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 koordine etmek ve farkl\u0131 ortamlarda tutarl\u0131 bir deneyim sa\u011flamakla u\u011fra\u015f\u0131rken verimlilikleri d\u00fc\u015febilir. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 nas\u0131l basitle\u015ftirebiliriz? .NET Aspire ve WSL Docker ikilisi, tam da bu noktada devreye girerek Windows ortam\u0131nda bulut-yerel uygulamalar geli\u015ftirmeyi k\u00f6kten de\u011fi\u015ftiren g\u00fc\u00e7l\u00fc bir sinerji sunuyor. Bu makale, her seviyeden geli\u015ftiricinin bu teknolojileri s\u0131f\u0131rdan \u00f6\u011frenerek, y\u00fcksek performansl\u0131 ve y\u00f6netilebilir da\u011f\u0131t\u0131k uygulamalar geli\u015ftirmesine rehberlik edecek.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz yaz\u0131l\u0131m d\u00fcnyas\u0131nda, geleneksel monolitik uygulamalar\u0131n yerini giderek daha fazla mikroservis mimarisi al\u0131yor. Bu ge\u00e7i\u015f, \u00f6l\u00e7eklenebilirlik, esneklik ve ba\u011f\u0131ms\u0131z geli\u015ftirme gibi pek \u00e7ok avantaj\u0131 beraberinde getirse de, ayn\u0131 zamanda yeni zorluklar\u0131 da beraberinde getiriyor. Bir mikroservis uygulamas\u0131nda birden fazla servis, veritaban\u0131, \u00f6nbellek ve mesaj kuyru\u011fu gibi farkl\u0131 bile\u015fenler bulunur. Bu bile\u015fenlerin her biri kendi konteynerinde (genellikle Docker) \u00e7al\u0131\u015f\u0131r ve geli\u015ftirme ortam\u0131nda bile bu karma\u015f\u0131k yap\u0131y\u0131 kurmak, y\u00f6netmek ve hata ay\u0131klamak olduk\u00e7a zahmetli olabilir.<\/p>\n<p>\u0130\u015fte tam da bu noktada .NET Aspire, geli\u015ftirme deneyimini inan\u0131lmaz derecede basitle\u015ftiren bir orkestrasyon \u00e7er\u00e7evesi olarak \u00f6ne \u00e7\u0131k\u0131yor. Aspire, da\u011f\u0131t\u0131k uygulamalar\u0131n temel bile\u015fenlerini tan\u0131mlaman\u0131za, yap\u0131land\u0131rman\u0131za ve \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r. Veritabanlar\u0131, mesaj kuyruklar\u0131 veya di\u011fer \u00f6zel servisler olsun, Aspire bunlar\u0131 tek bir komutla aya\u011fa kald\u0131rabilir ve y\u00f6netebilir. B\u00f6ylece, geli\u015ftiriciler altyap\u0131 detaylar\u0131yla bo\u011fu\u015fmak yerine i\u015f mant\u0131\u011f\u0131na odaklanabilirler. Geleneksel y\u00f6ntemlerle her bir servisi manuel olarak ba\u015flatmak, ba\u011f\u0131ml\u0131l\u0131klar\u0131 \u00e7\u00f6zmek ve port \u00e7ak\u0131\u015fmalar\u0131n\u0131 gidermek g\u00fcnler alabilecekken, Aspire bu s\u00fcreyi dakikalara indirme potansiyeli ta\u015f\u0131r. Bu, \u00f6zellikle b\u00fcy\u00fck ekiplerde geli\u015ftirme ve entegrasyon s\u00fcre\u00e7lerini h\u0131zland\u0131rarak proje teslim s\u00fcrelerini ciddi oranda k\u0131salt\u0131r.<\/p>\n<p>Ancak, konteyner tabanl\u0131 geli\u015ftirme dendi\u011finde akla ilk gelen ara\u00e7lardan biri olan Docker&#8217;\u0131n Windows \u00fczerinde performans\u0131, \u00f6zellikle Linux tabanl\u0131 konteynerler i\u00e7in bazen tart\u0131\u015fma konusu olmu\u015ftur. Geleneksel olarak Docker Desktop, Hyper-V sanalla\u015ft\u0131rma teknolojisini kullanarak Linux konteynerlerini \u00e7al\u0131\u015ft\u0131r\u0131rd\u0131. Ancak bu yakla\u015f\u0131m, kaynak t\u00fcketimi ve performans a\u00e7\u0131s\u0131ndan baz\u0131 k\u0131s\u0131tlamalara sahipti. Windows Subsystem for Linux (WSL), bu sorunu k\u00f6kten \u00e7\u00f6zerek Windows kullan\u0131c\u0131lar\u0131na Linux \u00e7ekirde\u011finin do\u011frudan Windows \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 imkan\u0131n\u0131 sundu. \u00d6zellikle WSL2 ile birlikte gelen geli\u015fmi\u015f sanalla\u015ft\u0131rma teknolojisi, Docker Desktop&#8217;\u0131n Linux konteynerlerini neredeyse yerel bir Linux ortam\u0131nda \u00e7al\u0131\u015f\u0131yormu\u015f gibi h\u0131zl\u0131 ve verimli bir \u015fekilde y\u00f6netmesini sa\u011flad\u0131. Bu sayede, Windows kullan\u0131c\u0131lar\u0131 da Mac veya Linux geli\u015ftiricileri gibi sorunsuz bir Docker deneyimine sahip oldu.<\/p>\n<p>Dolay\u0131s\u0131yla, .NET Aspire&#8217;\u0131n da\u011f\u0131t\u0131k uygulama orkestrasyon yeteneklerini, WSL Docker&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 y\u00fcksek performansl\u0131 ve sorunsuz konteyner \u00e7al\u0131\u015ft\u0131rma ortam\u0131yla birle\u015ftirmek, Windows geli\u015ftiricileri i\u00e7in adeta bir oyun de\u011fi\u015ftirici niteli\u011findedir. Bu ikili, karma\u015f\u0131k bulut-yerel uygulamalar\u0131 yerel makinelerinizde h\u0131zl\u0131, tutarl\u0131 ve verimli bir \u015fekilde geli\u015ftirmenizi sa\u011flar. Geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc h\u0131zland\u0131r\u0131r, hata ay\u0131klamay\u0131 kolayla\u015ft\u0131r\u0131r ve nihayetinde daha sa\u011flam ve \u00f6l\u00e7eklenebilir uygulamalar olu\u015fturman\u0131za olanak tan\u0131r. Bir sonraki ad\u0131mda, bu teknolojilerin temelini daha derinlemesine inceleyerek nas\u0131l \u00e7al\u0131\u015ft\u0131klar\u0131n\u0131 anlamaya odaklanaca\u011f\u0131z.<\/p>\n<h2>Temel Kavramlara H\u0131zl\u0131 Bir Bak\u0131\u015f: .NET Aspire Nedir, WSL Docker Ne \u0130\u015fe Yarar?<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirmenin temel ta\u015flar\u0131 haline gelen bu iki teknolojiyi daha yak\u0131ndan tan\u0131mak, onlar\u0131n sundu\u011fu avantajlar\u0131 tam olarak anlamam\u0131z\u0131 sa\u011flayacakt\u0131r. Her ikisi de, geli\u015ftiricilerin \u00fcretkenli\u011fini art\u0131rmak ve karma\u015f\u0131k bulut-yerel uygulamalar\u0131n y\u00f6netimini basitle\u015ftirmek i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<h3>.NET Aspire: Da\u011f\u0131t\u0131k Uygulamalar \u0130\u00e7in Orkestrasyon \u00c7\u00f6z\u00fcm\u00fc<\/h3>\n<p>.NET Aspire, Microsoft taraf\u0131ndan geli\u015ftirilen ve da\u011f\u0131t\u0131k uygulamalar\u0131n geli\u015ftirme, test etme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini basitle\u015ftirmeyi ama\u00e7layan bir \u00e7er\u00e7evedir. Temelde, bir mikroservis mimarisindeki birden fazla servisin (API&#8217;ler, \u00f6n u\u00e7lar, arka u\u00e7lar) yan\u0131 s\u0131ra destekleyici altyap\u0131 bile\u015fenlerinin (veritabanlar\u0131, mesaj kuyruklar\u0131, \u00f6nbellekler) birlikte nas\u0131l \u00e7al\u0131\u015faca\u011f\u0131n\u0131 tan\u0131mlaman\u0131za ve y\u00f6netmenize olanak tan\u0131r. Aspire, karma\u015f\u0131k yap\u0131lar\u0131 tek bir orkestrasyon projesi (<code>AppHost<\/code>) \u00fczerinden y\u00f6neterek, her bir servisi ve ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 manuel olarak yap\u0131land\u0131rma derdinden kurtar\u0131r.<\/p>\n<p>Aspire&#8217;\u0131n en dikkat \u00e7ekici \u00f6zelliklerinden biri, <strong>Aspire Dashboard<\/strong>&#8216;dur. Bu web tabanl\u0131 aray\u00fcz, uygulaman\u0131zdaki t\u00fcm kaynaklar\u0131 (servisler, konteynerler, veritabanlar\u0131) tek bir yerden izlemenizi sa\u011flar. Servislerin durumunu, loglar\u0131n\u0131, ortam de\u011fi\u015fkenlerini ve metriklerini anl\u0131k olarak g\u00f6r\u00fcnt\u00fcleyebilirsiniz. Bu, \u00f6zellikle hata ay\u0131klama ve performans izleme s\u00fcre\u00e7lerinde inan\u0131lmaz bir kolayl\u0131k sa\u011flar. Ayr\u0131ca, Aspire, OpenTelemetry standartlar\u0131n\u0131 kullanarak izleme ve telemetri verilerini toplar, bu da uygulamalar\u0131n\u0131z\u0131n g\u00f6zlemlenebilirli\u011fini (observability) art\u0131r\u0131r ve \u00fcretim ortam\u0131na haz\u0131r \u00e7\u00f6z\u00fcmler geli\u015ftirmenize yard\u0131mc\u0131 olur. Aspire ayr\u0131ca, yerel ortamda \u00e7al\u0131\u015fan konteyner tabanl\u0131 servisler ile Azure Container Apps, Kubernetes gibi bulut ortamlar\u0131ndaki kaynaklar aras\u0131nda tutarl\u0131 bir geli\u015ftirme deneyimi sa\u011flamay\u0131 hedefler. Geli\u015ftiricilerin genellikle kar\u015f\u0131la\u015fabilece\u011fi &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; sorununu minimize etmeye \u00e7al\u0131\u015f\u0131r. Bu sayede, uygulaman\u0131z\u0131 geli\u015ftirdi\u011finiz ortam ile da\u011f\u0131taca\u011f\u0131n\u0131z ortam aras\u0131ndaki tutars\u0131zl\u0131klar azal\u0131r.<\/p>\n<p>Aspire, geli\u015ftirme a\u015famas\u0131nda Docker konteynerlerini kullanarak servisleri aya\u011fa kald\u0131r\u0131r ve birbiriyle konu\u015fturur. \u00d6rne\u011fin, <code>AppHost<\/code> projenizde bir Redis \u00f6nbelle\u011fi veya PostgreSQL veritaban\u0131 tan\u0131mlad\u0131\u011f\u0131n\u0131zda, Aspire otomatik olarak ilgili Docker imajlar\u0131n\u0131 indirir, konteynerlerini ba\u015flat\u0131r ve ba\u011f\u0131ml\u0131 servislerinize do\u011fru ba\u011flant\u0131 bilgilerini sa\u011flar. Bu otomasyon, \u00f6zellikle yeni bir geli\u015ftiricinin projeye ba\u015flamas\u0131n\u0131 veya mevcut bir geli\u015ftiricinin farkl\u0131 bir mikroservis \u00fczerinde \u00e7al\u0131\u015fmaya ge\u00e7mesini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<\/p>\n<h3>WSL Docker: Windows&#8217;ta Linux Deneyimiyle Kapsay\u0131c\u0131 Geli\u015ftirme<\/h3>\n<p>Windows Subsystem for Linux (WSL), Microsoft&#8217;un Windows 10 ve sonras\u0131 s\u00fcr\u00fcmler i\u00e7in geli\u015ftirdi\u011fi, geli\u015ftiricilerin Windows \u00fczerinde do\u011frudan bir Linux ortam\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131na olanak tan\u0131yan bir uyumluluk katman\u0131d\u0131r. Geleneksel sanal makinelerin aksine, WSL2, hafif bir sanal makine (VM) kullanarak ger\u00e7ek bir Linux \u00e7ekirde\u011fini Windows \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, tam bir Linux uyumlulu\u011fu sa\u011flarken, ayn\u0131 zamanda Windows uygulamalar\u0131yla neredeyse kusursuz bir entegrasyon sunar. Dosya sistemine eri\u015fim, a\u011f ba\u011flant\u0131lar\u0131 ve \u00e7evre birimi kullan\u0131m\u0131 gibi konularda olduk\u00e7a verimlidir.<\/p>\n<p>Docker, konteynerle\u015ftirme teknolojisinin temelini olu\u015fturur ve uygulamalar\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131yla birlikte izole edilmi\u015f, ta\u015f\u0131nabilir birimler halinde paketlemeyi sa\u011flar. Windows \u00fczerinde Docker Desktop, uzun s\u00fcreler boyunca Hyper-V sanalla\u015ft\u0131rmas\u0131n\u0131 kullanarak Linux konteynerlerini \u00e7al\u0131\u015ft\u0131rm\u0131\u015ft\u0131r. Ancak, bu yakla\u015f\u0131m baz\u0131 performans k\u0131s\u0131tlamalar\u0131na sahipti. Dosya I\/O i\u015flemleri yava\u015f olabiliyor ve genel olarak konteyner performans\u0131 beklentilerin alt\u0131nda kalabiliyordu. <strong>WSL2 entegrasyonu<\/strong>, Docker Desktop i\u00e7in bu durumu k\u00f6kten de\u011fi\u015ftirdi. Art\u0131k Docker Desktop, Linux konteynerlerini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in WSL2&#8217;yi varsay\u0131lan olarak kullan\u0131yor. Bu, iki temel avantaj sa\u011fl\u0131yor:<\/p>\n<ol>\n<li><strong>Y\u00fcksek Performans:<\/strong> WSL2&#8217;nin ger\u00e7ek Linux \u00e7ekirde\u011fi sayesinde, Docker konteynerleri neredeyse yerel bir Linux makinesindeki kadar h\u0131zl\u0131 \u00e7al\u0131\u015f\u0131r. \u00d6zellikle dosya I\/O performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde artar, bu da derleme s\u00fcrelerini ve uygulama yan\u0131t verme h\u0131z\u0131n\u0131 do\u011frudan etkiler.<\/li>\n<li><strong>Sorunsuz Deneyim:<\/strong> WSL2, Windows ile derinlemesine entegre oldu\u011fundan, Docker konteynerleriniz Windows dosya sistemine kolayca eri\u015febilir ve Visual Studio, VS Code gibi Windows tabanl\u0131 IDE&#8217;lerinizle sorunsuz bir \u015fekilde etkile\u015fim kurabilir. Ayr\u0131ca, Docker Desktop, WSL2 \u00fczerinden birden fazla Linux da\u011f\u0131t\u0131m\u0131n\u0131 (Ubuntu, Debian vb.) y\u00f6netmenize de olanak tan\u0131r.<\/li>\n<\/ol>\n<p>Bu iki teknolojinin birle\u015fimi, geli\u015ftiricilere g\u00fc\u00e7l\u00fc, verimli ve sorunsuz bir da\u011f\u0131t\u0131k uygulama geli\u015ftirme ortam\u0131 sunar. Aspire, karma\u015f\u0131k mimarileri basitle\u015ftirirken, WSL Docker da bu mimarilerin temelini olu\u015fturan konteynerleri en iyi performansta \u00e7al\u0131\u015ft\u0131rmay\u0131 garantiler. Art\u0131k bu teorik bilgileri prati\u011fe d\u00f6kmeye ve ad\u0131m ad\u0131m kurulum ve uygulama geli\u015ftirme s\u00fcre\u00e7lerine ge\u00e7ebiliriz.<\/p>\n<h2>Ad\u0131m Ad\u0131m Kurulum ve Ortam Haz\u0131rl\u0131\u011f\u0131: Ba\u015flang\u0131\u00e7 Noktan\u0131z<\/h2>\n<p>Ba\u015far\u0131l\u0131 bir geli\u015ftirme ortam\u0131 kurmak, .NET Aspire ve WSL Docker ikilisinin t\u00fcm potansiyelini ortaya \u00e7\u0131karmak i\u00e7in at\u0131lacak ilk ve en kritik ad\u0131md\u0131r. Bu b\u00f6l\u00fcmde, gerekli t\u00fcm bile\u015fenleri nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Endi\u015felenmeyin, bu s\u00fcre\u00e7 d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fczden \u00e7ok daha kolay ve Microsoft&#8217;un ara\u00e7lar\u0131 sayesinde olduk\u00e7a otomatikle\u015ftirilmi\u015ftir.<\/p>\n<h3>WSL2 ve Docker Desktop Kurulumu Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>\u00d6ncelikle, Docker konteynerlerinizi y\u00fcksek performansla \u00e7al\u0131\u015ft\u0131rabilmek i\u00e7in Windows \u00fczerinde WSL2&#8217;nin kurulu ve etkin oldu\u011fundan emin olmal\u0131y\u0131z.<\/p>\n<ol>\n<li><strong>WSL2 Kurulumu:<\/strong>\n<p>Windows 10 s\u00fcr\u00fcm 2004 ve \u00fczeri (derleme 19041+) veya Windows 11 kullan\u0131yorsan\u0131z, kurulum i\u015flemi olduk\u00e7a basittir. Y\u00f6netici olarak a\u00e7t\u0131\u011f\u0131n\u0131z bir PowerShell veya Komut \u0130stemi penceresinde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-powershell\">wsl --install<\/pre>\n<p><\/code><\/p>\n<p>Bu komut, WSL'yi otomatik olarak etkinle\u015ftirecek, varsay\u0131lan bir Linux da\u011f\u0131t\u0131m\u0131 (genellikle Ubuntu) kuracak ve WSL2'yi varsay\u0131lan s\u00fcr\u00fcm olarak ayarlayacakt\u0131r. Bilgisayar\u0131n\u0131z\u0131 yeniden ba\u015flatman\u0131z istenirse, bu ad\u0131m\u0131 mutlaka yap\u0131n. Kurulum tamamland\u0131ktan sonra, y\u00fckl\u00fc da\u011f\u0131t\u0131mlar\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-powershell\">wsl -l -v<\/pre>\n<p><\/code><\/p>\n<p>\u00c7\u0131kt\u0131da Ubuntu'nun durumunun <code>Running<\/code> ve s\u00fcr\u00fcm\u00fcn\u00fcn <code>2<\/code> oldu\u011fundan emin olun.<\/p>\n<\/li>\n<li><strong>Docker Desktop Kurulumu:<\/strong>\n<p>WSL2 haz\u0131r oldu\u011funda, <a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\" target=\"_blank\">Docker Desktop resmi web sitesinden<\/a> indirip kurun. Kurulum sihirbaz\u0131n\u0131 takip edin. Kurulum s\u0131ras\u0131nda veya ilk \u00e7al\u0131\u015ft\u0131rmada, Docker Desktop'\u0131n WSL2 entegrasyonunu otomatik olarak etkinle\u015ftirmesi gerekir. E\u011fer otomatik olarak etkinle\u015fmezse veya emin olmak isterseniz:<\/p>\n<ul>\n<li>Docker Desktop uygulamas\u0131n\u0131 a\u00e7\u0131n.<\/li>\n<li>Ayarlar (Settings) ikonuna t\u0131klay\u0131n.<\/li>\n<li>Sol men\u00fcden \"Resources\" alt\u0131nda \"WSL Integration\" se\u00e7ene\u011fine gidin.<\/li>\n<li>Burada \"Enable WSL 2 features\" kutucu\u011funun i\u015faretli oldu\u011fundan ve kullanmak istedi\u011finiz Linux da\u011f\u0131t\u0131mlar\u0131n\u0131n (\u00f6rne\u011fin Ubuntu) da etkinle\u015ftirildi\u011finden emin olun.<\/li>\n<\/ul>\n<p>Docker Desktop'\u0131n ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve WSL2 ile entegre oldu\u011fundan emin olmak i\u00e7in bir terminal a\u00e7\u0131p a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker run hello-world<\/pre>\n<p><\/code><\/p>\n<p>E\u011fer bir \"Hello from Docker!\" mesaj\u0131 g\u00f6r\u00fcrseniz, her \u015fey yolunda demektir. Art\u0131k y\u00fcksek performansl\u0131 Linux konteynerlerini Windows'ta \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<\/li>\n<\/ol>\n<h3>.NET Aspire Geli\u015ftirme Ortam\u0131 Haz\u0131rl\u0131\u011f\u0131<\/h3>\n<p>\u015eimdi s\u0131ra .NET Aspire i\u00e7in gerekli ara\u00e7lar\u0131 kurmaya geldi. Bu ad\u0131mlar da olduk\u00e7a basittir ve sizi h\u0131zl\u0131ca kod yazmaya haz\u0131r hale getirecektir.<\/p>\n<ol>\n<li><strong>.NET SDK Kurulumu:<\/strong>\n<p>.NET Aspire, .NET 8 veya \u00fczeri bir .NET SDK's\u0131 gerektirir. E\u011fer hen\u00fcz kurulu de\u011filse, <a href=\"https:\/\/dotnet.microsoft.com\/download\" target=\"_blank\">resmi .NET web sitesinden<\/a> en son s\u00fcr\u00fcm\u00fc indirip kurun. Kurulumu tamamlad\u0131ktan sonra terminalde s\u00fcr\u00fcm\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">dotnet --version<\/pre>\n<p><\/code><\/p>\n<p>\u00c7\u0131kt\u0131n\u0131n <code>8.x.x<\/code> veya daha yeni bir s\u00fcr\u00fcm oldu\u011fundan emin olun.<\/p>\n<\/li>\n<li><strong>Aspire Workload Kurulumu:<\/strong>\n<p>.NET SDK's\u0131na Aspire \u015fablonlar\u0131n\u0131 ve ara\u00e7lar\u0131n\u0131 eklemek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">dotnet workload install aspire<\/pre>\n<p><\/code><\/p>\n<p>Bu komut, Aspire projeleri olu\u015fturmak ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gereken t\u00fcm bile\u015fenleri y\u00fckleyecektir. Bu i\u015flem biraz zaman alabilir, internet h\u0131z\u0131n\u0131za ba\u011fl\u0131 olarak de\u011fi\u015fir.<\/p>\n<\/li>\n<li><strong>Geli\u015ftirme Ortam\u0131 Se\u00e7imi:<\/strong>\n<p>Visual Studio (2022 v17.9 veya \u00fczeri) veya Visual Studio Code kullanabilirsiniz. Visual Studio Code kullan\u0131yorsan\u0131z, C# geli\u015ftirme i\u00e7in \u00f6nerilen eklentileri (C#, Docker, Dev Containers) kurdu\u011funuzdan emin olun. Visual Studio 2022 i\u00e7inse, \"ASP.NET ve web geli\u015ftirme\" i\u015f y\u00fck\u00fcn\u00fcn y\u00fckl\u00fc oldu\u011fundan emin olun, Aspire deste\u011fi bu i\u015f y\u00fck\u00fcyle birlikte gelir.<\/p>\n<div class=\"expert-tip\">\n            Uzman \u0130pucu: Visual Studio 2022 kullan\u0131yorsan\u0131z, Aspire projenizi a\u00e7t\u0131\u011f\u0131n\u0131zda otomatik olarak gerekli ayarlar yap\u0131lacakt\u0131r. VS Code kullan\u0131yorsan\u0131z, terminalden <code>dotnet run<\/code> komutunu AppHost projenizin dizininde \u00e7al\u0131\u015ft\u0131rarak uygulaman\u0131z\u0131 ba\u015flatabilirsiniz.\n        <\/div>\n<\/ol>\n<p>Tebrikler! .NET Aspire ve WSL Docker i\u00e7in geli\u015ftirme ortam\u0131n\u0131z ba\u015far\u0131yla kuruldu. Art\u0131k bu g\u00fc\u00e7l\u00fc ikiliyi kullanarak ilk da\u011f\u0131t\u0131k uygulaman\u0131z\u0131 geli\u015ftirmeye haz\u0131rs\u0131n\u0131z. Bir sonraki b\u00f6l\u00fcmde, Aspire \u015fablonlar\u0131yla yeni bir proje olu\u015fturup temel bile\u015fenleri nas\u0131l yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m g\u00f6rece\u011fiz.<\/p>\n<h2>\u0130lk .NET Aspire Uygulaman\u0131z\u0131 WSL Docker ile Geli\u015ftirme<\/h2>\n<p>Geli\u015ftirme ortam\u0131m\u0131z haz\u0131r oldu\u011funa g\u00f6re, .NET Aspire'\u0131n b\u00fcy\u00fcs\u00fcn\u00fc kullanarak ilk da\u011f\u0131t\u0131k uygulamam\u0131z\u0131 olu\u015fturmaya ba\u015flayabiliriz. Bu b\u00f6l\u00fcmde, Aspire'\u0131n sundu\u011fu \u015fablonlarla nas\u0131l proje olu\u015fturaca\u011f\u0131n\u0131z\u0131, \u00e7e\u015fitli hizmetleri nas\u0131l entegre edece\u011finizi ve Aspire Dashboard'un uygulama ya\u015fam d\u00f6ng\u00fcs\u00fcndeki rol\u00fcn\u00fc ke\u015ffedece\u011fiz.<\/p>\n<h3>Aspire \u015eablonu ile Proje Olu\u015fturma ve Yap\u0131land\u0131rma<\/h3>\n<p>Yeni bir Aspire projesi olu\u015fturmak olduk\u00e7a basittir. Terminalinizi a\u00e7\u0131n ve projenizi olu\u015fturmak istedi\u011finiz dizine gidin. Ard\u0131ndan a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">dotnet new aspire -n MyFirstAspireApp<\/pre>\n<p><\/code><\/p>\n<p>Bu komut, <code>MyFirstAspireApp<\/code> ad\u0131nda yeni bir Aspire \u00e7\u00f6z\u00fcm\u00fc olu\u015fturacakt\u0131r. \u00c7\u00f6z\u00fcm dizininin i\u00e7ine bakt\u0131\u011f\u0131n\u0131zda, \u00fc\u00e7 ana proje g\u00f6receksiniz:<\/p>\n<ul>\n<li><code>MyFirstAspireApp.AppHost<\/code>: Bu, Aspire orkestrasyon projenizin kalbidir. Uygulaman\u0131zdaki t\u00fcm servisleri, veritabanlar\u0131n\u0131 ve di\u011fer ba\u011f\u0131ml\u0131l\u0131klar\u0131 burada tan\u0131mlars\u0131n\u0131z. Aspire, bu projeyi kullanarak kaynaklar\u0131 ba\u015flat\u0131r ve y\u00f6netir.<\/li>\n<li><code>MyFirstAspireApp.ServiceA<\/code>: Genellikle bir HTTP API veya arka u\u00e7 servisi olarak g\u00f6rev yapar.<\/li>\n<li><code>MyFirstAspireApp.Web<\/code>: Genellikle bir \u00f6n u\u00e7 web uygulamas\u0131d\u0131r (\u00f6rne\u011fin Blazor veya React\/Angular i\u00e7in bir proxy).<\/li>\n<\/ul>\n<p>Bu \u015fablon, Aspire'\u0131n da\u011f\u0131t\u0131k bir uygulaman\u0131n temel yap\u0131s\u0131n\u0131 nas\u0131l olu\u015fturdu\u011funu g\u00f6sterir. <code>AppHost<\/code> projesi, di\u011fer servis projelerine referans verir ve onlar\u0131n nas\u0131l konu\u015fland\u0131r\u0131laca\u011f\u0131n\u0131 (\u00f6rne\u011fin konteyner olarak) tan\u0131mlar. \u00d6rne\u011fin, <code>AppHost\/Program.cs<\/code> dosyas\u0131n\u0131n i\u00e7eri\u011fine bakt\u0131\u011f\u0131n\u0131zda, servislerin nas\u0131l eklendi\u011fini g\u00f6receksiniz:<\/p>\n<pre><code class=\"language-csharp\">\nvar builder = DistributedApplication.CreateBuilder(args);\n\nvar cache = builder.AddRedis(\"cache\"); \/\/ \u00d6rnek olarak bir Redis \u00f6nbellek ekliyoruz\nvar apiservice = builder.AddProject<Projects.MyFirstAspireApp_ServiceA>(\"apiservice\");\n\nbuilder.AddProject<Projects.MyFirstAspireApp_Web>(\"webfrontend\")\n       .WithReference(apiservice) \/\/ Web projesinin apiservice'e ba\u011f\u0131ml\u0131 oldu\u011funu belirtiyoruz\n       .WithReference(cache); \/\/ Web projesinin cache'e ba\u011f\u0131ml\u0131 oldu\u011funu belirtiyoruz\n\nbuilder.Build().Run();\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, varsay\u0131lan \u015fablonun \u00fczerine bir Redis \u00f6nbelle\u011fi (<code>cache<\/code>) ekledik. <code>AddRedis(\"cache\")<\/code> komutu, Aspire'a bir Redis konteyneri ba\u015flatmas\u0131 talimat\u0131n\u0131 verir. Ayr\u0131ca <code>WithReference()<\/code> metodunu kullanarak, <code>webfrontend<\/code> projesinin <code>apiservice<\/code> ve <code>cache<\/code> servislerine ba\u011f\u0131ml\u0131 oldu\u011funu belirtiyoruz. Aspire, bu ba\u011f\u0131ml\u0131l\u0131klar\u0131 otomatik olarak \u00e7\u00f6zerek, servislerinize do\u011fru ba\u011flant\u0131 dizelerini (connection strings) veya URL'leri sa\u011flayacakt\u0131r.<\/p>\n<h3>Uygulamay\u0131 \u00c7al\u0131\u015ft\u0131rma ve Aspire Dashboard ile \u0130zleme<\/h3>\n<p>Projenizi olu\u015fturup temel yap\u0131land\u0131rmay\u0131 yapt\u0131ktan sonra, uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rmak inan\u0131lmaz derecede kolayd\u0131r. Sadece <code>MyFirstAspireApp.AppHost<\/code> projesinin dizinine gidin ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">dotnet run<\/pre>\n<p><\/code><\/p>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda \u015funlar ger\u00e7ekle\u015fir:<\/p>\n<ol>\n<li><strong>Aspire Orkestrasyonu:<\/strong> Aspire, <code>AppHost<\/code> projenizi derler ve \u00e7al\u0131\u015ft\u0131r\u0131r. Projede tan\u0131mlad\u0131\u011f\u0131n\u0131z t\u00fcm kaynaklar\u0131 (Redis konteyneri, .NET servisleri) analiz eder.<\/li>\n<li><strong>Docker ile Konteyner Ba\u015flatma:<\/strong> E\u011fer Redis gibi bir konteyner tabanl\u0131 kaynak tan\u0131mlad\u0131ysan\u0131z, Aspire Docker CLI'yi kullanarak ilgili Redis imaj\u0131n\u0131 \u00e7eker ve bir konteyner ba\u015flat\u0131r. Bu i\u015flem, WSL2'nin sa\u011flad\u0131\u011f\u0131 y\u00fcksek performansl\u0131 Linux konteyner ortam\u0131nda ger\u00e7ekle\u015fir.<\/li>\n<li><strong>Servisleri Ba\u015flatma:<\/strong> <code>ServiceA<\/code> ve <code>Web<\/code> gibi .NET projeleri i\u00e7in Aspire, bu projeleri normal bir .NET uygulamas\u0131 gibi ba\u015flat\u0131r. Ancak, Aspire bu servislerin birbirleriyle ileti\u015fim kurabilmesi i\u00e7in gerekli ortam de\u011fi\u015fkenlerini ve ba\u011flant\u0131 bilgilerini otomatik olarak enjekte eder.<\/li>\n<li><strong>Aspire Dashboard:<\/strong> Uygulama ba\u015flat\u0131ld\u0131\u011f\u0131nda, terminalde Aspire Dashboard'un bir URL'si g\u00f6r\u00fcn\u00fcr (genellikle <code>https:\/\/localhost:18888<\/code> veya benzeri bir port). Bu URL'yi taray\u0131c\u0131n\u0131zda a\u00e7t\u0131\u011f\u0131n\u0131zda, t\u00fcm da\u011f\u0131t\u0131k uygulaman\u0131z\u0131n canl\u0131 bir g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc elde edersiniz.<\/li>\n<\/ol>\n<p>Aspire Dashboard, uygulaman\u0131z\u0131n adeta kontrol merkezi gibidir. Burada \u015funlar\u0131 g\u00f6rebilirsiniz:<\/p>\n<ul>\n<li><strong>Kaynaklar (Resources):<\/strong> T\u00fcm .NET servisleriniz, Docker konteynerleriniz (\u00f6rne\u011fin Redis) ve di\u011fer Aspire kaynaklar\u0131 listelenir. Her bir kayna\u011f\u0131n durumunu (Running, Starting vb.) ve atanan portlar\u0131n\u0131 g\u00f6rebilirsiniz.<\/li>\n<li><strong>Loglar (Logs):<\/strong> Her bir servisin veya konteynerin anl\u0131k log \u00e7\u0131kt\u0131lar\u0131n\u0131 izleyebilirsiniz. Bu, \u00f6zellikle hata ay\u0131klama s\u0131ras\u0131nda paha bi\u00e7ilmezdir. Loglar\u0131 filtreleyebilir ve belirli mesajlar\u0131 arayabilirsiniz.<\/li>\n<li><strong>Ortam De\u011fi\u015fkenleri (Environment Variables):<\/strong> Servislerinize Aspire taraf\u0131ndan enjekte edilen ortam de\u011fi\u015fkenlerini g\u00f6r\u00fcnt\u00fcleyebilirsiniz. Bu, ba\u011flant\u0131 dizelerinin ve yap\u0131land\u0131rma ayarlar\u0131n\u0131n do\u011fru bir \u015fekilde iletilip iletilmedi\u011fini kontrol etmenizi sa\u011flar.<\/li>\n<li><strong>Metrikler (Metrics) ve \u0130zleme (Traces):<\/strong> OpenTelemetry entegrasyonu sayesinde, servislerinizin performans metriklerini ve \u00e7a\u011fr\u0131 izlerini (traces) inceleyerek uygulaman\u0131z\u0131n \u00e7al\u0131\u015fma zaman\u0131ndaki davran\u0131\u015f\u0131n\u0131 detayl\u0131ca analiz edebilirsiniz.<\/li>\n<\/ul>\n<p>Bu entegre deneyim, bir geli\u015ftiricinin birden fazla terminal penceresi, Docker komutu ve manuel yap\u0131land\u0131rmayla u\u011fra\u015fmak yerine, tek bir <code>dotnet run<\/code> komutuyla t\u00fcm da\u011f\u0131t\u0131k uygulamas\u0131n\u0131 aya\u011fa kald\u0131rmas\u0131na ve kapsaml\u0131 bir \u015fekilde izlemesine olanak tan\u0131r. WSL Docker'\u0131n sa\u011flad\u0131\u011f\u0131 performans sayesinde, bu s\u00fcre\u00e7 yerel geli\u015ftirme ortam\u0131n\u0131zda ak\u0131c\u0131 bir \u015fekilde ger\u00e7ekle\u015fir. Art\u0131k bu temelleri bildi\u011fimize g\u00f6re, daha karma\u015f\u0131k, ger\u00e7ek d\u00fcnya senaryolar\u0131na dalabiliriz.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Mikroservis Mimarisiyle Bir E-ticaret Uygulamas\u0131<\/h2>\n<p>\u015eimdiye kadar Aspire ve WSL Docker'\u0131n temel kurulum ve kullan\u0131m\u0131n\u0131 \u00f6\u011frendik. Ancak bu teknolojilerin ger\u00e7ek potansiyelini anlamak i\u00e7in, onlar\u0131 daha karma\u015f\u0131k, ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l uygulayaca\u011f\u0131m\u0131za bakmal\u0131y\u0131z. Bir e-ticaret uygulamas\u0131, mikroservis mimarisinin sundu\u011fu avantajlar\u0131 ve kar\u015f\u0131la\u015ft\u0131\u011f\u0131 zorluklar\u0131 g\u00f6stermek i\u00e7in m\u00fckemmel bir \u00f6rnektir. Bu b\u00f6l\u00fcmde, bir e-ticaret uygulamas\u0131n\u0131n temel servislerini Aspire ile nas\u0131l entegre edece\u011fimizi ve mobil uyumluluk gibi pratik ipu\u00e7lar\u0131n\u0131 ele alaca\u011f\u0131z.<\/p>\n<h3>\u00dcr\u00fcn Katalo\u011fu ve Sepet Servislerinin Entegrasyonu<\/h3>\n<p>Hayal edelim ki bir e-ticaret uygulamas\u0131 geli\u015ftiriyoruz ve bu uygulama i\u00e7in iki ana mikroservise ihtiyac\u0131m\u0131z var: <code>ProductCatalogService<\/code> ve <code>ShoppingCartService<\/code>.<\/p>\n<ul>\n<li><strong>ProductCatalogService:<\/strong> \u00dcr\u00fcn bilgilerini (ad, a\u00e7\u0131klama, fiyat) bir veritaban\u0131ndan (\u00f6rne\u011fin PostgreSQL) okur ve API arac\u0131l\u0131\u011f\u0131yla sunar.<\/li>\n<li><strong>ShoppingCartService:<\/strong> Kullan\u0131c\u0131n\u0131n sepetindeki \u00fcr\u00fcnleri tutar ve y\u00f6netir. Sepet verileri genellikle h\u0131zl\u0131 eri\u015fim i\u00e7in bir \u00f6nbellekte (\u00f6rne\u011fin Redis) depolan\u0131r.<\/li>\n<\/ul>\n<p>Aspire, bu iki servisin ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n yerel geli\u015ftirme ortam\u0131m\u0131zda sorunsuz bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in harika bir ara\u00e7t\u0131r. <code>MyECommerceApp.AppHost<\/code> projemizi a\u00e7al\u0131m ve <code>Program.cs<\/code> dosyam\u0131zda gerekli d\u00fczenlemeleri yapal\u0131m:<\/p>\n<pre><code class=\"language-csharp\">\nvar builder = DistributedApplication.CreateBuilder(args);\n\n\/\/ 1. PostgreSQL veritaban\u0131n\u0131 Aspire'a ekle\n\/\/ Bu, bir Docker konteynerinde PostgreSQL sunucusu ba\u015flatacak.\nvar postgres = builder.AddPostgres(\"ecommercedb\")\n                      .WithVolume(\"postgres-data\"); \/\/ Veri kal\u0131c\u0131l\u0131\u011f\u0131 i\u00e7in bir Docker volume'\u00fc kullan\n\n\/\/ PostgreSQL i\u00e7indeki bir veritaban\u0131 \u00f6rne\u011fi olu\u015ftur\nvar productDb = postgres.AddDatabase(\"products\");\n\n\/\/ 2. Redis \u00f6nbelle\u011fini Aspire'a ekle\n\/\/ Bu, bir Docker konteynerinde Redis sunucusu ba\u015flatacak.\nvar redis = builder.AddRedis(\"cartcache\");\n\n\/\/ 3. ProductCatalogService projesini ekle\n\/\/ Bu servis, \u00fcr\u00fcn bilgilerini productDb'den okuyacak.\nvar productCatalogService = builder.AddProject<Projects.MyECommerceApp_ProductCatalogService>(\"productcatalogservice\")\n                                   .WithReference(productDb); \/\/ productDb'ye ba\u011f\u0131ml\u0131 oldu\u011funu belirt\n\n\/\/ 4. ShoppingCartService projesini ekle\n\/\/ Bu servis, sepet bilgilerini cartcache'de tutacak.\nvar shoppingCartService = builder.AddProject<Projects.MyECommerceApp_ShoppingCartService>(\"shoppingcartservice\")\n                                    .WithReference(redis); \/\/ cartcache'e ba\u011f\u0131ml\u0131 oldu\u011funu belirt\n\n\/\/ 5. Bir \u00f6n u\u00e7 web uygulamas\u0131 (\u00f6rne\u011fin Blazor) ekleyelim\n\/\/ Bu uygulama, hem productCatalogService hem de shoppingCartService ile ileti\u015fim kuracak.\nbuilder.AddProject<Projects.MyECommerceApp_WebFrontend>(\"webfrontend\")\n       .WithReference(productCatalogService)\n       .WithReference(shoppingCartService);\n\nbuilder.Build().Run();\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kodda yapt\u0131\u011f\u0131m\u0131z \u015feyleri \u00f6zetleyelim:<\/p>\n<ul>\n<li><code>builder.AddPostgres(\"ecommercedb\").AddDatabase(\"products\")<\/code>: Aspire'a bir PostgreSQL Docker konteyneri ba\u015flatmas\u0131n\u0131 ve i\u00e7inde <code>products<\/code> ad\u0131nda bir veritaban\u0131 olu\u015fturmas\u0131n\u0131 s\u00f6yl\u00fcyoruz. <code>WithVolume(\"postgres-data\")<\/code> ile veritaban\u0131 verilerinin Docker volume'\u00fc \u00fczerinde kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011fl\u0131yoruz, b\u00f6ylece konteyner yeniden ba\u015flat\u0131lsa bile verileriniz kaybolmaz.<\/li>\n<li><code>builder.AddRedis(\"cartcache\")<\/code>: Bir Redis Docker konteyneri ba\u015flat\u0131lacak ve sepet verileri i\u00e7in kullan\u0131lacak.<\/li>\n<li><code>AddProject().WithReference()<\/code>: Her iki servis projesini (<code>ProductCatalogService<\/code> ve <code>ShoppingCartService<\/code>) Aspire'a ekliyoruz ve hangi kaynaklara (veritaban\u0131, \u00f6nbellek) ba\u011f\u0131ml\u0131 olduklar\u0131n\u0131 belirtiyoruz. Aspire, bu referanslar sayesinde servislerinize otomatik olarak do\u011fru ba\u011flant\u0131 dizelerini (\u00f6rne\u011fin <code>ConnectionStrings__products<\/code> veya <code>ConnectionStrings__cartcache<\/code> ad\u0131yla) enjekte edecektir. Servis projelerinizde bu ba\u011flant\u0131 dizelerini <code>IConfiguration<\/code> \u00fczerinden okuyarak ilgili kaynaklara ba\u011flanabilirsiniz.<\/li>\n<li><code>MyECommerceApp_WebFrontend<\/code> projesi de hem \u00fcr\u00fcn katalo\u011fu hem de sepet servislerine ba\u011f\u0131ml\u0131 hale getirilerek, kullan\u0131c\u0131n\u0131n \u00fcr\u00fcnleri g\u00f6rmesi ve sepete eklemesi sa\u011flan\u0131yor.<\/li>\n<\/ul>\n<p>Bu yap\u0131land\u0131rma ile <code>dotnet run<\/code> komutunu AppHost projesinden \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Aspire ve WSL Docker i\u015f birli\u011fi yaparak hem PostgreSQL hem de Redis konteynerlerini ba\u015flatacak, ard\u0131ndan .NET servislerinizi aya\u011fa kald\u0131racak ve her birinin do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan emin olacakt\u0131r. Aspire Dashboard \u00fczerinden t\u00fcm bu kaynaklar\u0131n durumunu, loglar\u0131n\u0131 ve performanslar\u0131n\u0131 tek bir yerden izleyebileceksiniz.<\/p>\n<h3>Mobil Uyumluluk ve Performans \u0130pu\u00e7lar\u0131<\/h3>\n<p>E-ticaret uygulamalar\u0131 genellikle web tabanl\u0131 aray\u00fczlere sahiptir ve g\u00fcn\u00fcm\u00fczde mobil uyumluluk vazge\u00e7ilmezdir. Aspire'\u0131n kendisi do\u011frudan UI katman\u0131n\u0131 y\u00f6netmese de, geli\u015ftirdi\u011finiz web uygulamalar\u0131n\u0131n mobil cihazlarda da d\u00fczg\u00fcn g\u00f6r\u00fcnmesini sa\u011flamak i\u00e7in CSS media query'lerini kullanmak temel bir yakla\u015f\u0131md\u0131r. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code class=\"language-html\">\n<!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Mobil Uyumlu E-ticaret Sayfas\u0131<\/title>\n    <style>\n        \/* Varsay\u0131lan stil: Geni\u015f ekranlar i\u00e7in *\/\n        body { font-family: Arial, sans-serif; margin: 20px; }\n        .product-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }\n        .product-item { border: 1px solid #ccc; padding: 15px; text-align: center; }\n\n        \/* Mobil uyumluluk i\u00e7in medya sorgusu *\/\n        @media screen and (max-width: 768px) {\n            .product-list {\n                grid-template-columns: repeat(1, 1fr); \/* Tek s\u00fctunlu d\u00fczen *\/\n            }\n            .product-item {\n                background-color: #f0f0f0;\n            }\n            h1 {\n                font-size: 1.5em;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <h1>\u00dcr\u00fcn Katalo\u011fu<\/h1>\n    <div class=\"product-list\">\n        <div class=\"product-item\">\n            <h3>\u00dcr\u00fcn 1<\/h3>\n            <p>A\u00e7\u0131klama 1<\/p>\n            <span>100 TL<\/span>\n        <\/div>\n        <div class=\"product-item\">\n            <h3>\u00dcr\u00fcn 2<\/h3>\n            <p>A\u00e7\u0131klama 2<\/p>\n            <span>150 TL<\/span>\n        <\/div>\n        <div class=\"product-item\">\n            <h3>\u00dcr\u00fcn 3<\/h3>\n            <p>A\u00e7\u0131klama 3<\/p>\n            <span>200 TL<\/span>\n        <\/div>\n    <\/div>\n<\/body>\n<\/html>\n<\/pre>\n<p><\/code><\/p>\n<p>Bu basit HTML yap\u0131s\u0131nda, taray\u0131c\u0131 geni\u015fli\u011fi 768 pikselin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde \u00fcr\u00fcn listesi tek s\u00fctunlu hale gelir ve \u00fcr\u00fcn \u00f6\u011felerinin arka plan rengi de\u011fi\u015fir. Bu t\u00fcr responsive tasar\u0131m prensiplerini web UI projelerinize uygulayarak uygulaman\u0131z\u0131n her cihazda kullan\u0131c\u0131 dostu olmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<p><strong>Performans \u0130pu\u00e7lar\u0131 (WSL Docker i\u00e7in):<\/strong><\/p>\n<ul>\n<li><strong>Kaynak Tahsisi:<\/strong> Docker Desktop ayarlar\u0131nda (Resources -> WSL Integration), Docker'\u0131n WSL2 VM'ine ne kadar CPU ve RAM tahsis edece\u011fini kontrol edebilirsiniz. Geli\u015ftirme ortam\u0131n\u0131z\u0131n ihtiya\u00e7lar\u0131na g\u00f6re bu de\u011ferleri ayarlamak, performans\u0131 art\u0131rabilir.<\/li>\n<li><strong><code>wsl --shutdown<\/code>:<\/strong> Bazen WSL2 VM'i gereksiz kaynak t\u00fcketmeye devam edebilir. Kullanmad\u0131\u011f\u0131n\u0131z zamanlarda terminalden <code>wsl --shutdown<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak WSL2'yi tamamen kapatmak, sistem kaynaklar\u0131n\u0131 bo\u015falt\u0131r ve bir sonraki ba\u015flatmada temiz bir ba\u015flang\u0131\u00e7 sa\u011flar.<\/li>\n<li><strong><code>docker system prune<\/code>:<\/strong> Kullan\u0131lmayan Docker imajlar\u0131, konteynerleri ve a\u011flar\u0131 sisteminizde yer kaplayabilir. D\u00fczenli olarak <code>docker system prune -a<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmak, gereksiz kaynaklar\u0131 temizleyerek disk alan\u0131ndan tasarruf eder ve potansiyel performans sorunlar\u0131n\u0131 \u00f6nler.<\/li>\n<\/ul>\n<p>Bu ger\u00e7ek d\u00fcnya senaryosu ve performans ipu\u00e7lar\u0131, .NET Aspire ve WSL Docker'\u0131n sadece teorik de\u011fil, ayn\u0131 zamanda pratik ve verimli \u00e7\u00f6z\u00fcmler sundu\u011funu g\u00f6stermektedir. Bu g\u00fc\u00e7l\u00fc ikili sayesinde, karma\u015f\u0131k mikroservis uygulamalar\u0131n\u0131 bile yerel geli\u015ftirme ortam\u0131n\u0131zda kolayca tasarlayabilir, geli\u015ftirebilir ve test edebilirsiniz.<\/p>\n<h2>\u0130leri D\u00fczey Konular ve Uzman \u0130pu\u00e7lar\u0131<\/h2>\n<p>Aspire ve WSL Docker'\u0131n temel kullan\u0131m\u0131na hakim olduktan sonra, \u015fimdi daha deneyimli geli\u015ftiriciler i\u00e7in ileri d\u00fczey konulara ve optimizasyon p\u00fcf noktalar\u0131na odaklanabiliriz. Bu b\u00f6l\u00fcmde, Aspire'\u0131n geni\u015fletilebilirli\u011fini, farkl\u0131 kaynaklarla entegrasyonunu ve performans sorun giderme stratejilerini ele alaca\u011f\u0131z.<\/p>\n<h3>Aspire ile \u00d6zel Kaynaklar ve Geni\u015fletilebilirlik<\/h3>\n<p>Aspire, sadece kendi b\u00fcnyesindeki veritabanlar\u0131 veya \u00f6nbellekler gibi yayg\u0131n kaynaklarla s\u0131n\u0131rl\u0131 de\u011fildir; ayn\u0131 zamanda \u00f6zel Docker imajlar\u0131n\u0131 veya harici servisleri de kolayca entegre etmenize olanak tan\u0131r. Bu, uygulaman\u0131z\u0131n benzersiz gereksinimlerini kar\u015f\u0131lamak i\u00e7in b\u00fcy\u00fck bir esneklik sa\u011flar.<\/p>\n<ul>\n<li><strong>\u00d6zel Docker Konteynerleri Ekleme:<\/strong> Kendi \u00f6zel Docker imaj\u0131n\u0131z\u0131 kullanmak istedi\u011finizde, Aspire'\u0131n <code>AddContainer<\/code> metodunu kullanabilirsiniz. \u00d6rne\u011fin, bir MinIO depolama sunucusunu veya \u00f6zel bir mesaj kuyru\u011funu bu \u015fekilde ekleyebilirsiniz:\n<pre><code class=\"language-csharp\">\nvar builder = DistributedApplication.CreateBuilder(args);\n\n\/\/ \u00d6zel MinIO konteyneri ekleme\nvar minio = builder.AddContainer(\"minio\", \"minio\/minio\")\n                   .WithArgs(\"server\", \"\/data\")\n                   .WithEnvironment(\"MINIO_ROOT_USER\", \"admin\")\n                   .WithEnvironment(\"MINIO_ROOT_PASSWORD\", \"password\")\n                   .Publish(9000, 9000); \/\/ Port e\u015fle\u015ftirmesi\n\n\/\/ Di\u011fer servisler minio'ya ba\u011flanabilir.\nbuilder.AddProject<Projects.MyService>(\"myservice\")\n       .WithReference(minio);\n\nbuilder.Build().Run();\n        <\/pre>\n<p><\/code><\/p>\n<p>Bu sayede, uygulaman\u0131z\u0131n ihtiya\u00e7 duydu\u011fu herhangi bir konteyner tabanl\u0131 servisi Aspire orkestrasyonuna dahil edebilirsiniz. <code>WithArgs<\/code> ile ba\u015flang\u0131\u00e7 arg\u00fcmanlar\u0131, <code>WithEnvironment<\/code> ile ortam de\u011fi\u015fkenleri ve <code>Publish<\/code> ile port e\u015fle\u015ftirmeleri tan\u0131mlanabilir.<\/p>\n<\/li>\n<li><strong>Harici Bulut Kaynaklar\u0131 ile Entegrasyon:<\/strong> Aspire, sadece yerel kaynaklar\u0131 de\u011fil, ayn\u0131 zamanda Azure Container Apps, Kubernetes veya di\u011fer bulut servisleri gibi harici kaynaklar\u0131 da temsil edebilir. Bu, yerel geli\u015ftirme ortam\u0131n\u0131zda bir Redis konteyneri kullan\u0131rken, \u00fcretimde bir Azure Cache for Redis \u00f6rne\u011fine sorunsuz bir \u015fekilde ge\u00e7i\u015f yapman\u0131z\u0131 sa\u011flar. Bu t\u00fcr entegrasyonlar i\u00e7in Aspire, farkl\u0131 da\u011f\u0131t\u0131m sa\u011flay\u0131c\u0131lar\u0131 (deployment providers) sunar. <code>AppHost<\/code> projenizde, <code>AddAzureContainerApp<\/code> gibi metotlar\u0131 kullanarak Azure kaynaklar\u0131n\u0131 yap\u0131land\u0131rabilir ve uygulaman\u0131z\u0131 do\u011frudan buluta da\u011f\u0131tabilirsiniz. Bu, CI\/CD s\u00fcre\u00e7lerini basitle\u015ftirir ve geli\u015ftirme ile \u00fcretim ortamlar\u0131 aras\u0131ndaki tutars\u0131zl\u0131klar\u0131 azalt\u0131r.<\/li>\n<\/ul>\n<h3>Optimizasyon ve Sorun Giderme P\u00fcf Noktalar\u0131<\/h3>\n<p>Geli\u015ftirme s\u00fcrecinde zaman zaman performans sorunlar\u0131 veya beklenmedik davran\u0131\u015flarla kar\u015f\u0131la\u015fmak do\u011fald\u0131r. \u0130\u015fte Aspire ve WSL Docker ile \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 durumlar i\u00e7in optimizasyon ve sorun giderme ipu\u00e7lar\u0131:<\/p>\n<ul>\n<li><strong>WSL2 Performans\u0131 ve Bellek Y\u00f6netimi:<\/strong>\n<ul>\n<li><strong><code>.wslconfig<\/code> Dosyas\u0131:<\/strong> WSL2'nin sanal makinesine tahsis edilen CPU \u00e7ekirdeklerini ve belle\u011fi \u00f6zelle\u015ftirebilirsiniz. <code>C:\\Users\\<KULLANICI_ADINIZ>\\.wslconfig<\/code> dosyas\u0131n\u0131 olu\u015fturarak veya d\u00fczenleyerek \u015funlar\u0131 ekleyebilirsiniz:\n<pre><code class=\"language-ini\">\n[wsl2]\nmemory=4GB  # WSL2 VM i\u00e7in 4GB RAM tahsis et\nprocessors=2 # WSL2 VM i\u00e7in 2 CPU \u00e7ekirde\u011fi tahsis et\nswap=0      # Swap alan\u0131 kullanma (performans i\u00e7in bazen daha iyi)\n<\/pre>\n<p><\/code><\/p>\n<p>De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in <code>wsl --shutdown<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131p WSL'yi yeniden ba\u015flatman\u0131z gerekir. Bu, \u00f6zellikle WSL2 VM'inin \u00e7ok fazla sistem kayna\u011f\u0131 t\u00fcketmesini \u00f6nleyebilir.<\/p>\n<\/li>\n<li><strong>Konteyner Kaynak Limitleri:<\/strong> Docker Compose veya <code>AppHost<\/code> i\u00e7inde konteynerler i\u00e7in CPU ve bellek limitleri belirleyerek (\u00f6rne\u011fin <code>WithCpuCount(1)<\/code> veya <code>WithMemory(\"512Mi\")<\/code>), kaynak yo\u011fun konteynerlerin t\u00fcm sistem kaynaklar\u0131n\u0131 s\u00f6m\u00fcrmesini engelleyebilirsiniz.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Docker Cacheleme Stratejileri:<\/strong>\n<p>Geli\u015ftirme s\u0131ras\u0131nda Docker imajlar\u0131n\u0131n yeniden derlenmesi veya \u00e7ekilmesi zaman alabilir. <code>Dockerfile<\/code>'lar\u0131n\u0131z\u0131 katmanl\u0131 olacak \u015fekilde tasarlayarak (\u00f6rne\u011fin, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckleme ve kodu kopyalama ad\u0131mlar\u0131n\u0131 ay\u0131rarak) Docker cache'ini etkili bir \u015fekilde kullanabilirsiniz. Bu, k\u00fc\u00e7\u00fck kod de\u011fi\u015fikliklerinde bile t\u00fcm imaj\u0131n yeniden olu\u015fturulmas\u0131n\u0131 engeller.<\/p>\n<\/li>\n<li><strong>Aspire Loglar\u0131 ve Hata Ay\u0131klama:<\/strong>\n<ul>\n<li>Aspire Dashboard, servis loglar\u0131n\u0131 ve izlerini g\u00f6r\u00fcnt\u00fclemek i\u00e7in ana merkezdir. Bir sorunla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda ilk olarak buradaki loglara bakmal\u0131s\u0131n\u0131z.<\/li>\n<li>Aspire, .NET uygulamalar\u0131 i\u00e7in standart hata ay\u0131klama (debugging) deneyimini destekler. Visual Studio'da veya VS Code'da ilgili servislere breakpoint'ler koyarak ad\u0131m ad\u0131m \u00e7al\u0131\u015fmay\u0131 izleyebilirsiniz.<\/li>\n<li>E\u011fer bir Aspire kayna\u011f\u0131 beklendi\u011fi gibi ba\u015flam\u0131yorsa, Dashboard'daki \"Console Logs\" sekmesine bakarak Docker veya ilgili servisin ba\u015flang\u0131\u00e7 hatalar\u0131n\u0131 g\u00f6rebilirsiniz.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Da\u011f\u0131t\u0131k uygulaman\u0131zda performans sorunlar\u0131 ya\u015f\u0131yorsan\u0131z, Aspire Dashboard'daki \"Metrics\" ve \"Traces\" sekmelerini dikkatlice inceleyin. Hangi servislerin yava\u015f \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, hangi veritaban\u0131 sorgular\u0131n\u0131n uzun s\u00fcrd\u00fc\u011f\u00fcn\u00fc veya hangi HTTP \u00e7a\u011fr\u0131lar\u0131n\u0131n darbo\u011faz olu\u015fturdu\u011funu belirlemek i\u00e7in OpenTelemetry verilerinden faydalan\u0131n. Bu teknikle darbo\u011fazlar\u0131 %30'a varan oranda daha h\u0131zl\u0131 tespit edebilirsiniz.\n<\/div>\n<p>Bu ileri d\u00fczey konular ve ipu\u00e7lar\u0131, .NET Aspire ve WSL Docker'\u0131 daha verimli ve sorunsuz bir \u015fekilde kullanman\u0131z\u0131 sa\u011flayacakt\u0131r. Karma\u015f\u0131k senaryolarda kar\u015f\u0131la\u015f\u0131lan zorluklar\u0131n \u00fcstesinden gelmenize ve g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir bulut-yerel uygulamalar geli\u015ftirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>Sonu\u00e7: .NET Aspire ve WSL Docker \u0130le Gelece\u011fe Y\u00f6nelik Geli\u015ftirme<\/h2>\n<p>.NET Aspire ve WSL Docker, modern da\u011f\u0131t\u0131k uygulama geli\u015ftirme d\u00fcnyas\u0131nda Windows geli\u015ftiricileri i\u00e7in devrim niteli\u011finde bir ikili sunuyor. Bu makale boyunca, bu teknolojilerin neden bu kadar \u00f6nemli oldu\u011funu, temel kavramlar\u0131n\u0131, ad\u0131m ad\u0131m kurulum s\u00fcre\u00e7lerini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131ld\u0131klar\u0131n\u0131 detayl\u0131 bir \u015fekilde inceledik. Aspire'\u0131n orkestrasyon yetenekleri, karma\u015f\u0131k mikroservis mimarilerini basitle\u015ftirirken, Aspire Dashboard ile uygulamalar\u0131n\u0131z\u0131n t\u00fcm bile\u015fenlerini tek bir yerden izleme ve hata ay\u0131klama imkan\u0131 sa\u011fl\u0131yor. WSL Docker ise, Windows \u00fczerinde Linux konteynerlerini neredeyse yerel bir performansla \u00e7al\u0131\u015ft\u0131rma yetene\u011fiyle bu s\u00fcrecin temelini olu\u015fturuyor.<\/p>\n<p>Bu sinerji, geli\u015ftiricilerin altyap\u0131 detaylar\u0131yla bo\u011fu\u015fmak yerine i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131yarak \u00fcretkenli\u011fi art\u0131r\u0131yor. Tutarl\u0131 geli\u015ftirme ortamlar\u0131 sayesinde, ekip \u00fcyeleri aras\u0131ndaki entegrasyon sorunlar\u0131 azal\u0131yor ve projelerin teslim s\u00fcreleri k\u0131sal\u0131yor. Bulut-yerel uygulama geli\u015ftirme yolculu\u011funuzda .NET Aspire ve WSL Docker, size g\u00fc\u00e7l\u00fc, esnek ve verimli bir ba\u015flang\u0131\u00e7 noktas\u0131 sunar. Gelecekte, bu ara\u00e7lar\u0131n bulut entegrasyonlar\u0131n\u0131n ve geli\u015ftirici deneyiminin daha da zenginle\u015fti\u011fini g\u00f6rece\u011fiz. Bu teknolojileri benimseyerek, modern yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n taleplerine uygun, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir uygulamalar in\u015fa etme konusunda \u00f6nemli bir avantaj elde edeceksiniz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>S1: Aspire sadece Docker ile mi \u00e7al\u0131\u015f\u0131r?<\/strong><\/p>\n<p><strong>C1:<\/strong> Hay\u0131r, Aspire a\u011f\u0131rl\u0131kl\u0131 olarak Docker konteynerlerini yerel geli\u015ftirme i\u00e7in kullansa da, genel olarak <code>IDistributedApplicationBuilder<\/code> aray\u00fcz\u00fc sayesinde farkl\u0131 kaynak sa\u011flay\u0131c\u0131lar\u0131yla \u00e7al\u0131\u015fabilir. \u00d6rne\u011fin, Kubernetes veya Azure Container Apps gibi platformlarla entegrasyon i\u00e7in da\u011f\u0131t\u0131m sa\u011flay\u0131c\u0131lar\u0131 mevcuttur. Aspire'\u0131n amac\u0131, bir uygulaman\u0131n t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 soyutlamak ve farkl\u0131 ortamlar i\u00e7in da\u011f\u0131t\u0131m yetene\u011fi sa\u011flamakt\u0131r.<\/p>\n<p><strong>S2: WSL2 kullanmak yerine Hyper-V ile Docker \u00e7al\u0131\u015ft\u0131rabilir miyim?<\/strong><\/p>\n<p><strong>C2:<\/strong> Evet, teknik olarak hala Hyper-V ile Docker Desktop \u00e7al\u0131\u015ft\u0131rabilirsiniz. Ancak, Linux konteynerleri i\u00e7in WSL2 entegrasyonu, dosya G\/\u00c7 performans\u0131 ve genel kaynak kullan\u0131m\u0131 a\u00e7\u0131s\u0131ndan \u00f6nemli avantajlar sunar. Microsoft'un kendisi de Linux konteynerleri i\u00e7in WSL2 kullan\u0131m\u0131n\u0131 \u00f6nermektedir. E\u011fer Windows konteynerleri ile \u00e7al\u0131\u015f\u0131yorsan\u0131z, Hyper-V bir se\u00e7enek olabilir, ancak bu durumda da Docker'\u0131n WSL2 entegrasyonunu devre d\u0131\u015f\u0131 b\u0131rakman\u0131z gerekebilir.<\/p>\n<p><strong>S3: .NET Aspire'\u0131 \u00fcretim ortam\u0131nda kullanabilir miyim?<\/strong><\/p>\n<p><strong>C3:<\/strong> .NET Aspire, \u00f6ncelikli olarak geli\u015ftirme ve test ortamlar\u0131 i\u00e7in tasarlanm\u0131\u015ft\u0131r. Amac\u0131, da\u011f\u0131t\u0131k uygulamalar\u0131n yerel geli\u015ftirme deneyimini basitle\u015ftirmektir. \u00dcretim ortam\u0131nda genellikle Kubernetes veya Azure Container Apps gibi daha olgun konteyner orkestrasyon platformlar\u0131 kullan\u0131l\u0131r. Aspire, uygulaman\u0131z\u0131 bu platformlara da\u011f\u0131tmak i\u00e7in kolayla\u015ft\u0131r\u0131c\u0131 ara\u00e7lar ve \u015fablonlar sunar, ancak kendisi do\u011frudan bir \u00fcretim orkestrasyon motoru de\u011fildir.<\/p>\n<p><strong>S4: Aspire uygulamam \u00e7ok yava\u015f \u00e7al\u0131\u015f\u0131yor, ne yapmal\u0131y\u0131m?<\/strong><\/p>\n<p><strong>C4:<\/strong> Birka\u00e7 olas\u0131 nedeni olabilir:<\/p>\n<ol>\n<li><strong>WSL2 Kaynaklar\u0131:<\/strong> Docker Desktop ayarlar\u0131n\u0131zda WSL2 VM'ine yeterli CPU ve RAM tahsis edildi\u011finden emin olun (bkz. <code>.wslconfig<\/code> ipucu).<\/li>\n<li><strong>Gereksiz Konteynerler:<\/strong> Arka planda \u00e7al\u0131\u015fan di\u011fer Docker konteynerlerini veya WSL2 da\u011f\u0131t\u0131mlar\u0131n\u0131 kapatmay\u0131 deneyin (<code>wsl --shutdown<\/code>).<\/li>\n<li><strong>A\u011f Gecikmesi:<\/strong> Servisler aras\u0131 ileti\u015fimde veya harici ba\u011f\u0131ml\u0131l\u0131klara (uzak veritaban\u0131 vb.) eri\u015fimde gecikmeler olabilir. Aspire Dashboard'daki izleme verilerini kontrol edin.<\/li>\n<li><strong>Kod Optimizasyonu:<\/strong> Kendi kodunuzdaki performans darbo\u011fazlar\u0131n\u0131 (veritaban\u0131 sorgular\u0131, API \u00e7a\u011fr\u0131lar\u0131) kontrol edin.<\/li>\n<\/ol>\n<p><strong>S5: Aspire ile Kubernetes entegrasyonu m\u00fcmk\u00fcn m\u00fc?<\/strong><\/p>\n<p><strong>C5:<\/strong> Evet, kesinlikle m\u00fcmk\u00fcn. Aspire, uygulamalar\u0131n\u0131z\u0131 Kubernetes gibi platformlara da\u011f\u0131tmak i\u00e7in geli\u015ftirilmi\u015ftir. Microsoft, Aspire uygulamalar\u0131n\u0131 Azure Kubernetes Service (AKS) veya di\u011fer Kubernetes k\u00fcmelerine da\u011f\u0131tmak i\u00e7in k\u0131lavuzlar ve ara\u00e7lar sa\u011flamaktad\u0131r. Aspire, OpenTelemetry gibi end\u00fcstri standartlar\u0131n\u0131 kullanarak bu da\u011f\u0131t\u0131mlar\u0131 kolayla\u015ft\u0131r\u0131r ve geli\u015ftirme ortam\u0131n\u0131z ile \u00fcretim ortam\u0131n\u0131z aras\u0131nda tutarl\u0131l\u0131k sa\u011flamay\u0131 hedefler.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Modern uygulama geli\u015ftirme s\u00fcre\u00e7leri, \u00f6zellikle mikroservis mimarileri ve da\u011f\u0131t\u0131k sistemler s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k hale gelebilir. Geli\u015ftiriciler, \u00e7ok&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":[1407],"tags":[],"class_list":{"0":"post-34331","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-docker","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>NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi<\/title>\n<meta name=\"description\" content=\"Modern uygulama geli\u015ftirme s\u00fcre\u00e7leri, \u00f6zellikle mikroservis mimarileri ve da\u011f\u0131t\u0131k sistemler s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k hale gelebilir. Geli\u015ftiriciler, \u00e7ok say\u0131da servisi y\u00f6netmek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 koordine etmek ve farkl\u0131 ortamlarda tutarl\u0131 bir deneyim sa\u011flamakla u\u011fra\u015f\u0131rken verimlilikleri d\u00fc\u015febilir. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 nas\u0131l basitle\u015ftirebiliriz? .NET Aspire ve WSL Docker ikilisi, tam da bu noktada devreye girerek Windows ortam\u0131nda bulut-yerel uygulamalar geli\u015ftirmeyi k\u00f6kten de\u011fi\u015ftiren g\u00fc\u00e7l\u00fc bir sinerji sunuyor. Bu makale, her seviyeden geli\u015ftiricinin bu teknolojileri s\u0131f\u0131rdan \u00f6\u011frenerek, y\u00fcksek performansl\u0131 ve y\u00f6netilebilir da\u011f\u0131t\u0131k uygulamalar geli\u015ftirmesine rehberlik edecek.\" \/>\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\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi\" \/>\n<meta property=\"og:description\" content=\"Modern uygulama geli\u015ftirme s\u00fcre\u00e7leri, \u00f6zellikle mikroservis mimarileri ve da\u011f\u0131t\u0131k sistemler s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k hale gelebilir. Geli\u015ftiriciler, \u00e7ok say\u0131da servisi y\u00f6netmek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 koordine etmek ve farkl\u0131 ortamlarda tutarl\u0131 bir deneyim sa\u011flamakla u\u011fra\u015f\u0131rken verimlilikleri d\u00fc\u015febilir. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 nas\u0131l basitle\u015ftirebiliriz? .NET Aspire ve WSL Docker ikilisi, tam da bu noktada devreye girerek Windows ortam\u0131nda bulut-yerel uygulamalar geli\u015ftirmeyi k\u00f6kten de\u011fi\u015ftiren g\u00fc\u00e7l\u00fc bir sinerji sunuyor. Bu makale, her seviyeden geli\u015ftiricinin bu teknolojileri s\u0131f\u0131rdan \u00f6\u011frenerek, y\u00fcksek performansl\u0131 ve y\u00f6netilebilir da\u011f\u0131t\u0131k uygulamalar geli\u015ftirmesine rehberlik edecek.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-15T04:31:07+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=\"27 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi\",\"datePublished\":\"2025-11-15T04:31:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/\"},\"wordCount\":5088,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Docker\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/\",\"name\":\"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-15T04:31:07+00:00\",\"description\":\"Modern uygulama geli\u015ftirme s\u00fcre\u00e7leri, \u00f6zellikle mikroservis mimarileri ve da\u011f\u0131t\u0131k sistemler s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k hale gelebilir. Geli\u015ftiriciler, \u00e7ok say\u0131da servisi y\u00f6netmek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 koordine etmek ve farkl\u0131 ortamlarda tutarl\u0131 bir deneyim sa\u011flamakla u\u011fra\u015f\u0131rken verimlilikleri d\u00fc\u015febilir. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 nas\u0131l basitle\u015ftirebiliriz? .NET Aspire ve WSL Docker ikilisi, tam da bu noktada devreye girerek Windows ortam\u0131nda bulut-yerel uygulamalar geli\u015ftirmeyi k\u00f6kten de\u011fi\u015ftiren g\u00fc\u00e7l\u00fc bir sinerji sunuyor. Bu makale, her seviyeden geli\u015ftiricinin bu teknolojileri s\u0131f\u0131rdan \u00f6\u011frenerek, y\u00fcksek performansl\u0131 ve y\u00f6netilebilir da\u011f\u0131t\u0131k uygulamalar geli\u015ftirmesine rehberlik edecek.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi\"}]},{\"@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":"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi","description":"Modern uygulama geli\u015ftirme s\u00fcre\u00e7leri, \u00f6zellikle mikroservis mimarileri ve da\u011f\u0131t\u0131k sistemler s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k hale gelebilir. Geli\u015ftiriciler, \u00e7ok say\u0131da servisi y\u00f6netmek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 koordine etmek ve farkl\u0131 ortamlarda tutarl\u0131 bir deneyim sa\u011flamakla u\u011fra\u015f\u0131rken verimlilikleri d\u00fc\u015febilir. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 nas\u0131l basitle\u015ftirebiliriz? .NET Aspire ve WSL Docker ikilisi, tam da bu noktada devreye girerek Windows ortam\u0131nda bulut-yerel uygulamalar geli\u015ftirmeyi k\u00f6kten de\u011fi\u015ftiren g\u00fc\u00e7l\u00fc bir sinerji sunuyor. Bu makale, her seviyeden geli\u015ftiricinin bu teknolojileri s\u0131f\u0131rdan \u00f6\u011frenerek, y\u00fcksek performansl\u0131 ve y\u00f6netilebilir da\u011f\u0131t\u0131k uygulamalar geli\u015ftirmesine rehberlik edecek.","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\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi","og_description":"Modern uygulama geli\u015ftirme s\u00fcre\u00e7leri, \u00f6zellikle mikroservis mimarileri ve da\u011f\u0131t\u0131k sistemler s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k hale gelebilir. Geli\u015ftiriciler, \u00e7ok say\u0131da servisi y\u00f6netmek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 koordine etmek ve farkl\u0131 ortamlarda tutarl\u0131 bir deneyim sa\u011flamakla u\u011fra\u015f\u0131rken verimlilikleri d\u00fc\u015febilir. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 nas\u0131l basitle\u015ftirebiliriz? .NET Aspire ve WSL Docker ikilisi, tam da bu noktada devreye girerek Windows ortam\u0131nda bulut-yerel uygulamalar geli\u015ftirmeyi k\u00f6kten de\u011fi\u015ftiren g\u00fc\u00e7l\u00fc bir sinerji sunuyor. Bu makale, her seviyeden geli\u015ftiricinin bu teknolojileri s\u0131f\u0131rdan \u00f6\u011frenerek, y\u00fcksek performansl\u0131 ve y\u00f6netilebilir da\u011f\u0131t\u0131k uygulamalar geli\u015ftirmesine rehberlik edecek.","og_url":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-15T04:31:07+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"27 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi","datePublished":"2025-11-15T04:31:07+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/"},"wordCount":5088,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Docker"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/","name":"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-15T04:31:07+00:00","description":"Modern uygulama geli\u015ftirme s\u00fcre\u00e7leri, \u00f6zellikle mikroservis mimarileri ve da\u011f\u0131t\u0131k sistemler s\u00f6z konusu oldu\u011funda, karma\u015f\u0131k hale gelebilir. Geli\u015ftiriciler, \u00e7ok say\u0131da servisi y\u00f6netmek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 koordine etmek ve farkl\u0131 ortamlarda tutarl\u0131 bir deneyim sa\u011flamakla u\u011fra\u015f\u0131rken verimlilikleri d\u00fc\u015febilir. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 nas\u0131l basitle\u015ftirebiliriz? .NET Aspire ve WSL Docker ikilisi, tam da bu noktada devreye girerek Windows ortam\u0131nda bulut-yerel uygulamalar geli\u015ftirmeyi k\u00f6kten de\u011fi\u015ftiren g\u00fc\u00e7l\u00fc bir sinerji sunuyor. Bu makale, her seviyeden geli\u015ftiricinin bu teknolojileri s\u0131f\u0131rdan \u00f6\u011frenerek, y\u00fcksek performansl\u0131 ve y\u00f6netilebilir da\u011f\u0131t\u0131k uygulamalar geli\u015ftirmesine rehberlik edecek.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/net-aspire-ve-wsl-docker-modern-uygulama-gelistirme-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"NET Aspire ve WSL Docker: Modern Uygulama Geli\u015ftirme Rehberi"}]},{"@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\/34331","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=34331"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34331\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}