Daha Verimli Konfigürasyon Yönetimi (.Net Core)

.Net core'da konfigurasyon bilgileri varsayılan olarak json formatlı olarak tutulur(appsettings.json) Burada çalışma zamanına özgü varsayılan parametreler dışında özel konfigurasyon içeriklerini tutmak da mümkündür. Hatta istersek birden fazla konfigurasyon dosyasını da bir arada kullanabiliriz. Her ikisini uygulamak da oldukça kolay aslında. Nasıl mı? Gelin birlikte bakalım. [Daha fazla]

Visual Studio Code İçinde Unit Test Yazmak

Bu yazımızda Visual Studio Code içerisinde Unit Test barındıran bir çözümün nasıl geliştirilebileceğini inceliyoruz. İdeal klasör yapısını oluşturuyor, MSTest çatısını kullanarak çok basit bir test vakasını işletmeye çalışıyoruz. Amaçlarımızdan birisi de Visual Studio Code arabirimi dışına çıkmadan proje iskeletini oluşturmak ve testleri kurgulayarak deneyimlemek. [Daha fazla]

Bir Web API Servisi Nasıl Hata Döndürmeli ?

Bu yazımızda IETF(Internet Engineering Task Force) ekibinin koyduğu önemli standartlardan birisi olan "Problem Details for HTTP APIs" konusunu incelemeye çalışıyoruz. Bu bağlamda RFC 7807 maddesinde belirtilen sonuçları elde edebilmek için Kristian Hellang'in geliştirdiği Hellang.Middleware.ProblemDetails nuget paketinden yararlanıyoruz. [Daha fazla]

Docker SQL Server Kullanımı

West-World'e daha önceden Microsoft SQL Server sürümünü kurmuş ve basit denemeler yapmıştık. Esasında bu şart değildi. SQL Server'ın Linux platformu için olan Docker imajını da kullanabilirdik. İşte bu yazımızda docker imajını baz alarak, Entity Framework çatısının kullanan basit bir Web API servisini nasıl geliştirebileceğimizi öğrenmeye çalışacağız. [Daha fazla]

Eğlenceli SignalR

Bu yazımızda, Chart.js kütüphanesini kullanarak, tarayıcı üzerindeki bir grafiğin SignalR üzerinden nasıl beslenebileceğini incelemeye çalışıyoruz. Bunu yaparken Chart.js'in nefis özelliklerini kullacağız ama daha da önemlisi verilerin belirli periyotlarla istemci tarafına akmasını ve grafik üzerinden anlık(SignalR kullanmamızın bir sebebidir) olarak izlenebilmesini sağlayacağız. [Daha fazla]

Basit Bir JsonConverter Uyarlaması

Elimizde aynı anlamları taşıyan ama key adları farklı olan JSON içerikleri bulunmakta. Farklı paketleri kullanan servislerden dönen farklı cevaplar oluşuyor. İstemci tarafı aynı anlamdaki bu farklı çıktılar için farklı sınıflar tasarlamak istemiyor. Acaba ters serileştirme işlemi sırasında araya girip farklı key değerlerini aynı nesne örneğinin özelliklerine atamamız mümkün olabilir mi? JsonConverter sınıfını kullanarak konuya çözüm üretmeye çalışıyoruz. [Daha fazla]

West-World'ün RabbitMQ ile Tanışmasının Zamanı Gelmişti

Küçük bir çocukken, soğuk bir kış gününde ablamın elini tutmuş Kadıköy'deki büyük postaneye doğru yol aldığımı hatırlarım. O yaz mektuplaşmak için adresini aldığım arkadaşıma yazdıklarımı göndermek istiyordum. Hayal mayal hatırladığım anlar. İlkokul zamanlarından kalma. Üzerinden onca yıl geçmiş durumda. Gönderen belli, alıcı belli, mektup ortada, pulları üstünde, yazılanlar içinde, taşıyıcı PTT her zaman ki gibi hizmetimizde. Tabii postaneye gelen bir çok mektup daha var. Hepsinin göndericisi ve gideceği adresler de belli...Diyerek girizgahımızı yapıyoruz. Konumuz Linux üzerine RabbitMQ kurmak ve .Net Core ile onu kullanmak. [Daha fazla]

Linkedin Bağlantılarını Elde Etmek

Linkedin üzerindeki bağlantılarınızın listesini elde etmek ister misiniz? Aslında bu sanıldığı kadar kolay değil ancak nasıl yapıldığını öğrenmeye çalışırken OAuth 2.0 standartları ile kendimizi doğrulatmamız gerekiyor. Kabaca pek çok platformun yaptığı gibi bir yol izlememiz gerektiğini söyleyebiliriz. Gelin maceramıza başlayalım ve OAuth 2.0 tabanlı bir sistemin nasıl işlediğini anlamaya çalışalım. [Daha fazla]

Simple Stack ile Bir Başka TDD Pratiği

Code Kata pratiklerine ara vermeden devam etmekte yarar var. Bu videomuzda da Test Driven Development odaklı bir pratiği icra etmeye çalışıyoruz. Çok basit ve ilkel bir Stack sınıfını yazmaya çalışacağız. Bildiğiniz üzere Stack veri yapısı Last In First Out(LIFO) ilkesine göre çalışan bir nesne modeli. Bu code kata senaryomuz için dört farklı test senaryomuz olacak. Stack'e son giren nesnenin çekilmesi, Stack'e birden fazla nesnenin atılıp eklenme sıralarına göre çekilmeleri, boş bir stack oluşturulması halinde null döndürülmesi ve sonr olarak null bir öğenin Stack'e eklenememesi. Bu kez dinlendirici Study Soundtrack listesi eşliğinde ilerliyoruz. [Daha fazla]

FizzBuzz ile Basit Bir TDD Pratiği

DevOps felsefesinin içerdiği önemli pratiklerden birisi de test süreçleridir ve bu noktada TDD(Test Driven Development) büyük önem taşımaktadır. TDD, temel olarak Unit Tests, Integration Tests, User Acceptance Tests gibi pratikleri içerir ve en azından bunların DevOps süreçlerine dahil edilmesi beklenir. Ancak TDD ve DevOps söz konusu olunca daha bir çok test tekniği vardır. Smoke Testing, Penetration Testing, Stress Testing, A/B testing, Fuzz Testing ve Boundary Testing gibi. [Daha fazla]

Post Görünümlü Put

Hiç bir REST servisine Post talebi gönderip aslında onun Put işlemini yapmasını istediğiniz oldu mu? Bir kaç değişik sebepten dolayı tasarlayacağınız REST tabanlı servisin bu tip senaryolara hizmet verebilir olmasını isteyebilirsiniz. Haydi gelin bir .Net Core Web API için bunu nasıl yapacağımıza bakalım. [Daha fazla]

West-World'ün Uzaydan Gelen SQL Server ile Tanışması

Bizim kuşağın yazılımcıları uzun yıllar boyunca çeşitli çatışmalar içerisinde yer aldılar. Java'mı, .Net mi, SQL mi Oracle'mı, SOA'mı Microservices'mı....Bu ve benzeri tartışmalar uzun yıllar sürecek mi diye düşünürken birden şartlar değişmeye başladı. Mesela Microsoft açık kaynak dünyası ile el sıkıştı, ortaya .Net Core'u koydu. Hatta Java Developers Day'a altın ortak bile oluverdi. Ne alıp veremdikleri vardı ki bu ayrı dünyalarda yaşadıklarını zanneden standart koyucuların... [Daha fazla]

Azure, Azure! Bu Fotoğrafta Neler Görüyorsun?

Pluralsight sağolsun Azure konusundaki çalışmalarıma devam ediyorum. Ufak ufak öğretilerin üzerinden geçerken de neyin nasıl yapıldığını adım adım öğrenmeye çalışıyorum. Bu yazımızda zun zamandır hepimizin varlığından haberdar olduğu Cognitive Services özelliklerinden birisine bakacağız. Azure'un yapay zeka destekli makine öğrenme hizmetlerinden olan Compture Vision enstrümanını kullanarak bir fotoğrafı bizim için nasıl yorumlayableceğini göreceğiz. [Daha fazla]

.Net Core ile Amazon DynamoDB'yi Kullanmak

Epey zamandır NoSQL veritabanı sistemlerini kurcalamıyordum. Ağırlıklı olarak da .Net tarafında nasıl kullanılabildiklerini incelediğimi hatırlıyorum. 2017nin son çeyreği ve 2018 için kendime koyduğum hedeflerden birisi ise .Net Core dünyasını daha yakından tanımak. West-World'ün kurulum amacı da özellik bu. Sonuç olarak Amazon'un DynamoDb'sini .Net Core tarafında nasıl kullanabileceğimi incelemeye karar verdim. Bir süredir AWS Console üzerinden bir şeyler araştırıyor ve Amazon Web Service ürünleri hakkında giriş niteliğinde bilgiler edinmeye çalışıyorum. [Daha fazla]

Bir Web API Servisini Github Hesabıyla Yetkilendirmek

Senaryomuzda basit bir Web API Servisi bulunuyor. .Net Core ile geliştirilen servisin bir Controller'ı için yetkilendirme(Authorization) sürecini uygulatmak istiyoruz. Burada OAuth 2 standardını ele almak, kullanıcı yetkilendirme yöneticisi ve bilet(Token) tedarikçisi olarak Github'dan yararlanmak istiyoruz. Temel olarak Web API servisimiz Consumer, Github'ın kendisi ise Service Provider olarak düşünülebilir. Tabii bu senaryonun gerçekleşmesi için bizim Github'a bir proje kaydettirmemiz ve özellike Redirect URI bilgisini Consumer rolündeki uygulamamız için bildirmemiz gerekiyor(Az sonra yapacağız) [Daha fazla]

Apache Üzerinden Bir Web API Hizmeti Sunmak

Bu yazımızda West-World üzerine Apache kuruyor ve 80 portuna gelen talepleri Kestrel'e yönlendirerek bir Asp.Net Web API hizmetini nasıl sunabileceğimizi incelemeye çalışıyoruz. Daha önceden NginX için gerçekleştirdiğimiz vakayı Apache tarafı için ele aldığımızı ifade edebiliriz. Tabii farklı olan bazı noktalar var. Yine de teorinin aynı olduğunu ifade edebiliriz. Bakalım Apache, Ubuntu üzerinde nasıl Reverse Proxy Server haline geliyor. Haydi başlayalım. [Daha fazla]

Asp.Net Core Routing Mekanizmasını Kavramak

Bu yazımızda Asp.Net Core routing mekanizmasını yakından incelemeye çalışacağız. .Net tarafında MVC zamanlarından beri kritik bir yere sahip olan talep yönlendirme mekanizması .Net Core tarafında da etkili bir biçimde kullanılmakta. Bir kaç farklı örnek yaparak mekanizmanın nasıl çalıştığını anlamaya çalışalım. [Daha fazla]

Sadece Tarayıcı Kullanarak Web API Servisini Google Cloud Platform Üzerinde Yayınlamak

Sizi Cumartesi geceme davet etsem...Olmaz mı? Pekiiii...Sadece 15 dakika içerisinde standart bir .Net Core Web API hizmetini Google Cloud Platform üzerine taşıyabileceğinizi söylesem. İlginizi çekmedi mi hala...Pekiiii...Tüm bunları sadece tarayıcı(Chrome, IE, Firefox, Opera, elde ne varsa) ile yapabileceğinizi söylesem :) Sanırım şimdi dikkatinizi çekmiş olmalı. [Daha fazla]

.Net Core Tarafında SignalR Kullanımı

Bir süre önce araştırmaya başladığım ama araya giren diğer konular(WebSockets ve CORS) nedeniyle askıda kalan SignalR ile ilgili West-World tarafında haftasonu önemli gelişmeler oldu. Öncelikle çalıştığım kaynaklardan yararlanarak aşağıdaki özet şekli oluşturdum ve bir örnek yapmaya karar verdim. [Daha fazla]

JSON to BSON

Amacımız çalışan listesinin içeriğini BSON formatında bir dosyaya yazdırmak ve sonrasında bu içeriği tekrar okuyup ters-serileştirme işlemini gerçekleştirerek ekrana yazdırmak. [Daha fazla]

Tek Fotolu İpucu 153 - Config Sekmesini Harici Dosyadan Okumak

Uygulamalarımıza ait pek çok parametrik bilgiyi zaman zaman config uzantılı dosyalar içerisinde tuttuğumuz çok olmuştur. Web tabanlı uygulamalarda web.config veya exe tipi uygulamalarda app.config gibi. Bu dosyalarda standart olarak kullanılan içerikler mevcuttur. appSettings, connectionStrings sanıyorum en popüler olanlarından. Peki bu tip konfigurasyon segmentlerinin harici dosyalara refere edilebileceğini biliyor muydunuz? Örneğin uygulamanın appSettings içeriğinin farklı bir dosyadan gelmesini sağlayabiliriz. Nasıl mı? [Daha fazla]

Tek Fotoluk İpucu 151 - C#, Reflection ve About Info

Programlardaki About Info kısımlarını bilirsiniz. Yazdığımız uygulama hakkında bir takım bilgiler verir. Genellikle ürünün adı, bir iki cümle ile ne yaptığı, üreticisi ve hatta versyion numarası ve benzeri bilgiler yer alır. Micorosoft .Net tarafında aslında bu tip bilgileri Assembly'a ait niteliklerde(attribute) belirtiriz. Aynen aşağıdaki ekran görüntüsünde olduğu gibi. [Daha fazla]