2009-07-17 22 views
20

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?

+2

Đâ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. –

+0

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

Trả lời

29

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.

+0

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

+4

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. –

+4

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ọ. –

4

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.

+1

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

+2

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

3

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.

9

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; 
} 
Các vấn đề liên quan