Lợi thế lớn nhất để sử dụng ASP.Net MVC so với các mẫu web


164

Một số lợi thế của việc sử dụng cái này là gì?

Câu trả lời:


165

Những ưu điểm chính của ASP.net MVC là:

  1. Cho phép toàn quyền kiểm soát HTML được kết xuất.

  2. Cung cấp sự phân tách rõ ràng các mối quan tâm (SoC).

  3. Cho phép phát triển dựa trên thử nghiệm (TDD) .

  4. Dễ dàng tích hợp với các khung JavaScript.

  5. Theo thiết kế của bản chất phi trạng thái của web.

  6. Các url RESTful cho phép SEO.

  7. Không có sự kiện ViewState và PostBack

Ưu điểm chính của Mẫu web ASP.net là:

  1. Nó cung cấp RAD sự phát triển

  2. Mô hình phát triển dễ dàng cho các nhà phát triển đến từ phát triển winform.


32
Về SoC, mọi người có thể gây rối với nó giống như họ sử dụng trên các biểu mẫu web, bằng cách viết các bộ điều khiển "béo" với nhiều logic nghiệp vụ hoặc thậm chí mã truy cập dữ liệu trong đó. Vì vậy, tôi muốn nói SoC là thứ phải được cung cấp bởi người viết mã, fw không thể giúp được.
Rodbv

7
@ Rodbv: Rất đúng, nhưng MVC thực sự đẩy bạn đi đúng hướng, hoặc ít nhất là không khiến bạn phải nhảy qua vòng để làm như vậy. Vì vậy, có lẽ điểm đó nên đọc một cái gì đó như 'làm cho SoC dễ thực hiện hơn'
Erik van Brakel

4
Làm thế nào để "Kích hoạt phát triển dựa trên thử nghiệm" so với bất kỳ phương pháp nào khác? Tôi cũng bối rối làm thế nào nó cho phép các url RESTful khi Phương thức httpContext.RewritePath (Chuỗi) xuất hiện kể từ .NET 2.0?
Đánh dấu Broadington

2
Mặc dù các điểm này hầu hết là chính xác cho phía MVC, rất nhiều trong số chúng hiện đang được tích hợp vào WebForms.
rtpHarry

Liên kết đến nguồn của câu trả lời này với nhiều chi tiết hơn: weblogs.asp.net/shijuvarghese/archive/2008/07/09/ Ấn
DK.

91

ASP.NET Web Forms và MVC là hai khung web được phát triển bởi Microsoft - cả hai đều là những lựa chọn tốt. Cả hai khung web sẽ không được thay thế bởi các khung khác và cũng không có kế hoạch để chúng được "hợp nhất" thành một khung duy nhất. Tiếp tục hỗ trợ và phát triển được thực hiện song song bởi Microsoft và sẽ không "biến mất".

Mỗi khung web này cung cấp các ưu điểm / nhược điểm - một số trong đó cần được xem xét khi phát triển một ứng dụng web. Một ứng dụng web có thể được phát triển bằng một trong hai công nghệ - nó có thể giúp phát triển một ứng dụng cụ thể dễ dàng hơn khi chọn một công nghệ so với công nghệ kia và ngược lại.

Mẫu web ASP.NET:

  • Nhà nước hỗ trợ phát triển • Cung cấp ảo tưởng rằng một ứng dụng web nhận thức được những gì người dùng đã và đang làm, tương tự như các ứng dụng Windows. Chức năng của 'wizard' dễ thực hiện hơn một chút. Các hình thức web thực hiện một công việc tuyệt vời trong việc che giấu rất nhiều sự phức tạp đó từ nhà phát triển.
  • Phát triển ứng dụng nhanh (RAD) • Khả năng chỉ cần 'nhảy vào' và bắt đầu phân phối các biểu mẫu web. Điều này bị tranh cãi bởi một số cộng đồng MVC, nhưng bị Microsoft thúc đẩy. Cuối cùng, nó thuộc về trình độ chuyên môn của nhà phát triển và những gì họ cảm thấy thoải mái. Mô hình biểu mẫu web có thể có ít đường cong học tập hơn đối với các nhà phát triển ít kinh nghiệm hơn.
  • Hộp công cụ điều khiển lớn hơn • ASP.NET Web Forms cung cấp hộp công cụ mạnh hơn và mạnh hơn (điều khiển web) trong khi MVC cung cấp một bộ điều khiển nguyên thủy hơn phụ thuộc nhiều hơn vào các điều khiển phía máy khách phong phú thông qua jQuery (Javascript).
  • Trưởng thành • Đã có từ năm 2002 và có rất nhiều thông tin liên quan đến câu hỏi, vấn đề, v.v. Cung cấp thêm quyền kiểm soát của bên thứ ba - cần xem xét các bộ công cụ hiện có của bạn.

ASP.NET MVC:

  • Tách biệt mối quan tâm (SoC) • Từ quan điểm kỹ thuật, tổ chức mã trong MVC rất sạch sẽ, có tổ chức và chi tiết, giúp ứng dụng web dễ dàng mở rộng quy mô về chức năng. Thúc đẩy thiết kế tuyệt vời từ quan điểm phát triển.
  • Tích hợp dễ dàng hơn với các công cụ phía máy khách (công cụ giao diện người dùng phong phú) • Hơn bao giờ hết, các ứng dụng web ngày càng trở nên phong phú như các ứng dụng bạn thấy trên máy tính để bàn. Với MVC, nó cung cấp cho bạn khả năng tích hợp với các bộ công cụ như vậy (chẳng hạn như jQuery) một cách dễ dàng và liền mạch hơn so với trong Biểu mẫu web.
  • Tối ưu hóa công cụ tìm kiếm (SEO) Thân thiện / không trạng thái • URL thân thiện hơn với các công cụ tìm kiếm (ví dụ: mywebapplication.com/users/ 1 - truy xuất người dùng có ID 1 so với mywebapplication / users / getuser.aspx (id được truyền trong phiên)). Tương tự, vì MVC không trạng thái, điều này loại bỏ sự đau đầu của người dùng sinh ra nhiều trình duyệt web từ cùng một cửa sổ (va chạm phiên). Cùng với những dòng đó, MVC tuân thủ giao thức web phi trạng thái hơn là 'chiến đấu' với nó.
  • Hoạt động tốt với các nhà phát triển cần mức độ kiểm soát cao • Nhiều điều khiển trong biểu mẫu web ASP.NET tự động tạo ra nhiều HTML thô mà bạn thấy khi một trang được hiển thị. Điều này có thể gây đau đầu cho các nhà phát triển. Với MVC, nó cho vay tốt hơn để có quyền kiểm soát hoàn toàn với những gì được hiển thị và không có gì bất ngờ. Thậm chí quan trọng hơn, là các biểu mẫu HTML thường nhỏ hơn nhiều so với các biểu mẫu Web có thể tương đương với việc tăng hiệu suất - điều cần xem xét nghiêm túc.
  • Kiểm tra hướng phát triển (TDD) • Với MVC, bạn có thể dễ dàng tạo các bài kiểm tra cho phía web của mọi thứ. Một lớp thử nghiệm bổ sung sẽ cung cấp thêm một lớp bảo vệ chống lại hành vi bất ngờ.

Xác thực, ủy quyền, cấu hình, biên dịch và triển khai là tất cả các tính năng được chia sẻ giữa hai khung web.


27
"Với MVC, bạn có toàn quyền kiểm soát những gì được hiển thị" - bạn cũng có thể kiểm soát hoàn toàn với WebForms nếu bạn sử dụng Chữ thay vì Nhãn, Giữ chỗ thay vì Bảng, Thay thế dữ liệu, v.v. Quá nhiều nhà phát triển đọc các câu như thế này và tin nó là sự thật Downvote ..
vui vẻ

3
@masty - Tôi không biết rằng cá nhân tôi sẽ downvote, nhưng tôi đồng ý với phần còn lại của những gì bạn nói.
Peter

4
@masty - Cảm ơn bạn đã cứu thế giới StackOverflow bằng cách nitpicking và yêu cầu câu hỏi này được hạ cấp. Tôi đã chỉnh sửa câu trả lời của mình chỉ cho bạn - vì vậy hy vọng tôi có thể lấy lại phiếu bầu của mình cùng với mọi người khác mà bạn đã yêu cầu hạ cấp nó. Cảm ơn!
JC

6
@masty Tôi đồng ý một phần, nhưng khi sử dụng nghĩa đen, trình giữ chỗ và bộ lặp, bạn sẽ chuyển ngày càng nhiều html sang codebehind. Điều này cũng có thể gây nhầm lẫn cho các nhà thiết kế đọc .aspx và cho các lập trình viên đọc .aspx.cs. Vì vậy, điều đó là có thể, nhưng đúng vậy, nó cũng đánh bại mục đích của ASP.Net WebForms. Tôi muốn nói rằng ControlAd chương là một giải pháp sạch hơn trong trường hợp đó. Thay vì thay thế các điều khiển, bạn thay thế cách chúng được hiển thị.
Aidiakapi

2
Câu lệnh "Với MVC, bạn có toàn quyền kiểm soát những gì được hiển thị" bị nhầm lẫn. Tôi nghĩ câu nói tốt hơn sẽ là, "Khung MVC không hiển thị ít hơn và những gì được hiển thị là gọn hơn. Bạn có đủ khả năng kiểm soát nhiều hơn đối với HTML / CSS cụ thể được hiển thị, nhưng bạn phải thực hiện công việc để có quyền kiểm soát đó."
kingdango

17

Bất cứ ai đủ tuổi để nhớ ASP cổ điển sẽ nhớ cơn ác mộng khi mở một trang có mã được trộn lẫn với html và javascript - ngay cả trang nhỏ nhất cũng là một nỗi đau để tìm ra cái quái gì nó đang làm. Tôi có thể sai, và tôi hy vọng là tôi, nhưng MVC có vẻ như quay trở lại những ngày xưa tồi tệ đó.

Khi ASP.Net xuất hiện, nó được ca ngợi là vị cứu tinh, tách mã khỏi nội dung và cho phép chúng tôi để các nhà thiết kế web tạo ra html và các lập trình viên làm việc với mã phía sau. Nếu chúng tôi không muốn sử dụng ViewState, chúng tôi sẽ tắt nó. Nếu chúng tôi không muốn sử dụng mã phía sau vì một số lý do, chúng tôi có thể đặt mã của mình bên trong html giống như ASP cổ điển. Nếu chúng tôi không muốn sử dụng PostBack, chúng tôi đã chuyển hướng đến một trang khác để xử lý. Nếu chúng tôi không muốn sử dụng các điều khiển ASP.Net, chúng tôi đã sử dụng các điều khiển html tiêu chuẩn. Chúng tôi thậm chí có thể thẩm vấn đối tượng Phản hồi nếu chúng tôi không muốn sử dụng ASP.Net runat = "server" trên các điều khiển của mình.

Bây giờ ai đó trong trí tuệ tuyệt vời của họ (có lẽ là người chưa bao giờ lập trình ASP cổ điển) đã quyết định đã đến lúc quay lại thời kỳ trộn mã với nội dung và gọi đó là "phân tách mối quan tâm". Chắc chắn, bạn có thể tạo html sạch hơn, nhưng bạn có thể với ASP cổ điển. Nói "bạn không lập trình chính xác nếu bạn có quá nhiều mã trong chế độ xem của bạn" giống như nói "nếu bạn viết mã có cấu trúc và nhận xét tốt trong ASP cổ điển thì nó sạch hơn và tốt hơn ASP.NET"

Nếu tôi muốn quay lại trộn mã với nội dung, tôi sẽ xem xét việc phát triển bằng PHP có môi trường trưởng thành hơn nhiều cho loại phát triển đó. Nếu có quá nhiều vấn đề với ASP.NET thì tại sao không khắc phục những vấn đề đó?

Cuối cùng nhưng không kém phần quan trọng, công cụ Dao cạo mới có nghĩa là còn khó hơn để phân biệt giữa html và mã. Ít nhất chúng ta có thể tìm kiếm các thẻ mở và đóng, tức là <% và%> trong ASP nhưng bây giờ dấu hiệu duy nhất sẽ là ký hiệu @.

Có lẽ đã đến lúc chuyển sang PHP và đợi thêm 10 năm nữa để ai đó tách mã khỏi nội dung một lần nữa.


7
+1 Điểm trên. Phản ứng đầu tiên của tôi đối với MVC là tôi đã thực hiện lại Classic ASP; chỉ trong C # lần này thay vì VBScript.
DancesWithBlyn

3
Tôi ngạc nhiên tại sao câu trả lời này lại nhận được nhiều sự ủng hộ như vậy. Đầu tiên, ASP.NET MVC có sự tích hợp của MVC được tích hợp. Tất nhiên, bạn có thể làm điều này trong ASP. Thứ hai, ASP.NET MVC còn hơn cả ASP cổ điển. Nó cung cấp khả năng kiểm soát chi tiết đối với HTML kết hợp với sức mạnh của .NET kèm theo rất nhiều trợ giúp hữu ích. Thứ ba, @ là một ký hiệu tốt, cũng như <%%>. Bất kỳ trình chỉnh sửa phù hợp nào cho chế độ xem Dao cạo của bạn sẽ hỗ trợ @ -notation. Cuối cùng, PHP trưởng thành? me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design ASP.NET MVC là một nền tảng tuyệt vời. Hãy chú ý hơn.
JP mười Berge

Bạn đang đùa tôi à Tôi đã sử dụng PHP với ký hiệu "<? ...?>" Và thấy nó hoàn toàn dài dòng. Tôi không thấy biểu tượng "@" khó nhận biết hơn thẻ "<% ...%>". Ngoài ra, bạn hiếm khi sử dụng biểu tượng "@" trong các mẫu HTML.
Exegesis

Mắt tôi có thể nghỉ ngơi thực sự tốt hơn trên một trang dao cạo hơn là địa ngục của các biểu tượng "<%%>". Đọc một trang .aspx khiến tôi đau đầu. Tôi cũng thích xem những gì đang được kết xuất. Khối @foreach (..) {<tr> ... </ tr>} giúp tôi cảm thấy thoải mái hơn so với <abc: MyViewControl ID = "..." runat = "server" DatasourceID = ".... "/>. Tôi thực hiện nhiều thao tác phía máy khách và tôi cần biết chính xác điều gì sẽ được kết xuất ở đâu, và với id, kiểu và lớp nào. Tôi thích tự làm điều đó hơn là để một điều khiển thực hiện nó một cách nhanh chóng. Đặc biệt là khi một số điều khiển được hiển thị khác nhau tùy thuộc vào cài đặt của chúng.
Thanocation Ioannidis

Tôi ngạc nhiên khi điều này đã nâng cao, đó là một sự hiểu lầm hoàn toàn về khung MVC. Nếu bạn thấy mình trộn mã với nội dung trong MVC, bạn đã làm sai. Chế độ xem của bạn có nội dung, bộ điều khiển của bạn (và các lớp họ sử dụng) có mã. Đây là một trong những nguyên tắc chính của MVC.
Josh Noe

14

Nếu bạn đang làm việc với các nhà phát triển khác, chẳng hạn như PHP hoặc JSP (và tôi đoán là đường ray) - bạn sẽ dễ dàng chuyển đổi hoặc cộng tác trên các trang hơn vì bạn sẽ không có ASP.NET 'khó chịu' sự kiện và kiểm soát ở khắp mọi nơi.


"Thời gian dễ dàng hơn nhiều" bằng cách sử dụng cái nào?
cregox

5
@cawas - dễ dàng hơn nhiều với MVC. không có sự kiện nào trong ASP.NET MVC. về cơ bản, bạn đang xử lý HTML và css tiêu chuẩn và không có nhiều sự kiện và điều khiển mà các nhà phát triển PHP / JSP cần học
Simon_Weaver

ASP.NET là cơ sở cho cả WebForms và MVC. Mọi người có xu hướng nhầm lẫn WebForms với ASP.NET. Không có "MVC vs ASP.NET". Có "ASP.NET MVS" so với "ASP.NET WebForms". Và thực sự họ không chiến đấu với nhau. Chúng chỉ là những cách khác nhau với những ưu và nhược điểm khác nhau, để xây dựng một trang web
Thanasis Ioannidis

13

Vấn đề với MVC là ngay cả đối với các "chuyên gia", nó cũng tiêu tốn rất nhiều thời gian quý giá và đòi hỏi nhiều nỗ lực. Các doanh nghiệp được thúc đẩy bởi điều cơ bản "Giải pháp nhanh hoạt động" bất kể công nghệ đằng sau nó. WebForms là một công nghệ RAD giúp tiết kiệm thời gian và tiền bạc. Bất cứ điều gì đòi hỏi nhiều thời gian hơn đều không được các doanh nghiệp chấp nhận.


1
+1 cho doanh nghiệp được thúc đẩy bởi điều cơ bản "Giải pháp nhanh có hiệu quả"
Dragos Durlut

1
Vấn đề là khi một số giải pháp nhanh chóng không hoạt động vì chúng dự định sẽ nhanh chóng ngay từ đầu. Kinh nghiệm gần đây: Một trang web nhanh để thực hiện một số thao tác tạo-chỉnh sửa cơ bản. Nó được cho là "nhanh hơn" so với trang tương đương infopath hơi chậm một chút. Trên thực tế, giải pháp mới có hiệu suất gần như tương tự với trang infopath, ngoại trừ trong IE7 là nó cực kỳ chậm đến mức vô dụng. 5 giây để mở trang và 5 giây mỗi lần nhấp vào hộp tổ hợp ... Tất cả điều đó, chỉ vì nó phải nhanh chóng. Không suy nghĩ, không có kế hoạch.
Thanocation Ioannidis

1
Sau đó, chúng tôi đã kết thúc việc xóa tất cả các điều khiển để loại bỏ tập lệnh phía máy khách nặng và không cần thiết của chúng, và cuối cùng kết xuất các điều khiển html thủ công với dữ liệu và sự kiện đã được khởi động và kết hợp jQuery và BackBone.js. Nó thực sự là một cách tiếp cận MVC được lưu trữ trong một trang webforms. Tất nhiên, mặc dù tốt và lập kế hoạch WebForms và MVC đều có thể hoạt động rất tốt, nhưng WebForms cám dỗ bạn chỉ cần ném các điều khiển trong trang của bạn để thấy đôi khi di chuyển trên màn hình của bạn, và sau đó bạn dành nhiều thời gian hơn để điều chỉnh nó, nếu không xóa nó ở tất cả.
Thanocation Ioannidis

11
  1. AJAX đúng, ví dụ JSONResults không có phần postback vô nghĩa.
  2. không có lượt xem +1
  3. Không đổi tên ID HTML.
  4. Làm sạch HTML = không phình to và có một cú đánh tốt trong việc hiển thị XHTML hoặc các trang tuân thủ tiêu chuẩn.
  5. Không tạo javascript AXD nữa.

9

Lợi thế lớn nhất đối với tôi sẽ là sự tách biệt rõ ràng giữa các lớp Model, View và Controller của bạn. Nó giúp thúc đẩy thiết kế tốt ngay từ đầu.


4
Tôi đồng ý đây là một điểm bán hàng lớn nếu bạn chưa từng làm việc với loại mẫu này trước đây, nhưng bạn có thể triển khai mẫu MVC hoặc MVP trong WebForms. Kudos để khiến mọi người chuyển sang một mô hình thay vì tạo ra một biểu mẫu web với các bộ dữ liệu, nhưng họ không phải là loại người tôi thường thuê.
Đánh dấu Broad Broad

9

Tôi chưa thấy bất kỳ lợi thế nào trong MVC so với ASP.Net. 10 năm trước Microsoft đã đưa ra UIP (Quy trình giao diện người dùng) làm câu trả lời cho MVC. Đó là một flop. Chúng tôi đã thực hiện một dự án lớn (4 nhà phát triển, 2 nhà thiết kế, 1 người thử nghiệm) với UIP hồi đó và đó là một cơn ác mộng tuyệt đối.

Đừng nhảy vào bandwagon vì Hype. Tất cả các ưu điểm được liệt kê ở trên đã có sẵn trong Asp.Net (Với nhiều tinh chỉnh tuyệt vời hơn [ Các tính năng mới trong Asp.Net 4 ] trong Asp.Net 4).

Nếu nhóm phát triển của bạn hoặc một gia đình phát triển duy nhất có Asp.Net chỉ cần gắn bó và tạo ra các sản phẩm đẹp một cách nhanh chóng để đáp ứng khách hàng của bạn (người trả tiền cho giờ làm việc của bạn). MVC sẽ ăn hết thời gian quý báu của bạn và tạo ra kết quả tương tự như Asp.Net :-)


1
Vô hiệu hóa viewstate theo mặc định trong khi bật nó trên điều khiển không thường xuyên thực sự cần nó là một bước tiến tuyệt vời trong ASP.NET 4.
PeteT

Cả WebForms và MVC đều được xây dựng trên nền tảng ASP.NET.
Thanocation Ioannidis

8

Đức Phanxicô

  1. Tại sao bạn gọi postback một phần là "vô nghĩa"? Đây là tính năng cốt lõi của Ajax và đã được sử dụng rất tốt trong khung Atlas và các điều khiển bên thứ ba tuyệt vời như Telerik

  2. Tôi đồng ý với quan điểm của bạn về quan điểm. Nhưng nếu các nhà phát triển cẩn thận vô hiệu hóa viewstate, điều này có thể làm giảm đáng kể kích thước của HTML được hiển thị do đó trang trở nên nhẹ.

  3. Chỉ các điều khiển Máy chủ HTML được đổi tên trong mô hình ASP.NET Web Form chứ không phải các điều khiển html thuần túy. Dù đó là gì đi nữa, tại sao bạn rất lo lắng nếu việc đổi tên được thực hiện? Tôi biết bạn muốn xử lý nhiều sự kiện javascript ở phía máy khách nhưng nếu bạn thiết kế trang web của mình một cách thông minh, bạn chắc chắn có thể có được tất cả các id bạn muốn

  4. Ngay cả các mẫu Web ASP.NET cũng đáp ứng các tiêu chuẩn XHTML và tôi không thấy bất kỳ sự đầy hơi nào. Đây không phải là lý do tại sao chúng ta cần một mô hình MVC

  5. Một lần nữa, tại sao bạn lại bận tâm với AXD Javascript? Tại sao nó làm tổn thương bạn? Đây không phải là một lời biện minh hợp lệ nữa

Cho đến nay, tôi là một fan hâm mộ của việc phát triển các ứng dụng bằng cách sử dụng các mẫu ASP.NET Web cổ điển. Ví dụ: Nếu bạn muốn liên kết danh sách thả xuống hoặc chế độ xem lưới, bạn cần tối đa 30 phút và không quá 20 dòng mã (tất nhiên là tối thiểu). Nhưng trong trường hợp của MVC, hãy nói chuyện với các nhà phát triển rằng nó đau như thế nào.

Nhược điểm lớn nhất của MVC là chúng ta đang quay trở lại thời của ASP. Nhớ mã spaghetti trộn mã máy chủ và HTML ??? Ôi chúa ơi, hãy thử đọc một trang MVC aspx trộn với các thẻ javascript, HTML, JQuery, CSS, Server và những gì không .... Có ai có thể trả lời câu hỏi này không?


6
Postback một phần là một loại
bùn

3
Nếu bạn có nhiều mã trong quan điểm của bạn thì bạn đang làm sai điều gì đó. Mã trong quan điểm chỉ nên quan tâm bố trí.
UpTheCux

1
Lý do duy nhất bạn sẽ thấy một trang có javascript được trộn với css và html là nếu bạn đang xem một công việc của một nhà phát triển lười biếng, những người không thể bị làm phiền tách biệt các kiểu và tập lệnh. Điều này có thể xảy ra trong các hình thức web VÀ mvc. Tôi đồng ý các thẻ script là xấu, nhưng với MVC3, chúng chắc chắn không còn nữa, và ít nhất bạn có thể thấy những gì đang diễn ra mà không cần tìm mã phía sau tệp và tìm điểm kiểm soát dữ liệu ...
jcvandan

Ngoài ra, nếu bạn đang tạo mã spaghetti bằng MVC, bạn không tuân thủ phân tách mối quan tâm chính và không sử dụng mô hình kiến ​​trúc đẹp
jcvandan

1
Sử dụng cả hai, tôi có thể nói rằng không có gì rắc rối hơn WebForms. MVC sạch sẽ, ngoại trừ các thẻ máy chủ, nhưng bên cạnh đó, tất cả sự lộn xộn là lỗi của các lập trình viên xấu. MVC được thiết kế theo lõi để tách logic khỏi thiết kế. Ngoài ra bạn đề cập đến Telerik. Telerik cho ASP.Net AJAX gây ra một mã lộn xộn như vậy. Chưa kể đến tốc độ, (khuấy) việc sắp xếp lưới telerik mất: 500ms cho 4 trang trong ASP.Net WebForms, mất 200ms cho 84 trang trong MVC. (Đã thử nghiệm bằng cách sử dụng bản demo và firebird của họ cho chrome.) Khi nói đến hiệu năng và phân tách, MVC chắc chắn thắng.
Aidiakapi

6

Các hình thức web cũng có được từ sự trưởng thành lớn hơn và hỗ trợ từ các nhà cung cấp kiểm soát bên thứ ba như Telerik.


2
Không nói rằng nó không thể được thực hiện với MVC, bởi vì tôi chắc chắn là có, nhưng nếu bạn muốn kết hợp một ứng dụng mạng nội bộ hoặc extranet nhanh và bẩn với rất nhiều Telerik và WebForms thì khó có thể đánh bại. Ngọn lửa đi, 'đây là sự thật trung thực.
infocyde

Telerik cũng có các điều khiển MVC (ít hơn và có ít tùy chọn hơn, tuy nhiên chúng có nó) và chúng RẤT NHIỀU so với các biến thể WebForm của chúng.
Aidiakapi

5

Trong các biểu mẫu web, bạn cũng có thể hiển thị gần như toàn bộ html bằng tay, ngoại trừ một số thẻ như viewstate, eventvalidation và tương tự, có thể được xóa bằng PageAd chương. Không ai bắt buộc bạn sử dụng GridView hoặc một số điều khiển phía máy chủ khác có đầu ra kết xuất html xấu.

Tôi muốn nói rằng lợi thế lớn nhất của MVC là TỐC ĐỘ!

Tiếp theo là buộc phải tách mối quan tâm. Nhưng nó không cấm bạn đặt toàn bộ logic BL và DAL trong Bộ điều khiển / Hành động! Đó chỉ là phân tách chế độ xem, có thể được thực hiện trong các biểu mẫu web (ví dụ mẫu MVP). Rất nhiều điều mà mọi người đề cập đến cho mvc có thể được thực hiện trong các biểu mẫu web, nhưng với một số nỗ lực bổ sung.
Sự khác biệt chính là yêu cầu đến bộ điều khiển, không xem và hai lớp đó được tách ra, không được kết nối thông qua lớp một phần như trong biểu mẫu web (mã aspx + phía sau)


Bạn có nghĩa là tốc độ phát triển hoặc tốc độ thực hiện?
Jules

1
Đặc biệt là khi sử dụng telerik với MVC. Từ bản demo của họ, việc sắp xếp lưới mất: 500ms cho 4 trang (WebForms), 200ms cho 84 trang (MVC). Điều tôi thích với MVC (mặc dù chúng tôi sử dụng WebForms tại công ty của tôi, nghĩ rằng chúng tôi đang xem xét thực hiện chuyển đổi) là, nó sạch hơn, bạn có quan điểm của mình, nơi bạn điều chỉnh đầu ra, mô hình của mình, nơi bạn lộn xộn lên dữ liệu: P và bộ điều khiển của bạn kết hợp tất cả lại với nhau
Aidiakapi

4

2 xu của tôi:

  • Các hình thức ASP.net rất tốt cho Phát triển ứng dụng nhanh và tăng giá trị doanh nghiệp một cách nhanh chóng. Tôi vẫn sử dụng nó cho hầu hết các ứng dụng mạng nội bộ.
  • MVC rất tốt cho Công cụ Tìm kiếm Tối ưu hóa khi bạn kiểm soát URL và HTML ở mức độ lớn hơn
  • MVC thường tạo ra một trang gọn gàng hơn nhiều - không có HTML viewstate và sạch hơn = thời gian tải nhanh
  • MVC dễ dàng lưu trữ các phần của trang. -MVC rất vui khi viết: - ý kiến ​​cá nhân ;-)

3

MVC cho phép bạn có nhiều hơn một hình thức trên một trang, Một tính năng nhỏ tôi biết nhưng nó rất tiện dụng!

Ngoài ra mẫu MVC tôi cảm thấy làm cho mã dễ bảo trì hơn, đặc biệt. khi bạn xem lại nó sau một vài tháng.


2
ASP.NET Webforms cho phép bạn có nhiều biểu mẫu trên một trang như bạn muốn. Hạn chế là chỉ có một người có thể có thuộc tính "runat =" server ".
Andrei Rînea

1
@AndreiRinea Tôi nghĩ rằng anh ấy có nghĩa là: P, không có nhiều sử dụng trong runat="server"thẻ không phải là biểu mẫu khi bạn vẫn muốn sử dụng biểu mẫu web và vì bạn không thể / không nên lồng biểu mẫu, tôi nghĩ đó là ý nghĩa rõ ràng của anh ấy :)
Aidiakapi

2

Bộ điều khiển MVC:

    [HttpGet]
    public ActionResult DetailList(ImportDetailSearchModel model)
    {
        Data.ImportDataAccess ida = new Data.ImportDataAccess();
        List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);

        return PartialView("ImportSummaryDetailPartial", data);
    }

Chế độ xem MVC:

<table class="sortable">
<thead>
    <tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr>
</thead>
<tbody>
    @foreach (Data.ImportDetailData detail in Model)
    {
    <tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr>
    }
</tbody></table>

Làm thế nào là khó khăn? Không có ViewState, Không có vòng đời Trang BS ... Chỉ là mã hiệu quả thuần túy.


1

Tôi có thể thấy hai lợi thế duy nhất cho các trang web nhỏ hơn là: 6) Các url RESTful cho phép SEO. 7) Không có sự kiện ViewState và PostBack (và hiệu suất cao hơn nói chung)

Thử nghiệm cho các trang web nhỏ không phải là một vấn đề, cũng không phải là lợi thế thiết kế khi một trang web được mã hóa đúng cách, MVC theo nhiều cách làm xáo trộn và làm cho các thay đổi khó thực hiện hơn. Tôi vẫn đang quyết định xem những lợi thế này có đáng không.

Tôi có thể thấy rõ lợi thế của MVC trong các trang web đa nhà phát triển lớn hơn.


1

Lợi ích chính tôi tìm thấy là nó buộc dự án vào một cấu trúc dễ kiểm chứng hơn. Điều này cũng có thể dễ dàng thực hiện với các biểu mẫu web (mẫu MVP), nhưng đòi hỏi nhà phát triển phải có hiểu biết về điều này, nhiều người thì không.

Webforms và MVC đều là những công cụ hữu hiệu, cả excel trong các lĩnh vực khác nhau.

Cá nhân tôi sử dụng các biểu mẫu web vì chúng tôi chủ yếu phát triển ứng dụng B2B / LOB. Nhưng chúng tôi luôn làm điều đó với một mẫu MVP với chúng tôi có thể đạt được độ bao phủ mã 95% cho các bài kiểm tra đơn vị của chúng tôi. Điều này cũng cho phép chúng tôi tự động kiểm tra các thuộc tính của giá trị thuộc tính của webcontrols được hiển thị thông qua chế độ xem, ví dụ:

bool IMyView.IsAdminSectionVisible{
       get{return pnlAdmin.Visible;}
       get{pnlAdmin.Visible=value;}
    }

) Tôi không nghĩ mức độ thử nghiệm này dễ dàng đạt được trong MVC, mà không làm hỏng mô hình của tôi.


0

Bạn không cảm thấy tồi tệ khi sử dụng 'các điều khiển không quay lại' nữa - và tìm ra cách làm mờ chúng vào môi trường asp.net truyền thống.

Điều này có nghĩa rằng hiện đại (miễn phí để sử dụng) điều khiển javascript như thế này hay này hay này đều có thể được sử dụng mà không có cố gắng để phù hợp với một peg tròn trong một cái hố cảm giác vuông.


0

Các điều khiển javascript hiện đại cũng như các yêu cầu JSON có thể được xử lý dễ dàng bằng cách sử dụng MVC. Ở đó chúng ta có thể sử dụng rất nhiều cơ chế khác để đăng dữ liệu từ hành động này sang hành động khác. Đó là lý do tại sao chúng tôi thích MVC hơn các hình thức web. Ngoài ra chúng ta có thể xây dựng các trang trọng lượng nhẹ.


0

Ý kiến ​​cá nhân của tôi là, lợi thế lớn nhất khi sử dụng ASP.Net MVC là sự CODE BLOCKSpha trộn với HTML...
địa ngục html cho các nhà phát triển duy trì nó ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.