"Enter"a basıp içeriğe geçin

Etiket: Event Sourcing

ASP.NET Core ile Event Sourcing – 02 Messaging

1. Giriş

Bu yazı aşağıdaki yazının devamı niteliğinde olduğu için aşağıdaki yazıyı okuyup uygulamanızı öneririm. Aşağıdaki yazıdaki örnek proje üzerinden devam edeceğiz.

Bir önceki yazıda Kanban Board örneği yapmıştık. RESTful API oluşturarak create, assign, move ve complete endpoint‘lerini yazmıştık. Bu endpoint‘lere gelen istekleri birer event olarak Event Store’a kaydetmiştik. Yani Event Store’un store kısmı ile ilgilenmiştik. Bu yazıda ise messaging kısmı ile ilgileneceğiz.

RESTful API endpoint‘lerimize aşağıdaki endpoint‘i de dahil edeceğiz.

[GET] api/tasks/{id}

ASP.NET Core ile Event Sourcing – 01 Store

1. Giriş

Bu örneği uygulamadan önce aşağıdaki yazıyı okumanızı öneririm.

Yukarıda belirttiğim yazıda aşağıdaki gibi cümle kurmuştum.

Event Sourcing için .NET dünyasında Event Store adında bir teknoloji var. Bu teknoloji “Aggregate” ve “Projection” için çözüm sunmaktadır. Yani event‘leri kaydedebileceğimiz store’u sağlamakla birlikte “Query” veritabanlarına kayıt atabilmemiz için gerekli olan “Messaging” ve “Projection” hizmetini de sağlamaktadır.

Bu yazıda Event Store’un store kısmı ile ilgileneceğiz. Yani event‘leri kaydedebileceğimiz veritabanı özelliği ile ilgileneceğiz. Sonraki yazımda ise messaging kısmı ile ilgileneceğiz.

Örnek uygulama olarak klasik Kanban Board örneğini seçtim.

RESTful API endpoint’lerimiz aşağıdaki gibi olacak.

[POST] api/tasks/{id}/create
[PATCH] api/tasks/{id}/assign
[PATCH] api/tasks/{id}/move
[PATCH] api/tasks/{id}/complete

Event Sourcing Neydi?

Önceden servislerimiz aşağıdaki gibi olurdu.

Application Services 01

Bu servisimiz yüzlerce satır koddan oluşurdu. Bu karmaşadan kurtulmak için CQRS ile servislerimizi “Command” ve “Query” olmak üzere ikiye böldük. CRUD işlemlerimizi “Command” servisleri ile, sorgulama işlemlerimizi “Query” servisleri ile yaptık. Ortaya aşağıdaki gibi iki ayrı servis çıktı.