Trong bài viết này, tôi sẽ giới thiệu về mô hình MVC trong ASP.NET.
Trước khi giới thiệu về mô hình MVC và việc ứng dụng nó vào trong ASP.NET thế nào, chúng ta có lẽ nên tìm hiểu 1 ít về Web Forms.
Với Web Forms, Microsoft đã cố gắng làm ẩn đi HTTP và HTML bằng cách lập mô hình user interface (UI) với sự phân tầng của các đối tượng server controls. Mỗi control sẽ giữ trạng thái của riêng nó qua mỗi lần request (sử dụng chức năng ViewState), tự hiển thị HTML khi cần thiết và tự động kết nối với các sự kiện bên client (ví dụ như ButtonClick) tương ứng với sự kiện điều khiển bên server. WebForm được thiết kế 1 lớp trừu tượng khổng lồ để phân phối a classic event-driven graphical user interface (GUI) on the web.
Ý tưởng để làm cảm thấy việc phát triển web tương tự như việc phát triển Windows Forms. Lập trình viên không cần bỏ nhiều thời gian để thực hiện hàng loạt các thao tác HTTP request và response. Việc thiết kế thông qua thao tác kéo thả và làm cho bạn có cảm tưởng mọi thứ đều xảy ra ở server.
Tuy nhiên,Web Forms cũng có những hạn chế của nó. Việc ẩn đi các thao tác cơ bản của web và phụ thuộc vào các control sẽ khiến bạn không thể phát triển control theo ý muốn. Và 1 điều tồi tệ hơn nữa, là khi bạn cần 1 chức năng nào đó hơi “đặc biệt” cho control đang được sử dụng, mà Microsoft chưa hỗ trợ, chắc rằng việc viết lại code sẽ tốn rất nhiều thời gian.
MVC là 1 kiến trúc đơn giản chia giao diện người dùng ra làm 3 thành phần chính:
Lưu ý: MVC là 1 design pattern để xử lý phía giao diện người dùng. Điều này có nghĩa, trong 1 ứng dụng, gồm có nhiều phần như data access, business, service… bạn phải sử dụng các mẫu design pattern khác hoặc cách xử lý nào đó khác.
Web Forms
Khi ASP.NET 1.0 ra đời năm 2002, mọi người thường dễ nhằm lẫn ASP.NET và Web Forms là một và chúng giống nhau. ASP.NET luôn hỗ trợ 2 lớp trừu tượng: System.Web.UI: Lớp Web Forms bao gồm server controls, ViewState… System.Web: hỗ trợ nhiều class và interface cho phép nhiều browser-server giao tiếp với nhau. Nó bao gồm: modules, handlers, HTTP Stack,…The ASP.NET Web Forms technology stack |
Với Web Forms, Microsoft đã cố gắng làm ẩn đi HTTP và HTML bằng cách lập mô hình user interface (UI) với sự phân tầng của các đối tượng server controls. Mỗi control sẽ giữ trạng thái của riêng nó qua mỗi lần request (sử dụng chức năng ViewState), tự hiển thị HTML khi cần thiết và tự động kết nối với các sự kiện bên client (ví dụ như ButtonClick) tương ứng với sự kiện điều khiển bên server. WebForm được thiết kế 1 lớp trừu tượng khổng lồ để phân phối a classic event-driven graphical user interface (GUI) on the web.
Ý tưởng để làm cảm thấy việc phát triển web tương tự như việc phát triển Windows Forms. Lập trình viên không cần bỏ nhiều thời gian để thực hiện hàng loạt các thao tác HTTP request và response. Việc thiết kế thông qua thao tác kéo thả và làm cho bạn có cảm tưởng mọi thứ đều xảy ra ở server.
Tuy nhiên,Web Forms cũng có những hạn chế của nó. Việc ẩn đi các thao tác cơ bản của web và phụ thuộc vào các control sẽ khiến bạn không thể phát triển control theo ý muốn. Và 1 điều tồi tệ hơn nữa, là khi bạn cần 1 chức năng nào đó hơi “đặc biệt” cho control đang được sử dụng, mà Microsoft chưa hỗ trợ, chắc rằng việc viết lại code sẽ tốn rất nhiều thời gian.
Mô hình MVC
MVC là viết tắt của 3 chữ Model-View-Controller. Đây là mô hình kiến trúc quan trọng trong khoa học máy tính, được ra đời cách đây nhiều năm. Năm 1979, nó có tên ban đầu là Thing-Model-View-Editor, và sau này gọi lại với cái tên đơn giản hơn là Model-View-Controller.MVC là 1 kiến trúc đơn giản chia giao diện người dùng ra làm 3 thành phần chính:
- Model: tập hợp các class mô tả dữ liệu bạn đang làm việc và các quy tắc business cho việc thao tác và thay đổi dữ liệu.
- View: định nghĩa giao diện người dùng sẽ hiển thị như thế nào.
- Controller: là tầng trung gian giữa Model và View, là thành phần dùng để quản lý tương tác với người dùng, luồng ứng dụng tổng thể và các logic ứng dụng cụ thể.
Sự tương tác giữa browser và server |
Lưu ý: MVC là 1 design pattern để xử lý phía giao diện người dùng. Điều này có nghĩa, trong 1 ứng dụng, gồm có nhiều phần như data access, business, service… bạn phải sử dụng các mẫu design pattern khác hoặc cách xử lý nào đó khác.
Nhận xét
Đăng nhận xét