.NET Aspire AppHost’ta DragonflyDB: Snappyup.Aspire.Hosting.Dragonfly

Giriş

Dağıtılmış uygulamalarda düşük gecikmeli önbellek veya Redis® kablosuna (wire-protocol) uyumlu bir veri deposu ihtiyacı sık görülür. .NET Aspire ile bu bileşenleri AppHost içinde gerçek bir kaynak olarak modelleyebilir; servis keşfi, WaitFor akışları ve bağlantı ifadelerini tek yerde tutabilirsiniz.

Bu yazı, DragonflyDB sürecini Aspire AppHost’ta düzenlemeyi kolaylaştıran topluluk bakımındaki Snappyup.Aspire.Hosting.Dragonfly paketinin ne olduğunu, Microsoft’un Redis hosting uzantılarıyla paralellik ve farkları neler olduğunu ve somut C# kullanımlarını adım adım özetliyor.

Devamını Oku

Intentum: .NET’te Intent-Driven Development ve Niyet Tabanlı Karar Verme

Giriş

Deterministik olmayan kullanıcı akışları, tekrarlı denemeler (login, ödeme) veya AI tabanlı kararlar söz konusu olduğunda “ne oldu?” sorusundan çok “sistem ne yapmaya çalışıyor?” sorusu öne çıkar.

Intentum, .NET ekosisteminde bu ihtiyacı karşılayan açık kaynak bir kütüphanedir: davranış olaylarını toplar, niyet (intent) ve güven (confidence) çıkarır, policy (politika) kurallarıyla Allow, Observe, Warn, Block gibi kararlar üretir.

Bu yazıda Intentum’un ne olduğunu, hangi mimari problemi çözdüğünü, nasıl kurulup kullanılacağını ve ne zaman tercih edilmemesi gerektiğini teknik detay ve kod örnekleriyle ele alıyorum.

Devamını Oku

Mediator.Net

Mediator.Net ile .NET’te CQRS ve Pipeline Tabanlı Mesajlaşma

Giriş

Controller’ların onlarca servisi enjekte ettiği, iş kurallarının doğrudan handler çağrılarıyla dağıldığı bir codebase’de değişiklik yapmak hem testi zorlaştırır hem de mimariyi kırar. Mediator pattern, isteğin tek bir giriş noktasından geçmesini ve ilgili handler’a taşınmasını sağlayarak bu bağımlılığı azaltır. .NET ekosisteminde bu ihtiyacı karşılayan kütüphanelerden biri de Mediator.Net: komut (command), sorgu (request/response) ve olay (event) yayımını ayrı pipeline’lar üzerinden yönetir ve CQRS/clean architecture hedefleriyle uyumludur.

Bu yazı Mediator.Net’in ne olduğunu, hangi problemi çözdüğünü, MediatR ile farklarını ve uygulama içinde nasıl kullanılacağını adım adım ele alıyor.

Mediator.Net Nedir?

Mediator.Net, .NET için yazılmış, mediator pattern’i uygulayan ve CQRS (Command Query Responsibility Segregation) ile uyumlu bir mesajlaşma kütüphanesidir. İstekleri doğrudan handler sınıflarına göndermek yerine, tek bir IMediator aracı üzerinden gönderir; kütüphane mesaj tipine göre ilgili handler’ı bulur ve pipeline (boru hattı) üzerinden çalıştırır. Böylece uygulama katmanları birbirini tanımak zorunda kalmaz; clean architecture ve hexagonal mimaride kullanılabilir.

Üç temel mesaj tipi vardır:

  • ICommand (yanıt beklemeden çalıştırılan komut),
  • IRequest / IResponse (tek yanıt dönen sorgu) ve
  • IEvent (birden fazla handler’ın dinleyebildiği olay).

Ayrıca IAsyncEnumerable ile streaming yanıt desteği sunar. Devamını Oku

Regex, RegExp, Regular Expressions (Düzenli/Kurallı İfadeler) – Bölüm 1

Regex’e Giriş

Bugün birçok programcının ve hatta veri işleyen herkesin kurtarıcısı olan sayısal ve dizgesel içeriklerde belirli kurallara uyan bölümleri bulan ifadelerden yani Düzenli/Kurallı İfadelerden (Regex/RegExp/Regular Expressions) bahsedeceğiz.

Amerikalı matematikçi Stephen Cole Kleene tarafından 1950’li yıllarda tasarlanan bu kavram günümüzde oldukça yaygın olarak birçok işletim sistemi temelinde ve programlama dilinde entegre olarak gelmektedir.

Bir metin dizisi (string) içerisinde belirlediğimiz düzen/kurallar (pattern) ile eşleşenleri döndüren oluşumdur kısaca.

  • Metin dizisi (string) – Arama yapılacak metin
  • Düzen/kural (pattern) – Arama için kullanılacak kalıplar
  • Eşleşen – Metin içerisinde düzenlere uyan sonuçlar (tekil ya da grup olabilir)
Ufak bir hatırlatma
Düzenli ifadelere makale boyunca kısaca regex, arama yapılacak metine string, kurala da pattern diyeceğim. Yukarıda da dediğim gibi bir çok işletim sistemi ve programlama diline entegre edildiğinde kullanımı farklılık göstermektedir. Başlıca kullanım şekilleri PCRE, ECMAScript, Python, Golang diyebiliriz. Ben aktif olarak C tabanlı diller  (Perl, PHP, C++, C# vb.) kullandığım için PCRE (Perl Compatible Regular Expressions) ile makaleme devam edeceğim. Diğer diller için ufak tefek değişiklikler ile sorunsuz çalışacaktır.
Devamını Oku

C# Kodlama Standartları, Adlandırma Kuralları ve İpuçları

Giriş

Bugün C# ile programlama yapılırken uyulması gereken kodlama standartları ve adlandırma kurallarından bahsedeceğim. Gerek sosyal medyadan gerekse başka mecralardan öğrenci arkadaşlarımızdan gelen kodlara baktığımda kodlama standartlarına ve adlandırma kurallarına uyulmadığını hatta daha da vahim bir şekilde Türkçe karakterli adlandırmaların yapıldığını (C# derleyicisi için sorun teşkil etmez ama TR klavyeye sahip olmayan biri için sorun teşkil eder) görmekteyim. Bu sebepten Türkçe kaynak olarak bu konu hakkında fazla birşey olmadığından bu makaleyi yazma ihtiyacı duydum.

Microsoft .Net Framework yazılırken kullanılan standartlardan örnekler ile C# programlama dilinde herkesin bir bakışta anlayabileceği kod nasıl oluşturulur anlatmaya çalışalım.

Devamını Oku

İl İlçe Semt Mahalle Köy Plaka Posta Kutusu Veritabanı

Adres – İl – İlçe – Semt – Mahalle – Köy – Plaka – Posta Kodu Veritabanı

Eğer yazılımcı biri iseniz yada işiniz gereği adres oluştururken il, ilçe, semt, mahalle, köy, plaka, posta kodu bilgisine ihtiyaç duyuyorsanız bu konu sizi çok ilgilendirmektedir.

PTT[ref]PTT Posta Kodu Sorulama Servisi[/ref] den aldığım adres – il – plaka – ilçe – semt – mahalle – köy – posta kodu veritabanını normal kullanıcıların ve biz programcıların kullanabileceği formatta sizlere sunuyorum.

Bu formatlar ;

  • SQL Azure
  • Microsoft SQL
  • MySQL
  • ORACLE
  • PostgreSQL
  • SQLite
  • Microsoft Excel 2003 ve öncesi (xls)
  • Microsoft Excel 2007 ve sonrası (xlsx)

Codec olarakta ;

  • ANSI (1254 Turkish)
  • UTF8 (generic)

kullanılmıştır.
Devamını Oku