Penggunaan callback secara umum relatif sederhana, cukup langsung merujuk pada bantuan dan contoh msdn. Namun jika Anda ingin benar-benar menggunakannya dengan baik dan akurat, atau ingin mengembangkan beberapa komponen WEB berdasarkan mekanisme callback, maka Anda harus memiliki pemahaman mendalam terlebih dahulu tentang mekanisme implementasi callback. Dalam artikel ini, Teddy akan bekerja dengan Anda untuk menganalisis seluruh mekanisme pemanggilan dan umpan balik dari panggilan balik. Saya yakin ini akan bermanfaat untuk membantu Anda menggunakan panggilan balik dengan lebih baik.
Callback vs Atlas
Pertama, mari kita bicara tentang Atlas. Mungkin sobat banyak yang merasa aneh karena sudah ada Callback, kenapa harus rilis Atlas lagi? Mengenai masalah ini, saya belum menyelidiki bagaimana penulis Atlas menjelaskannya. Namun dari pengalaman pribadi saya menggunakan callback dan atlas, saya merasa bahwa callback sebagai antarmuka sangat mirip dengan postback, dan harus memungkinkan pengguna untuk menggunakannya mirip dengan postback. Namun, mekanisme seperti postback harus dikatakan tidak terlalu nyaman untuk digunakan dan tidak mudah untuk diperluas. Tentu saja, hal ini dibandingkan dengan implementasi kerangka AJAX lainnya. Oleh karena itu, Microsoft telah belajar dari banyak implementasi AJAX yang ada, seperti Prototype, Backbase dan AJAX.NET, dan menggabungkannya dengan beberapa fungsi unik ASP.NET 2.0 untuk menciptakan kerangka kerja AJAX yang memanfaatkan kekuatan orang lain. Sulit untuk mengukur seberapa baik mengembangkan aplikasi AJAX berdasarkan Atlas, tetapi jelas tidak lebih buruk dari kerangka AJAX lainnya, ditambah backend Microsoft dan aplikasi situs kelas berat seperti live.com Promosi, dampaknya tentu saja sepadan. menantikannya.
Namun, ini tidak berarti bahwa implementasi callback tidak ada gunanya. Sebagai programmer, kita harus memiliki sikap yang benar dan menggunakan teknologi yang paling tepat dalam use case yang benar. Tidak ada kerangka kerja yang mahakuasa dan cocok untuk lingkungan penggunaan apa pun; sama seperti semua orang memperdebatkan metode pengembangan perangkat lunak mana yang terbaik, CMMi, RUP, XP, AGILE~~, pada kenyataannya, tidak ada yang terbaik, yang paling cocok adalah yang paling cocok Hal yang paling harus kita lakukan adalah memahami prinsip, kelebihan dan kekurangan berbagai solusi, sehingga kita dapat menggunakan alat yang tepat secara rasional untuk memecahkan masalah praktis.
Dimulai dari Client Script
Kita semua tahu bahwa pada level terbawah, semua AJAX tidak memiliki lebih dari dua mekanisme implementasi: XMLHTTP dan IFRAME. Sebelum kata AJAX mendapat perhatian luas, sebenarnya kerangka kerja fungsional berdasarkan dua implementasi yang mendasari ini, atau implementasi efek non-refresh berdasarkan kedua teknologi ini, sudah banyak digunakan. Tentu saja, dengan perkembangan saat ini, dalam hal penggunaan antarmuka, detail mekanisme yang mendasarinya sering kali disembunyikan oleh kerangka kerja, dan penggunaan antarmuka menjadi semakin sederhana. Pengguna hanya perlu memanggil antarmuka sederhana ini, dan tidak perlu mengetahuinya bagaimana mencapai efek spesifik.
Namun, karena kita di sini untuk menganalisis mekanisme implementasi panggilan balik, mari kita mulai dengan panggilan skrip klien panggilan balik untuk melihat bagaimana Microsoft mengimplementasikan mekanisme panggilan balik ini.
1. ClientScript.GetCallbackEventReference(...)
Untuk memicu panggilan balik, tentu saja pertama-tama, panggilan harus dikeluarkan dalam skrip klien. Sintaks pemanggilan umumnya adalah sebagai berikut:
<script bahasa = "javascript" type = "teks/javascript">
fungsi any_script_function(arg, konteks)
{
<%= ClientScript.GetCallbackEventReference(ini, "arg", "ReceiveServerData", "konteks")%>;
}
</script>
ClientScript.GetCallbackEventReference(...) akan mengembalikan skrip panggilan balik sebenarnya sesuai dengan parameter yang diteruskan. Fungsi ini memiliki beberapa versi kelebihan beban, sehingga Anda dapat merujuk ke MSDN untuk mengetahui arti parameter ini. Ambil parameter spesifik dalam kode contoh di atas:
- ini berarti bahwa kontrol server yang mengeksekusi panggilan balik adalah Halaman saat ini. Halaman saat ini harus mengimplementasikan antarmuka ICallbackEventHandler, termasuk string GetCallbackResult() dan void RaiseCallbackEvent(eventArgument). dua fungsi antarmuka, parameter ini juga dapat menjadi referensi ke kontrol WEB. Tentu saja, ruang ini juga harus mengimplementasikan antarmuka ICallbackEventHandler
- "arg" adalah nilai parameter eventArgument yang akan diteruskan ke RaiseCallbackEvent, yang memungkinkan orang untuk melakukannya; String yang mendefinisikan format;
- "ReceiveServerData" adalah nama fungsi skrip klien yang memproses konten yang dikembalikan setelah panggilan balik berhasil , misalnya:
<script type="text/javascript">
functionReceiveServerData(hasil, konteks)
{}
</script>
Kedua parameter ini adalah hasil data kembalian dari callback, dan parameter konteks yang dikembalikan tanpa perubahan saat kita memicu callback. Tentu saja, kedua parameter ini bertipe string.
- Tidak perlu menjelaskan "konteks". Ingatlah bahwa parameter ini akan diteruskan secara utuh ke fungsi pemrosesan data pengembalian yang ditentukan. Dokumentasi resmi MSDN mengatakan bahwa konteks umumnya dapat digunakan untuk meneruskan kode skrip yang perlu dipanggil dalam fungsi pemrosesan data pengembalian klien, tetapi kenyataannya, Anda dapat meneruskan apa saja ke saluran transfer parameter antara segmen penerima yang memproses data yang dikembalikan.