Home > Domain Driven Design, Messaging, SOA > Greg Young DDD version

Greg Young DDD version

Cara yg terbaik untuk belajar adalah dengan melihat bagaimana orang melakukannya. Nah sama halnya dengan DDD. Salah satu pakarnya adalah greg young. Bisa diliat di sini. Ini salah satu favouriteku di DDD. Hehehe.

Nah saya baca2 dari blognya. Ide yg dapat saya tangkap salah satunya adalah mengenai Command Query Separation(CQS). Pemisahan method untuk membaca atau read only dengan method untuk write(mengubah state).

Nah jadi hal ini diterapkan pada DDD. Mmm… jadi berdasarkan penjelasannya pada Repository hanya ada satu operasi Read saya yaitu method read untuk meload instance dari aggregate root berdasarkan Unique IDNy. Wow. Pdahal selama ini saya menjejali repository dengan method2 yg bertujuan untuk read. Tapi ini hanya satu. Dan itupun untuk retrive berdasarkan ID.

Nah jadi di kepala saya gambaran dari Repository untuk customer adlah kira2 seperti ini

CustomerRepository::Get(Guid Id)

hanya satu method untuk read. Dan method yg lain untuk write yaitu update, create, delete.

Pada CQS, domain itu hanya bertanggung jawab untuk Write operation saja (Command). Untuk operasi terhadap pembacaan kita mengalihkan nya ke thin layer. Layer ini hanya khusus untuk baca doank. Untuk reporting lebih tepatnya. Masalah2 menampilkan ke UI. Maka thin layer ini yg berperan. Ga ush sampai melibatkan domain. Karen domain itu write only.

Thin layer ini atau dapat juga disebut read layer mentranslate langsung dari data source ke DTO sesuai dengan keinginan dari reporting atau UI. Satu DTO mungkin mengandung 3-4 aggregate root. DTO ini memiliki ID dari aggregate root. Gunanya adalah jika user melakukan aksi yg memicu operasi write. Contohnya mengedit dari gridview atau list dll. Nah jadi perubahan2 yg dilakukan user akan ditrack dan begitu user mengcommit dengan menekan tombol save atau yg lain maka command tersebut diarahkan ke Domain Layer.
Nah dengan demikian maka wajarlah klo sekaran databasenya terbagi menjadi dua. Satu database untuk write only untuk domain model dan satu lagi untuk kepentingan reporting.

Advertisement
Categories: Domain Driven Design, Messaging, SOA Tags: ,
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: