ผู้แต่ง: Dflying Chen ( http://dflying.cnblogs.com/ )
สำหรับบริการที่ซับซ้อนบางอย่างที่ใช้เวลานานในการดำเนินการให้เสร็จสิ้นและไม่มีข้อกำหนดแบบเรียลไทม์สูง การเลือกแคชมักเป็นวิธีที่มีประสิทธิภาพในการปรับปรุงประสิทธิภาพ การใช้งานบริการเว็บของ .NET พิจารณาถึงความจำเป็นในการใช้แคชอย่างถ่องแท้ คุณจะต้องตั้งค่าง่ายๆ เพื่อเปิดใช้งานแคชเท่านั้น การเรียกใช้บริการเว็บใน Atlas ยังสามารถใช้กลไกแคชนี้เพื่อลดค่าใช้จ่ายที่ไม่จำเป็นบนฝั่งเซิร์ฟเวอร์
หากต้องการเปิดใช้งานแคชของบริการเว็บ คุณจะต้องเพิ่มแอตทริบิวต์ต่อไปนี้ในการประกาศ WebMethod:
[WebMethod(CacheDuration = 5)]
โดยที่ค่าของ CacheDuration แสดงถึงเวลาแคช มีหน่วยเป็นวินาที
แต่วิธีการแคชนี้ให้บริการโดย Web Service Atlas ไม่รู้อะไรเลย และการโทรแต่ละครั้งยังคงถูกส่งไปยังเซิร์ฟเวอร์ ดังนั้นจึงไม่มีทางที่แคชนี้จะปรับปรุงผลกระทบของเวลาแฝงของเครือข่ายที่มีต่อผู้ใช้ได้
ให้เราเรียนรู้เพิ่มเติมเกี่ยวกับ Cache of Web Service ผ่านโปรแกรมตัวอย่าง
ขั้นแรกให้เขียน Web Service คืนเวลาปัจจุบัน และระบุ CacheDuration เป็น 5 วินาที:
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding (ConformsTo = WsiProfiles.BasicProfile1_1)]
คลาสสาธารณะ CachedWebService: System.Web.Services.WebService
-
[WebMethod(แคชระยะเวลา = 5)]
DateTime สาธารณะ GetGurrentTime ()
-
กลับ DateTime ตอนนี้;
-
-
จากนั้นสร้างหน้า Atlas เพิ่ม ScriptManager และอ้างอิงบริการเว็บนี้ในนั้น:
<atlas:ScriptManager runat="server" ID="scriptManager">
<บริการ>
<atlas:ServiceReference Path="CachedWebService.asmx" />
</บริการ>
</atlas:ScriptManager>
เพิ่มแท็ก HTML เพื่อเรียกใช้บริการเว็บนี้และแสดงผลลัพธ์:
<input id="btnInvoid" type="button" value="Invoid" onclick="return btnInurge_onclick()" />
<div id="ผลลัพธ์">
</div>
สุดท้ายคือส่วนของ JavaScript ซึ่งเราจะแสดงผลของการเรียกแต่ละครั้งบนเพจเพื่อการวิเคราะห์ที่ง่ายดาย:
function btnInvoid_onclick() {
CachedWebService.GetGurrentTime (เมื่อเสร็จสมบูรณ์);
-
ฟังก์ชั่น onCompleted (ผลลัพธ์) {
$('result').innerHTML += ผลลัพธ์ + "<br />";
-
มาทดสอบกันในเบราว์เซอร์กันดีกว่า หลังจากคลิกปุ่มหลายครั้ง ผลลัพธ์จะเป็นดังนี้
ในเวลาเดียวกัน คุณสามารถเห็นได้ใน Fiddler ว่าคำขอเหล่านี้ถูกส่งไปยังเซิร์ฟเวอร์จริง ๆ และแคชเป็นเพียงการใช้งานฝั่งเซิร์ฟเวอร์:
สามารถดาวน์โหลดซอร์สโค้ดสำหรับตัวอย่างนี้ได้ที่นี่: