Công việc hàng ngày của tôi là làm các ứng dụng HTML. Với ý nghĩa đó, tôi có nghĩa là các ứng dụng loại CRUD được sử dụng nội bộ với rất nhiều khung lưới, hộp văn bản, danh sách thả xuống, v.v. Chúng tôi hiện đang sử dụng các biểu mẫu web ASP.NET, đã hoàn thành công việc, nhưng hiệu suất chủ yếu là ảm đạm phải nhảy qua vòng để có được thứ bạn cần Hoops được treo từ trần nhà và đốt cháy.
Vì vậy, tôi tự hỏi liệu có lẽ nên chuyển tất cả giao diện người dùng sang phía JavaScript. Phát triển một tập hợp các điều khiển có thể sử dụng lại được thiết kế riêng cho nhu cầu của chúng tôi và chỉ trao đổi dữ liệu với máy chủ. Có, tôi thích mô hình "điều khiển" (hay còn gọi là "widget"), nó khá phù hợp với các ứng dụng như vậy. Vì vậy, về phía máy chủ, chúng tôi vẫn sẽ có một mô phỏng bố cục cơ bản cho đánh dấu ASPX hiện tại của chúng tôi, nhưng sau đó sẽ chỉ được gửi đến máy khách một lần và phần Javascript sẽ xử lý tất cả các cập nhật UI tiếp theo.
Vấn đề là tôi chưa bao giờ làm điều này trước đây và tôi cũng chưa từng thấy ai làm điều này, vì vậy tôi không biết vấn đề sẽ là gì. Đặc biệt, tôi lo lắng về:
- Hiệu suất vẫn còn. Điểm chuẩn cho thấy hiện tại độ trễ chính nằm ở phía máy khách, khi trình duyệt cố gắng kết xuất lại hầu hết trang sau khi cập nhật AJAX. Các biểu mẫu web ASP.NET được tạo đánh dấu mang một ý nghĩa mới cho từ "web" và các điều khiển Deve े phong phú thêm lớp phức tạp Javascript của riêng chúng lên trên đó. Nhưng nó sẽ nhanh hơn để tính toán lại tất cả các thay đổi cần thiết ở phía Javascript và sau đó chỉ cập nhật những gì cần cập nhật? Lưu ý rằng tôi đang nói về các biểu mẫu có một số chế độ xem lưới có thể chỉnh sửa, nhiều hộp văn bản, nhiều danh sách thả xuống với các mục có thể lọc được nửa triệu, v.v.
- Dễ phát triển . Bây giờ sẽ có nhiều Javascript hơn và có lẽ nó sẽ trộn với đánh dấu HTML của trang. Đó hoặc một số loại công cụ xem mới sẽ phải được sản xuất. Intellisense cho Javascript cũng tệ hơn rất nhiều so với mã C # và do tính chất động của Javascript, nó không thể được mong đợi sẽ tốt hơn nhiều. Thực hành mã hóa có thể cải thiện nó một chút, nhưng không nhiều. Ngoài ra, hầu hết các nhà phát triển của chúng tôi chủ yếu là các nhà phát triển C # nên sẽ có một số lỗi học tập và sai lầm ban đầu.
- An ninh . Rất nhiều kiểm tra bảo mật sẽ phải được thực hiện hai lần (phía máy chủ và phía UI) và phía máy chủ xử lý dữ liệu sẽ phải bao gồm nhiều hơn nữa. Hiện tại, nếu bạn đặt hộp văn bản ở chế độ chỉ đọc ở phía máy chủ, bạn có thể phụ thuộc vào giá trị của nó không thay đổi thông qua roundtrip của máy khách. Khung đã có đủ mã để đảm bảo rằng (thông qua mã hóa viewstate). Với cách tiếp cận chỉ có dữ liệu, sẽ khó hơn vì bạn phải tự kiểm tra mọi thứ. Mặt khác, có thể lỗ hổng bảo mật sẽ dễ dàng phát hiện hơn, bởi vì bạn sẽ chỉ có dữ liệu để lo lắng.
Tất cả trong tất cả, điều này sẽ giải quyết vấn đề của chúng tôi, hoặc làm cho chúng tồi tệ hơn? Có ai đã từng thử điều này chưa, và kết quả là gì? Có bất kỳ khuôn khổ nào ngoài đó giúp đỡ trong nỗ lực này (jQuery và tương đương đạo đức sang một bên) không?
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.
Bạn đang mô tả chính xác ASP.NET là gì, điều này cho tôi biết rằng bạn có khả năng không sử dụng đúng cách. :) Trong các ứng dụng ASP.NET của bạn nếu bạn đặt các thành phần trong bảng cập nhật thì thư viện javascript của ASP.NET sẽ thực hiện các postback không đồng bộ cho phía máy chủ và chỉ kết xuất lại các thành phần mà bạn chỉ định.