2012-05-10 42 views
19

Tôi đã sử dụng công cụ Dao động MVC 3 để hiển thị các trang. Đôi khi tôi đã phải sử dụng các cuộc gọi AJAX để chuyển mã HTML của Razor-rendered và chèn nó vào trang bằng cách sử dụng JQuery. Khi dự án mới bắt đầu, chúng tôi xem xét sử dụng khung MVC 4 Single Page Application mà mới mẻ đối với chúng tôi. Tôi lấy cái nhìn đầu tiên về nó để lại cho tôi cảm giác lẫn lộn: Một mặt nó ngụ ý rằng tất cả dữ liệu của bạn được chuyển bởi JSON và khách hàng thực hiện tất cả công việc để hiển thị chúng và mã hóa một số logic liên quan đến giao diện người dùng. hiệu suất mạng. Mặt khác, khách hàng (HTML + JavaScript) trở nên nặng nề hơn nhiều với một chuỗi các chuỗi phép thuật và các mối quan hệ ẩn bên trong nó mà dường như khó duy trì. Chúng tôi đã quen với VS intellisense, loại mã máy chủ .NET an toàn để hiển thị các trang mà chúng ta phải trao đổi cho các kịch bản lệnh khách và các câu lệnh ràng buộc Knockout trong trường hợp SPA.MVC dựa trên Dao cạo so với Ứng dụng Trang Đơn trong MVC 4

Tôi tự hỏi có bất kỳ prons và khuyết điểm của việc sử dụng SPA so với Razor, khác mà điều này rõ ràng tôi đã đề cập ở đây? Cảm ơn

+2

Lựa chọn sai. Bạn có thể sử dụng Razor trong SPA. Chỉ có thể không nhiều. –

+3

Chúng tôi sẽ sử dụng Razor để tải trang lần đầu tiên mà không có dữ liệu, tất cả các yêu cầu còn lại sẽ được thực hiện với sự trợ giúp của Ajax + JSON, MS SPA không ngụ ý sử dụng Razor để tải dữ liệu – YMC

+4

"prons". Lol, tôi nghĩ rằng đó sẽ là từ thay thế mới cho "ưu và nhược điểm". – Dan

Trả lời

4

Tôi nghĩ rằng có vẻ như bạn đã được ứng dụng khá tốt trong hầu hết các giao dịch tại đây; bạn sẽ giảm tải mạng với SPA, và sẽ thay đổi một thước đo xử lý cho khách hàng. Tuy nhiên, bạn sẽ tăng độ phức tạp của mã, và làm cho nó hơi khó khăn hơn để dễ dàng duy trì hệ thống (đơn giản là do sự phức tạp tăng lên - không phải do bất kỳ vấn đề kiến ​​trúc nào có trong SPA).

Một điều khác cần lưu ý là tính tương thích. Lý do tôi đề cập đến "sự lựa chọn sai lầm" trong nhận xét của tôi đối với câu hỏi của bạn là để giữ cho trang web có thể sử dụng được cho những người bị tắt Javascript, bạn sẽ vẫn cần phải cung cấp chế độ xem thường xuyên, toàn trang. Đây cũng là một ý tưởng tốt để làm vì lợi ích của SEO; trình thu thập thông tin sẽ duyệt trang web của bạn với tư cách là người dùng đã tắt JS và sau đó có thể lập chỉ mục trang web của bạn. Sau đó, trang web sẽ xử lý các URL đến đúng cách để những người có JS được kích hoạt sẽ tìm thấy chính mình trong SPA của bạn nhìn vào cùng một nội dung (trái với việc bị bán phá giá trong chế độ xem "không có JS" không cần thiết).

Có điều gì đó khác tôi sẽ đề cập đến như là một khả năng có thể giúp đỡ với những điều trên, nhưng nó phá vỡ những lý tưởng của SPA; có nghĩa là, bằng cách sử dụng partials Ajax tải ở một số nơi, chứ không phải là dữ liệu JSON. Ví dụ: giả sử bạn có biểu mẫu "Liên hệ với EMail" điển hình trên trang web; bạn muốn điều đó tải trong ngữ cảnh của SPA, nhưng nó có lẽ dễ dàng hơn để làm điều đó bằng cách tải một phần thông qua AJAX. (Mặc dù chắc chắn, có, bạn có thể làm điều đó với một đối tượng JSON mô tả các trường để hiển thị trong biểu mẫu email).

Cũng có thể có nội dung có nhiều "nội dung" hơn "dữ liệu", mà bạn vẫn có thể muốn tải qua partials và Ajax.


SPA chắc chắn là một dự án thú vị và tôi sắp triển khai một bản thân. Tôi đã sử dụng kết hợp JSON và partials trong đó, nhưng đó có thể không phải là lựa chọn của riêng bạn.

+1

Tôi không thấy giảm tải mạng. Nếu bạn tải 50 bản ghi, nó không quan trọng nếu nó được tải lên trước hoặc khi cần thiết. Âm lượng là như nhau. Lợi ích là kéo dài tải trong một khoảng thời gian lớn hơn. Điều này chuyển sang phương pháp tiếp cận nhiều hơn theo yêu cầu. –

+14

@ChuckConway Tải 50 bản ghi qua JSON chắc chắn là ít chuyển mạng hơn là tải trang HTML có tất cả phần còn lại của định dạng, bố cục và các bản ghi * cộng * 50 khác đánh dấu. –

+2

Nếu bạn đang làm mới trang ENTIRE. Vâng, bạn đúng. Nếu bạn chỉ tải thông qua JSON, thì không có nó. –

17

Dao cạo là một công nghệ dựa trên máy chủ nơi SPA (Single Page Application) là một phương pháp kiến ​​trúc được sử dụng trên máy khách (trình duyệt web). Cả hai có thể được sử dụng cùng nhau.

Từ mức cao, SPA di chuyển hiển thị và truy xuất dữ liệu cho ứng dụng khách. Máy chủ web trở thành một tầng dịch vụ ngồi trước cơ sở dữ liệu. Một mẫu MVC hoạt động tốt nhất khi sử dụng SPA. Các khung như Knockout.js và Backbone.js có thể được sử dụng cho việc này. Kết quả thực là một máy tính để bàn đáp ứng phong phú như trải nghiệm.

Để đạt được điều này, bạn sẽ cần phải là một lập trình viên javascript gốc hoặc sẵn sàng học javascript.

Có yêu cầu di chuyển doanh nghiệp từ C# vào javascript. Trong Visual Studio có giới hạn intelli-sense cho javascript.Để có sự tự tin trong javascript của bạn, bạn sẽ cần phải dựa vào thử nghiệm đơn vị. Phía trên là trải nghiệm người dùng phong phú (nghĩ gmail hoặc bản đồ google).

Các vấn đề liên quan