Saturday, June 13, 2009

DDD : Messaging

Konsep messaging banyak digunakan dalam DDDD atau dikenali sebagai Distributed Domain Driven Design. Dalam .Net community setahu aku ada 2 transport application iaitu NServiceBus dan MassTransit. Cuma messaging approach boleh juga digunakan dalam cara Domain Driven Design yang biasa tanpa menggunakan any messaging transport.

Aku tertarik dengan konsep messaging dari segi kekemasan code dan keupayaan code tersebut bila didesign ala messaging. Kalau mengikut DDDD, Domain akan reference/couple dengan messaging structure manakala jika follow DDD, service akan reference/couple dengan messaging structure.

Dalam post kali nie aku nak bawa contoh bagaimana hendak guna DDD dengan messaging iaitu service reference messaging structure.

Aku baru je nak mencuba, so kalau silap bagi tahu.Apa itu message? Kalau ditanya kepada aku apa itu message jawapannya ialah satu set yang mengandungi samaada arahan atau maklumat sesuatu Context. Sebagai contoh context Tunjuk jalan ke Masjid Shah Alam. Maka terdapat arahan dan maklumat yang perlu letakkan didalam message untuk di hantar kepada si penerima. Penerima boleh jadi rakan sekerja, pemandu teksi atau sesiapa yang faham message tersebut. Berdasarkan message tersebut si penerima akan response berdasarkan apa yang diminta dan supporting maklumat.

Message : Tunjuk Jalan Ke Masjid Alam

Arahan : Sila bagi arahan untuk Ke Masjid Shah Alam
Maklumat 1 : Aku sekarang di lokasi seksyen 9 dan destinasi Masjid Shah Alam
Maklumat 2 : Aku nak pergi menaiki kereta

namespace Direction.Services
{
public interface IMessage
{
}

public interface IServiceHandler<TMsg> where TMsg : IMessage
{
void Handle(TMsg msg);
}


public class TunjukJalanKeMasjidShahAlamMenggunakanKereta : IMessage
{
public string from { set; get; }
public string to { set; get; }
}

public class TunjukJalanKeMasjidShahAlamBerjalanKaki : IMessage
{
public string from { set; get; }
public string to { set; get; }
}

public class TunjukJalanKeMasjidShahAlamMenaikiBasikal : IMessage
{
public string from { set; get; }
public string to { set; get; }
}

public class DirectionService :
IServiceHandler<TunjukJalanKeMasjidShahAlamBerjalanKaki>,
IServiceHandler<TunjukJalanKeMasjidShahAlamMenggunakanKereta>

{

#region IShowDirection Members

public void Handle(TunjukJalanKeMasjidShahAlamBerjalanKaki msg)
{
//Send to Domain to calculate and show the possible way
//Direction.FindFrom(msg.from).FindTo(msg.to).With(Transportation.Leg);
}

public void Handle(TunjukJalanKeMasjidShahAlamMenggunakanKereta msg)
{
//Send to Domain to calculate and show the possible way
//Direction.FindFrom(msg.from).FindTo(msg.to).With(Transportation.Car);
}

#endregion


}
}


Code diatas tidak di test dan hanyalah imiginasi sahaja untuk tatapan umum.

1 comments:

MK said...

Kalo dia tambah lagi satu 'D', aku dah giveup dah. Hehehee.