Chương 1 Tổng quan Báo cáo đồ án tốt nghiệp Chương 2 CƠ SỞ LÝ THUYẾT 2.1 Tổng quan về Spring Boot Microservices là một kiến trúc cho phép xây dựng và triển khai các dịch vụ một cách độc lập. Với nền tảng trên ngôn ngữ Java, Spring Boot cho phép xây dựng và thực thi các microservices.1: Mô tả Spring Boot Spring Core Framework: Core container là nền tảng của toàn bộ hệ sinh thái Spring và bao gồm bốn thành phần: expression language, context, core, bean, [1] - Mô-đun expression language cung cấp một Expression Language (ngôn ngữ biểu thức) mạnh mẽ để cho truy vấn và tính toán các đối tượng trong lúc thực thi. - Context được xây dựng dựa trên Bean và Core và cho phép truy cập vào bất cứ đối tượng nào được định nghĩa trong phần cài đặt. - Mô-đun Core cung cấp các phần chính của khung (framework) bao gồm IoC (Inversion of Control) và DI (Dependency Injection).
- Mô-đun Bean chịu trách nhiệm tạo và quản lý các bean. Ưu điểm của Spring Boot: - Dễ dàng phát triển ứng dụng dựa trên Spring Application. - Giảm thiểu thời gian phát triển và tăng năng suất. - Dễ dàng tương tác với hệ sinh thái của Spring như Spring JDBC, Spring ORM, Spring Data, Spring Security… - Cung cấp server nhúng để phát triển và kiểm thử ứng dụng.
- Cung cấp công cụ CLI (Command Line Interface). 19 Chương 3 Phân tích và mô hình hóa yêu cầu Báo cáo đồ án tốt nghiệp - Cung cấp nhiều plugin để phát triển và kiểm thử ứng dụng Spring Boot một cách dễ dàng khi sử dụng Maven hoặc Gradle. Mục tiêu chính của Spring Boot [2] - Tránh sự phức tạp của cấu hình XML trong Spring - Dễ dàng phát triển ứng dụng Spring - Giảm thời gian phát triển ứng dụng - Cung cấp cách thức để bắt đầu một ứng dụng 2.1 Spring Boot Starter [3] Spring Boot Starter là một trong những chức năng chính và là một trong số những component của Spring Boot Framework. Khi phát triển ứng dụng web, chúng ta cần phải thêm rất nhiều sự phụ thuộc (dependencies) vào build file (pom.xml với Maven và build.grandle với Grandle).
Nhiệm vụ chính của Spring Boot Starter là gom nhóm những dependency thông thường hoặc những dependency có liên quan đến nhau vào một single dependencies. Khi thêm “spring-boot-starter-web” vào build file, Spring Boot Framework tự động tải những dependencies cần thiết và thêm chúng vào project classspath. 20 Chương 3 Phân tích và mô hình hóa yêu cầu Báo cáo đồ án tốt nghiệp Hình 2.2: Mô tả Spring Boot Starter 2.2 Spring Boot Auto Configurator Spring Boot Auto Configurator là một thành phần của Spring Boot Framework. Mục đích của Spring Auto Confugurator là giảm việc phải cấu hình cho ứng dụng Spring.
Khi sử dụng Spring Boot Framework, người phát triển không cần phải cấu hình XML cho ứng dụng mà Spring Boot Auto Configurator sẽ làm việc đó. Bên cạnh đó, Spring Boot còn làm giảm việc định nghĩa các annotation (chú thích). Khi sử dụng “@SpringBootApplication”, Spring Boot Auto Configurator sẽ tự động thêm những annotation cần thiết đến Java Class Byte Code.3: Mô tả Spring Boot Auto Configurator 21 Chương 3 Phân tích và mô hình hóa yêu cầu Báo cáo đồ án tốt nghiệp 2.3 Spring Boot CLI Spring Boot CLI (Command Line Interface) là một phần mềm của Spring Boot dùng để chạy và kiểm tra ứng dụng Spring Boot bằng command prompt 2.4 Spring Boot Actuator Hai chức năng chính của Spring Boot Actuator - Cung cấp EndPoints quản lý ứng dụng Spring Boot - Spring Boot Application Metrics Khi chạy ứng dụng bằng CLI, Spring Boot Actuator tự động cung cấp hostname là “localhost” với cổng mặc định là “8080” 2.5 Spring Web MVC Đây là mô-đun đầu tiên được nhóm Spring xây dựng để hỗ trợ các ứng dụng web trong Spring Framework. Mô-đun này sử dụng API Servlet làm nền tảng và sau đó các ứng dụng web phải tuân theo thông số kỹ thuật của Servlet và được triển khai vào các thùng chứa servlet.
Mô-đun Spring Web MVC được phát triển bằng cách sử dụng mẫu điều khiển phía trước (the front controller pattern). Có một servlet chính trong Spring được gọi là DispatcherServlet cho phép các nhà phát triển tạo ra một ứng dụng web trên nền tảng Java. Mô-đun này có hỗ trợ đầy đủ cho các annotation kể từ khi khai báo HTTP endpoints cho đến khi bao bọc thuộc tính yêu cầu trong HTTP.2 Tổng quan về Angular 2.1 Giới thiệu Angular Angular là một khung (framework) và nền tảng cho việc xây dựng một ứng dụng trang đơn (single page application) sử dụng HTML và TypeScript. Angular được viết bằng TypeScript được triển khai những chức năng cốt lõi và tùy chọn Kiến trúc của một ứng dụng Angular sẽ dựa trên các khái niệm cơ bản nhất định.
Các khối xây dựng cơ bản của Angular là NgModules. Ngmodule sẽ cung cấp những ngữ cảnh biên dịch cho các thành phần (components), nó còn thu thập những mã liên quan vào trong các bộ chức năng. Chính vì vậy một ứng dụng Angular sẽ được xác định bởi một bộ NgModules. Một ứng dụng luôn phải có ít nhất một mô-đun gốc cho phép sử dụng bootstrap và những mô-đun khác có nhiều tính năng hơn.
22 Chương 3 Phân tích và mô hình hóa yêu cầu Báo cáo đồ án tốt nghiệp - Các thành phần sẽ là nơi định nghĩa phần hiển thị (là nơi chứa các tập phần tử của của màn hình mà Angular có thể chọn trong số đó và sửa đổi theo luận lý và dữ liệu trong chương trình). - Các thành phần sử dụng dịch vụ (cung cấp chức năng cụ thể không liên quan trực tiếp đến chế độ hiển thị). Các nhà cung cấp dịch vụ (service) có thể đưa vào các thành phần dưới dạng phụ thuộc, làm cho mã được mô-đun hóa có thể sử dụng lại và rất hiệu quả - Các mô-đun, thành phần, dịch vụ là các lớp dùng đến thành phần trang trí (decorator). Những thành phần trang trí này đánh dấu loại của chúng và cung cấp siêu dữ liệu (metadata) làm cho Angular có thể biết cách sử dụng chúng.
- Siêu dữ liệu cho một lớp thành phần liên kết nó với một mẫu dùng để khai báo phần hiển thị. Một cái mẫu mà kế hợp giữa HTML thông thường với các chỉ thị Angular và đánh dấu ràng buộc cho phép Angular sửa đổi HTML trước khi hiển thị nó ra màn hình. - Siêu dữ liệu cho một lớp dịch vụ cung cấp thông tin mà Angular cần để làm cho nó khả dụng với các thành phần thông qua việc tiêm vào phần phụ thuộc (dependency injection). Các thành phần của ứng dụng thường được khai báo rất nhiều chế độ xem được sắp xếp theo các bậc có thứ tự.
Angular cung cấp dịch vụ định tuyến để giúp xác định đường dẫn điều hướng giữa các chế độ xem. Bộ định tuyến cung cấp khả năng điều hướng phức tạp trong trình duyệt. Angular được sử đụng để tạo ra trang web động. Trang web động là website có khuynh hướng thay đổi dữ liệu/thông tin dựa trên ba tham số: [5] - Time-to-time (các trang tin tức) - Location-to-location (các trang dự báo thời tiết) - User-to-user (Gmail, Facebook,…) Đặc trưng của Angular - Phát triển dựa trên JavaScript.
- Tạo các ứng dụng client-side theo mô hình MVC. 23 Chương 3 Phân tích và mô hình hóa yêu cầu Báo cáo đồ án tốt nghiệp - Khả năng tương thích cao, tự động xử lý mã JavaScript để phụ hợp với mỗi trình duyệt. - Mã nguồn mở, miễn phí hoàn toàn và được sử dụng rộng rãi Các tính năng cơ bản: - Phạm vi (scope): đối tượng có nhiệm vụ giao tiếp giữa bộ điều khiển (controller) và bộ hiển thị (view) của ứng dụng - Bộ điều khiển (controller): xử lý dữ liệu cho đối tượng phạm vi, từ đây bên bộ hiển thị sẽ sử dụng các dữ liệu trong phạm vi để hiển thị ra tương ứng. - Ràng buộc (data-binding): tự động đồng bộ dữ liệu giữ mô hình và hiển thị - Dịch vụ (service): là đối tượng singleton được khởi tạo một lần duy nhất cho mỗi ứng dụng, cung cấp các phương thức lưu trữ dữ liệu có sẵn.
- Bộ lọc (filter): lọc các tập con từ tập phần tử trong các mảng và trả về các mảng mới. - Chỉ thị (directive): dùng để tạo các thẻ HTML riêng phục vụ những mục đích riêng. Angular có những chỉ thị có sẵn như ngBind, ngModel,… - Mẫu (template): một thành phần của view, hiển thị thông tin từ controller - Điều hướng (routing): chuyển đổi giữa các hành động trong bộ điều khiển, qua lại giữa các màn hình - MVC và MVVM: mô hình thiết kế để phân chia các ứng dụng thành nhiều phần khác nhau, mỗi phần có một nhiệm vụ nhất định. Angular không triển khai MVC theo cách truyền thống mà gắn liền hơn với mô hình-hiển thị-hiển thị-mô hình.
- Deep link: liên kết sâu, cho phép mã hóa trạng thái của ứng dụng trong URL để nó có thể bookmark với công cụ tìm kiếm. Các ứng dụng có thể được phục hồi lại từ các địa chỉ URL với cùng một trạng thái. - Tiêm phụ thuộc (dependency injection): Angular có sẵn một hệ thống con tiêm phụ thuộc để hỗ trợ các nhà phát triển tạo ra các ứng dụng dễ phát triển, dễ hiểu và kiểm tra. 24 Chương 3 Phân tích và mô hình hóa yêu cầu Báo cáo đồ án tốt nghiệp Hình 2.4: Mô tả kiến trúc Angular Các thành phần (component) chính - ng-appL định nghĩa và liên kết một ứng dụng Angular tới HTML.
- ng-model: gắn kết giá trị của dữ liệu ứng dụng Angular đến các điều khiển đầu vào HTML. - Ng-bind: gắn kết dữ liệu ứng dụng Angular đến các thẻ HTML Mô-đun [5] Mỗi ứng dụng Angular đều có một hệ thống mô-đun riêng gọi là NgModules. NgModules của Angular khác và bổ sung thêm một số thứ so với JavaScript (ES2015). NgModules khai báo một ngữ cảnh biên dịch cho một tập hợp các thành phần dành riêng cho miền của ứng dụng, quy trình chạy, hoặc là một tập các khả năng mà có liên quan 25 Chương 3 Phân tích và mô hình hóa yêu cầu Báo cáo đồ án tốt nghiệp chặt chẽ với nhau.
Một NgModule có thể liên kết các thành phần của các mã liên quan, chẳng hạn như các dịch vụ để tạo thành các đơn vị chức năng. Mỗi ứng dụng Angular đều có một mô-đun gốc, được đặt tên là AppModule, cung cấp cơ chế bootstrap để khởi chạy ứng dụng. Một ứng dụng thường chứa nhiều mô-đun chức năng. Giống như các mô-đun của JavaScript, NgModules có thể lấy chức năng từ các NgModules khác và cho phép chức năng của chính mình xuất ra cho các Ngmodules khác sử dụng.
Ví dụ: để sử dụng dịch vụ bộ tính tuyến trong ứng dụng, RouterNgmodule cần được cho vào nơi cần dùng. Tổ chức mã thành các mô-đun chức năng riêng biệt giúp quản lý phát triển các ứng dụng phức tạp, thiết kế mô hình để có thể sử dụng lại.