Bileşenlerin Dansı: Composite Tasarım Kalıbı

2023-06-22 | #composite-pattern #design-patterns #structural-patterns

Bir zamanlar, bir ormanda bir ağaç vardı. Bu ağaç, yaprakları ve dalları olan karmaşık bir yapıydı. Her dalın üzerinde daha küçük dallar ve yapraklar bulunabilirdi. Ağaç, dallarını ve yapraklarını bir arada tutan bir bütün olarak çalışıyordu. Bu ağaç, Composite tasarım kalıbının bir örneğidir. Ağaç (Composite), dallar (yine Composite) ve yapraklar (Leaf) olmak üzere iki tür bileşen içerir. Hem dallar hem de yapraklar, ağaç tarafından tanınan aynı arayüzü (Component) uygular. Bu sayede ağaç, dallarını ve yapraklarını aynı şekilde işleyebilir.

Devamı 


Köprüler Kurarak Esneklik Kazanın: Bridge Tasarım Kalıbı İle Çözümlemeler ve Dört Farklı Dilde Uygulamalar

2023-06-22 | #bridge-pattern #design-patterns #structural-patterns

Bir zamanlar, iki krallık varmış. Bu krallıklar birbirlerine çok yakın olmasına rağmen, aralarında geniş ve derin bir nehir bulunuyormuş. Bu nehir, krallıkların birbirleriyle etkileşim kurmasını zorlaştırıyormuş. Bu durumu çözmek için, her iki krallık da bir köprü inşa etmeye karar vermiş. Bu köprü, iki krallık arasında iletişimi sağlayan bir arayüz olmuş. Ancak, köprünün her iki tarafında farklı yapılar ve özellikler bulunuyormuş. Bir taraf taştan, diğer taraf ise ahşaptan yapılmış. Bu durum, köprünün her iki tarafının birbirinden bağımsız olarak değiştirilebilmesini sağlamış.

Devamı 


Anemic Domain Model: Detaylı Bir İnceleme

2023-06-15 | #anemic-domain-model #anti-pattern

Anemic Domain Model, domain logic’inin çoğunlukla servislerde ve veri transfer nesnelerinde bulunduğu, genellikle işlevselliği ve davranışı belirsizleştiren ve genellikle sadece veri aktarımı için kullanılan bir yazılım tasarım desenidir. Bu terim, ilk olarak Martin Fowler tarafından tasarım deseninin olumsuz bir örneği olarak tanımlanmıştır. Tipik bir örneği, nesnelerin verileri saklama yeteneklerine sahip olmasına ancak iş mantığının, servislerde ve diğer dış kaynaklarda olmasına dayanır. Bu nedenle, bu model genellikle veri erişim katmanının işlevselliği ile ilgilenir ve genellikle iş mantığından yoksundur.

Devamı 


Dekoratör Tasarım Deseni: Yazılımın Süsleyicileri

2023-06-15 | #decorator-pattern #design-patterns #structural-patterns

Bir zamanlar, bir “Component” adında bir nesne varmış. Bu nesne, belirli bir işlevi yerine getirmek için kullanılırmış. Ancak, bazen bu işlevi genişletmek veya değiştirmek gerekiyormuş. İşte bu noktada “Decorator"lar devreye giriyormuş. Decorator’lar, Component’i “süsleyen” veya genişleten nesnelerdir. Bir Decorator, bir Component’in üzerine gelir ve onun işlevini genişletir veya değiştirir. Bu, Component’in kendisini değiştirmeden, onun işlevselliğini genişletmek için kullanılır. Örneğin, bir “TextComponent” düşünün. Bu component, bir metni ekrana yazdırır. Ancak, bazen metni kalın veya italik yapmak isteyebiliriz.

Devamı 


Kodun Dilinden Masallar: Adapter Pattern ile Farklı Dünyaları Birleştirmek

2023-06-15 | #adapter-pattern #design-patterns #structural-patterns

Bir zamanlar, iki farklı dünyadan gelen iki arkadaş vardı: Elektrikli Süpürge ve Elektrik Prizi. Elektrikli Süpürge, enerjiye ihtiyaç duyuyordu ve bu enerjiyi Elektrik Prizinden almak istiyordu. Ancak bir sorun vardı. Elektrikli Süpürge’nin fişi, Elektrik Prizi’ne uymuyordu. İkisi de farklı standartlarda üretilmişti ve birbiriyle doğrudan iletişim kuramıyorlardı. Bu durumda, bir kahraman ortaya çıktı: Adaptör. Adaptör, Elektrikli Süpürge’nin fişi ile Elektrik Prizi arasında bir köprü oluşturdu. Elektrikli Süpürge’nin fişini Adaptör’ün bir tarafına takıldı ve Adaptör’ün diğer tarafı Elektrik Prizi’ne takıldı.

Devamı 


Transaction Script Deseninin Çözümlenmesi: Epiktetos ile Felsefi Bir Diyalog

2023-06-11 | #domain-logic-patterns #enterprise-patterns #transaction-script

Murat: Transaction Script deseni, işlemlerin basit ve düzgün bir şekilde gerçekleştirilmesini sağlar. Ancak, karmaşık iş mantığına sahip uygulamalar için bu desenin kullanılması kodun anlaşılmasını ve bakımını zorlaştırabilir. Epiktetos: Evet, Murat. Ancak, her şeyin karmaşıklığına bağlı olduğunu unutmamalıyız. Basit iş mantığına sahip uygulamalar için Transaction Script deseni mükemmel bir seçim olabilir. Ancak, iş mantığı karmaşıklaştıkça ve çok sayıda işlem gerektirdikçe, Domain Driven Design (DDD) gibi diğer desenler daha uygun olabilir. Murat: Kesinlikle katılıyorum, Epiktetos.

Devamı 


Transaction Script Deseninin Derinliklerine Dalış: Gerçek Dünya Örnekleri ile Detaylı İnceleme

2023-06-11 | #domain-logic-patterns #enterprise-patterns #transaction-script

Transaction Script, genellikle işlem tabanlı sistemlerde kullanılan bir Enterprise uygulama tasarım desenidir. Bu desen, bir işlemi gerçekleştirmek için bir dizi prosedürün bir araya getirilmesiyle oluşturulur. Bu prosedürler genellikle bir işlemi başlatmak, veritabanı sorgularını çalıştırmak ve sonuçları işlemek için kullanılır. Transaction Script deseni, karmaşık olmayan iş mantığına sahip uygulamalar için uygundur. Ancak, iş mantığı karmaşıklaştıkça ve çok sayıda işlem gerektirdikçe, bu desenin kullanılması kodun anlaşılmasını ve bakımını zorlaştırabilir. Transaction Script Deseninin Yapısı Bir Transaction Script, genellikle aşağıdaki bileşenlere sahiptir:

Devamı 


SemaphoreSlim Sınıfı: C#'ta Çoklu Görevlere Dayalı Programlama

2023-06-10 | #net #semaphoreslim

Genel Bakış SemaphoreSlim sınıfı, bir veya daha fazla threadin aynı anda belirli bir kaynağı veya işlemi kullanmasını kontrol etmek için C# ‘ta kullanılan bir yapıdır. SemaphoreSlim, aynı anda kaynağa erişebilecek thread sayısını sınırlar. SemaphoreSlim kullanımı, genellikle çok threadli uygulamalarda deadlock durumlarını önlemek ve belirli bir kaynağın aynı anda yalnızca bir veya daha fazla thread tarafından kullanılmasını sağlamak için kullanılır. SemaphoreSlim Kullanımı SemaphoreSlim sınıfı, aşağıdaki gibi kullanılır: SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1, 1); Burada ilk parametre, aynı anda kaç threadin kaynağı kullanabileceğini belirler.

Devamı 


Her Servisin Gizli Hazinesi: Mikroservislerle Database Per Service Hikayesi

2023-05-26 | #database-per-service #microservice

Bilgisayarlar Diyarı’nın bir başka köşesinde, Mikroservisler Şehri’nde, her mikroservisin kendi veritabanına sahip olduğu farklı bir dünya vardı. Bu model, “Her Servis için Veritabanı” olarak adlandırılmıştı. Bu dünyada, her mikroservis kendi hazine sandığına, yani kendi veritabanına sahipti. Bu sandıklar, her bir mikroservisin ihtiyaç duyduğu verileri içerirdi ve sadece ilgili mikroservis tarafından erişilebilirdi. Tıpkı bir masal kahramanının kendi hazine sandığına sahip olması gibi, her mikroservis de kendi veritabanına sahipti. Bir gün, Sipariş Mikroservisi, yeni bir sipariş oluşturma görevi aldı.

Devamı 


Orkestra Şefinin Hikayesi: Mikroservislerle Orkestrasyon Temelli Saga

2023-05-26 | #microservice #orchestration-based-saga #saga-pattern

Bilgisayarlar Diyarı’nın bir başka köşesinde, Mikroservisler Şehri’nde, tüm mikroservislerin belirli bir senfoniye göre hareket ettiği başka bir dünya vardı. Bu dünyada, tüm mikroservisler tek bir orkestra şefi tarafından yönetilirdi ve bu yönetim modeline “Orkestrasyon Temelli Saga” adı verilmişti. Bu, büyük bir orkestradaki müzik performansına benzer. Tıpkı bir orkestra şefinin tüm müzisyenlere ne zaman hangi notaları çalacaklarını söylediği gibi, burada da Orkestra Şefi Mikroservisi, diğer tüm mikroservislerin ne zaman ve nasıl hareket edeceğini belirler.

Devamı 