Một số lợi thế của việc sử dụng cái này là gì?
Một số lợi thế của việc sử dụng cái này là gì?
Câu trả lời:
Những ưu điểm chính của ASP.net MVC là:
Cho phép toàn quyền kiểm soát HTML được kết xuất.
Cung cấp sự phân tách rõ ràng các mối quan tâm (SoC).
Cho phép phát triển dựa trên thử nghiệm (TDD) .
Dễ dàng tích hợp với các khung JavaScript.
Theo thiết kế của bản chất phi trạng thái của web.
Các url RESTful cho phép SEO.
Không có sự kiện ViewState và PostBack
Ưu điểm chính của Mẫu web ASP.net là:
Nó cung cấp RAD sự phát triển
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.
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:
ASP.NET MVC:
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.
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.
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.
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.
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.
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 :-)
Đức Phanxicô
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
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ẹ.
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
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
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?
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.
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)
2 xu của tôi:
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.
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 :)
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.
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.
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.
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.
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ẹ.