Monday, March 14, 2011

CQRS - Part 2

Salam 1Malaysia

Minggu lepas coretan pertama berkaitan CQRS dan serba sedikit pengenalan apa itu CQRS. Seperti yang diterangkan, asas paling utama dalam CQRS ialah membezakan process write dan read.

So kenapa perlukan CQRS. CQRS hanyalah pilihan dalam architecture design, bagi developer yang inginkan scalability, performance dan maintainability boleh mencuba CQRS dimana terdapat pelbagai versi CQRS yang boleh dipilih untuk dibuat guideline.

Sebelum diberi nama CQRS, architecture pattern ini dikenali sebagai CQS-DDD dan terdapat kekeliruan di antara CQS - Bertrand Meyer dan CQS-DDD dari DDD group. Walau objective kedua-dua pattern nie sama, dan tak dinafikan CQS-DDD menjadikan CQS - Bertrand Meyer sebagai asas pattern, tetapi CQS-DDD bergerak ke arah yang lebih besar iaitu architecture pattern.

CQS - Bertrand Meyer punya definisi :-

"every method should either be a command that performs an action, or a query that returns data to the caller, but not both"

Jadi CQS- Betrand Meyer punya target pada masa itu ialah supaya satu class/method tidak akan buat2 perkara write dan read dlm class/method yang sama.

CQRS juga mengambil prinsip yang sama, maka perkara pertama yang perlu dipastikan ialah design class/method yanag akan handle concrete kerja. Satau class akan buat command-(write) dan satu lagi class akan buat query-(read).

Begitu juga halnya pada code existing, apa yang boleh dibuat ialah cuba refactor dan pecahkan function2 tersebut ke dalam kategori masing-masing.

0 comments: