Sunday, February 21, 2010

Begini rupa Application Service aku dalam latest project

Selepas baca tentang CQRS (Command Query Responsibility Segregation) pertengahan tahun lalu, aku mula berminat tentang apa sebenarnya CQRS. DDD developers banyak berbincang berkaitan CQRS hinggakan core pattern macam repository,services sudah berkurangan diperbincangankan.

Kalau dahulu ApplicationService aku rupanya macam nie:

void MakeDocketApproved(DocketId)
Docket GetDocket(DocketId)
DocketDto GetDocketWithCode(Code)
DocketDto GetApprovedDockets()
void ChangeDocketLocation(DocketId, NewLocation)
void CreateDocket(Docket)
void EditDocketDetails(DocketDetails)

Tetapi sekarang apabila aku guna CQRS ApplicationService aku sekarang dipecahkan kepada 2 jenis service satu Command (write) dan satu lagi Query (read). CQRS secara umum adalah Architecture decision implementation, bagaimana kita mendesignkan infrastructure. DDD masih lagi penting dari segi kepentingan domain model sebagai tempat masalah di prosess. Jadi sesuatu software project boleh sahaja hanya menggunakan DDD tanpa CQRS dan CQRS juga boleh digunakan tanpa DDD.

Apabila aku apply CQRS pada ApplicationService maka jadi seperti ini:

DocketCommandService
void MakeDocketApproved(DocketApprovedCmd)
void ChangeDocketLocation(NewDocketLocationCmd)
void CreateDocket(NewDocketCmd)
void EditDocketDetails(DocketDetailsCmd)

DocketQueryService
Docket GetDocket(CustomerId)
DocketDto GetDocketWithCode(Code)
DocketDto GetApprovedDockets()

Jadi secara umum ini adalah CQRS dimana Command dan Query responsibility diasingkan dan kelebihan service command boleh diimplement dengan cara lain dan query service boleh diimplement dengan cara yang lebih simple. Command mungkin akan melalui kesemua layer yang biasa di buat seperti controller->app service-> domain -> dataaccess->DB. Dan sebolehnya biar controller,app service seminimun kerja yang dilakukan dan kerja tersebut perlulah fokus kepada apa yang perlu sahaja dilakukan. Domain perlu didesign semaximum yang boleh untuk cover business logic (Rich Domain) dan elakkan Anemic Domain. Konsep 80% - 20% boleh diguna pakai disini, 80% responsibility perlulah berada di domain manakala lagi 20% di kongsi di layer-layer yang lain.

Manakala apabila query boleh sahaja dari controller->query service -> DB, keep it simple.

Wednesday, February 17, 2010

Update

2 minggu lepas, aku rase jemu dengan senario politik malaysia, sebab tu 2 tulisan aku sebelum ini tak de kena mengena dengan programing dan software development.


Project Mars dah rollout Nationwide hampir 2 minggu dan Alhamdulillah semua berjalan lancar, adalah juga beberapa bugs yang tidak berapa kritikal dijumpai. Cuma masa untuk aku review code dan refactor belum sempat. Aku cuti Chinese New Year tak sentuh komputer langsung, plan balik awal sehari kerumah dari kampung dapatlah juga membersihkan code-code dari anasir2 yang tak diingini tapi tak kesampaian, penat dan rasa malas nak fikir pasal programming selepas 3 hari bercuti kat kampung pun ada. Aku balik kampung awal, kerana makcik sebelah wife meninggal dunia, banyak gak lah urusan kat kampung.

Aku sekarang banyak meluangkan masa untuk belajar lagi mendalam tentang CQRS, target aku tahun nie supaya dapat implement full CQRS project dalam mana-mana project yang akan datang. Aku dah cuba dengan sikit2 konsep CQRS dan nampak beberapa kelebihan.


Tuesday, February 09, 2010

Apabila Si Bodoh Memperbodahkan Juak-juak yang memang bodoh

Apabila yang ada kuasa itu otak nyer serupa keldai, jadilah pengikut pengikutnya seperti taik keldai.... dan yang memerhatikan kebodohan mereka juga akan terkena tempias kebodohan kerana pergi perhatikan orang bodoh itu nak buat apa.............adushhh aku pun sama kerana selalu perhatikan mereka, patutlah baunya tak tertahan dan jika selama bertahun2 tempias enzim-enzim kebodohan mereka juga akan merosakkan IQ aku...ini........tapi nak buat macam mana negaraku yang tercinta

Politik: Menyesakkan nafas

Dunia politik di Malaysia nie memang melelahkan dan betul-betul buat otak jadi mereng. Dengan pelbagai jenis orang dan perwatakan yang tak konsisten, semuanya kerana apa, kerana nak sentiasa mengharap rakyat menyanjung mereka, tetapi perbuatan sesetangah ahli politik, peminat politik dan aktivis politik di Malaysia macam hampas kelapa, sama ada dari kerajaan dan juga pembangkang. Bosan dengan apa yang berlaku bukan sejak kebelakangan ini tapi sejak 10 tahun yang lepas.


Kehidupan mereka yang tidak mempedulikan apa yang berlaku di dunia politik memang tidak akan terasa sangat paling lebih pun bising sebab kenaikan minyak dan harga barang selebih dari itu meraka akan lupa apabila dihiburkan dengan siri Raja Lawak dan Mentor. Politik di Malayia pun ramai pelawak berbakat dalam pelbagai kategori, pelawak kategori seram, pelawak bodoh , pelawak lucah dan pelawak tua.

Dah nama pun pelawak, tabiat suka menghiburkan orang dan akan mencari pelbagai cara nak menghiburkan rakyat dah menjadi darah daging mereka, sama ada lawak itu diterima sebagai sesuatu yang bagus, berisi atau lawak yuang sama macam apa yang manusia buang bila lepas makan mereka tak kisah, yang penting tabiat dan nafsu suka buat lawak dapat ditunjukkan. Itulah orang politik di Malaysia. Kosong sahaja.. tak lebih dari itu

Aku yang mengikuti secara langsung dan tak langsung nie pun dah sama macam jadi bebal lak dengan semua isu yang ada di ucapkan pelawak-pelawak nie, saling tak tumpah tengok Raja Lawak Astro tu....

Semua benda dah jadi isu politik hinggakan isu tak ada isu pun jadi politik, bayangkan betapa hebat ahli politik Malaysia mencipta isu.

Kau masuk parti nie aku masuk parti nie. kau keluar parti nie, aku keluar parti nie. Aku nak dialog nie, kau nak berdialog pasal tu, aku dah kata jgn cakap macam nie, kau kata nak gak cakap pasal tu... keputusan nya pi mai pi mai tang tu gak lee...