งานวันหลักของฉันคือการสร้างแอปพลิเคชัน HTML เมื่อฉันหมายถึงแอปพลิเคชันประเภท CRUD ที่ใช้ภายในซึ่งมี Gridviews ที่สามารถแก้ไขได้จำนวนมากกล่องข้อความดร็อปดาวน์และอื่น ๆ เรากำลังใช้เว็บฟอร์ม ASP.NET ซึ่งทำให้งานเสร็จ แต่ประสิทธิภาพส่วนใหญ่ค่อนข้างแย่และบ่อยครั้งที่คุณ ต้องกระโดดผ่านห่วงเพื่อให้ได้สิ่งที่คุณต้องการ ห่วงที่ห้อยลงมาจากเพดานและติดไฟ
ดังนั้นฉันสงสัยว่ามันอาจจะเป็นความคิดที่ดีที่จะย้าย UI ทั้งหมดไปยังด้าน JavaScript พัฒนาชุดการควบคุมที่สามารถนำกลับมาใช้ใหม่ได้ซึ่งปรับให้เหมาะกับความต้องการของเราโดยเฉพาะและแลกเปลี่ยนข้อมูลกับเซิร์ฟเวอร์เท่านั้น ใช่ฉันชอบกระบวนทัศน์ "ควบคุม" (aka "วิดเจ็ต") ซึ่งค่อนข้างเหมาะกับแอปพลิเคชันดังกล่าว ดังนั้นในฝั่งเซิร์ฟเวอร์เรายังคงมีรูปแบบพื้นฐานไปยังมาร์กอัป ASPX ปัจจุบันของเรา แต่จากนั้นจะถูกส่งไปยังลูกค้าเพียงครั้งเดียวและส่วน Javascript จะดูแลการปรับปรุง UI ต่อไปทั้งหมด
ปัญหาคือฉันไม่เคยทำแบบนี้มาก่อนและฉันไม่เคยเห็นใครทำแบบนี้มาก่อนเลยไม่รู้ว่าปัญหาจะเป็นอย่างไร โดยเฉพาะอย่างยิ่งฉันกังวลเกี่ยวกับ:
- ประสิทธิภาพยังคง การเปรียบเทียบแสดงให้เห็นว่าในปัจจุบันความล่าช้าหลักอยู่ที่ฝั่งไคลเอ็นต์เมื่อเบราว์เซอร์พยายามที่จะแสดงผลหน้าส่วนใหญ่อีกครั้งหลังจากการอัพเดต AJAX มาร์กอัป ASP.NET webforms ที่สร้างขึ้นให้ความหมายใหม่กับคำว่า "เว็บ" และตัวควบคุม Devexpress ที่หลากหลายเพิ่มเลเยอร์ Javascript ที่ซับซ้อนของตัวเอง แต่จะเร็วกว่าที่จะคำนวณการเปลี่ยนแปลงที่จำเป็นทั้งหมดในด้าน Javascript แล้วอัปเดตเฉพาะสิ่งที่จำเป็นต้องได้รับการปรับปรุง โปรดทราบว่าฉันกำลังพูดถึงรูปแบบที่มีหลายมุมมองที่แก้ไขได้หลายช่องข้อความจำนวนมากดรอปดาวน์แต่ละอันมีรายการที่กรองได้ครึ่งล้านรายการ ฯลฯ
- ความสะดวกในการพัฒนา จะมีจาวาสคริปต์มากขึ้นในตอนนี้และอาจผสมกับมาร์กอัพ HTML ของหน้า จะต้องมีการสร้างเอนจิ้นการดูใหม่ Intellisense สำหรับ Javascript นั้นแย่กว่า C # code มากและเนื่องจากจาวาสคริปต์ที่มีลักษณะแบบไดนามิกทำให้ไม่สามารถคาดหวังได้ดีกว่านี้มากนัก การเขียนโค้ดสามารถปรับปรุงได้เล็กน้อย แต่ไม่มากนัก นอกจากนี้นักพัฒนาของเราส่วนใหญ่เป็นนักพัฒนา C # เป็นหลักดังนั้นจะมีช่วงการเรียนรู้และข้อผิดพลาดเริ่มแรก
- ความปลอดภัย การตรวจสอบความปลอดภัยจำนวนมากจะต้องทำสองครั้ง (ฝั่งเซิร์ฟเวอร์และฝั่ง UI) และฝั่งเซิร์ฟเวอร์ประมวลผลข้อมูลจะต้องรวมจำนวนมากขึ้น ในปัจจุบันหากคุณตั้งค่ากล่องข้อความให้อ่านอย่างเดียวทางฝั่งเซิร์ฟเวอร์คุณสามารถขึ้นอยู่กับค่าที่ไม่เปลี่ยนแปลงผ่านไคลเอนต์ไปกลับ เฟรมเวิร์กมีรหัสเพียงพอที่จะทำให้มั่นใจได้ว่า (ผ่านการเข้ารหัส viewstate) ด้วยวิธีการใช้ข้อมูลอย่างเดียวมันจะยากขึ้นเพราะคุณต้องตรวจสอบทุกอย่างด้วยตนเอง ในอีกด้านหนึ่งช่องโหว่ด้านความปลอดภัยอาจสังเกตเห็นได้ง่ายกว่าเพราะคุณจะมีเฉพาะข้อมูลที่ต้องกังวล
ทั้งหมดนี้จะช่วยแก้ปัญหาของเราหรือทำให้แย่ลง? มีใครเคยลองบ้างและผลลัพธ์คืออะไร มีกรอบใดบ้างที่ช่วยในความพยายามเช่นนี้ (jQuery และสิ่งที่เทียบเท่าคุณธรรม)
So on the server side we would still have a basic layout simliar to our current ASPX markup, but that then would get sent to the client only once, and the Javascript part would take care of all the subsequent UI updates.
คุณกำลังอธิบายอย่างชัดเจนว่า ASP.NET คืออะไรซึ่งบอกฉันว่าคุณไม่ได้ใช้อย่างถูกต้อง :) ในแอปพลิเคชัน ASP.NET ของคุณหากคุณวางส่วนประกอบภายในแผงการอัพเดทไลบรารี ASP.NET javascript จะทำการ postbacks แบบอะซิงโครนัสไปยังฝั่งเซิร์ฟเวอร์และจะแสดงเฉพาะคอมโพเนนต์ที่คุณระบุอีกครั้ง