Antarmuka IBaseMessage
Ketika adaptor penerima menerima paket data masuk melalui protokolnya, adaptor tersebut menggunakan antarmuka IBaseMessage untuk membuat pesan untuk diteruskan ke Mesin Olahpesan. Semua pesan diwakili dengan menggunakan antarmuka ini.
Pesan memiliki satu atau beberapa bagian pesan yang diwakili oleh antarmuka IBaseMessagePart . Setiap bagian pesan memiliki referensi ke datanya melalui penunjuk antarmuka IStream . Konteks pesan diwakili oleh antarmuka IBaseMessageContext-nya . Gambar berikut mengilustrasikan model objek pesan BizTalk.
Konteks pesan adalah kamus yang dikunci pada kombinasi nama properti dan namespace properti. Ini mencegah tabrakan antara properti bernama yang sama dari sumber yang berbeda, misalnya, properti sistem BizTalk Server dan properti adaptor kustom. Nilai untuk properti ini adalah objek jenis .NET, tetapi sebenarnya properti ini adalah VARIAN.
Setiap bagian memiliki konteks bagian yang juga merupakan kamus tetapi tanpa gagasan namespace. Nilai konteks bagian adalah metadata yang mengacu pada data untuk bagian tersebut. Contohnya adalah properti Charset yang menentukan set karakter yang digunakan untuk mengodekan pesan.
Properti dapat ditulis ke dan dibaca dari konteks pesan. Mereka juga dapat dipromosikan untuk digunakan untuk perutean pesan. Dipromosikan berarti mereka ditulis sebagai bagian dari metadata yang mengalir dengan pesan. Properti yang dipromosikan memungkinkan nilainya digunakan dalam pembuatan ekspresi filter pada port pengiriman dan orkestrasi. Komponen hilir dan kode pengguna dalam orkestrasi dapat membaca properti yang dipromosikan dan juga menulis nilai baru kepada mereka.
Setelah properti yang dipromosikan dicocokkan dengan langganan yang sudah ada dan digunakan untuk merutekan pesan, properti diturunkan untuk mencegah kecocokan langganan siklik. Properti yang diturunkan tetap pada konteks pesan sebagai metadata tetapi kehilangan status yang dipromosikan.
Tip Implementasi: Properti konteks pesan dimuat ke dalam memori pada durasi. Potongan data yang sangat besar tidak boleh ditulis ke konteks pesan karena ini berpotensi merusak dukungan pesan besar BizTalk Server. Objek dapat diserialisasikan ke dalam konteks pesan asalkan mereka mengimplementasikan antarmuka IPersistStream . Selain itu, properti yang dipromosikan dibatasi hingga 255 karakter.
Pabrik pesan harus selalu digunakan untuk membuat pesan baru. Fragmen kode berikut menggambarkan cara membuat pesan BizTalk baru dari aliran data yang diterima oleh adaptor.
using Microsoft.BizTalk.Message.Interop;
IBaseMessage CreateMessage( Stream s, IBaseMessageFactory msgFactory )
{
IBaseMessage msg = null;
IBaseMessagePart part = msgFactory.CreateMessagePart();
part.Data = s;
msg = msgFactory.CreateMessage();
msg.AddPart("body", part, true);
return msg;
}