Penulis: Dflying Chen ( http://dflying.cnblogs.com/ )
Untuk beberapa layanan kompleks yang memerlukan waktu lama untuk diselesaikan dan tidak memiliki persyaratan waktu nyata yang tinggi, memilih Cache sering kali merupakan cara efektif untuk meningkatkan efisiensi. Implementasi Layanan Web .NET sepenuhnya mempertimbangkan kebutuhan Cache. Anda hanya memerlukan pengaturan sederhana untuk mengaktifkan Cache. Panggilan ke Layanan Web di Atlas juga dapat menggunakan mekanisme Cache ini untuk mengurangi overhead yang tidak perlu di sisi server.
Untuk mengaktifkan Cache Layanan Web, Anda hanya perlu menambahkan atribut berikut ke deklarasi WebMethod:
[WebMethod(CacheDuration = 5)]
di mana nilai CacheDuration mewakili waktu Cache, dalam hitungan detik.
Tapi metode Cache ini disediakan oleh Web Service, Atlas tidak tahu apa-apa tentang itu, dan setiap panggilan masih dikirim ke server. Oleh karena itu, Cache ini tidak dapat meningkatkan dampak latensi jaringan pada pengguna.
Mari kita pelajari lebih lanjut tentang Cache Layanan Web melalui contoh program.
Pertama tulis Layanan Web, kembalikan waktu saat ini, dan tentukan CacheDuration sebagai 5 detik:
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
kelas publik CachedWebService : System.Web.Services.WebService
{
[Metode Web(Durasi Cache = 5)]
DateTime publik GetGurrentTime()
{
return DateTime.Sekarang;
}
}
Kemudian buat halaman Atlas, tambahkan ScriptManager dan referensikan Layanan Web ini di dalamnya:
<atlas:ScriptManager runat="server" ID="scriptManager">
<Layanan>
<atlas:ServiceReference Path="CachedWebService.asmx" />
</Layanan>
</atlas:ScriptManager>
Tambahkan beberapa tag HTML untuk memanggil Layanan Web ini dan menampilkan hasilnya:
<input id="btnInvoke" type="button" value="Invoke" onclick="return btnInvoke_onclick()" />
<div id="hasil">
</div>
Yang terakhir adalah bagian JavaScript, di mana kita menampilkan hasil setiap panggilan pada halaman untuk memudahkan analisis:
function btnInvoke_onclick() {
CachedWebService.GetGurrentTime(onCompleted);
}
fungsi selesai(hasil) {
$('hasil').innerHTML += hasil + "<br />";
}
Mari kita uji di browser. Setelah mengklik tombol tersebut beberapa kali, hasilnya adalah sebagai berikut.
Pada saat yang sama, Anda dapat melihat di Fiddler bahwa permintaan ini sebenarnya dikirim ke server, dan Cache hanyalah implementasi sisi server:
Kode sumber untuk contoh ini dapat diunduh di sini: