Xendor adalah kerangka kerja inti .NET yang dapat digunakan untuk membuat desain yang sederhana dan bersih dengan menegakkan tanggung jawab tunggal dan pemisahan kekhawatiran. Fitur canggihnya sangat ideal untuk Domain Driven Design (DDD), Command Query Responsibilty Segragation (CQRS) dan Sourcing Event. Xendor juga memiliki integrasi RabbitMQ.
Segregasi tanggung jawab komando adalah pola yang memberitahu kita untuk memisahkan operasi yang bermutasi dari yang menanyakannya. Ini berasal dari Command Query Pemisahan (CQS) CQS menyatakan bahwa hanya ada dua jenis metode pada kelas: yang bermutasi keadaan dan mengembalikan kekosongan dan yang mengembalikan keadaan tetapi tidak mengubahnya.
CQRS adalah pola yang Anda terapkan? Bagian dalam? Layanan/Aplikasi Anda dan Anda dapat menerapkannya hanya pada bagian dari layanan Anda.
Alih-alih menyimpan hanya keadaan data saat ini dalam domain, gunakan toko saja untuk merekam serangkaian tindakan lengkap yang diambil pada data itu. Toko bertindak sebagai sistem catatan dan dapat digunakan untuk mewujudkan objek domain. Ini dapat menyederhanakan tugas dalam domain yang kompleks, dengan menghindari kebutuhan untuk menyinkronkan model data dan domain bisnis, sambil meningkatkan kinerja, skalabilitas, dan responsif. Ini juga dapat memberikan konsistensi untuk data transaksional, dan memelihara jalur audit penuh dan sejarah yang dapat memungkinkan tindakan kompensasi.
Proyeksi adalah konsep penting saat membangun sistem peristiwa-sentris. Pada saat yang sama, ini sangat sederhana.
Proyeksi adalah tentang memperoleh keadaan saat ini dari aliran peristiwa.
Misalnya, pertimbangkan suatu situasi, di mana aliran acara diterbitkan oleh server kepada semua pelanggan. Acara ini terkait dengan pendaftaran pengguna dan terlihat seperti:
UseraddedtoAccount
{
"userId" : 55 ,
"username" : " alemol " ,
"name" : " Alejandro " ,
"lastName" : " Moline "
}UserverIfiedemail
{
"userId" : 55 ,
"email" : " [email protected] "
}Userupdated
{
"userId" : 55 ,
"lastName" : " Molines "
}Kami dapat melampirkan pelanggan untuk melakukan aliran acara ini untuk memproyeksikan aliran ini menjadi model baca yang persisten, yang digunakan untuk melayani detail pengguna di UI Web. Model baca terakhir bisa terlihat seperti:
{
"userId" : 55 ,
"username" : " alemol " ,
"email" : " [email protected] " ,
"name" : " Alejandro " ,
"lastName" : " Molines "
}Jika Anda suka atau menggunakan proyek ini, silakan berikan bintang. Terima kasih!
Jangan ragu untuk membuat masalah di GitHub. Kontribusi, permintaan tarik lebih dari disambut!
Xendor adalah Hak Cipta © 2019 Alejandro Molines dan kontributor lainnya di bawah lisensi MIT.