2009-02-17 30 views
12

This blogpost và một trong những nhà phát triển cao cấp của chúng tôi tại nơi làm việc tin rằng phát triển web đã đến vòng kết nối đầy đủ với ASP.net MVC. Nó không thực sự là một câu hỏi về VB script vs VB9/10 hoặc bất cứ điều gì là mới nhất. Bên cạnh động cơ định tuyến, các lớp và phương thức trợ giúp. một số lập luận mạnh mẽ bạn có thể làm để nóiASP.NET MVC = ASP cổ điển với thư viện lớp .NET. Có thật không?

ASP.net MVC! = ASP Classic + .net BCL

+0

Kẻ phá hủy - Vui lòng để lại nhận xét khi bạn downvote câu hỏi. IMO đây không phải là một câu hỏi xấu, phải không ?? – Perpetualcoder

+0

Không, có nhiều câu trả lời hay cho câu hỏi này, và nó thêm vào tổng giá trị của SO. +1 –

+0

nhà phát triển cấp cao tại nơi làm việc của bạn nên đọc thêm một chút – juan

Trả lời

20

Trong ASP, "Chế độ xem" sẽ nhận được yêu cầu. Trong ASP.NET-MVC một bộ điều khiển nhận được yêu cầu, sau đó nó có thể chọn từ một số các khung nhìn khác nhau để tạo ra phản hồi.

Việc phân tách yêu cầu xử lý này từ việc xử lý Phản hồi rất khác với ASP.

0

The View thành phần của cú pháp hỗ trợ ASP.NET MVC mới trông như thế nào như ASP 3.0.

Thực tế, cú pháp này (<%%>) luôn có trong ASP.NET WebForms.

Bạn vẫn có thể sử dụng điều khiển ASP.NET (< asp: control>) trong MVC hoặc bạn có thể sử dụng cú pháp mới (IMHO lẻ) hoặc sử dụng các khung công tác khác như NVelocity.

Phạm vi kỹ thuật có sẵn này không thể được coi là ASP cũ hơn .NET BCL.

9

Bài đăng trên blog không dựa trên hiểu biết đầy đủ về khung MVC. MVC thúc đẩy sự phân tách mối quan tâm tốt, mã được chứa trong các tệp Xem nên rất cơ bản; Tất cả các mã hóa thực sự xảy ra trong bộ điều khiển. Tác giả bài đăng trên blog nói rằng sức mạnh thực sự của ASP.Net là các điều khiển, tôi cho rằng sức mạnh là mô hình điều khiển sự kiện và trình bày một môi trường trạng thái vượt qua một môi trường gần như không quốc tịch. MVC duy trì sức mạnh này trong khi cũng thúc đẩy sự tách biệt hơn nữa từ giao diện người dùng thực tế.

12

Đối số đó hoạt động theo giả định rằng tất cả có trong MVC là Chế độ xem.

Thực tế là quan điểm là một phần nhỏ của câu đố, và nghĩ rằng đó là toàn bộ điều cho thấy một sự thiếu hiểu biết sâu sắc về cả mô hình và khuôn khổ. Bạn không thể đưa ra một lập luận mà không cần giáo dục người đầu tiên, và trong hành động giáo dục lập luận sẽ trở nên không thích hợp.

Để giải quyết chính bài đăng trên blog, có, bạn mất rất nhiều chức năng bằng cách từ bỏ các điều khiển phong phú, đặc biệt nếu bạn đang nói về các điều khiển bạn đã mua từ nhà cung cấp bên thứ ba. Tuy nhiên, ngày nay có đầy đủ các bộ tiện ích javascript ra khỏi đó mà là tốt nếu không tốt hơn sau đó bất cứ điều gì có sẵn cho asp, và họ được tự do. Không chỉ vậy, nhưng bằng cách sử dụng ASP.net có nghĩa là mua vào một khuôn khổ cực kỳ phức tạp mà hoạt động khoảng 90% thời gian. Vấn đề với điều này là 90% là không bao giờ đủ cho bất cứ điều gì không tầm thường, và làm việc xung quanh khuôn khổ cho rằng thêm 10% có thể sống địa ngục. Một điều nữa là hiệu suất đi kèm với việc mua vào sự phức tạp đó là hoàn toàn vô cùng.

So sánh giữa MVC và ASP.net cần phải nằm giữa các tiện ích con với kiến ​​trúc tốt, đánh dấu thẳng về phía trước linh hoạt và hiệu suất tốt. Nếu bạn cần những vật dụng, sau đó gắn bó với ASP.net, Chúa biết nó sẽ không biến mất bất kỳ thời gian sớm. Nếu bạn cảm thấy thoải mái với các công nghệ web như html, javascript và CSS, việc mất những công cụ này ra khỏi hộp tiện ích sẽ hút, nhưng những gì bạn nhận được sẽ lớn hơn rất nhiều so với những gì bạn mất.

+1

Tôi muốn bạn trích dẫn nguồn của mình cho "... hoạt động khoảng 90% thời gian". Tôi chưa gặp sự cố này và một trang web của tôi có 80 nghìn trang. Bất kỳ khung công tác nào cũng sẽ thỉnh thoảng đi bạn; điều này hiếm khi là lỗi của khuôn khổ.Ngoài ra, kiến ​​trúc tốt tồn tại lâu trước khi MVC xuất hiện. –

+1

Tôi đang nói chuyện từ 3 năm kinh nghiệm với khuôn khổ và 4 năm kinh nghiệm với các khung công nghệ khác được xây dựng cho web. Nó không phải là số trang mà ứng dụng có, mức độ phức tạp của nó, cùng với sự phức tạp vốn có của asp.net ngay từ đầu. –

3

Có sự khác biệt đáng kể về thiết kế cơ bản giữa ASP cổ điển và ASP.NET MVC. Sự khác biệt đáng kể nhất là việc tách logic nghiệp vụ khỏi logic hiển thị. Trong ASP cổ điển cả hai loại logic, phần lớn, trộn lẫn trong đánh dấu lên. Trong ASP.NET MVC - được sử dụng đúng cách - mã duy nhất trong thành phần khung nhìn được yêu cầu để hiển thị trang. Logic nghiệp vụ, việc lựa chọn dữ liệu xuất hiện trên trang và logic để giải thích và xử lý các đầu vào, được tìm thấy trong các bộ điều khiển và mô hình.

Vì sự khác biệt này, ASP.NET MVC làm tăng đáng kể khả năng kiểm thử mã trên cả ASP cổ điển và WebForms. Tất cả logic nghiệp vụ được tìm thấy trong các lớp được tách rời khỏi công cụ kết xuất và do đó có thể được (dễ dàng hơn) kiểm tra thông qua các bài kiểm tra đơn vị. Trong ASP và WebForms cổ điển, ở mức độ này hay cách khác, phần lớn logic này được tìm thấy trên trang hoặc trong mã-đằng sau, điều này khó kiểm tra hơn.

3

Ngoài ra, theo tôi, sẽ khó khăn hơn để duy trì ứng dụng khi bạn có ASP cổ điển như mã nổi trong HTML của trang.

Tôi có thể đồng ý rằng việc duy trì trang có mã spaghetti có thể khó khăn hơn.

Nhưng chế độ xem ASP.NET MVC vẫn được biên dịch như ASP.NET WebForms - đây là sự khác biệt lớn so với ASP 3 và bạn có IntelliSense sẵn có trong .aspx.

Việc bảo trì ứng dụng tổng thể với MVC thực tế đơn giản hơn rất nhiều. Nó là dễ dàng hơn nhiều để tạo ra các bài kiểm tra đơn vị cho bạn mã mà có thể tạo ra một mạng lưới tốt đẹp để bắt lỗi (và cũng tự tin phát triển increse rằng mã thực sự hoạt động).

Rất dễ dàng để tạo trang trong Biểu mẫu web nhưng nhiều lần khó kiểm tra mã phía sau trang hơn.

1

Tôi là tác giả gốc của bài viết trên blog rằng và đây là quan điểm của tôi về nó:

ASP.NET MVC là một khuôn khổ khác nhau nhắm mục tiêu cho khán giả và mục đích khác nhau. Mục đích chính của ASP.NET MVC là phân tách các mối quan tâm và khả năng kiểm thử. Mã xem và mã kết hợp HTML không tạo mã spaghetti nhưng bạn nên luôn giữ cho các chế độ xem của mình là các thành phần nhỏ. Điều này sẽ làm cho nó dễ dàng hơn để gỡ lỗi ứng dụng và tìm các vấn đề thay vì giữ tất cả các khung nhìn trên cùng một trang và tạo ra một mớ hỗn độn.

ASP.NET MVC đã phải từ bỏ nhiều điều khiển ASP.NET mạnh mẽ. Nhưng may mắn là nhiều thư viện JavaScript xuất hiện với các điều khiển mới để được cắm vào ASP.NET MVC.

Phần mềm là tất cả về thương mại. Bạn đang giao dịch các điều khiển mạnh mẽ của ASP.NET, quản lý ViewState, Postbacks vv với toàn quyền kiểm soát chu kỳ yêu cầu/phản hồi. Nếu bạn cảm thấy thoải mái với ViewState, các vấn đề Postback và không quan tâm đến việc kiểm thử đơn vị thì có lẽ ASP.NET MVC không dành cho bạn.

Cũng với IronRuby đang diễn ra, tôi thấy ASP.NET MVC là một khung công tác rất mạnh mẽ.

+0

Cảm ơn anh bạn. Xin vui lòng không phải tôi không có ý định đổ lỗi hay bất cứ điều gì. Hòa bình :) – Perpetualcoder

+0

-1 cho nhận xét về mã spaghetti. Mã spaghetti có thể được tạo ở mọi nơi và bằng mọi ngôn ngữ. – KevDog

+2

@KevDog, Không chắc chắn điểm của nhận xét của bạn là gì! Tuyên bố này là đúng dù không có vấn đề gì. – azamsharp

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