Tài liệu này là một phần của loạt bài “Giới thiệu về Phát triển Doanh nghiệp”. Các bài viết trước:
- về mạng ;
- về kiến trúc phần mềm ;
- về giao thức HTTP/HTTPS ;
- về những điều cơ bản về Maven ;
- về servlet (chúng tôi đang viết một ứng dụng web đơn giản) ;
- về các thùng chứa servlet .
Lịch sử của MVC
Ý tưởng về MVC được Trygve Reenskaug hình thành khi làm việc tại Xerox PARC vào cuối những năm 70. Vào thời đó, không thể làm việc với máy tính nếu không có bằng cấp học thuật và thường xuyên nghiên cứu lượng tài liệu đồ sộ. Vấn đề mà Reenskaug đã giải quyết cùng với một nhóm các nhà phát triển rất mạnh là đơn giản hóa sự tương tác của người dùng bình thường với máy tính. Cần phải tạo ra các công cụ, một mặt, cực kỳ đơn giản và dễ hiểu, mặt khác, giúp quản lý máy tính và các ứng dụng phức tạp. Reenskaug làm việc trong nhóm phát triển máy tính di động "dành cho trẻ em mọi lứa tuổi" - Dynabook, cũng như ngôn ngữ SmallTalk dưới sự chỉ đạo của Alan Kay. Chính tại thời điểm đó, các khái niệm về giao diện thân thiện đã được đặt ra. Công việc của Reenskaug với nhóm của ông đã ảnh hưởng rất lớn đến sự phát triển của lĩnh vực CNTT. Hãy để chúng tôi trình bày một sự thật thú vị không liên quan trực tiếp đến MVC nhưng minh họa tầm quan trọng của những phát triển đó. Năm 2007, sau buổi giới thiệu iPhone của Apple, Alan Kay đã nói: “Khi Macintosh ra mắt, Newsweek đã hỏi tôi nghĩ gì về nó. Tôi đã nói: đây là chiếc máy tính cá nhân đầu tiên đáng bị chỉ trích. Sau bài thuyết trình, Steve Jobs bước tới và hỏi: iPhone có đáng bị chỉ trích không? Và tôi nói, hãy làm nó dài 5 x 8 inch và bạn sẽ chinh phục được thế giới.” Ba năm sau, vào ngày 27 tháng 1 năm 2010, Apple giới thiệu iPad 9,7 inch. Tức là Steve Jobs đã làm theo lời khuyên của Alan Kay gần như theo đúng nghĩa đen. Dự án mà Rennskaug thực hiện kéo dài 10 năm. Và ấn phẩm đầu tiên về MVC từ những người tạo ra nó đã được xuất bản thêm 10 năm sau đó. Martin Fowler, tác giả của một số cuốn sách và bài viết về kiến trúc phần mềm, đề cập rằng ông đã học MVC từ phiên bản hoạt động của SmallTalk. Do không có thông tin về MVC từ nguồn chính trong một thời gian dài, cũng như vì một số lý do khác, nên đã xuất hiện một số lượng lớn các cách hiểu khác nhau về khái niệm này. Kết quả là nhiều người coi MVC là một sơ đồ hoặc mẫu thiết kế. Ít phổ biến hơn, MVC được gọi là mẫu tổng hợp hoặc sự kết hợp của một số mẫu hoạt động cùng nhau để triển khai các ứng dụng phức tạp. Nhưng trên thực tế, như đã nói trước đó, MVC chủ yếu là một tập hợp các ý tưởng/nguyên tắc/phương pháp kiến trúc có thể được triển khai theo nhiều cách khác nhau bằng cách sử dụng nhiều mẫu khác nhau... Tiếp theo, chúng ta sẽ cố gắng xem xét các ý tưởng chính được nhúng trong khái niệm MVC.MVC là gì: ý tưởng và nguyên tắc cơ bản
- VC là tập hợp các ý tưởng và nguyên tắc kiến trúc để xây dựng các hệ thống thông tin phức tạp có giao diện người dùng;
- MVC là từ viết tắt của Model-View-Controller.
Bước 1: Tách logic nghiệp vụ của ứng dụng khỏi giao diện người dùng
Ý tưởng chính của MVC là bất kỳ ứng dụng nào có giao diện người dùng đều có thể được chia thành 2 mô-đun: một mô-đun chịu trách nhiệm triển khai logic nghiệp vụ của ứng dụng và giao diện người dùng. Mô-đun đầu tiên sẽ triển khai chức năng chính của ứng dụng. Mô-đun này sẽ là cốt lõi của hệ thống, trong đó mô hình miền ứng dụng được triển khai. Trong khái niệm MVC, mô-đun này sẽ là chữ cái M của chúng tôi, tức là người mẫu. Mô-đun thứ hai sẽ triển khai toàn bộ giao diện người dùng, bao gồm hiển thị dữ liệu cho người dùng và logic tương tác của người dùng với ứng dụng. Mục đích chính của sự tách biệt này là để đảm bảo rằng phần cốt lõi của hệ thống (Mô hình theo thuật ngữ MVC) có thể được phát triển và thử nghiệm một cách độc lập. Kiến trúc ứng dụng sau khi phân chia như vậy sẽ như sau:Bước 2. Sử dụng mẫu Observer, đạt được tính độc lập cao hơn nữa của mô hình cũng như đồng bộ hóa giao diện người dùng
Ở đây chúng tôi theo đuổi 2 mục tiêu:- Đạt được sự độc lập lớn hơn của mô hình.
- Đồng bộ hóa giao diện người dùng.
Bước 3. Chia giao diện thành View và Controller
Chúng tôi tiếp tục chia ứng dụng thành các mô-đun, nhưng ở cấp độ phân cấp thấp hơn. Ở bước này, giao diện người dùng (đã được tách thành một mô-đun riêng ở bước 1) được chia thành dạng xem và bộ điều khiển. Thật khó để vẽ một ranh giới chặt chẽ giữa chế độ xem và bộ điều khiển. Nếu chúng ta nói rằng khung nhìn là những gì người dùng nhìn thấy và bộ điều khiển là cơ chế mà qua đó người dùng có thể tương tác với hệ thống thì có một số mâu thuẫn. Các nút điều khiển, chẳng hạn như các nút trên trang web hoặc bàn phím ảo trên màn hình điện thoại, về cơ bản là một phần của bộ điều khiển. Nhưng chúng cũng hiển thị với người dùng như bất kỳ phần nào của chế độ xem. Ở đây chúng ta đang nói nhiều hơn về phân chia chức năng. Nhiệm vụ chính của giao diện người dùng là đảm bảo sự tương tác của người dùng với hệ thống. Điều này có nghĩa là giao diện chỉ có 2 chức năng:- hiển thị và hiển thị thuận tiện các thông tin về hệ thống tới người dùng;
- nhập dữ liệu và lệnh của người dùng vào hệ thống (truyền lên hệ thống);
- Theo nguyên tắc của MVC, hệ thống cần được chia thành các mô-đun.
- Mô-đun quan trọng và độc lập nhất phải là mô hình.
- Mô hình là cốt lõi của hệ thống. Bạn cần có khả năng phát triển và thử nghiệm nó một cách độc lập với giao diện.
- Để làm được điều này, ở bước đầu tiên của việc phân tách hệ thống, bạn cần chia nó thành mô hình và giao diện.
- Tiếp theo, bằng cách sử dụng mẫu Observer, chúng tôi củng cố tính độc lập của mô hình và đạt được sự đồng bộ hóa giao diện người dùng.
- Bước thứ ba là chia giao diện thành bộ điều khiển và khung nhìn.
- Tất cả những gì cần thiết để nhập thông tin từ người dùng vào hệ thống đều vào bộ điều khiển.
- Tất cả những thông tin đầu ra từ hệ thống tới người dùng đều được hiển thị.
GO TO FULL VERSION