Representasi Data
Lingkungan komputasi dapat berbeda secara signifikan, seperti halnya arsitektur jaringan. Untuk mengakomodasi perbedaan ini, MIDL memungkinkan Anda memodifikasi cara Anda mewakili data. Terkadang Anda dapat menyederhanakan pengembangan dengan mengonversi data menjadi format yang dapat ditangani aplikasi Anda dengan lebih mudah. Anda dapat mengubah format data aplikasi sehingga dapat ditransmisikan secara lebih efisien melalui jaringan.
Atribut [transmit_as] dan [represent_as] menginstruksikan pengkompilasi untuk mengaitkan jenis yang dapat ditransmisikan yang dilewati stub antara klien dan server, dengan jenis pengguna yang digunakan aplikasi klien dan server. Anda harus menyediakan rutinitas yang melakukan konversi antara jenis pengguna dan jenis yang dapat ditransmisikan, dan rutinitas untuk merilis memori yang digunakan untuk menyimpan data yang dikonversi. Menggunakan atribut [transmit_as] atau atribut [represent_as] ACF menginstruksikan stub untuk memanggil rutinitas konversi ini sebelum dan sesudah transmisi. Atribut[transmit_as ] memungkinkan Anda mengonversi satu jenis data ke jenis data lain untuk transmisi melalui jaringan. Atribut[represent_as ] memungkinkan Anda mengontrol cara data dari jaringan disajikan ke aplikasi.
Atribut[wire_marshal] dan [user_marshal ] adalah ekstensi Microsoft ke IDL OSF-DCE. Sintaksis dan fungsionalitasnya mirip dengan atribut [transmit_as] yang ditentukan DCE dan [represent_as]. Perbedaannya adalah, alih-alih mengonversi data dari satu jenis ke jenis lainnya, Anda melakukan marshal data secara langsung. Untuk melakukan ini, Anda harus menyediakan rutinitas eksternal untuk mengukur buffer data di sisi klien dan server, marshaling dan membatalkan nama data di sisi klien dan server, dan membebaskan data di sisi server. Kompilator MIDL menghasilkan kode format yang menginstruksikan mesin NDR untuk memanggil rutinitas eksternal ini saat diperlukan.
Atribut [wire_marshal] dan [user_marshal] memungkinkan untuk jenis data marshal yang jika tidak dapat ditransmisikan di seluruh batas proses. Selain itu, karena ada lebih sedikit overhead yang terkait dengan konversi jenis, [wire_marshal] dan [user_marshal] memberikan peningkatan performa pada run time, jika dibandingkan dengan [transmit_as] dan [represent_as]. Atribut wire_marshal dan user_marshal saling bersifat eksklusif untuk satu sama lain dan sehubungan dengan atribut [transmit_as] dan represent_as untuk jenis tertentu.
Penting untuk dicatat bahwa implementasi [wire_marshal] dan atribut [user_marshal] harus mengikuti aturan marshalling yang ditentukan oleh spesifikasi OSF-DCE. Untuk alasan itu, penggunaan atribut ini tidak disarankan jika Anda tidak terbiasa dengan protokol kawat. Informasi lebih lanjut mengenai Transfer Sintaks NDR dapat ditemukan di www.opengroup.org.
Bagian ini memberikan gambaran singkat tentang ini untuk atribut MIDL, dalam topik berikut: