Xu hướng thiết kế hệ thống hiện nay

Chào cả nhà,
Cho mình hỏi có phải xu hướng thiết kế hệ thống hiện nay là tách ra thành các module nhỏ đúng không, các module tương tác với nhau qua API (hiện tại dùng JSON thay cho XML) Controller của backend chỉ trả về JSON cho FrontEnd xử lý?

VD như code web bằng java thì phần giao diện dùng JSP, JSTL, java beans kết với với code java thuần, hoặc code web bằng C# dùng blazor, … Mình không biết cách này giọi là gì nhưng mình cảm thấy nó khá phụ thuộc vào ngôn ngữ serverside, phải dùng đến DTO, truyền cả đối tượng từ backend đến frontEnd.

Các bạn tư vấn giúp mình với, cảm ơn

2 Likes

Đầu tiên, bạn cần định nghĩa rõ ràng về những cái mà bạn đang nhắc tới
Frontend là phần tương tác với người dùng, cụ thể hơn thì trong lập trình web, nó là những gì hiển thị và tương tác trên trình duyệt của bạn, nhìn chung chỉ có html/css/js, không có cái gọi là jsp hay blazor gì đó ở đây cả
Backend là một cái gì đó để frontend tương tác, không phụ thuộc vào ngôn ngữ gì cả

Để dễ hình dung, mình đưa ra ví dụ thế này
Smartphone và máy tính, 2 thứ này có thể giao tiếp và trao đổi thông tin qua lại mà không phụ thuộc vào Smartphone hay laptop model gì, hiệu gì, chỉ đơn giản là các thiết bị này giao tiếp bằng giao thức usb…

Trở lại với câu chuyện, jsp và blazor là cái gì mà sao người ta nói nó là frontend.
Mệnh đề trên nói đúng thì không đúng, nói sai cũng chẳng sai.
Ví dụ code để ra được chữ hello world trên trình duyệt
Kết quả đoạn text hello world đó từ đâu ra? Có n cách để ra được như vậy.

  1. Web server trỏ đến file chứa chữ đó
  2. Php dùng lệch echo ra

Dù là làm bằng cách gì thì khi bạn gõ, link rồi enter, rồi nhìn thấy giao diện hiển thị trên trình duyệt, thì đó cũng là kết quả của backend xử lý và trả về cho bạn, trình duyệt chỉ lấy kết quả và hiển thị lên mà thôi
Jsp và blazor hoặc một số template engine/library/framework khác có vai trò giúp bạn làm ra giao diện (là làm/viết ra html/css hoặc cả js) nhanh hơn thay vì bạn phải trực tiếp viết html/css/js

Theo như cách bạn đặt câu hỏi thì bạn không hiểu cái hình bạn post trên bài.
Ví dụ dễ minh họa nhất là live search. Mội số trang web có ô search, khi gõ vào nó sẽ ra gợi ý, mà rõ ràng đâu có load lại web đâu, zing mp3 có khi có cả triệu track nhạc, không lẽ ghi hết vào trình duyệt lúc load web?
Không.

  • Khi bạn gõ từng chữ, thì những gì bạn gõ được gửi (request) đến backend (code js trên trình duyệt)
  • ở backend sẽ lấy keyword nhận dược từ frontend (trình duyệt), và lục lọi trong database để lấy danh sách các track match (theo điều kiện), rồi trả (phản hồi/response) về danh sách đó cho trình duyệt.
  • trình duyệt nhận được danh sách đó và hiển thị lên gợi ý cho ô search (tất nhiên là dùnv js biến đổi giao diện rồi)
  • Trong quá trình gửi và nhận dữ liệu như vậy, thì dùng format json

Do bạn không hiểu mấy thứ căn bản nên sẽ cảm thấy cái gì cũng kho khăn (à, có căn bản cũng không chắc dễ :D)

Thử với keyword ajax đi, tìm ví dụ ajax với java gì đó

8 Likes

Cách này là server side rendering (SSR) thường không chia backend, frontEnd rõ ràng. Code java, jsp, jstl, html, js, css các engine gộp chung, code nhiều ngôn ngữ lẫn lộn trong 1 file. Khi browser gửi request thì server sẽ render xong rồi gửi bộ 3 html, css, js cho browser hiển thị.

Còn cách trong ảnh là Single Page Application (SPA), client side rendering (CSR) frontend và backend tách riêng biệt. BackEnd để phục vụ cho front-End, browser không gửi request thẳng đến backend.

Theo mình nghĩ làm web kiểu SPA đang là xu hướng, vì giảm tải cho server, server chỉ thực hiện business, còn render giao diện thì để engine của browser lo. (mà xu hướng này hình như ở nước ngoài, báo chí đăng , marketing nhiều, …) ở VN client cấu hình yếu chắc ít dùng cách này.

2 Likes

Client-side rendering và Single Page Application giờ nó phổ biến rồi. Giờ là thời của microservices (tách các business ra thành từng service nhỏ hơn, dùng các công nghệ tự động deploy, scaling, monitoring như Docker, Kubernetes để quản lý các microservices)

Bản thân microservices có thể là backend module hay frontend module được tách theo chức năng hay business của app

9 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?