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 melalui jaringan dengan lebih efisien.

Atribut [transmit_as] dan [represent_as] menginstruksikan pengkompilasi untuk mengaitkan jenis yang dapat ditransmisikan yang diteruskan 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 IDL [transmit_as] atau atribut ACF [represent_as] menginstruksikan rintisan 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 OSF-DCE IDL. Sintaks dan fungsionalitasnya masing-masing mirip dengan atribut [transmit_as] dan [represent_as] yang ditentukan DCE. Perbedaannya adalah, alih-alih mengonversi data dari satu jenis ke jenis lainnya, Anda melakukan marsekal data secara langsung. Untuk melakukan ini, Anda harus menyediakan rutinitas eksternal untuk mengukur buffer data di sisi klien dan server, marshaling dan unmarshaling data di sisi klien dan server, dan membebaskan data di sisi server. Pengkompilasi MIDL menghasilkan kode format yang menginstruksikan mesin NDR untuk memanggil rutinitas eksternal ini saat diperlukan.

Atribut [wire_marshal] dan [user_marshal] memungkinkan 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 durasi, jika dibandingkan dengan [transmit_as] dan [represent_as]. Atribut [wire_marshal] dan [user_marshal] saling eksklusif sehubungan satu sama lain dan sehubungan dengan atribut [transmit_as] dan [represent_as] untuk jenis tertentu.

Penting untuk dicatat bahwa implementasi atribut [wire_marshal] dan [user_marshal] harus mengikuti aturan marsekal 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: