อนาคตของซอฟต์แวร์เว็บคือ HTML-over-WebSocket
(alistapart.com)-
SPA + API + JSON ทำให้วงจรการพัฒนาและการปล่อยใช้งานช้าลง
-
ข้อโต้แย้งคือการใช้ WebSocket แบบสองทางช่วยให้ทำ server rendering, rapid prototyping, SEO ที่ตรงไปตรงมา และการพัฒนาฟีเจอร์อย่างรวดเร็วได้
→ ส่ง HTML ที่เปลี่ยนแปลง หรือข้อความสั้นๆ ผ่านซ็อกเก็ต
→ ให้เซิร์ฟเวอร์เป็นผู้ตรวจสอบแทนความซับซ้อนของการตรวจสอบค่าฝั่งไคลเอนต์และอ็อบเจ็กต์ข้อผิดพลาดต่างๆ
→ ตรวจสอบการเชื่อมต่อของผู้ใช้ได้จากการที่การเชื่อมต่อซ็อกเก็ตยังทำงานอยู่หรือไม่
→ รองรับทั้งแชตหลายผู้ใช้หรือการทำงานร่วมกันบนเอกสารได้อย่างง่ายดาย
-
การกลับมาของ Rails: Turbolinks, Stimulus, StimulusReflex, CableReady และ ViewComponent ของ GitHub
-
Hotwire ของ Basecamp ก็เป็นเทคโนโลยีแบบเดียวกัน
7 ความคิดเห็น
ดูเหมือนว่า serverside blazor ของ dotnet จะทำงานคล้ายกันนะครับ แต่พอเอาไปใช้จริงในโปรดักชัน ก็มักจะเจอหลายกรณีที่ค่อนข้างชวนให้ปวดหัว...
นอกจากการแพ็กทั้งเซิร์ฟเวอร์และไคลเอนต์ไปแจกจ่ายพร้อมกันบน Electron แล้ว ก็ยังนึกไม่ออกว่าแนวทางนี้มีข้อดีอะไรเป็นพิเศษ
ช่วยเล่าประสบการณ์การใช้งานที่เป็นรูปธรรมให้ฟังหน่อยได้ไหม?
แต่พอสร้าง API endpoint ไว้แล้ว ก็ใช้ได้ทั้งบนมือถือ เว็บ และเดสก์ท็อป เลยมีความอเนกประสงค์ที่ดีอยู่แล้ว เลยไม่แน่ใจว่าจะเรียก WebSocket ว่าเป็นอนาคตได้ไหมครับ
Elixir Phoenix LiveView หรือ RoR Stimulus Reflex ก็เป็นแนวคิดที่คล้ายกัน
ก็มีเรื่องเล่ากันว่า Chris McCord เริ่มทำด้วย Rails ก่อน แต่เพราะปัญหาเชิงโครงสร้างเลยย้ายไปใช้ Elixir
เสียงหมุนวนไปมา...
ก็ถือว่าเป็นมุมมองแบบนี้อีกแบบหนึ่ง
เห็นด้วยว่าพอ
Javascriptถูกใช้ไปทั่วทุกที่ ก็มีคำอย่าง SPA, SSR และอื่น ๆ เพิ่มขึ้นมาเต็มไปหมด และทุกอย่างก็ซับซ้อนเกินไปมากเรื่องการสื่อสารสองทางก็ดูเหมือนว่า WebSocket น่าจะถูกนำมาใช้มากขึ้น แต่ส่วนตัวคงต้องหวังว่าจะมีอะไรที่ใช้งานสะดวกกว่า Hotwire ออกมา
(อาจเป็นเพราะผมยังไม่ค่อยเข้าใจดี) แต่ช่วงนี้มีจุดหนึ่งที่ผมรู้สึกว่าค่อนข้างตลกอยู่เหมือนกัน คือในเว็บแอป React+Laravel ถ้ามีการเปลี่ยนแปลงแค่ฝั่งเซิร์ฟเวอร์ สิ่งที่ deploy ก็มีแค่ตัวบ่งชี้เวอร์ชันกับโค้ดที่เปลี่ยนไม่กี่บรรทัด แต่พอฝั่งฟรอนต์เอนด์เปลี่ยน ต้อง build แอปฝั่งฟรอนต์ และขนาดที่ deploy ก็มักจะใหญ่ขึ้นค่อนข้างมาก เลยอดขำไม่ได้ครับ แถมยังทำ custom แบบเร่งด่วนชั่วคราวได้ยากด้วย อาจเป็นเพราะมันถูกนำไปเทียบกับประสบการณ์การพัฒนาเมื่อก่อนของผมด้วยก็ได้