กำลังย้ายตรรกะ UI ทั้งหมดไปยังฝั่งไคลเอ็นต์หรือไม่


9

ทีมงานของเราเดิมประกอบด้วยนักพัฒนาด้านเซิร์ฟเวอร์ส่วนใหญ่ที่มีความเชี่ยวชาญขั้นต่ำใน Javascript ใน ASP.NET เราเคยเขียนตรรกะ UI จำนวนมากในโค้ดหลังหรือมากกว่านั้นเมื่อเร็ว ๆ นี้ผ่านคอนโทรลเลอร์ใน MVC

เมื่อไม่นานมานี้นักพัฒนาด้านลูกค้าระดับสูง 2 คนได้เข้าร่วมทีมของเรา พวกเขาสามารถทำได้ใน HTMl / CSS / Javascript ทุกอย่างที่เราสามารถทำได้กับโค้ดฝั่งเซิร์ฟเวอร์และการควบคุมเว็บฝั่งเซิร์ฟเวอร์:

  • แสดง / ซ่อนส่วนควบคุม
  • ทำการตรวจสอบ
  • ควบคุมการรีเฟรช AJAX

ดังนั้นฉันจึงเริ่มคิดว่าบางทีมันอาจจะมีประสิทธิภาพมากกว่าในการสร้าง API ระดับสูงรอบตรรกะทางธุรกิจของเราอย่างเช่น Amazon Fulfillment API: http://docs.amazonwebservices.com/fws/latest/APIReference/ลูกค้า นักพัฒนาด้านจะใช้เวลามากกว่า UI ในขณะที่นักพัฒนาด้านเซิร์ฟเวอร์จะเน้นเฉพาะตรรกะทางธุรกิจ

ดังนั้นสำหรับการสั่งซื้อระบบคุณจะมี API ระดับสูงเช่น:

OrderService.asmx

CreateOrderResponse CreateOrder(CreateOrderRequest)
AddOrderItem
AddPayment
-
SubmitPayment
-
GetOrderByID
FindOrdersByCriteria
...

จะมีการเข้าถึง JSON / REST ไปยัง API ดังนั้นจึงง่ายต่อการใช้งานจาก UI ฝั่งไคลเอ็นต์ เราสามารถใช้ API นี้สำหรับการพัฒนา UI ภายในและสำหรับบุคคลที่ 3 เพื่อสร้างแอปพลิเคชันของตนเอง

ด้วยความก้าวหน้าใน Javascript และความพร้อมใช้งานของนักพัฒนาฝั่งไคลเอ็นต์ที่ดีมันเป็นเวลาที่ดีในการกำจัด code-behind / controllers และแค่มุ่งพัฒนา API ระดับสูง (ala Amazon) ที่นักพัฒนาฝั่งไคลเอ็นต์สามารถใช้งานได้หรือไม่?

คำตอบ:


6

การตรวจสอบบนฝั่งไคลเอ็นต์เพื่อ offload ด้านฝั่งเซิร์ฟเวอร์และเพิ่มการตอบสนองของแอพลิเคชันเป็นดี แต่มักจะทำตรวจสอบด้านเซิร์ฟเวอร์ หนึ่งสามารถปิด JavaScript และเมื่อใช้ REST API โดยตรงไม่จำเป็นต้องใช้ JavaScript


ใช่การตรวจสอบจะเป็นส่วนหนึ่งของโดเมน / API ฝั่งไคลเอ็นต์จะดึงสิ่งที่ต้องมีการตรวจสอบความถูกต้องจาก API หรือเราจะบันทึกสิ่งที่จำเป็น ฯลฯ สำหรับแต่ละวิธี หากยังมีข้อผิดพลาดในการตรวจสอบความถูกต้องในการส่งจากฝั่งลูกค้า - เราจะส่งข้อยกเว้น
Mag20

4

สิ่งหนึ่งที่ต้องระวังคือ UIs ที่ซับซ้อนอาจต้องการเลเยอร์ "UI assist" เพิ่มเติมเพื่อสนับสนุนสิ่งต่าง ๆ เช่นลำดับชั้นความสัมพันธ์หลัก / รายละเอียดและแนวคิด UI อื่น ๆ ที่ไม่มีอยู่ในชั้นธุรกิจ บ่อยครั้งที่มันเป็นไปไม่ได้ที่จะใช้ความสามารถเหล่านี้โดยไม่ต้องเดินทางไปกลับหลายครั้งในเลเยอร์ธุรกิจ อย่างน้อยฉันชอบที่จะมีเลเยอร์ "การช่วยเหลือ UI" เพื่อให้การเข้าถึง UI โดยตรงกับฐานข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.