Đây là một câu hỏi cũ với rất nhiều câu trả lời nhưng không có câu trả lời nào tôi mong đợi được liệt kê.
Câu trả lời ngắn gọn là:
- Sử dụng ASP.NET MVC nếu bạn có ý định xây dựng một ứng dụng web đúng cách với các quy ước lập trình hiện đại và các mẫu được áp dụng cho nền tảng ASP.NET. Về phía bên dưới, bạn sẽ được biết cách HTML và tài nguyên phía máy khách (Javascript, CSS) hoạt động cũng như tăng cường tư duy lập trình MVC có đường cong học tập dốc nhưng đạt đến kết thúc bất ngờ một khi đã nắm bắt được.
- Sử dụng Biểu mẫu web ASP.NET nếu bạn đang sử dụng hoặc muốn sử dụng GUI-tập trung, RAD (Phát triển ứng dụng nhanh) , cách tiếp cận kéo và thả để tạo mẫu một cái gì đó rất nhanh, ví dụ như hành vi nút nhấn / lưới dữ liệu được nối trong 15 phút và giải pháp không nhằm mục đích trở thành thứ được các nhà phát triển hỗ trợ. Hoặc, Sử dụng ASP.NET Web Forms nếu bạn có nền tảng về phát triển GUI hoặc Windows Forms và bạn muốn chuyển kiến thức của mình sang Web.
Nhưng để xem xét điều này đúng, bạn phải hiểu lịch sử của từng.
ASP.NET Web Forms là câu trả lời của Microsoft cho những người đã và đang xây dựng các ứng dụng web động bằng cách sử dụng các điều khiển ActiveX Visual Basic 6, DLL VB6 trên máy chủ và ASP Classic. Vào thời điểm đó, phát triển web bằng các công cụ Microsoft này là một mớ hỗn độn thực sự. Cùng với toàn bộ .NET Framework, sản phẩm của Microsoft về cơ bản sẽ quay trở lại bảng vẽ về cách thực hiện lập trình kinh doanh hiệu quả trên ngăn xếp Windows, ASP.NET Web Forms, thật tuyệt vời và tuyệt vời.
Toàn bộ cách tiếp cận là cung cấp cho các nhà phát triển những điều tốt nhất của cả hai thế giới tương tự như phát triển ứng dụng Windows, nhưng với sức mạnh của các dịch vụ internet. Ý tưởng là, giống như với "Biểu mẫu" VB6 / WinForms (một cửa sổ), một trang web cũng là một hình thức (giống như một cửa sổ, xem) và trên biểu mẫu đó bạn có thể kéo và thả nhãn, hộp văn bản, lưới dữ liệu, nút và các thứ khác mà các nhà phát triển GUI VB / WinForms đã quen thuộc.
Để tạo một nút làm một cái gì đó, sau khi kéo và thả nó, bạn chỉ cần nhấp đúp vào nút đó trong trình thiết kế và bùng nổ trong trình chỉnh sửa mã, cho biết biểu mẫu phải làm gì khi sự kiện "nhấp chuột" đó xảy ra. Đây chính xác là cách các nhà phát triển GUI Windows tạo ra phần mềm bằng cách sử dụng công cụ GUI của VB6 và các công cụ cạnh tranh, ngoại trừ bây giờ mã đang thực thi trên máy chủ! Ồ
Đây là công nghệ năm 2002. Thật tuyệt vời và đẹp đẽ khi là câu trả lời cho các giải pháp GUI hỗ trợ internet để phát triển RAD , nó mang lại cảm giác mạnh mẽ cho một thế giới lộn xộn của các nhà phát triển phần mềm có mục tiêu kinh doanh mà họ cần phải hoàn thành.
Thật không may, mô hình lập trình này nhấn mạnh rất nhiều phép ẩn dụ của lập trình Windows GUI mà nó mang theo gánh nặng của các chi tiết triển khai cần thiết, tất cả các hành lý vướng mắc cần thiết để phù hợp với vòng đời sự kiện và loại bỏ các chi tiết xấu xí của HTML đơn giản và tập lệnh mà các thành phần và điều khiển kéo và thả này sẽ xuất ra. Và vào cuối ngày, các nhà phát triển hỗ trợ các ứng dụng thực sự chắc chắn phải đào sâu vào các thành phần này hoặc tự viết, và do đó, họ sẽ chiến đấu với các cơ sở hạ tầng này, các trận chiến sẽ bỏ lại sau đống cọc, kéo tóc và những giọt nước mắt.
Sao lưu. Rửa tay. Hãy xem xét lại vấn đề kinh doanh. Mục tiêu kinh doanh của chúng tôi là gì?
Chúng ta cần xây dựng và quản lý các ứng dụng web . Hạn chế của chúng tôi là chúng tôi có World Wide Web, nằm trên HTTP, HTML, Javascript và CSS và trên máy chủ, chúng tôi có các quy tắc kinh doanh, cơ sở dữ liệu và một số ít ngôn ngữ lập trình tuyệt vời (ví dụ: C #). Chúng ta có thực sự cần ẩn dụ GUI Windows này để thúc đẩy phương pháp phát triển của chúng ta không? Tại sao chúng ta không thể chỉ tập trung vào các vấn đề của ứng dụng và loại bỏ các ẩn dụ GUI?
Đây là nơi ASP.NET MVC xuất hiện. Nó bắt đầu bởi một nhóm các nhà phát triển tự gọi mình là "Alt.Net", những người muốn quay lại các nguyên tắc phát triển phần mềm thuần túy và phù hợp. Không còn ồn ào, chỉ tập trung vào các mục tiêu kinh doanh và thực tiễn tốt nhất về phần mềm.
Điều này thực sự dịch trong trường hợp này là:
- Tách biệt mối quan tâm . Ví dụ, một thành phần dữ liệu không cần biết dữ liệu của nó sẽ được hiển thị như thế nào, cũng không nên xem đánh dấu được đóng gói với các chi tiết cấu hình kết nối cơ sở dữ liệu và theo cách này, nhà phát triển có thể tập trung vào khu vực quan tâm của mình khi chỉnh sửa và mã kiểm tra.
- Phơi bày và hỗ trợ đầy đủ cho việc tiếp xúc với sự hài hước của HTML và các tài nguyên liên quan . Trong Biểu mẫu web, HTML được giấu kín, các nhà phát triển không khuyến khích làm phiền với điều đó. Trong ASP.NET MVC, các nhà phát triển được khuyến khích quản lý các chi tiết đó; thực tế nó là một điều cần thiết Ưu điểm ở đây là nhà phát triển có thể học lại để đánh giá cao ngữ nghĩa rõ ràng của HTML, CSS và tập lệnh và làm việc với nó thay vì chống lại nó.
- Khả năng kiểm tra đối tượng kinh doanh . Bộ điều khiển và mô hình phù hợp hơn nhiều cho thử nghiệm đơn vị lập trình, do đó việc triển khai có thể được xác nhận để đáp ứng các mục tiêu kinh doanh và các thay đổi có thể được xác minh rằng chúng sẽ không bị hỏng. Với Web Forms, rất khó để kiểm tra vì các thành phần không được thiết kế để được kiểm tra riêng lẻ và toàn bộ đầu ra phát triển xoay quanh các mẫu trang và vòng đời sự kiện của chúng với mớ logic kinh doanh và logic trình bày đan xen sâu sắc.
Lưu ý rằng HTML đã là ngôn ngữ đánh dấu cấp cao, cũng như Javascript là ngôn ngữ lập trình cấp cao. Toàn bộ câu chuyện sẽ khác nếu chúng ta làm việc với ngôn ngữ hội và C.
Sau đó, mở rộng # 2, một mục tiêu khác của ASP.NET MVC là cho phép các nhà phát triển tổ chức các chi tiết mặt trước của phần 'xem' các giải pháp của họ và tận dụng nền tảng phong phú mà phần còn lại của ngành đã xây dựng nền tảng máy khách phía trước.
Bạn sẽ thấy rằng các nhà phát triển ASP.NET MVC cảm thấy như ở nhà khi sử dụng các thư viện Javascript phong phú và các kỹ thuật tạo khuôn mẫu phía máy khách mà không phải chiến đấu với kiến trúc phía máy chủ. Đây không phải là trường hợp ban đầu với ASP.NET Web Forms, vì Web Forms không muốn bạn xem xét HTML hoặc script, ngoại trừ nếu bạn thực sự phải , trong trường hợp đó, hãy cẩn thận, nó không dành cho người mờ nhạt của trái tim.