AngularJS được liên kết nhiều hơn với mô hình ứng dụng trang đơn và như vậy, không được hưởng lợi nhiều từ các công nghệ phía máy chủ hiển thị đánh dấu. Không có lý do kỹ thuật nào ngăn cản việc bạn sử dụng chúng cùng nhau, nhưng theo nghĩa thực tế, tại sao bạn lại như vậy?
SPA truy xuất các tài sản mà nó cần (các chế độ xem JS, CSS và HTML) và tự chạy, liên lạc lại với các dịch vụ để gửi hoặc truy xuất dữ liệu. Vì vậy, công nghệ phía máy chủ vẫn cần thiết để cung cấp các dịch vụ đó (cũng như các phương tiện khác như xác thực và lượt thích), nhưng các phần kết xuất phần lớn không liên quan và không đặc biệt hữu ích vì đó là sự trùng lặp của các nỗ lực, ngoại trừ MVC thì không. ở phía máy chủ và Angular thực hiện nó trên máy khách. Nếu bạn đang sử dụng Angular, bạn muốn nó trên máy khách để có kết quả tốt nhất. Bạn có thể tạo các biểu mẫu Angular post HTML và truy xuất các chế độ xem một phần từ các hành động MVC, nhưng bạn sẽ bỏ lỡ các tính năng tốt nhất và dễ dàng nhất của Angular và khiến cuộc sống của bạn trở nên khó khăn hơn.
MVC khá linh hoạt và bạn có thể sử dụng nó để phục vụ các cuộc gọi từ ứng dụng SPA. Tuy nhiên, WebAPI được tinh chỉnh nhiều hơn và dễ sử dụng hơn một chút cho các dịch vụ như vậy.
Tôi đã viết một số ứng dụng AngularJS, bao gồm một số ứng dụng được di chuyển từ các ứng dụng WebForms và MVC đã có từ trước, và khía cạnh ASP.NET phát triển theo hướng nền tảng để cung cấp ứng dụng AngularJS làm ứng dụng khách thực tế và để lưu trữ lớp ứng dụng khách hàng giao tiếp với thông qua REST (sử dụng WebAPI). MVC là một khuôn khổ tốt, nhưng nó thường không có việc làm trong các loại ứng dụng này.
Ứng dụng ASP.NET trở thành một lớp khác đối với cơ sở hạ tầng, nơi trách nhiệm của nó được giới hạn ở:
- Lưu trữ vùng chứa phụ thuộc.
- Đưa các triển khai logic nghiệp vụ vào vùng chứa.
- Thiết lập gói nội dung cho JS và CSS.
- Lưu trữ các dịch vụ WebAPI.
- Thực thi bảo mật, thực hiện ghi nhật ký và chẩn đoán.
- Giao diện với bộ đệm ứng dụng để tăng hiệu suất.
Một điều tuyệt vời khác về SPA là nó có thể tăng băng thông cho nhóm của bạn. Một nhóm có thể tung ra các dịch vụ trong khi nhóm kia nằm trong ứng dụng khách. Vì bạn có thể dễ dàng khai thác hoặc mô phỏng các dịch vụ REST, bạn có thể có một ứng dụng khách hoạt động hoàn toàn trên các dịch vụ giả và hoán đổi lấy các dịch vụ thực khi chúng hoàn thành.
Bạn phải đầu tư trước vào Angular, nhưng nó sẽ mang lại kết quả lớn. Vì bạn đã quen thuộc với MVC, bạn đã có một số khái niệm cốt lõi.