Di chuyển tất cả logic UI sang phía khách hàng?


9

Nhóm của chúng tôi ban đầu bao gồm hầu hết các nhà phát triển phía máy chủ có chuyên môn tối thiểu về Javascript. Trong ASP.NET, chúng tôi đã từng viết rất nhiều logic UI trong mã phía sau hoặc gần đây hơn thông qua các bộ điều khiển trong MVC.

Cách đây ít lâu, 2 nhà phát triển phía khách hàng cao cấp đã tham gia nhóm của chúng tôi. Chúng có thể thực hiện trong HTMl / CSS / Javascript gần như mọi thứ chúng ta có thể làm trước đây với mã phía máy chủ và điều khiển web phía máy chủ:

  • Hiển thị / ẩn điều khiển
  • Xác nhận
  • Kiểm soát làm mới AJAX

Vì vậy, tôi bắt đầu nghĩ rằng có lẽ sẽ hiệu quả hơn nếu chỉ tạo một API cấp cao xung quanh logic kinh doanh của chúng tôi, giống như API Fulfillment của Amazon: http://docs.amazonwebservice.com/fws/latest/APIReference/ , để khách hàng đó các nhà phát triển bên sẽ hoàn toàn chiếm lấy UI, trong khi các nhà phát triển phía máy chủ sẽ chỉ tập trung vào logic kinh doanh.

Vì vậy, để đặt hàng hệ thống, bạn sẽ có một API cấp cao như:

OrderService.asmx

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

Sẽ có quyền truy cập JSON / REST vào API, do đó sẽ dễ dàng sử dụng từ giao diện người dùng phía máy khách. Chúng tôi có thể sử dụng API này cho cả phát triển giao diện người dùng nội bộ và cho các bên thứ 3 để tạo các ứng dụng của riêng họ.

Với những tiến bộ trong Javascript và sự sẵn có của các nhà phát triển phía khách hàng tốt, đây có phải là thời điểm tốt để loại bỏ mã phía sau / bộ điều khiển và chỉ tập trung vào phát triển API cấp cao (ala Amazon) mà các nhà phát triển phía khách hàng có thể tiêu thụ?

Câu trả lời:


6

Xác thực ở phía máy khách để giảm tải cho phía máy chủ và tăng khả năng phản hồi của ứng dụng là tốt nhưng luôn luôn xác thực phía máy chủ. Người ta có thể tắt JavaScript và khi sử dụng API REST trực tiếp, không cần sử dụng JavaScript.


Có, xác thực cũng sẽ là một phần của Tên miền / API. Phía khách hàng sẽ lấy những gì cần được xác thực từ API hoặc chúng tôi sẽ ghi lại những gì được yêu cầu, v.v ... cho mỗi phương thức. Nếu vẫn còn lỗi xác thực khi gửi từ phía khách hàng - chúng tôi sẽ đưa ra ngoại lệ.
Mag20

4

Một điều cần lưu ý là các UI phức tạp có thể yêu cầu lớp "hỗ trợ giao diện người dùng" bổ sung để hỗ trợ những thứ như phân cấp, mối quan hệ chính / chi tiết và các khái niệm UI khác không thực sự tồn tại trong lớp doanh nghiệp. Thông thường không thể thực hiện một số khả năng này khi thực hiện nhiều chuyến đi khứ hồi đến tầng doanh nghiệp, làm giảm hiệu suất. Ít nhất, tôi thích có lớp "Hỗ trợ giao diện người dùng" để cấp cho UI quyền truy cập trực tiếp vào cơ sở dữ liệu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.