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]

Web API'leri Swagger ile Zenginleştirelim

Bu yazımızda Web API servislerimizi OpenAPI Specification'da belirtilen dokümanlaştırma standartlarına göre nasıl zenginleştirebileceğimizi incelemeye çalışıyoruz. Web api servisinin ne işe yaradığını gösteren ve sunduğu operasyonları hızlıca test edebilmemize olanak tanıyan Swagger arabirimini de deneyimliyoruz. [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]

Azure Üzerinde Redis Cache Kullanımı

Bu yazımızda Azure üzerindeki minik maceralarımıza devam ediyoruz. Amacımız bir Redis Cache hizmetini devreye almak ve basit bir .Net Core istemcisinden yararlanarak kendisiyle konuşmak. Önce portaldan yararlanarak bir Redis Cache hizmetini devreye alacağız. Ardından StackExchange.Redis paketini kullanıp istemci tarafını geliştireceğiz. Redis'e ECHO komutu ile mesaj gönderecek ve kullanıcı tanımlı nesne örneklerini de nasıl kullanacağımız irdeleyeceğiz. Haydi gelin başlayalım. [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]

Google Cloud Pub/Sub Service Macerası

Bu makalemizde Google Cloud Platform'un önemli servislerinden birisi olan Pub/Sub API'yi incelemeye çalışıyoruz. gCloud ile komut satırından topic oluşturup, buna abone oluyor ve mesaj yayınlayıp, yayınlanan mesajı okuyoruz. Ardından .Net Core ile geliştirdiğimiz uygulamada Google.Cloud.PubSub.V1 paketini kullanarak mesaj yayınlama ve yayınlanan mesajları okuma işlemlerini nasıl gerçekleştirebileceğimize bakıyoruz. [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]

Google Cloud Storage Kullanımı

Bu yazımızda Google Cloud Storage hizmetini nasıl kullanabileceğimizi incelemeye çalışıyoruz. Özellikle fiziksel depolama olarak kullanabileceğimiz bu hizmeti hem komut satırından hem de .Net Core ortamından kullanmayı deniyoruz. Bir Bucket oluşturup, fotoğraf yüklüyor, yüklediğimiz içerikleri kendi ortamımıza çekiyoruz. [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]

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]

.Net Core Konfigurasyon Yönetimi Üzerine

Çalışma zamanına bilgi taşımanın ve bazı ayarlamalar için gerekli değerleri okumanın en popüler yollarından birisi de bildiğiniz üzere konfigurasyon dosyalarından yararlanmak. Zaman içerisinde app.config, web.config gibi XML tabanlı konfigurasyon dosyalarına aşina olan bizler, .Net Core ile birlikte JSON formatlı içeriklerle çalışmaya başladık. .Net Core tarafında bu JSON içeriklerini yönetmek oldukça kolay. Farklı yöntemlerimiz var. Dahası Dependency Injection yeteneklerinden yararlanılabildiği için özel sekmelerin(section) sınıflara bağlanması da münkün... [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]

Nginx Üzerinde Web API Servisi Çalıştırmak

Nginx(Engine X olarak telafuz ediliyor) Kazakistan Almatı doğumlu bilgisyar programcısı Igor Sysoev tarafından 2002 yılında geliştirilmeye başlanmış ve 2004 yılında ürünleşmiş açık kaynak bir web sunucusudur. İlk olarak mail.ru için mail sunucu olarak geliştirilmiş ama sonrasında çok daha geniş yetenekler kazanarak web siteleri için Apache'den çok daha hızlı çalışabilen bir sunucu haline gelmiştir. Henüz doğrulayamadığım ama genel kabul görmüş bazı performans testlerine göre muadili olan Apache ve Lightpdd gibi ürünlere göre çok yüksek cevap süreleri ve minimum bellek tüketimi sağlamaktadır. Bu açılardan oldukça popüler olduğunu ifade edebiliriz. Yük dengeleme(Load Balancing), Sana sunucu(Virtual Host), Otomatik indeksleme ve ters vekil sunucu(Reverse Proxy) gibi temel özellikleri vardır. [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]

Docker Üzerinde .Net Core Uygulaması Çalıştırmak

Internet üzerinde Docker ile ilgili pek çok bilgi ve kaynağa ulaştım. Ama özellikle Asiye Yiğit'in Linkedin üzerinden paylaştığı yazılar giriş seviyesinde bilgi sahibi olmamı sağladı. Çıkarttığım notlardan yararlanarak konuyu kavramak için şekilleri tekrardan ele aldım ve kısa özet çıkarttım. Öncelikle bu notlarımı temize çekeceğim. Sonrasında Ubuntu üzerine Docker kuracağım. Ardından .Net Core 2.0 için basit bir Console uygulaması yazacağım. Son adımda ise bu uygulamayı Docker üzerinde ayağa kaldıracağım. Haydi gelin başlayalım. [Daha fazla]