12/08/2018, 14:10

Kiến trúc của Ruby on Rails

Kiến trúc của RoR có những đặc điểm: Kiến trúc MVC Representational Sate Transfer (REST) cho các web services Hỗ trợ nhiều hệ quản trị cơ sở dữ liệu lớn như MySQL, Oracle, MS SQL, - - PostgreSQL… Ngôn ngữ script Ruby được viết bên phía Server Sử dụng các quy ước thay vì phải cấu ...

Kiến trúc của RoR có những đặc điểm:

  • Kiến trúc MVC
  • Representational Sate Transfer (REST) cho các web services
  • Hỗ trợ nhiều hệ quản trị cơ sở dữ liệu lớn như MySQL, Oracle, MS SQL, - - PostgreSQL…
  • Ngôn ngữ script Ruby được viết bên phía Server
  • Sử dụng các quy ước thay vì phải cấu hinh
  • Có các bộ sinh script để tự động thực hiện các task
  • Tương ứng với các đặc điểm trên RoR gồm các thành phần sau:
  • Action Mailer
  • Action Pack
  • Action Controller
  • Action Dispatcher
  • Action View
  • Active Model
  • Active Record
  • Active Resource
  • Active Support
  • Railties

Dưới đây là hình vẽ mô tả kiến trúc tổng quan của RoR: Rubya1.png

Action Mailer

Mô đun này chịu trách nhiên cung cấp các dịch vụ email. Nó xử lý các email đến và cho phép tao mới các email. Mô đun này có thể xử lý từ những email text đơn giản đến những email có các định dạng phức tạp. Action Mailer được kế thừa từ Action Controller, nó cung cấp các phương thức để tao email với các template cũng giống như Action View sử dụng nó để render các trang lên trình duyệt.

** Action Pack** Mô đun Action Pack cung cấp các lớp ở tầng controller và view trong mô hình MVC. Những mô đun này tiếp nhận request từ client và sau đó ánh xạ chúng đến các action tương ứng. những action này được định nghĩa trong tầng controller và sau đó các action này sẽ render view hiển thị lên trình duyệt. Action Pack được chia thành 3 mô đun con, đó là:

Action Dispatch: xử lý routing các request, nó parse các request và xử lý một vài quá trình liên quan đến giao thức HTTP như xử lý cookies, session… Action Controller: Sau khi Action Dispatch xử lý request nó sẽ routing các request đến các controller tương ứng, Mô đun này cung cấp các base controller tất để các controller khác có thể kế thừa từ nó. Action Controller chứa các action để điều khiển model và view, thêm vào đó nó quản lý các session người dùng , luồng chảy ứng dụng, caching, mô đun helper và các thực thi các bộ lọc trong các quá trình tiền xử lý. Action View: Được gọi bởi Action Controller. Nó render các view khi có yêu cầu, Action View cung cấp các master layouts, templates và các view helpers , các thành phần này hỗ trợ việc sinh tự động ra phần khung cho các trang HTML hay các định dạng khác. Có 3 template trong Rails là : rhtml, rxml và rjs. Định dạng rhtml sinh ra các view HTML cho người dùng có nhúng thêm các đoạn code Ruby (ERB), rxml được sử dụng để xây dựng các tài liệu XML, rjs cho phép tạo ra các đoạn mã động JavaScript để thực thi các AJAX functionality.

Active Model

Định nghĩa interface giữa mô đun Action Pack và Active Record. Giao diện Action Record có thể được dùng bên ngoài Rails, cung cấp các chức năng Object – relational mapping (ORM). ORM là một kỹ thuật lập trình giúp chuyển đổi dữ liệu giữa các thệ thống không tương thích được viết bởi các ngôn ngữ hướng đối tượng

Active Record

Được sử dụng để quản lý dữ liệu trong các cơ sở dữ liệu quan hệ thông qua các đối tượng. Trong RoR mô đun Active Record cung cấp object – relational mapping đến các class. Mô đun này xây dựng nên tầng model,giúp kết nối các bảng database với các lớp tương ứng trong các lớp Ruby. Rails cung cấp các công cụ để thực thi chức năng CRUD mà không phải cấu hình. CRUD cho phép tạo mới, đọc, cập nhật và xóa các bản ghi trong cơ sở dữ liệu thông qua các đối tượng Ruby. Thêm vào đó, nó cũng cung cấp các khả năng tìm kiếm thông minh và khả năng tạo ra các mối quan hệ hay các liên kết giữa các model. Active Records có những quy ước rất chặt chẽ bắt các developer phải tuân thủ theo như : phải đặt tên lớp, các bảng, các khóa chính và khóa ngoài như thế nào.

Mô đun này được sử dụng để tạo ra các lớp trong tầng Model, chúng chứa đựng phần logic nghiệp vụ, xử lý validate và các mối quan hệ, ánh xạ đến các bảng và hỗ trợ kết nối đến các hệ quản trị cơ sở dữ liệu khác nhau.

Active Resource

Quản lý các kết nối giữa RESTful web services và các đối tượng nghiệp vụ, làm giảm số lượng code cần viết để ánh xạ đến các tài nguyên. Active Resource ánh xạ model class đến các tài nguyên REST ở xa cũng giống như cách mà Active Record ánh xạ từ model class đến các bảng cơ sở dữ liệu. Nó cũng cung cấp các cơ chế proxy giữa Active Resource (client) và một RESTful service. Khi một có một request cần truy cập đến các tài nguyên ở xa, một REST XML được sinh ra và được truyền đi, sau đó kết quả sẽ được parse sang các đối tượng Ruby.

Active Support

Là một bộ tiện ích và các thư viện chuẩn của Ruby, nó hữu ích cho quá trình phát triển ứng dụng vì nó bao gồm rất nhiều sự hỗ trợ cho các multi-bytes string, internationalization, time zones và testing.

Railties

Đảm nhiệm kết nối tất các các mô đun ở trên với nhau, thêm vào đó nó xử lý quá trình mồi cho ứng dụng, giao diện dòng lệnh, và cung cấp bộ sinh code của Rails. Rake là một trong những lệnh được sử dụng để thực hiện các task database, triển khai, tài liệu, testing và cleanups.

0