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

18 tháng 10, năm trước – 1746 lượt xemHọc lập trình Ruby on Rails để xin việc làm tốtRuby on Rails là framework được giới startup rất tin tưởng sử dụng.

1. Tổng quan

Ruby on Rails ( RoR ) là một web framework được viết bằng ngôn từ Ruby và tổng thể các ứng dụng trong Rails sẽ được viết bằng Ruby. Ruby on Rails được tạo ra để tương hỗ các lập trình viên việc tăng trưởng các ứng dụng nền web một cách nhanh nhất hoàn toàn có thể .Rails framework tận dụng các đặc thù của ngôn từ Ruby. Yukishiro Matzumoto viết ra ngôn từ này vào năm 1995, nó khá giống với các ngôn từ thông dịch khác như Perl, Eiffel, Python …. Ruby là ngôn từ script, định nghĩa kiểu động và là một ngôn từ hướng đối tượng người dùng, nó được phong cách thiết kế với một cú pháp trong sáng, tạo cảm xúc dễ đọc, và viết code ngắn gọn nhất hoàn toàn có thể đối người dùng, ví dụ như nó không cần dấu chấm phẩy khi kết thúc câu lệnh, không cần các dấu ngoặc đơn khi khai báo các phương pháp, có những đoạn code thậm chí còn được viết giống như việc tất cả chúng ta viết tiếng anh vậy .

Ruby on Rails được tạo ra như là một câu trả lời đối với các web frameworks khác như J2EE, .NET. Để quá trình phát triển phần mềm diễn ra nhanh hơn, RoR sử dụng các qui ước triệt để và đảm nhận xử lý rất nhiều các task khiến người lập trình viên không phải bận tâm về nó nữa như : mail management, object- database mappers, file structures, code generation…, đây chính là hai đặc điểm nổi bât nhất của RoR, điều này không chỉ giúp các lập trình viên viết code ít hơn, phát triển ứng dụng nhanh hơn mà còn làm ứng dụng dễ hiểu và dễ bảo trì hơn.

Bạn đang đọc: Kiến trúc của Ruby on Rails

Tham gia khóa học lập trình Ruby on Rails tại TechMaster. Trung tâm sẽ bảo vệ việc làm code web tại công ty Nhật ở Nước Ta cho học viên tốt nghiệp. Nội dung thêm mới, nâng cấp cải tiến 40 % .

2. Mô hình MVC

RoR sử dụng các mẫu kiến trúc Model – View – Controller ( MVC ) để tăng cường năng lực bảo dưỡng và tăng trưởng của ứng dụng. MVC được cho phép tất cả chúng ta chia ứng dụng thành các tầng sử lý logic, nhiệm vụ và giao diện người dùng một cách rõ ràng, điều này cũng gúp cho việc kiểm thử và tái sử dụng code được dễ ràng hơn .

2.1 Model

Tầng Model giải quyết và xử lý các nhiệm vụ của ứng dụng và trực tiếp thao tác với tài liệu. Trong RoR, tầng Model thường được sử dụng để tương tác với các thành phần tương ứng với chúng trong cơ sở tài liệu và validate tài liệu .

2.2 View

Tầng view hiển thị giao diện người dùng, trong RoR các view là các file HTML được nhúng cùng với các đoạn mã Ruby. Các đoạn mã Ruby được nhúng trong HTML file là khá đơn thuần, thường chỉ gồm các vòng lặp và các lệnh điều kiện kèm theo rẽ nhánh, nó được sử dụng để hiện thị dữ liệu lên form của view .

2.3 Controller

Controller tương tác với Mã Sản Phẩm và view. Các request đến từ trình duyệt sẽ được giải quyết và xử lý bởi controller, sau đó controller hoàn toàn có thể sẽ tương tác với Model để lấy tài liệu sau đó trả về cho view để hiển thị thông tin .

3. Kiến trúc RoR

Kiến trúc của RoR có những đặc thù sau :

  • 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

Học lập trình web bằng Ruby on RailsHình 1: Kiến trúc tổng quan của RoR

3.1 Action Mailer

Mô đun này chịu trách nhiên phân phối các dịch vụ email. Nó giải quyết và xử lý các email đến và được cho phép tao mới các email. Mô đun này hoàn toàn có thể giải quyết và xử lý từ những email text đơn thuần đến những email có các định dạng phức tạp. Action Mailer được thừa kế từ Action Controller, nó cung ứng các phương pháp để 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 .

3.2 Action Pack

Mô đun Action Pack phân phối các lớp ở tầng controller và view trong quy mô MVC. Những mô đun này đảm nhiệm 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.

3.3 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

3.4 Active Record

Được sử dụng để quản trị tài liệu trong các cơ sở tài liệu quan hệ trải qua các đối tượng người tiêu dùng. Trong RoR mô đun Active Record cung ứng object – relational mapping đến các class. Mô đun này thiết kế xây dựng nên tầng Model, giúp liên kết các bảng database với các lớp tương ứng trong các lớp Ruby. Rails phân phối các công cụ để thực thi tính năng CRUD mà không phải thông số kỹ thuật. CRUD được cho phép tạo mới, đọc, update và xóa các bản ghi trong cơ sở tài liệu trải qua các đối tượng người dùng Ruby. Thêm vào đó, nó cũng cung ứng các năng lực tìm kiếm mưu trí và năng lực tạo ra các mối quan hệ hay các link giữa các Model. Active Records có những quy ước rất ngặt nghèo 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 tiềm ẩn phần logic nhiệm vụ, giải quyết và xử lý validate và các mối quan hệ, ánh xạ đến các bảng và tương hỗ liên kết đến các hệ quản trị cơ sở tài liệu khác nhau .

3.5 Active Resource

Quản lý các liên kết giữa RESTful web services và các đối tượng người tiêu dùng nhiệm 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ạ Mã Sản Phẩm 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ở tài liệu. Nó cũng phân phối các chính sách proxy giữa Active Resource ( client ) và một RESTful service. Khi một có một request cần truy vấn đến các tài nguyên ở xa, một REST XML được sinh ra và được truyền đi, sau đó tác dụng sẽ được parse sang các đối tượng người tiêu dùng Ruby .

3.6 RESTful Architecture

REST viết tắt của Representational State Transfer. REST là một sự thay thế sửa chữa cho web service, chứ SOAP và WSDL. RESTful web service thích hợp khi mà các service web có đặc thù phi trạng thái, bandwith bị số lượng giới hạn ( Nó rất tương thích cho các thiết bị mobile vì nó không sử dụng nhiều tài nguyên như thể các giao thức khác như SOAP )

3.7 Active Support

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

3.8 Railties

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

4. Triển khai, cài đặt kiến trúc RoR

Dưới đây là các sơ đồ UML mô tả các thành phần, giao diện, bộ kết nối của hệ thống

Học lập trình web bằng Ruby on RailsHình 2: Dynamic View Pakage DiagramHọc lập trình web bằng Ruby on RailsHình 3. Static View Page Diagram

5. Kết Luận

Vì Rails được thiết kế xây dựng bằng Ruby nên nó thừa kế những điểm mạnh và điểm yếu của ngôn từ này. Ruby là một ngôn từ script với cú pháp trong sáng, dễ đọc, dễ hiểu và là ngôn từ hướng đối tượng người tiêu dùng. Vì nó là ngôn từ thông dịch nên nó chạy chậm hơn các ngôn từ biên dịch khác nhứ Java, C + + hay C .Trong nhiều trường hợp, sự độc lạ một chút ít về vận tốc không phải là yếu tố đáng bận tâm nhưng khi mà ứng dụng web Giao hàng hàng triệu người dùng tại cùng một thời gian thì khi đó yếu tố hiệu năng lại là vẫn đề sống còn. Ruby không tương thích cho các ứng dụng yên cầu hiệu năng cao chính do nó được kiến thiết xây dựng không dùng cho việc tối ưu hóa vận tốc, nó được phong cách thiết kế với mục tiêu là đơn giản hóa, dễ sử dụng, và hoàn toàn có thể tăng trưởng ứng dụng một cách nhanh gọn .

Ruby không hỗ trợ tốt về thread, giống như các ngôn ngữ script khác, Ruby gặp khó khăn khi giải quyết các tiến trình có thời gian sống lâu, trong khi đó các ngôn ngữ như Java, C# được hỗ trợ về Thread rất tốt bởi vì chúng đã được tối ưu hóa các quá trình xử lý thread trong nhiều năm liền, một điểm yếu khác chính là vấn đề quản lý bộ nhớ, bộ thu gom rác của Ruby hoạt động không tốt như bộ thu gom rác của Java, bởi vì với Ruby,thậm chí bộ nhớ không có khái niệm về vùng nhớ Heap, và Stack nên việc giải phóng bộ nhớ chậm hơn các ngôn ngữ khác như Java, C,C++.

Một điều nữa, việc Rails tương hỗ cho các nhà tăng trưởng quá nhiều và bắt ứng dụng của tất cả chúng ta phải tuần theo những quy ước và quy mô MVC, theo đúng ý nghĩa tên của Framework “ on rails way ” cũng gây ra những mặt trái của nó, sẽ là khó khăn vất vả nếu tất cả chúng ta tăng trưởng tiếp một ứng dụng mà nó đã được kiến thiết xây dựng bằng một ngôn từ khác, với các cơ sở tài liệu đã có trước, với một quy mô khác bằng RoR .Mặc dù có một vài điểm yếu, nhưng tất cả chúng ta cũng phải thừa nhận những điểm mạnh mà RoR có được trong khi các framework khác thì không, kiến trúc RoR đã đồng ý hi sinh sự mềm dẻo trong khai báo các file thông số kỹ thuật bằng viêc tuân theo những quy ước nhằm mục đích tận dụng năng lực tương hỗ từ Framework, do vậy RoR tương thích cho việc tăng trưởng từ đầu các ứng dụng vừa và nhỏ, nhu yếu thời hạn tăng trưởng ngắn dễ bảo dưỡng, dễ đọc hiểu, không yên cầu hiệu năng cao .