Một trong những câu hỏi phổ biến được hỏi về ASP.NET MVC là tại sao bạn nên sử dụng nó trên ASP.NET Web Forms? Câu trả lời thường bao gồm ViewState và URL sạch, trong số những người khác. Đến cuối cùng, bạn sẽ thấy lo lắng về việc sử dụng đúng công cụ cho công việc và họ phục vụ các mục đích khác nhau. Tuy nhiên, tôi không tin rằng tôi từng thấy những mục đích đó là gì. Vì vậy, khi bạn thực sự sẽ chọn ASP.NET MVC trên ASP.NET Web Forms, hoặc ASP.NET Web Forms trên ASP.NET MVC?Khi nào sử dụng ASP.NET MVC so với ASP.NET Web Forms?
Trả lời
Bạn không chọn ASP.Net MVC trên ASP.Net, vì ASP.Net MVC vẫn là ASP.Net. Bạn chọn ASP.Net MVC hoặc ASP.Net Web Forms, và có rất nhiều lý do chính đáng để làm điều đó:
- dễ dàng hơn để có được quyền kiểm soát HTML của bạn
- dễ dàng hơn để làm kiểm tra đơn vị
- ít "Gotchas"
Mặt khác, Web Forms có một vài điểm có lợi cho họ:
- dễ dàng đặt CRUD đơn giản/ứng dụng kinh doanh cùng cực kỳ nhanh
- Khó để đánh bại hiệu suất ViewState trong môi trường mạng LAN nội bộ
- Dễ học hình thức mô
Kết quả là nếu bạn đang xây dựng các ứng dụng kinh doanh trong một môi trường mạng LAN của công ty (trong đó một cách trung thực là vẫn nhất nhà phát triển web), Biểu mẫu web thực sự tuyệt vời. Trong ý nghĩa đó, Microsoft thực sự biết thị trường của họ. Nhưng nếu bạn đang xây dựng một ứng dụng cho internet công cộng, bạn có thể muốn MVC để bạn có thể kiểm tra kỹ lưỡng và đảm bảo các trang của bạn không phải lo lắng về dữ liệu JavaScript hoặc ViewState không cần thiết. Ngoài ra, một cái gì đó đã thay đổi trong vài năm qua là ngay cả nhiều ứng dụng mạng nội bộ của công ty bây giờ cần phải hỗ trợ sử dụng nhà/từ xa, làm cho MVC hấp dẫn hơn với đám đông đó so với trước đây.
Tôi tò mò về tuyên bố của bạn về "khó đánh bại hiệu suất của khung nhìn trong môi trường mạng cục bộ" - bạn có thể làm rõ không? Bạn có cho rằng gánh nặng mạng của nó là ít hơn khi địa phương, do đó bạn không phải lo lắng về hiệu suất mạng càng nhiều? – Matt
Viewstates có thể rất lớn, và điều này chắc chắn là một vấn đề hiệu suất khi máy chủ không phải là địa phương. –
Các gánh nặng mạng tuyệt đối là như nhau: một 60K viewstate là 60K ở khắp mọi nơi. Các gánh nặng mạng _relative_ là rất differetn: 60K đến một mạng nội bộ là không có gì, nhưng 60K tải lên cho mỗi postback qua ngay cả một kết nối băng thông rộng của người tiêu dùng có thể làm cho các trang của bạn xuất hiện chậm hơn nhiều so với họ. –
http://weblogs.asp.net/shijuvarghese/archive/2008/07/09/asp-net-mvc-vs-asp-net-web-form.aspx
kiểm tra blog đó!
Bottom line "tách mối quan tâm"
Tôi sẽ cung cấp cho bạn một vài mục đích, với lợi thế rõ ràng.
Nếu mục đích của bạn là trang web công khai sẽ sử dụng lưu lượng truy cập, hãy sử dụng MVC. Nó là tối ưu cho tối ưu hóa công cụ tìm kiếm.
Nếu mục đích của bạn là ứng dụng web doanh nghiệp hoạt động như ứng dụng dành cho máy tính để bàn, tôi sẽ dựa vào biểu mẫu web, vì quản lý nhà nước và phân bổ tài nguyên của bạn thành các điều khiển máy chủ cơ bản mang lại lợi thế rất lớn nếu được sử dụng đúng cách.
Trang web sẽ dễ dàng được công nhận bởi các công cụ tìm kiếm hay không là thứ thường bị bỏ qua trong các cân nhắc thiết kế. Điểm tốt về nó là một lợi ích của MVC. – Kivus
Tối ưu hóa công cụ tìm kiếm không còn là yếu tố quyết định trong cuộc tranh luận MVC và WebForms. ** ASP.NET 4.0 ** bây giờ cho phép bạn cũng sử dụng công cụ định tuyến URL để ** ánh xạ URL tới trang ASP.NET Web Forms ** cũng như bộ điều khiển ASP.NET MVC. [Xem liên kết này để biết chi tiết] (http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and- net-4-0-series.aspx) – JTech
Các nhà phát triển gặp khó khăn lớn nhất đang quản lý sự phức tạp và giữ mã "sạch". MVC cung cấp cho các nhà phát triển các dây cương để tận dụng OOP để làm mất đi sự phức tạp và làm cho mã dễ dàng trên mắt.
Các biểu mẫu web sẽ nhanh hơn để phát triển trong thời gian ngắn, nhưng nó không cho vay dài hạn bền vững về mặt bảo trì và tăng trưởng.
Sử dụng MVC nếu tất cả thành viên trong nhóm của bạn đủ kỹ năng để quản lý "kiểm soát HTML", nếu không mã của bạn sẽ biến thành tag soup.
Nói cách khác
bool useMvc = true;
foreach (TeamMember member in team.Members)
{
useMvc = useMvc && member.IsSkilled;
}
- 1. Sử dụng ASP.NET Web Forms UserControl trong ASP.NET MVC?
- 2. jQuery Validation plugin trong ASP.NET Web Forms
- 3. ASP.NET MVC so với Zeitgeist
- 4. Làm thế nào để sử dụng Dependency Injection với ASP.NET Web Forms
- 5. Sử dụng NServiceBus với Asp.Net MVC 2
- 6. Sử dụng Microsoft.VisualBasic.Logging.FileLogTraceListener với ASP.NET MVC 3
- 7. SSO nhiều trang web ASP.NET MVC sử dụng OpenID
- 8. Triển khai ứng dụng web Asp.net MVC
- 9. Sử dụng ASP.NET MVC làm dịch vụ Web
- 10. ASP.NET Mixed Forms/Windows Authentication
- 11. HttpContext.Items với ASP.NET MVC
- 12. Sử dụng ASP.NET MVC Từ Visual Web Developer Express 2008
- 13. asp.net MVC Web API VS asp.net MVC 4 & MVC 3 ứng dụng internet
- 14. ASP.NET MVC & Dịch vụ Web
- 15. ASP.NET MVC: Sử dụng Html.Partial hoặc Html.Action?
- 16. Khi nào sử dụng quy tắc định tuyến so với tham số chuỗi truy vấn với asp.net mvc
- 17. Tốc độ thực thi mã: ASP.NET-MVC so với PHP
- 18. Sử dụng cookie trong asp.net mvc C#
- 19. ASP.NET MVC 2 - Khi nào sử dụng mẫu và khi sử dụng một phần lượt xem
- 20. Sử dụng TypeScript trong ASP.NET MVC
- 21. ASP.NET MVC - MapRoute so với routes.Add (và 404s)
- 22. Có một CMS tốt để sử dụng với ASP.Net MVC
- 23. Mạo danh: Hành động điều khiển ASP.Net MVC so với biểu mẫu web
- 24. Điểm bất lợi khi sử dụng asp.net MVC là gì?
- 25. ASP.NET MVC AJAX với jQuery
- 26. sử dụng SquishIt trong ASP.NET MVC 3
- 27. Làm thế nào để đăng ký các loại Được biết đến với serialization khi sử dụng ASP.NET MVC Web API
- 28. asp.net mvc - [HttpPost/HttpGet] so với [AcceptVerbs (HttpVerbs.Post/Get)]
- 29. Sử dụng các dự án triển khai web VS 2008 với ASP.NET MVC
- 30. Phương pháp trang ASP.NET so với dịch vụ web
Đây là một bản sao của http://stackoverflow.com/questions/41712/traditional-asp-net-vs-mvc và nhiều, nhiều hơn nữa. Tôi chỉ tìm kiếm http://stackoverflow.com/search?q=When+ASP.NET+MVC+ASP.NET+Web+Forms và tìm thấy chúng. –
Và vì vậy lời tiên tri tự hoàn thành được hoàn thành! Câu hỏi này giờ đây xuất hiện ở đầu tìm kiếm của bạn @JohnSaunders :) – JumpingJezza