Lựa chọn mô hình lập trình ASP.NET

ASP.NET cung cấp cho bạn ba mô hình để phát triển web, gồm có: ASP.NET Web Forms, ASP.NET Web Pages và ASP.NET MVC. Bài viết này nhằm giúp bạn lựa chọn mô hình phù hợp với bạn để có thể bắt đầu viết các ứng dụng bằng ASP.NET.

Ba mô hình này được xây dựng trên nền tảng ASP.NET. Mỗi mô hình đều có cấu trúc ứng dụng riêng biệt, và mỗi mô hình đều có ưu và nhược điểm riêng, tùy vào mỗi tình huống, tùy vào quy mô và nhu cầu của dự án mà lập trình viên có thể chọn và sử dụng một mô hình phù hợp.

Để lập trình với ASP.NET Web Pages, bạn cần sử dụng Web Matrix hoặc Visual Studio. Còn với ASP.NET Web Forms, và ASP.NET MVC, thì bạn nên cài đặt Visual Studio Express trở lên.

ASP.NET Web Forms

ASP.NET Web Forms là nền tảng dành cho các lập trình viên yêu thích mô hình lập trình hướng sự kiện (event driven development) và muốn tăng hiệu suất bằng cách sử dụng các controls. Nếu bạn đã quen thuộc với việc lập trình các ứng dụng khác (như ứng dụng được xây dựng trên Windows Forms, Silverlight hoặc WPF…), bạn có thể chọn lựa mô hình này vì bạn sẽ dễ dàng tiếp cận nó. ASP.NET Web Forms hỗ trợ nền tảng lập trình ở phía máy chủ và cung cấp nhiều các server side controls, chúng đóng gói HTML, JavaScript và CSS bên trong, giúp bạn có thể thiết kế ứng dụng một cách dễ dàng và nhanh chóng bằng cách kéo thả các control.

ASP.NET Web Forms còn cung cấp tính năng data binding nên bạn có thể dễ dàng phát triển các ứng dụng nặng về việc truy xuất và hiển thị dữ liệu.

Với ASP.NET Web Forms, bạn có thể dễ dàng quản lý trạng thái của các control nhờ vào cơ chế post-back và view state. Mọi thay đổi, tương tác trên form của người dùng đối với trang web sẽ được lưu lại trạng thái và bạn có thể xử lý chúng bằng mã lệnh từ phía server sau mỗi lần người dùng post-back (gởi trả lại trang) cho server.

Điều bất tiện của ASP.NET Web Forms là cấu trúc của nó khiến nó khó có thể được áp dụng unit-test hoàn toàn. Và nó tách biệt lập trình viên khỏi kiến thức về CSS, HTML và mô hình lập trình state-less (không lưu giữ trạng thái của các điều khiển) truyền thống của lập trình web. Với lập trình viên thiếu kinh nghiệm, ứng dụng ASP.NET Web Forms sẽ trở nên nặng nề, và không được cấu trúc tốt, giao diện sử dụng CSS và HTML bừa bãi.

Người lập trình ASP.NET Web Forms, nên làm quen với mô hình lập trình ứng dụng web theo cách truyền thống như ASP.NET Web Pages, PHP trước khi lập trình với ASP.NET Web Forms.

ASP.NET MVC

ASP.NET MVC là mô hình lập trình dành cho những người yêu thích phát triển ứng dụng theo mô hình test-driven, và áp dụng mẫu lập trình SoC (Separation of Concerns), nói nôm na là tách biệt các mối quan tâm ra khỏi nhau. Mô hình này sẽ tách thành phần business logic (logic của ứng dụng) ra khỏi lớp trình diễn (presentation layer).

ASP.NET MVC không cung cấp các điều khiển được đóng gói sẵn như server-side control của ASP.NET Web Froms, thay vào đó bạn bạn phải hiểu biết sâu hơn về HTML và giao thức hTTP. Mô hình này phù hợp với các lập trình viên có kinh nghiệm với lập trình web từ trước, trong khi đó những lập trình viên chưa có kiến thức về lập trình web cũng có thể bắt đầu ngay với ASP.NET Web Forms.

Nói tóm lại ASP.NET khuyến khích lập trình viên sử dụng các design patterns và áp dụng các kiến trúc ứng dụng để xây dựng các ứng dụng dễ mở rộng, dễ bảo trì, và đặc biệt là dễ dàng kiểm thử bằng unit tests.

ASP.NET Web Pages

ASP.NET Web Pages là mô hình lập trình đơn giản nhất, và trang web sẽ là tập hợp nhiều trang web. Nó khá là dễ dàng cho lập trình viên lựa chọn và học lập trình. Nó sử dụng cú pháp Razor như ứng dụng MVC nhưng nó lại sử dụng mã server-side ngay bên trong các trang web, hơn là tách chúng ra thành các lớp điều khiển.

ASP.NET Web Pages cho phép lập trình viên toàn quyền trong việc quyết định mã HTML sẽ được sinh ra như thế nào.

ASP.NET Web Pages cũng không có vòng đời của trang như Web Forms, nó chỉ đơn giản là xử lý mã lệnh từ trên xuống dưới thay vì có các sự kiện như pageload hoặc pagerender như bên phía ứng dụng web forms.

Tóm lại

Ba mô hình đều sử dụng một lõi chung là ASP.NET, và bạn có thể chọn mô hình phù hợp với mình. Còn riêng theo ý kiến cá nhân của tôi, nếu bạn là người mới bắt đầu với lập trình web và ASP.NET, bạn nên chọn Web Pages để học và nắm những yếu tố cơ bản và áp dụng chúng với các ứng dụng nhỏ, sau đó sẽ chuyển qua mô hình lập trình ASP.NET MVC, và áp dụng chúng cho các ứng dụng phức tạp hơn.