Bagikan melalui


Peristiwa dan Panggilan Balik

Catatan

Konten ini dicetak ulang oleh izin Pearson Education, Inc. dari Panduan Desain Kerangka Kerja: Konvensi, Idiom, dan Pola untuk Pustaka .NET yang Dapat Digunakan Kembali, Edisi ke-2. Edisi itu diterbitkan pada tahun 2008, dan buku tersebut telah sepenuhnya direvisi pada edisi ketiga. Beberapa informasi di halaman ini mungkin sudah kedaluarsa.

Panggilan balik adalah poin ekstensibilitas yang memungkinkan kerangka kerja untuk memanggil kembali ke kode pengguna melalui delegasi. Delegasi ini biasanya diteruskan ke kerangka kerja melalui parameter metode.

Peristiwa adalah kasus khusus dari panggilan balik yang mendukung sintaksis yang nyaman dan konsisten untuk menyediakan delegasi (penangan peristiwa). Selain itu, penyelesaian pernyataan dan desainer Visual Studio memberikan bantuan dalam menggunakan API berbasis peristiwa. (Lihat Desain Peristiwa.)

✔️ PERTIMBANGKAN menggunakan panggilan balik untuk memungkinkan pengguna memberikan kode kustom yang akan dijalankan oleh kerangka kerja.

✔️ PERTIMBANGKAN menggunakan peristiwa untuk memungkinkan pengguna menyesuaikan perilaku kerangka kerja tanpa perlu memahami desain berorientasi objek.

✔️ DO lebih memilih peristiwa daripada panggilan balik biasa, karena lebih akrab bagi pengembang yang lebih luas dan terintegrasi dengan penyelesaian pernyataan Visual Studio.

❌ HINDARI menggunakan panggilan balik di API yang sensitif terhadap performa.

✔️ DO gunakan jenis Func<...>, Action<...>, atau Expression<...> baru alih-alih delegasi kustom, saat mendefinisikan API dengan panggilan balik.

Func<...> dan Action<...> mewakili delegasi generik. Expression<...> mewakili definisi fungsi yang dapat dikompilasi dan kemudian dipanggil pada durasi tetapi juga dapat diserialisasi dan diteruskan ke proses jarak jauh.

✔️ DO mengukur dan memahami implikasi performa dari penggunaan Expression<...>, alih-alih menggunakan delegasi Func<...> dan Action<...>.

jenis Expression<...> dalam banyak kasus peristiwa logis setara dengan delegasi Func<...> dan Action<...>. Perbedaan utama di antara mereka adalah bahwa delegasi dimaksudkan untuk digunakan dalam skenario proses lokal; ekspresi ditujukan untuk kasus yang menguntungkan dan memungkinkan untuk mengevaluasi ekspresi dalam proses atau mesin jarak jauh.

✔️ DO pahami bahwa dengan memanggil delegasi, Anda menjalankan kode arbitrer dan itu dapat memiliki dampak terhadap keamanan, kebenaran, dan kompatibilitas.

Portions © 2005, 2009 Microsoft Corporation. Semua hak dilindungi undang-undang.

Dicetak ulang dengan izin dari Pearson Education, Inc. dari Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition oleh Krzysztof Cwalina dan Brad Abrams, diterbitkan 22 Okt 2008 oleh Addison-Wesley Professional sebagai bagian dari Seri Pengembangan Microsoft Windows.

Lihat juga