Derya Dok Kişisel Blog

Tag: .net Page 1 of 2

ASP.NET Core Middleware Rehberi

Herkese merhaba. Bu yazıda .NET web uygulamaları dünyasında çok kullanılan bir yapıdan bahsedeceğim. Middleware; web uygulamamıza gelen HTTP request ve response’ları işleyen ve belli kurallara göre yönlendirme veya sonlandırma yapan bir ara katmandır. Her isteği modüler bir şekilde işleyip yönetmemize olanak tanır. Middleware, yazılım dünyasında Aspect Oriented Programming (AOP) olarak bilinen tasarıma somut bir örnektir. AOP’nin temel amacı olan ‘loglama, güvenlik veya önbelleğe alma gibi ortak işleri tek bir merkezden yönetme’ fikrini, bizim için HTTP istek ve cevap mekanizması üzerinde hayata geçirir. Peki bu sistem tam olarak nasıl çalışır?

SOLID Yazılım Prensipleri – Dependency Inversion Principle

SOLID yazı dizisinin sonuncusu olan Dependency Inversion yazısından merhabalar! Bu yazıda sıklıkla Dependency Injection (DI) ile karıştırılan Dependency Inversion (DIP) prensibini inceleyeceğiz. Temelde “soyutlamaya bağlı olma” felsefesine dayanan bu prensip, sınıflar arasındaki sıkı bağımlılıkları (tight coupling) kırmayı hedefler. Yüksek bağımlılık; kodun bir parçasını diğerlerinden izole edememek ve değişime karşı direnç gösteremeyen bir yapı kurmak demektir.

SOLID Yazılım Prensipleri – Liskov Substitution Principle

Herkese merhaba. Uzun bir aradan sonra SOLID ilkesinin üçüncü prensibi ile bu yazı dizisine devam ediyorum. Liskov Substitution prensibi özetle kodlarımızda herhangi bir değişiklik yapmaya gerek duyulmadan türetilen sınıfların yerine kullanabilmesini ele alır. Bu sayede codebase içerisinde sağlam bir inheritance yapısı oluşur. Yanlış soyutlamaların önüne geçildiği için geliştirme yapılırken kodun tahmin edilebilirliği artar. Ayrıca bir önceki yazımda bahsettiğim Open Closed ilkesinin de öncül şartıdır.

SOLID Yazılım Prensipleri – Open Closed Principle

Herkese merhaba. Bir önceki yazımda SOLID prensiplerinden ve Single Responsibility ilkesinden bahsetmiştim. Bu yazıda ise Open Closed ilkesini inceleyeceğiz. Bu ilke, uygulamanın mevcut kodlarını değiştirmeden sistemin özelliklerinin genişletilmesini önerir. Bu sayede yeni bir özellik eklendiğinde var olan kodda değişiklik yapılmadığı için bug oluşma riskini de azaltmış oluruz. Bu yazıdaki örneklere github repomdan erişim sağlayabilirsiniz.

SignalR Nedir?

Herkese merhaba. Bu yazıda gerçek zamanlı uygulama geliştirmek için kullanılan kütüphanelerden birisi olan SignalR kütüphanesini inceleyeceğiz. Gerçek zamanlı web, mobil uygulamaları artık günlük hayatımızın büyük bir kısmını oluşturmakta. Bu yüzden gerçek zamanlı uygulamaların teknoloji sektöründeki popülerliği hala devam ediyor. Anlık mesajlaşma, döviz takip, maç sonucu takip uygulamaları ve oyunlar gibi pek çok farklı sektörde kullanılan bu mekanizma aslında WebSocket ve RPC teknolojisine dayanmaktadır. Bu nedenle öncelikle WebSocket ve RPC yapılarına ardından da SignalR konusuna geçiş yapalım.

C# Notlarim 25: Delegate ve Event Yapısı

Herkese merhaba. Bu yazıda kullanıcı etkileşimli programlama yaparken oldukça sık karşımıza çıkan delegate ve event konularını inceleyeceğiz. Bu ders için hazırladığım örnekleri Windows Forms projesi ile hazırladım. Daha öncesinde LINQ kullandıysanız Where() ya da Select() gibi metotların içerisine yazdığımız lambda expressionların da delegate yapısını kullandığını görmüşsünüzdür. İlerleyen yazılarda o konulara da değineceğiz. Daha fazla kafa karıştırmadan konuyu incelemeye başlayalım. Yazıda bulunan örneklere github hesabımdan ulaşabilirsiniz.

C# Notlarım 24: Generic Tipler

Herkese merhaba. Bu yazıda pek çok gelişmiş programlama dilinde bulunan bir konuyu, generic tipler konusunu ele alacağız. C# içerisinde kullanabileceğimiz tiplerin üzerine kendi oluşturduğumuz tipleri ekleyebileceğimizi nesne yönelimli programlamada görmüştük. Kendi oluşturduğuğumuz farklı tipleri ortak bir metot için kullanmak istiyorsak, metot parametresine object tipi verebiliriz. Bu yöntem kısa vadede sorunlarımızı çözüyor gibi görünse de uzun vadede bazı sıkıntılara yol açıyor. Yazıda bulunan örneklere github hesabımdan ulaşabilirsiniz.

C# Notlarım 23: Static Class Yapısı

Herkese merhaba. Bir önceki yazımda değer ve referans tipleri anlatmıştım. Bu yazıda da static class yapısını inceleyeceğiz. C# içerisinde nesne yönelimli programlamada static class’ları kullanarak daha fonksiyonel bir programlama yapabiliriz. Genellikle tek bir tane üretmek istediğimiz nesnelerde static yapısını tercih ederiz. Örneklere github hesabımdan ulaşabilirsiniz.

C# Notlarım 22: Değer ve Referans Tipler

Herkese merhaba. C# üzerinde bool, integer, string gibi pek çok değişken türü sayabiliriz. Bu değişken türleri aslında değer (value) ya da referans (reference) tip dediğimiz veri tiplerinden türerler. Değer ve referans tipler bellekte farklı bölgelerde tutulmaktadır. .NET Framework bellek yönetimini önemli ölçüde kendisi yapar. Biz de tanımladığımız değişkenin hangi bölgede yer almasını istiyorsak bellek yönetimini belli ölçülerde kendimiz ayarlamış oluruz. C# üzerindeki bellek bölgelerini inceleyerek konumuza giriş yapalım. Örneklere github hesabımdan ulaşabilirsiniz.

C# Notlarım 20: Soyutlama (Abstraction)

Herkese merhaba. Nesne yönelimli programlamanın son konusu olan soyutlama (abstraction) konusunu inceleyeceğiz. Soyutlama projedeki karmaşıklığı azaltmayı sağlar. Birden fazla sınıfa kalıtım verecek olan en temel nesneler soyutlama yöntemiyle oluştulur. Üretimde kullanılmayacak ama diğer tasarımların kalıtım aldığı bir temel kurulur. Ancak kendisi somut olarak proje içerisinde yer almaz. Örneklere github reposundan ulaşabilirsiniz.

Page 1 of 2

Powered by WordPress & Theme by Anders Norén