Monday, April 16, 2007

ASP.NET Caching by SQL Server 2005 Service Broker

การ cache ใน ASP.NET ช่วยในการแสดงผลข้อมูลได้อย่างรวดเร็ว จะใช้ในกรณีที่ข้อมูลมักจะไม่ค่อยเปลี่ยนแปลง แต่ก็อาจมีผลเรื่อง resource ของเครื่อง server เพราะต้องใช้หน่วยความจำในการจัดเก็บ cache

ใน ASP.NET 2.0 มี feature ในการ cache ที่ใช้งานร่วมกับ SQL Server 2005 ได้อย่างดี โดยการ cache นี้จะติดต่อผ่านตัว Service Broker ของ SQL Server 2005 ซึ่งถ้าข้อมูลในฐานข้อมูลมีการเปลี่ยนแปลง ก็จะมีผลทำให้ข้อมูลใน cache นั้น expire ไปทันที และเริ่มทำการ cache ข้อมูลใหม่

ขั้นตอนง่ายๆในการทำ cache คือ
1. กำหนด Duration declarative ไว่ส่วนบนของ page ที่ต้องการทำการ cache โดยกำหนด attribute SqlDependency ให้มีค่าเท่ากับ CommandNotification


<%@ OutputCache Duration="20" VaryByParam="*" SqlDependency="CommandNotification" %>


2. ที่ Application_Start event ใน Global.aspx ให้ทำการ Start SqlDependency


Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
System.Data.SqlClient.SqlDependency.Start(ConfigurationManager.ConnectionStrings("AW").ConnectionString())
End Sub



3. ทำการ Enable ตัว Service Broker ในฐานข้อมูลที่ใช้งาน โดยเปิด Query และพิมพ์คำสั่งว่า

ALTER DATABASE [database_name] SET ENABLE_BROKER

เช่น ALTER DATABASE AdventureWorks SET ENABLE_BROKER

No comments: