- Chi phí rẻ
4.1.2.1 Server: Mô tả chi tiết các thành phần
4.1.2.1.a. Lớp xử lý nghiệp vụ (Business Logic Layer)
Lớp xử lý nghiệp vụ (BLL) chứa ba thành phần phục vụ cho việc tiếp nhận và xử lý request từ phía Client gửi đến. Kết quả được trả về từ BLL cho Client là kết quả hoàn chỉnh đã được xử lý đẹp và phù hợp cho từng request. Có hai đầu vào ra của lớp này được đặt ở hai thành phần: APIs và Controllers:
● APIs: đầu vào ra này là nơi tiếp nhận cũng như phản hồi lại những request từ phía Client
● Controllers: đầu vào ra này là nơi liên lạc nội bộ trong phía Server và liên lạc với lớp Truy xuất dữ liệu hay Data Access Layer (DAL) để yêu cầu truy vấn các dữ liệu cần thiết hoặc nhận dữ liệu kết quả. Từ đó, đóng gói dữ liệu trả
về.
4.1.2.1.a.1. Các thành phần
❖ APIs
APIs là một module chứa định nghĩa các cách gọi request được server hỗ trợ mà phía Client sẽ dùng thành phần HTTPClient để gọi.
❖ Routers
Mỗi router sẽ ứng với một controller và sẽ điều hướng riêng cho controller đó.
Lớp đối tượng Diễn giải
APIs Các lớp thuộc module API mà router này sẽ dùng Controller Controller mà nó sẽ điều hướng tới
Router Một router bắt buộc phải chứa hai đối tượng api và controller cùng với bốn phương thức HTTP: Post, Get, Put, Delete tương ứng với các thao tác CRUD dữ liệu (create-read-update-delete).
Router sẽ tiếp nhận request bằng bốn phương thức HTTP đã nêu
Quy ước kết hợp API của Router
Router sẽ tiếp nhận request thông qua dạng phương thức HTTP kết hợp với url. Url sẽ được cấu thành bởi các thành phần của module APIs và sẽ có định dạng chuẩn cho hầu hết các trường hợp:
/api-version/objects/actions
Trong đó:
● api-version: được lấy từ APIs.version, phiên bản API (v1, v2, …)
● objects: được lấy từ APIs.objects.<tên đối tượng>
● actions: được lấy từ APIs.actions.<tên hành động>
❖ Controllers
Lớp đối tượng Diễn giải
Model Các model tương ứng mà Controller này cần truy xuất dữ liệu Controller Một controller có thể gửi yêu cầu tới các controller khác để
được hỗ trợ xử lý. Do đó, lớp Controller sẽ lại giữ liên kết đến các controller mà nó cần. Tương tự, với các model cũng vậy.
4.1.2.1.b. Lớp truy xuất dữ liệu (Data Access Layer)
Lớp truy xuất dữ liệu (DAL) tập hợp hai thành phần chính là Models và Database. DAL tiếp nhận yêu cầu truy xuất dữ liệu từ các Controllers thông qua đầu vào ra được đặt ở Models. Ứng với mỗi thành phần, nhiệm vụ của chúng sẽ như sau:
● Models: gồm các model ứng với từng đối tượng dữ liệu. Model tiếp nhận yêu cầu, gọi xuống Database để truy vấn dữ liệu thơ (raw data), sau đó xử lý sơ bộ và trả về cho Controller tương ứng.
● Database: được nắm bởi một hệ quản trị cơ sở dữ liệu (Database Management System). Ở phạm vi đồ án này, nhóm sử dụng DBMS PostgreSQL.
4.1.2.1.b.1. Các thành phần
❖ Models
Thành phần Models tập hợp nhiều đối tượng Model. Mỗi model có chức năng ứng với một bảng trong cơ sở dữ liệu.
Lớp đối tượng Diễn giải
Model Lớp Model sẽ giữ các thuộc tính tương ứng với từng thuộc trong bảng mà nó liên kết trong database (properties). Đồng thời cũng sẽ giữ các quan hệ tới các model khác tương ứng với các quan hệ trên cơ sở dữ liệu (associations).
Mọi đối tượng model đều bắt buộc phải có phương thức Initialize để khởi tạo thuộc tính và quan hệ. Ngồi ra, nó cịn có quan hệ phụ thuộc với Controller để gửi trả kết quả truy xuất về cho controller tương ứng.
❖ Database
Đây là thành phần lưu trữ tất cả thơng tin cơ sở dữ liệu. Nó sẽ được một hệ quản trị cơ sở dữ liệu (với đồ án này là PostgreSQL, sẽ được trình bày ở phần sau) nắm giữ. Hỗ trợ thực hiện các truy vấn và thao tác trực tiếp lên cơ sở dữ liệu.