คำถาม:
มีการควบคุมบนเว็บฟอร์ม เป็นการดีที่สุดสำหรับการควบคุมนี้ในการเข้าถึงฐานข้อมูลแบบเรียลไทม์ เมื่อมีการเปลี่ยนแปลงในฐานข้อมูล ข้อมูลจะถูกส่งไปยังไคลเอนต์และข้อมูลล่าสุดจะปรากฏขึ้น
วิเคราะห์:
เนื่องจากจำเป็นต้องอัปเดตไคลเอ็นต์ จึงต้องใช้ฟังก์ชันนาฬิกาส่วนหน้าของ js เซิร์ฟเวอร์มีการเปลี่ยนแปลง และไคลเอ็นต์จำเป็นต้องรีเฟรชเพื่ออัปเดตข้อมูลได้อย่างไร กล่าวคือ โดยพื้นฐานแล้วไคลเอนต์จะเห็นว่าไม่มีการรีเฟรช
วิธีแก้ไข: (โปรดแก้ไขฉันหากมีข้อผิดพลาด ระดับของฉันมีจำกัด ขอบคุณ)
มีสองวิธีแก้ปัญหาหลัก: เรียลไทม์และโพล
เรียลไทม์: ทริกเกอร์โดยการเพิ่มทริกเกอร์ในฐานข้อมูล จากนั้นเขียนไฟล์ในเซิร์ฟเวอร์เพื่อใช้เป็นเซมาฟอร์ ฉันคิดว่าเทคโนโลยีนี้ซับซ้อนเกินไปสำหรับปัญหานี้ เลยไม่ได้ศึกษาต่อ เพื่อนๆ ที่สนใจสามารถไปที่ MSDN เพื่อดูได้ แต่สามารถอัปเดตข้อมูลได้แบบเรียลไทม์ซึ่งมีประสิทธิภาพสูงสุดแบบเรียลไทม์ บทสนทนา
การสำรวจความคิดเห็น: 1. ใช้ xmlhttp no Refresh method สำหรับวิธีนี้คุณสามารถอ่านบทความที่เขียนโดยผู้อื่นที่ฉันส่งต่อไปก่อนหน้านี้ซึ่งมีคำแนะนำโดยละเอียด อย่างไรก็ตาม หลังจากทดสอบแล้ว ฉันพบว่าสิ่งที่ได้รับจากเซิร์ฟเวอร์คือโค้ด HTML ของทั้งหน้า รับเนื้อหาการควบคุมที่คุณต้องการและทำซ้ำ การกำหนดค่ายังคงซับซ้อนเกินไปและไม่จำเป็นต้องมีประสิทธิภาพ
2. ใช้กรอบงาน HTML เพื่อทำให้มันสมบูรณ์ ซึ่งเป็นวิธีการที่ฉันเขียนเป็นหลัก วิธีการนี้ง่ายและสะดวกในการใช้งาน ฉันคิดว่ามันมีประโยชน์มากสำหรับสถานการณ์ที่มีการแสดงข้อมูลขนาดเล็กเท่านั้น
บทนำโดยละเอียด: เขียน iframe src="../test/WebForm2.aspx" ในตำแหน่งที่ต้องอัปเดต HTML Src คือเพจที่จะเชื่อมต่อ จากนั้นปรับขนาดของเฟรมและแถบเลื่อนตามต้องการ
สร้างเพจใหม่ WebForm2.aspx เป็นเพจการเชื่อมต่อแบบเฟรม ใส่ตัวควบคุมที่จำเป็นต้องได้รับการอัปเดตแบบเรียลไทม์ในเพจนี้ จากนั้นในเหตุการณ์ Page_Load
Page_Load ย่อยส่วนตัว (ผู้ส่ง ByVal As System.Object, ByVal e As System.EventArgs) จัดการ MyBase.Load
'วางโค้ดเพื่อรับการอัพเดตฐานข้อมูลที่นี่ และเชื่อมโยงกับส่วนควบคุม End Sub
จากนั้นเพิ่ม meta HTTP-EQUIV="Refresh" content="1" URL="/test/WebForm2.aspx" ลงใน html
หมายความว่าหน้านี้จะถูกรีเฟรชอัตโนมัติทุกๆ 1 วินาที (คุณสามารถเพิ่มนาฬิกาเบื้องหน้าได้ เช่น window.setInterval(function,1000) ตามสถานการณ์จริง) เพื่อให้ผลลัพธ์เสร็จสมบูรณ์หลังจากเริ่มหน้าแรกแล้ว หน้าที่สองจะไม่ถูกขัดจังหวะ หลังจากนั้นสักพักจะรีเฟรช แต่ไคลเอ็นต์จะรู้สึกเหมือนไม่ได้รีเฟรช