III. Các công nghệ sử dụng
III.1. Tổng quan về Ruby on Rails
III.1.3. Kiến trúc mô hình MVC trong Ruby on Rails
Vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox PARC ở Palo Alto. Sự ra đời của giao diện đồ họa (Graphical User Interface - GUI) và lập trình hướng đối tượng (Object Oriented Programming - OOP) cho phép lập trình viên làm việc với những thành phần đồ họa như những đối tượng đồ họa có thuộc tính và phương thức riêng của nó. Không dừng lại ở đó, những nhà nghiên cứu ở Xerox PARC còn đi xa hơn nữa khi họ cho ra đời cái gọi là kiến trúc MVC (viết tắt của Model – View – Controller).
Kiến trúc này ngày càng được phát triển và hoàn thiện nhằm giải quyết các vấn đề phát sinh cũng như các giải pháp cho quá trình phát triển phần mềm.
Kiến trúc mô hình MVC
Trong kiến trúc MVC, một đối tượng đồ họa người dùng (GUI Component) bao gồm 3 thành phần cơ bản: Model, View, và Controller. Model có trách nhiệm đối với toàn bộ dữ liệu cũng như trạng thái của đối tượng đồ họa. View chính là thể hiện trực quan của Model, hay nói cách khác chính là giao diện của đối tượng đồ họa. Và Controller điều khiển việc tương tác giữa đối tượng đồ họa với người sử dụng cũng như những đối tượng khác.
Trang 23 Hình 7: Mô hình MVC
Khi người sử dụng hoặc những đối tượng khác cần thay đổi trạng thái của đối tượng đồ họa, nó sẽ tương tác thông qua Controller của đối tượng đồ họa.
Controller sẽ thực hiện việc thay đổi trên Model. Khi có bất kỳ sự thay đổi nào ở xảy ra ở Model, nó sẽ phát thông điệp (broadcast message) thông báo cho View và Controller biết. Nhận được thông điệp từ Model, View sẽ cập nhật lại thể hiện của mình, đảm bảo rằng nó luôn là thể hiện trực quan chính xác của Model. Còn Controller, khi nhận được thông điệp từ Model, sẽ có những tương tác cần thiết phản hồi lại người sử dụng hoặc các đối tượng khác.
Trang 24 Hình 8: Mô hình tuần tự của MVC
Đặc điểm của mô hình MVC
Lợi ích quan trọng nhất của mô hình MVC là nó giúp cho ứng dụng dễ bảo trì, module hóa các chức năng, và được xây dựng nhanh chóng. MVC tách các tác vụ của ứng dụng thành các phần riêng lẽ model, view, controller giúp cho việc xây dựng ứng dụng nhẹ nhàng hơn. Dễ dàng thêm các tính năng mới, và các tính năng cũ có thể dễ dàng thay đổi. MVC cho phép các nhà phát triển và các nhà thiết kế có thể làm việc đồng thời với nhau. MVC cho phép thay đổi trong 1 phần của ứng dụng mà không ảnh hưởng đến các phần khác. Sở dĩ như vậy vì kiến trúc MVC đã tách biệt (decoupling) sự phụ thuộc giữa các thành phần trong một đối tượng đồ họa, làm tăng tính linh động (flexibility) và tính tái sử dụng (reusebility) của đối tượng đồ họa đó. Một đối tượng đồ họa bấy giờ có thể dễ dàng thay đổi giao diện bằng cách thay đổi thành phần View của nó trong khi cách thức lưu trữ (Model) cũng như xử lý (Controller) không hề thay đổi. Tương tự, ta có thể thay đổi cách thức lưu trữ (Model) hoặc xử lý (Controller) của đối tượng đồ họa mà những thành phần còn lại vẫn giữ nguyên.
Trang 25 Mô hình MVC trong Ruby on Rails
Ruby on Rails đã phân chia cấu trúc ứng dụng của mình thành 3 phần theo mô hình MVC: Model, View, Controller. Trong đó Model đại diện cho dữ liệu, View đại diện cho giao diện người dùng và Controller điều khiển các hành động. Đối với Ruby on Rails, sức mạnh chủ yếu nằm ở sự kết hợp các yếu tố trong mô hình MVC.
Quá trình hoạt động của MVC trong Ruby on Rails
- Người dùng tương tác với giao diện và gây ra một sự kiện (ví dụ như submit một form đăng ký).
- Controller nhận được đầu vào dữ liệu từ sự kiện (ví dụ như dữ liệu được gửi từ một form)
- Controller truy cập đến Model, và cập nhật nó theo một cách nào đó (ví dụ như tạo một người dùng mới từ những dữ liệu được gửi từ form).
- Controller sẽ làm ra một giao diện cập nhật từ Model đến View (ví dụ như màn hình chào đón người dùng mới).
- Quá trình sẽ được lặp đi lặp lại cho từng sự tương tác của người sử dụng.
Hình 9: Cấu trúc hoạt động của mô hình MVC.
Trang 26 Các lớp mô hình MVC trong Ruby on Rails
- Model: Trong Ruby on Rails, Model đại diện cho cơ sở dữ liệu. Với mỗi ứng dụng Ruby on Rails thường được tạo thành bởi nhiều Model, mỗi Model sẽ tương ứng với một bảng trong cơ sở dữ liệu.
- Ví dụ một Model có tên là User chính là một bảng trong cơ sở dữ liệu có tên là Users. Model User sẽ chịu trách nhiệm cho tất cả những truy cập đến bảng Users trong cơ sở dữ liệu, bao gồm khởi tạo, đọc, cập nhật và xóa. Cho nên nếu như lập trình viên muốn làm việc với table, chẳng hạn như tìm kiếm ai đó theo tên thì chỉ cần thao tác với Model thông qua dòng lệnh:
User.find_by_name(‘Linus’)
Để làm được điều này, Ruby on Rails đã sử dụng tiện ích Active Record được tích hợp sẵn để tương tác với database qua các chức năng kiểm tra hợp lệ dữ liệu (validation), quan hệ liên kết giữa các table (association) và nhiều hơn nữa.
- Controller: là lớp chủ đạo trong mô hình MVC. Trong Ruby on Rails, Controller cho phép các yêu cầu từ bên ngoài, thực hiện các xử lý cần thiết và kiểm soát các lớp View để hiển thị kết quả. Công việc của Controller là yêu cầu thông tin từ Model và sau đó sẽ gửi lại thông tin đến Model để lưu vào cơ sở dữ liệu. Có thể hiểu một cách đơn giản, Controller sẽ nhận những yêu cầu từ người sử dụng như khởi tạo, đọc, cập nhật, và xóa một đối tượng trong Model. Để trả lời những yêu cầu đó, Controller sẽ gửi những điều khiển bằng cách sử dụng tiện ích Action Controller đến Model đồng thời thiết lập các biến được sử dụng trong View. Kết thúc tiến trình, Controller sẽ hiển thị kết quả của những điều khiển trên View. Thông thường Controller sẽ quản lý một khu vực của ứng dụng.
- Ví dụ người sử dụng muốn đăng ký thành viên mới sử dụng ứng dụng.
Điều đầu tiên người sử dụng sẽ gửi yêu cầu khởi tạo thành viên từ form
Trang 27 đăng ký. Tiếp theo đó, Controller sẽ tiếp nhận yêu cầu khởi tạo này và gửi điều khiển đến Model qua dòng lệnh sau:
def create
# logic to create a new user end
Model sẽ kiểm tra trước khi lưu vào cơ sở dữ liệu và phản hồi lại Controller. Kết thúc tiến trình, kết quả sẽ được hiển thị trên View thông qua các biến đã được cài đặt bởi Controller.
- View: là phần nhìn thấy được trong mô hình MVC. Trong các ứng dụng Ruby on Rails, View là khuôn mẫu chứ nội dung của thẻ HTML được hiển thị lên trình duyệt. Nói chung View sẽ sử dụng tiện ích Action View để định dạng và trình bày các đối tượng Model ra ngoài màn hình ứng dụng.
- Ví dụ sau khi đăng ký thành công người dùng mới và đã được Model lưu vào cơ sở dữ liệu, việc tiếp theo Model sẽ gửi thông tin đến Controller và thông qua Action View của View để hiển thị câu chào Welcome người dùng mới.
III.2. Hệ điều hành iOS