Microservice Mimarisinde Haberleşme ve CAP Kullanımı
Mikroservis mimarisi, modern uygulamaların daha ölçeklenebilir, esnek ve yönetilebilir hale gelmesini sağlar. Ancak mikroservislerin artmasıyla birlikte servisler arası iletişim ve veri tutarlılığı gibi konular önem kazanır. Bu noktada, CAP (Catch Application Performance) frameworkü devreye girer. Bu yazıda, .NET 9 teknolojisi kullanılarak mikroservisler arasında nasıl haberleşme sağlandığını ve CAP framework’ünün nasıl entegre edildiğini detaylarıyla inceleyeceğiz.
İçindekiler
- Mikroservis Mimarisi Nedir?
- Mikroservislerde Haberleşme Türleri
- CAP Nedir?
- Dotnet 9 ile CAP Entegrasyonu
- Örnek: Basit Bir Sipariş Mikroservisi
- Görseller ile Anlatım
- Sonuç
- Sıkça Sorulan Sorular (SSS)
Mikroservis Mimarisi Nedir?
Mikroservis mimarisi, büyük ve karmaşık yazılım sistemlerini, bağımsız dağıtılabilir birçok küçük servise bölerek geliştirme yöntemidir. Her servis kendi veritabanına ve iş mantığına sahiptir.
Avantajları:
- Bağımsız geliştirme ve dağıtım
- Hızlı hata ayıklama
- Kolay ölçeklenebilirlik
Mikroservislerde Haberleşme Türleri
Mikroservisler arasında verimli bir haberleşme olması için genellikle iki yöntem tercih edilir:
- Senktron Haberleşme (HTTP, gRPC): Anlık cevap beklenir. Genellikle REST API veya gRPC kullanılır.
- Asenkron Haberleşme (Message Queue): Mesaj bir kuyruğa gönderilir. RabbitMQ, Kafka gibi sistemlerle cevap daha sonra alınır. Özellikle event-driven architecture için tercih edilir.
Not: Birçok sistemde, performans ve ölçeklenebilirliği artırmak için asenkron tasarım tercih edilir.
CAP Nedir?
CAP (aka DotNetCore/CAP), .NET tabanlı uygulamalarda event-based (olay tabanlı) mimari kurmanıza yardımcı olan açık kaynaklı bir framework’tür. CAP aşağıdaki hizmetleri sağlar:
- Event publishing/subscribing
- Transaction-based mesaj yönetimi
- RabbitMQ, Kafka, ActiveMQ destekleri
- SQL Server, MongoDB ve diğer veri tabanı destekleri
💡 CAP, mesajları doğrudan veritabanı işlemleriyle entegre bir şekilde işler. Böylece veri tutarlılığı sağlanır.
Dotnet 9 ile CAP Entegrasyonu 💻
.NET 9 ile CAP kullanımı oldukça kolaydır. Aşağıda adım adım örnek bir kurulum göreceksiniz. Örnek olarak RabbitMQ kullanacağız.
1. Gerekli NuGet Paketleri
dotnet add package DotNetCore.CAP
dotnet add package DotNetCore.CAP.RabbitMQ
dotnet add package DotNetCore.CAP.SqlServer
2. Program.cs – CAP Konfigürasyonu
builder.Services.AddCap(options =>
{
options.UseSqlServer("Server=localhost;Database=OrderDB;User Id=sa;Password=yourpassword;");
options.UseRabbitMQ(cfg =>
{
cfg.HostName = "localhost";
cfg.UserName = "guest";
cfg.Password = "guest";
});
options.UseDashboard(); // CAP Dashboard'u aktif eder.
});
3. Publisher – Event’i Yayımlama
public class OrderService
{
private readonly ICapPublisher _capBus;
public OrderService(ICapPublisher capPublisher)
{
_capBus = capPublisher;
}
public async Task CreateOrderAsync(Order order)
{
// Siparişi veritabanına kaydet
await _db.Orders.AddAsync(order);
await _db.SaveChangesAsync();
// CAP Event yayınla
await _capBus.PublishAsync("order.created", order);
}
}
4. Subscriber – Olayı Dinleme
public class NotificationService
{
[CapSubscribe("order.created")]
public void SendNotification(Order order)
{
Console.WriteLine($"Yeni sipariş bildirimi: {order.Id}");
// Mail veya SMS gönderme işlemleri
}
}
Görsel ile Anlatım
Aşağıdaki diyagram, mikroservisler arası CAP tabanlı haberleşmeyi gözler önüne seriyor:
📌 Microservice–CAP–RabbitMQ Etkileşim Diyagramı

Kaynak: github.com/dotnetcore/CAP
Gerçek Dünya Senaryosu: Sipariş Yönetimi
Senaryo: Bir alışveriş uygulamasında sipariş oluşturulduğunda, stok güncellenmeli ve kullanıcıya bildirim gitmeli.
🧱 Katılan Mikroservisler:
- OrderService
- StockService
- NotificationService
CAP ile oluşturulan bir “order.created” olayı, tüm bu servisler tarafından dinlenebilir ve buna göre işlem yapılabilir.
Bu tasarım, loose coupling (gevşek bağlı) yapı sayesinde geliştirilebilirliği artırır.
CAP Dashboard
CAP, entegre bir web tabanlı dashboard arayüzü ile tüm olayları ve mesaj kuyruklarını gözlemlemeye izin verir. Şuraya gidin:
http://localhost:5000/cap
📷 Dashboard’dan örnek görsel:

Sonuç
CAP, mikroservis yapısında güvenli ve tutarlı bir şekilde event yayınlamanızı ve işlemenizi sağlayan güçlü bir araçtır. .NET 9’un getirdiği performans artırımları ile birleştiğinde, event-driven uygulamalar oluşturmak hiç bu kadar kolay olmamıştı.
🚀 Eğer modern, ölçeklenebilir bir mimari kurmak istiyorsanız, CAP kesinlikle öğrenmeniz gereken bir teknoloji.
Sıkça Sorulan Sorular (SSS)
CAP hangi mesaj kuyruklarını destekler?
CAP, RabbitMQ, Kafka, Azure Service Bus, ActiveMQ gibi birçok mesajlaşma sistemini destekler.
CAP transaction güvenliği sağlar mı?
Evet, CAP transactional event publishing sunar. Veritabanı ile mesaj publish işlemi aynı transaction içinde garanti edilir.
CAP için özel bir ORM gerekir mi?
Hayır, EF Core, Dapper gibi popüler ORM’lerle uyumludur.
Anahtar Kelimeler (SEO için)
- mikroservis mimarisi
- dotnet 9 microservices
- CAP framework nedir
- .NET CAP kullanımı
- RabbitMQ ile CAP
- microservice event-driven dotnet
- dotnet core event bus
- CAP vs MassTransit vs NServiceBus
Kaynaklar
💬 Yorumlarınızı bırakmayı ve yazıyı paylaşmayı unutmayın! Her türlü soru için yorumlarda buluşalım. 😊