1. Nếu bạn từng đi uống sinh tố, thì MVC chỉ là chuyện nhỏ

Model – View – Controller (MVC) framework là một phần trọng yếu trong việc thiết kế web hiện đại. Cứ thử bước vào một phòng làm việc của các lập trình viên xem, bạn sẽ bị “dội bom” bởi hàng đống thứ “ghê gớm” như là Ruby on Rails, Angular hay Django.

Nhìn rộng hơn, logic của mô hình MVC được sử dụng để mô tả quá trình làm web của đại đa số các ngôn ngữ như PHP, Ruby, Python hay JavaScript.

Tuy nhiên...

Nhiều nhà lập trình web dễ dàng phá đảo được thế giới kỳ bí này. Nhưng nếu mấy ông lập trình viên khác “ngỏ ý” muốn xem thử code của họ, họ sẽ cho ngay một bài thuyết trình dài cả tiếng toàn những giáo điều quen thuộc. 

Mà rõ ràng là mấy thứ đấy không giúp ích được gì! Trong khi mô hình MVC hiện tại hoàn toàn có thể được giải thích dễ dàng thông qua một ly cà phê đen đá. Bạn từng đi cà phê tán dóc với bạn bè rồi chứ? Nếu rồi thì bạn có thể hiểu được cấu trúc của các ứng dụng web hiện đại rồi đấy.

        Mô hình MVC là gì?

MVC gồm 3 thành phần bao gồm: 

  • Model: một cấu trúc dữ liệu chắc chắn, chuẩn bị dữ liệu để cung cấp cho Controller
  • View: nơi hiển thị dữ liệu cho người dùng theo cách mà người dùng có thể dễ dàng hiểu và tương tác được
  • Controller: nhận lệnh từ người dùng, gửi lệnh đến Model để lấy hay cập nhật dữ liệu, rồi truyền lệnh đến View để cập nhật giao diện hiển thị cho đúng với dữ liệu đã cập nhật.

Trên sơ đồ thì nó sẽ như thế này

Nhìn chán nhỉ? Làm ly cà phê bổ não để bắt đầu nào.

Một anh chàng lập trình web “chiếu mới” bước vào quán...

Thước phim bắt đầu nhé. Bạn bước vào quán vào một buổi sáng đẹp trời nhưng đông đúc. Bạn luồn lách qua đám đông để gọi bà chủ quán: “Cho một ly cà phê đen đá (không đường) cô ơi”.

Lúc này, bạn là người dùng (user) và “ly cà phê đen đá” là yêu cầu từ phía người dùng (user request). Đối với bạn, ly cà phê đen đá là thứ đồ uống ưa thích, ngon tuyệt giúp bừng tỉnh cho một ngày mới coding năng động.

Bà chủ quán gật đầu xác nhận. Đối với bà chủ quán, ly cà phê đen đá không chỉ ngon lành đạm vị, mà còn là một mớ quy trình các bước:

  1. Lấy cái ly
  2. Cho đá vào
  3. Để phin cà phê lên trên
  4. Cho bột cà phê và nước sôi vào
  5. Khi đủ lượng cà phê, khuấy đều lên
  6. Đưa ly cà phê cho bạn
  7. Thanh toán

Bộ não của bà chủ quán lúc này đóng vai trò Controller. Kể từ thời điểm bạn nói “một ly cà phê đen đá” bằng tiếng Việt và bà chủ quán hiểu được, công việc bắt đầu. Cà phê, nước mía hay cocktail thì cũng như nhau, nhưng nguyên liệu thì hoàn toàn khác biệt. Bà chủ quán chỉ có thể sử dụng những công cụ và nguyên liệu của quán, và những công cụ đó sẽ đóng vai trò Model, bao gồm:

  • Đôi tay của bà chủ
  • Các nguyên liệu pha chế (bột cà phê, nước …)
  • Đá lạnh
  • Các ly ly để đựng đồ uống

Rồi bạn thắc mắc: nếu ở một cái quán sang trọng hơn người ta dùng trợ lý robot thì sao? Hay máy pha cà phê tự động? Không quan trọng “bà chủ quán” cụ thể là ai hay thứ gì, điều quan trọng là chỉ được sử dụng những nguyên liệu có sẵn (của quán).

Những nguyên liệu và công cụ này, thông qua một loạt các bước, đã trở thành ly cà phê đen đá mát lạnh đến tay bạn. Ly cà phê đen đá lúc này đóng vai trò View. View được làm nên từ những công cụ, nguyên liệu trong Model, được chế biến và bàn giao tới tay bạn thông qua Controller (trong trường hợp này chính là bộ não của bà chủ quán).

Tổng hợp các việc làm Java, Javascript trên vietnamworks.com

  1. Bài học rút ra

  • Bạn muốn gọi ly nữa? Rõ ràng là bạn không thể hét to vào cái ly đã hết (cái View) được, bạn phải gọi bà chủ quán Controller.\
  • Thời gian từ lúc bà chủ quán nhận được yêu cầu tới khi làm xong phải tối thiểu nhất có thể. Đó chính là “skinny controller”, có thể hiểu là controller nên chứa tối thiểu lượng logic cần xử lý và được quản lý lượng model nhiều nhất có thể. Một bà chủ quán chuyên nghiệp không chỉ ghi nhớ chính xác cách làm, mà còn chuẩn bị đầy đủ công cụ và nguyên liệu để không mất nhiều thời gian tìm kiếm và chế biến.
  • Vậy nếu bà chủ quán tống hết nguyên liệu vào mồm bạn rồi bảo bạn tự pha lấy mà uống? Đừng làm như thế. Do vậy, bạn cần phải để việc xử lý logic trên model nhiều nhất có thể, và tối giản hóa view. Nói cách khác, được phục vụ tận miệng thì vẫn thích hơn là phải tự lăn vào bếp.

  • Nếu bạn gọi 1 lon bia, bà chủ chắc chẳng phải làm gì nhiều, bật nắp lon bia rồi đưa bạn là xong. Nhưng mà rõ ràng bạn vẫn phải gọi bà chủ quán, vì lon bia không thể tự nhảy ra trước mặt bạn được.
  1. Quay trở lại vấn đề lập trình web

Đã để trí tưởng tượng bay cao cùng thước phim ly cà phê đen đá rồi, giờ đối chiếu với quy trình phát triển một ứng dụng web hiện đại nào.

  • Người dùng tạo ra một request (yêu cầu) thông qua đường dẫn, ví dụ /home
  • Controller nhận yêu cầu và đưa ra một mệnh lệnh để xử lý yêu cầu đó. Nếu lệnh thực thi với phần View thì cập nhật lại màn hình hiển thị, với Model thì để trình diễn logic. Giả sử yêu cầu của người dùng có yếu tố logic
  • Model thực thi phần logic lấy từ một cơ sở dữ liệu nào đó và gửi trả lại phản hồi theo hướng dẫn từ Controller
  • Controller truyền dữ liệu này ra phần view và cập nhật lại giao diện cho người dùng.

Mọi yêu cầu đều phải đi qua Controller trước khi chuyển hóa thành lệnh thực thi cho View hay Model.

Tổng kết

Bất cứ khi nào bạn học một framework lập trình web mới, bạn sẽ bắt gặp mô hình MVC. Nói cách khác, một khi bạn đã lập trình dựa trên MVC, thì bất cứ framework mới nào cũng sẽ nằm trong “vùng an toàn” của bạn.

Tổng hợp việc làm IT - Software trên VietnamWorks
VietnamWorks InTECH
Theo codementor