Tải bản đầy đủ (.pdf) (98 trang)

Đồ án xây dựng ứng dụng booking khách sạn và xe kết hợp với

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.02 MB, 98 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN 1

Xây dựng ứng dụng booking khách sạn và xe kết hợp với
review du lịch

GV HƯỚNG DẪN: Thầy Huỳnh Tuấn Anh
SV THỰC HIỆN:
20520327 - Trần Hữu Trí
20520459 - Nguyễn Huy Trí Dũng

TP. HỒ CHÍ MINH, Năm 2023


LỜI CẢM ƠN
Trong quá trình học tập, nghiên cứu và phát triển đề tài “Xây dựng ứng dụng
booking khách sạn và xe kết hợp với review du lịch” chúng em đã nhận được sự
giúp đỡ, chỉ bảo nhiệt tình của thầy để hồn thành đồ án này.
Nhóm em xin chân thành gửi lời cảm ơn đến thầy Huỳnh Tuấn Anh – Giảng viên
Khoa

Công nghệ phần mềm, Trường Đại học Công nghệ thơng tin, Đại học Quốc

gia Thành phố Hồ Chí Minh - giảng viên dạy hướng dẫn môn Đồ án 1, đã tận tình
hướng dẫn và giúp đỡ về kiến thức , phương pháp cho chúng em trong suốt quá
trình thực hiện và hoàn thành đồ án.
Hi vọng với sự chỉ bảo và góp ý từ thầy, nhóm đề tài có thể tiếp tục phát triển để


ứng dụng ngày càng được mở rộng và phục vụ được tốt hơn cho người dùng.
Mặc dù đã có nhiều cố gắng trong suốt q trình thực hiện đề tài, song khơng thể
tránh khỏi những hạn chế, thiếu sót. Chúng em mong rằng sẽ nhận được những
đóng góp và nhận xét chân thành từ thầy, các bạn sinh viên và người dùng trong quá
trình sử dụng phần mềm để phần mềm ngày càng hoàn thiện hơn nữa. Mọi đóng
góp xin vui lịng gửi về địa chỉ email:


Mỗi ý kiến đóng góp của thầy và các bạn sẽ là một nguồn động lực to lớn đối với
chúng em để chúng em có thể cải thiện phần mềm tốt hơn và xây dựng những phần
mềm hữu ích đối với người dùng hơn nữa.
Chúng em xin trân trọng cảm ơn.

Thành phố Hồ Chí Minh, ngày 20 tháng 12 năm 2021


MỤC LỤC

Chương 1: GIỚI THIỆU .........................................................................................2
1.1. Đặt vấn đề: ...................................................................................................2
1.2. Cách giải quyết: ...........................................................................................2
1.3. Lý do chọn đề tài này: .................................................................................2
1.4. Đối tượng: .....................................................................................................2
1.5. Mục tiêu: .......................................................................................................2
Chương 2: TỔNG QUAN ........................................................................................4
2.1. Tổng quan về đồ án: ....................................................................................4
2.1.1.

Tên đồ án:...........................................................................................4


2.1.2.

Link github quản lý source code: .....................................................4

2.2. Cơ sở lý thuyết: ............................................................................................4
2.2.1.

Nền tảng Cross Platform ..................................................................4

2.2.1.1. Cross Platform là gì ? ....................................................................4
2.2.1.2. Ưu điểm, hạn chế của Cross Platform: ........................................6
2.2.2.

Restful API:........................................................................................6

2.2.2.1. Restful API là gì ? ..........................................................................6
2.2.2.2. Hoạt động của restful API: ...........................................................7
2.2.2.3. Express JS: .....................................................................................7
2.2.3.

WebSocket: ........................................................................................8

2.2.3.1. Khái niệm: ......................................................................................8
2.2.3.2. Ưu và nhược điểm: ........................................................................8
2.3. Công nghệ sử dụng: .....................................................................................9


2.3.1.

Flutter: ................................................................................................9


2.3.1.1. Flutter là gì ? ..................................................................................9
2.3.1.2. Flutter giúp phát triển ứng dụng như thế nào ? .........................9
2.3.2.

JWT for authentication: .................................................................11

2.3.2.1. JWT là gì ? ...................................................................................11
2.3.2.2. JWT hoạt động như thế nào ? ....................................................11
2.3.2.3. JWT có lợi ích gì trong authentication ? ...................................12
2.3.3.

Node js: .............................................................................................12

2.3.4.

Ngôn ngữ Dart: ................................................................................13

2.3.4.1. Dart là gì? .....................................................................................13
2.3.4.2. Lịch sử hình thành ngơn ngữ dart: ............................................14
2.3.4.3. Lợi ích của ngơn ngữ dart: .........................................................14
2.3.5.

Ngơn ngữ JavaScript: .....................................................................15

2.3.5.1. JavaScript là gì: ...........................................................................15
2.3.5.2. Lịch sử phát triển của JavaScript: .............................................15
2.3.5.3. Ưu và nhược điểm sử dụng JavaScript: ....................................16
2.3.6.


Mơ hình Bloc của Flutter:...............................................................17

2.3.6.1. Bloc là gì ?.....................................................................................17
2.3.6.2. Lợi ích của việc sử dụng Bloc ? ..................................................17
2.3.7.

Công cụ Intellij IDEA: ....................................................................18

2.3.7.1. Intellij IDEA là gì: .......................................................................18
2.3.7.2. Những lợi ích của Intellij IDEA: ................................................19
2.3.8.

Dịch vụ GitHub: ..............................................................................19

Chương 3: PHÂN TÍCH, THIẾT KẾ ..................................................................21


3.1. Cơ sở dữ liệu: .............................................................................................21
3.1.1.

Sơ đồ lớp:..........................................................................................21

3.1.2.

Mô tả cơ sở dữ liệu: .........................................................................21

3.1.2.1. User: ..............................................................................................21
3.1.2.2. Tour: .............................................................................................22
3.1.2.3. Rating: ..........................................................................................23
3.1.2.4. JWT: .............................................................................................23

3.1.2.5. Hotel Room: .................................................................................24
3.1.2.6. Hotel: .............................................................................................24
3.1.2.7. Files: ..............................................................................................25
3.1.2.8. Favorite:........................................................................................25
3.1.2.9. Date Booking: ...............................................................................26
3.1.2.10. Car Service: ................................................................................26
3.1.2.11. Avatar: ........................................................................................27
3.1.2.12. Destination: ................................................................................27
3.2. Danh sách yêu cầu: ....................................................................................28
3.2.1.

Danh sách các chức năng chính: ....................................................28

3.3. Danh sách usecase: ....................................................................................34
3.3.1.

Sơ đồ usecase: ..................................................................................34

3.3.2.

Mô tả tác nhân: ................................................................................35

3.3.3.

Mô tả use case: .................................................................................35

3.3.4.

Đặc tả use case: ................................................................................36


3.4. Thiết kế giao diện .......................................................................................66
3.4.1.

Đăng nhập: .......................................................................................66


3.4.2.

Đăng ký: ...........................................................................................66

3.4.3.

Giao diện chính:...............................................................................67

3.4.4.

Xem danh sách tour .....................................................................69

3.4.5.

Xem danh sách hotel .......................................................................70

3.4.6.

Xem danh sách xe ............................................................................71

3.4.7.

Giao diện tìm kiếm ..........................................................................72


3.4.8.

Giao diện xem lịch sử đơn ..............................................................73

3.4.9.

Giao diện thông tin tài khoản .........................................................73

3.4.10.

Giao diện thiết lập tài khoản ..........................................................74

3.4.11.

Giao diện quản lý dịch vụ ...............................................................74

3.4.12.

Giao diện quản lý bài đăng .............................................................75

3.4.13.

Giao diện quản lý đơn booking ......................................................76

3.4.14.

Giao diện tạo hotel ...........................................................................77

3.4.15.


Giao diện tạo xe ...............................................................................77

3.4.16.

Giao diện tạo tour ............................................................................78

3.4.17.

Giao diện tạo destination ................................................................78

3.4.18.

Giao diện chỉnh sửa hotel ...............................................................79

3.4.19.

Giao diện chỉnh sửa xe ....................................................................79

3.4.20.

Giao diện chỉnh sửa destination .....................................................80

3.4.21.

Giao diện chỉnh sửa tour.................................................................80

3.4.22.

Giao diện booking hotel ..................................................................81


3.4.23.

Giao diện booking xe .......................................................................81

3.4.24.

Giao diện đặt đơn thành công của xe và hotel ..............................82

3.4.25.

Giao diện danh sách yêu thích........................................................82


Chương 4: KẾT LUẬN ..........................................................................................83
4.1. Kết quả đạt được: ......................................................................................83
4.1.1.

Chủ đề cấp độ 3 ................................... Error! Bookmark not defined.

4.1.1.1. Chủ đề cấp độ 4 ................................ Error! Bookmark not defined.
4.2. Đánh giá ứng dụng: ...................................................................................83
4.3. Hướng phát triển mở rộng: ......................................................................83
4.4. Yêu cầu cài đặt:..........................................................................................84
Chương 5: PHÂN CÔNG CÔNG VIỆC ..............................................................85
TÀI LIỆU THAM KHẢO ......................................................................................87


DANH MỤC BIỂU ĐỒ
Biểu đồ 1. Sơ đồ lớp cơ sở dữ liệu .......................................................................................... 21
Biểu đồ 2. Sơ đồ usecase của ứng dụng ............................................................................... 34

Biểu đồ 3. Sơ đồ hoạt động UC1_đăng ký ............................................................................ 37
Biểu đồ 4. Sơ đồ hoạt động UC2_đăng nhập....................................................................... 38
Biểu đồ 5. Sơ đồ hoạt động UC3_Thay đổi mật khẩu ..................................................... 39
Biểu đồ 6. Sơ đồ hoạt động của UC4_Thiết lập tài khoản ............................................. 40
Biểu đồ 7. Sơ đồ hoạt động của UC5_Tìm kiếm tour hoặc dịch vụ ........................... 41
Biểu đồ 8. Sơ đồ hoạt động của UC6_CRUD Tour............................................................. 45
Biểu đồ 9. Sơ đồ hoạt động của UC7_CRUD Destination .............................................. 48
Biểu đồ 10. Sơ đồ hoạt động của UC8_Booking ................................................................ 49
Biểu đồ 11. Sơ đồ hoạt động của UC9_Thêm vào mục yêu thích .............................. 50
Biểu đồ 12. Sơ đồ hoạt động của UC10_CRUD Đánh giá ............................................... 54
Biểu đồ 13. Sơ đồ hoạt động của UC11_CRUD hotel ....................................................... 57
Biểu đồ 14. Sơ đồ hoạt động của UC12_CRUD hotel room .......................................... 61
Biểu đồ 15. Sơ đồ hoạt động của UC13_CRUD vehicle .................................................. 64
Biểu đồ 16. Sơ đồ hoạt động của UC14_thay đổi trạng thái booking ...................... 65


DANH MỤC HÌNH
Hình 1.Cross Platform .................................................................................................5
Hình 2. Cross-platform mobile development ..............................................................6
Hình 3. Intellij IDEA.................................................................................................19
Hình 4.Giao diện đăng nhập......................................................................................66
Hình 5. Giao diện đăng ký ........................................................................................67
Hình 6. Giao diện chính ............................................................................................68
Hình 7. Giao diện xem danh sách tour ......................................................................69
Hình 8. Giao diện xem danh sách hotel ....................................................................70
Hình 9. Giao diện xem danh sách xe ........................................................................71
Hình 10. Giao diện xem danh sách xe ......................................................................72
Hình 11. Giao diện xem lịch sử booking ..................................................................73
Hình 12. Giao diện thơng tin tài khoản .....................................................................74
Hình 13. Giao diện thiết lập tài khoản ......................................................................74

Hình 14. Giao diện quản lý dịch vụ ..........................................................................75
Hình 15. Giao diện quản lý bài đăng ........................................................................75
Hình 16. Giao diện quản lý đơn booking ..................................................................76
Hình 17. Giao diện tạo hotel .....................................................................................77
Hình 18. Giao diện tạo xe .........................................................................................77
Hình 19. Giao diện tạo tour .......................................................................................78
Hình 20. Giao diện tạo destination ............................................................................78
Hình 21. Giao diện chỉnh sửa hotel ...........................................................................79
Hình 22. Giao diện chỉnh sửa xe ...............................................................................79
Hình 23. Giao diện chỉnh sửa destination .................................................................80
Hình 24. Giao diện chỉnh sửa tour ............................................................................80
Hình 25. Giao diện booking hotel .............................................................................81
Hình 26. Giao diện booking xe .................................................................................81
Hình 27. Giao diện booking thành cơng ...................................................................82
Hình 28. Giao diện danh sách yêu thích ...................................................................82


DANH MỤC BẢNG
Bảng 1. Bảng các thuộc tính của model User ..................................................................... 22
Bảng 2. Bảng các thuộc tính của model Tour .................................................................... 23
Bảng 3. Bảng các thuộc tính của model Rating ................................................................. 23
Bảng 4. Bảng các thuộc tính của model JWT ...................................................................... 24
Bảng 5. Bảng các thuộc tính của model Hotel Room ...................................................... 24
Bảng 6. Bảng các thuộc tính của model Hotel ................................................................... 25
Bảng 7. Bảng các thuộc tính của model Files ..................................................................... 25
Bảng 8. Bảng các thuộc tính của model Favorite ............................................................. 26
Bảng 9. Bảng các thuộc tính của model DateBooking.................................................... 26
Bảng 10. Bảng các thuộc tính của model Car Service .................................................... 27
Bảng 11. Bảng các thuộc tính của model Avatar .............................................................. 27
Bảng 12. Bảng các thuộc tính của model Destination.................................................... 28

Bảng 13. Bảng các chức năng chính của ứng dụng ......................................................... 33
Bảng 14. Bảng mô tả tác nhân .................................................................................................. 35
Bảng 15. Bảng mô tả use case ................................................................................................... 36
Bảng 16. Bảng mô tả use case đăng ký ................................................................................. 37
Bảng 17. Bảng mô tả use case Đăng nhập ........................................................................... 38
Bảng 18. Bảng mô tả use case thay đổi mật khẩu ............................................................ 39
Bảng 19. Bảng mô tả use case thiết lập tài khoản ........................................................... 40
Bảng 20. Bảng mô tả use case tra cứu tour hoặc dịch vụ ............................................. 41
Bảng 21. Bảng mô tả use case CRUD_tour .......................................................................... 43
Bảng 22. Bảng mô tả use case CRUD destination ............................................................ 47
Bảng 23. Bảng mô tả use case Booking ................................................................................ 49
Bảng 24. Bảng mô tả use case thêm vào mục ưa thích .................................................. 50
Bảng 25. Bảng mô tả use case CRUD đánh giá .................................................................. 52
Bảng 26. Bảng mô tả use case CRUD hotel ......................................................................... 56
Bảng 27. Bảng mô tả use case CRUD hotel room ............................................................. 59


Bảng 28. Bảng mô tả use case CRUD vehicle ..................................................................... 63
Bảng 29. Bảng mô tả use case thay đổi trạng thái booking ......................................... 65


TÓM TẮT ĐỒ ÁN
Đồ án của bọn em là một ứng dụng điện thoại di động đặt khách sạn hoặc thuê xe
kèm theo đó là kết hợp các review về tour du lịch và cũng như giới thiệu các địa
danh, danh lam thắng cảnh đến người dùng và nhóm người bọn em đặc biệt chú ý
đến đó là nhóm người đi du lịch tự túc hoặc nhóm người thích sự tiện lợi từ việc
booking online.
Ứng dụng của bọn em được triển khai bằng Flutter với ngơn ngữ lập trình Dart, đi
kèm theo đó là 1 design pattern Bloc để quản lý trạng thái của ứng dụng. Bloc cho
phép em tách riêng logic của ứng dụng ra khỏi phần giao diện của người dùng.

Trong Flutter, Bloc chấp nhận một luồng sự kiện(event), xử lý dữ liệu dựa trên các
sự kiện đó và trả về trạng thái (states) tương ứng. Điều này giúp tách biệt logic của
ứng dụng và tái sử dụng mã code dễ dàng hơn.
Ở phía backend thì bọn em dùng NodeJS cho server localhost ExpressJS kết nối với
cơ sở dữ liệu MongoDB. Express JS là một framework phát triển ứng dụng web
phía server, trong khi MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ. Với
sự kết hợp này, bạn có thể xây dựng một server đơn giản để lưu trữ và truy xuất dữ
liệu cho ứng dụng di động của mình.
Đề tài của dự án là ứng dụng đặt khách sạn và thuê xe, kết hợp với việc xem xét
(review) tour du lịch và các địa danh. Điều này cho thấy ứng dụng của bạn sẽ cung
cấp các tính năng liên quan đến đặt phịng khách sạn, thuê xe, xem xét các tour du
lịch và thơng tin về các địa danh. Điều này có thể bao gồm giao diện người dùng để
tìm kiếm và đặt phịng khách sạn, th xe, xem thơng tin tour du lịch và địa danh,
cũng như cho phép người dùng gửi xem xét và đánh giá.

1


Chương 1: GIỚI THIỆU
1.1.

Đặt vấn đề:

Ngày nay, các dịch vụ về du lịch là 1 nhu cầu thiết yếu, ai cũng cần đi du lịch và
ai cũng muốn trải nghiệm những dịch vụ du lịch trở nên tiện lợi dù bạn đang ở
nơi đâu. Bên cạnh đó, chúng ta cũng có những nhóm nguời muốn được tự mình
khám phá tự mình lên kế hoạch để đi nhưng chưa biết bắt đầu từ đâu nên đã gây
khá nhiều bất tiện trong việc du lịch tự túc.
1.2.


Cách giải quyết:

Sau khi hiểu đuợc tình hình trên, nhóm em đã lên ý tưởng xây dựng 1 ứng dụng
“Booking khách sạn và xe kết hợp với review du lịch”. Ứng dụng này ra đời
nhằm đáp ứng các nhu cầu thực hiện hoá việc đi chơi tự túc trở nên dễ dàng hơn
đối với mọi nguời, và cũng như cho các chủ khách sạn có thể dễ dàng tiếp cận
với khách hàng hơn thông qua ứng dụng này để cung cấp dịch vụ cho khách
hàng của mình thơng qua 1 ứng dụng.
1.3.

Lý do chọn đề tài này:

Lý do bọn em chọn đề tài này là để cung cấp 1 cơng cụ có thể giúp cho ngời
dùng có thể dễ dàng chủ động trong việc du lịch tự túc cũng như bản thân của
bọn em và có thể dễ dàng hơn trong việc lên kế hoạch và booking trong việc du
lịch tự túc và cũng thuận tiện hơn cho các chủ doanh nghiệp giới thiệu dịch vụ
của mình đến người dùng.
1.4.

Đối tượng:

Nhóm đối tượng mà bọn em hướng đến đó là nhóm người dùng muốn đi du lịch
tự túc và nhóm chủ khách sạn hoặc chủ xe muốn cung cấp dịch vụ cho người du
lịch tự túc nhằm tạo ra cầu nối những các chủ dịch vụ với khách hàng.
1.5.

Mục tiêu:

Xây dựng ứng dụng hỗ trợ cho người dùng muốn trải nghiệm du lịch tự túc,


2


đồng thời cũng cung cấp 1 ứng dụng hoạt động như một nơi chia sẽ các kế
hoạch du lịch tự túc của mọi người với nhau, một cầu nối giữa các doanh nghiệp
với người dùng để tiện lợi hơn trong các việc đặt phòng khách sạn hoặc thuê xe
cho du lịch.
Xây dựng 1 giao diện phần mềm một cách trực quan, sinh động, thân thiện với
ngời dùng hơn. Các xử lý thành phần hoạt động một cách thực tế và mượt mà
hơn để đem lại trải nghiêm thú vị và đồng thời tiện ích cho người dùng lẫn các
doanh nghiệp.

3


Chương 2: TỔNG QUAN
2.1.

Tổng quan về đồ án:

2.1.1. Tên đồ án:
• Tên tiếng việt: Xây dựng ứng dụng booking khách sạn và xe kết hợp
với review du lịch.
2.1.2. Link github quản lý source code:
- Link github ứng dụng mobile dành cho nguời dùng lẫn doanh nghiệp:
/>
- Link github server backend:
/>
2.2.


Cơ sở lý thuyết:

Đồ án được xây dựng dựa trên những cơ sở lý thuyết sau:

2.2.1. Nền tảng Cross Platform
2.2.1.1. Cross Platform là gì ?
• “Trong cơng nghệ điện tốn, đa nền tảng (tiếng Anh: cross-platform hay
multiplatform) là một thuật ngữ chỉ các phần mềm máy tính hay các
phương thức điện toán và cáckhái niệm được thực thi đầy đủ và vận hành
cùng nhau trên nhiều nền tảng máy tính. Phần mềm đa nền tảng có thể được
chia thành hai loại; một loại yêu cầu phải thiết kế hoặc biên dịch từng phiên
bản cho mỗi nền tảng nó hỗ trợ; loại kia có thể chạy trực tiếp trên bất cứ
nềntảng nào mà không cần sự chuẩn bị thêm đặc biệt nào - chẳng hạn như
phần mềm được viết bằng một ngôn ngữ thông dịch hay được biên dịch
trước sang mã bytecode có khả năng di động bằng một trình thơng dịch hay
các gói run-time thường dùng hoặc là thành phần tiêu chuẩn trên mọi nền
tảng”.

4


Hình 1.Cross Platform
• Cross Platform hay Multi Platform là thuật ngữ được sử dụng để chỉ các
ứng dụng đa nền tảng. Hiểu đơn giản, chỉ với một bản code, bạn có thể
phiên dịch và sử dụng trên nhiều nền tảng hệ điều hành khác nhau, các mơi
trường lập trình khác nhau hoặc thậm chí là trên các loại thiết bị phần cứng
vật lý khác nhau. Điều này sẽ giúp lập trình viên tiết kiệm được rất nhiều
cơng sức và thời gian đáng kể.
• Chính vì điều đó mà Cross Platform thường được các lập trình viên ưa
chuộng. Tuy nhiên, dựa vào các ưu và nhược điểm của các Framework bởi

Cross Platform sử dụng Framework đa nền tảng để áp dụng vào cơng việc
của mình.
• Cho đến thời điểm hiện tại, React-Native, Xamarin và Flutter đang được
xem là 3 nền tảng phổ biến nhất được cho phép phát triển ứng dụng trên
smartphone với các hệ điều hành khác nhau (cross-platform mobile
development). Chỉ cần với 1 chương trình đuợc viết thì có thể chạy trên
hầu hết tất cả nền tảng; Cụ thể hơn đó là 1 project nhưng có thể tạo ra ứng
dụng chạy trên các smartphone có hệ điều hành khác nhau.

5


Hình 2. Cross-platform mobile development

2.2.1.2. Ưu điểm, hạn chế của Cross Platform:
- Ưu điểm:
• Khi bạn dùng Cross platform ở nhiều phiên bản khác bạn vẫn có thể sử
dụng một bản code.
• Khi sử dụng Cross platform bạn sẽ tiết kiệm được nhiều chi phí và cơng
sức ngồi viết code.
• Cross platform rất phù hợp cho những dự án lớn và địi hỏi tính linh hoạt
đa dạng.
-

Nhược điểm:

• Cross Platform khơng có khả năng khai thác thư viện của Android hoặc
IOS
• Việc cấp phép cho cơng nghệ của ứng dụng Cross Platform phức tạp và
khó khăn

2.2.2. Restful API:
2.2.2.1.

Restful API là gì ?

• RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng
dụng web (thiết kế Web services) để tiện cho việc quản lý các resource. Nó

6


chú trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc
dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được
truyền tải qua HTTP.
• API (Application Programming Interface) là một tập các quy tắc và cơ chế
mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng
dụng hay thành phần khác. API có thể trả về dữ liệu mà bạn cần cho ứng
dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML.
• REST (REpresentational State** T**ransfer) là một dạng chuyển đổi cấu
trúc dữ liệu, một kiểu kiến trúc để viết API. Nó sử dụng phương thức HTTP
đơn giản để tạo cho giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một
URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu
HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu.
• RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các
ứng dụng web để quản lý các resource. RESTful là một trong những kiểu
thiết kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web,
mobile…) khác nhau giao tiếp với nhau.
2.2.2.2.

Hoạt động của restful API:


• REST hoạt động chủ yếu dựa vào giao thức HTTP. Các hoạt động cơ bản
nêu trên sẽ sử dụng những phương thức HTTP riêng.
+ GET (SELECT): Trả về một Resource hoặc một danh sách Resource.
+ POST (CREATE): Tạo mới một Resource.
+ PUT (UPDATE): Cập nhật thông tin cho Resource.
+ DELETE (DELETE): Xố một Resource.
• Những phương thức hay hoạt động này thường được gọi là CRUD tương
ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa.
• Hiện tại đa số lập trình viên viết RESTful API giờ đây đều chọn JSON là
format chính thức nhưng cũng có nhiều người chọn XML làm format, nói
chung dùng thế nào cũng được miễn tiện và nhanh.
2.2.2.3.

Express JS:

7


• Expressjs là một framework được xây dựng trên nền tảng của Nodejs. Nó
cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile. Expressjs
hỗ trợ các method HTTP và midleware tạo ra API vô cùng mạnh mẽ và dễ
sử dụng.
• Tổng hợp một số chức năng chính của Expressjs như sau:
+ Thiết lập các lớp trung gian để trả về các HTTP request.
+ Define router cho phép sử dụng với các hành động khác nhau dựa trên
phương thức HTTP và URL.
+ Cho phép trả về các trang HTML dựa vào các tham số.

2.2.3. WebSocket:

2.2.3.1. Khái niệm:
• WebSocket là một giao thức truyền tải dữ liệu hai chiều (full-duplex) trên
web, cho phép truyền tải dữ liệu trong thời gian thực giữa trình duyệt web
và máy chủ. WebSocket cho phép một kết nối duy trì giữa máy khách và
máy chủ, vì vậy các thơng tin có thể được gửi đi và nhận lại một cách hiệu
quả và nhanh chóng mà không cần phải thiết lập kết nối mới mỗi khi truyền
tải thơng tin.
• WebSocket thường được sử dụng để phát triển các ứng dụng web thời gian
thực như trò chơi trực tuyến, ứng dụng trò chuyện và các ứng dụng cập
nhật dữ liệu trực tiếp. WebSocket được thiết kế để thay thế các giải pháp
truyền tải dữ liệu trực tiếp khác như Ajax hoặc Comet, vì nó có hiệu suất
cao hơn và tiết kiệm năng lượng hơn.

2.2.3.2. Ưu và nhược điểm:
Ưu điểm:
o Giao tiếp hai chiều: WebSocket cung cấp khả năng giao tiếp hai
chiều giữa trình duyệt và máy chủ, cho phép gửi và nhận dữ liệu
cùng một lúc. Điều này rất hữu ích cho các ứng dụng thời gian thực
như trò chơi trực tuyến, ứng dụng trò chuyện và cập nhật dữ liệu
trực tiếp.

8


o Hiệu suất cao: WebSocket có hiệu suất cao hơn so với các giải pháp
truyền tải dữ liệu trực tiếp khác như Ajax hoặc Comet. Với
WebSocket, khơng có độ trễ trong quá trình thiết lập kết nối và
truyền tải dữ liệu nhanh chóng.

o Tiết kiệm năng lượng: WebSocket sử dụng kết nối duy trì, cho phép

truyền tải dữ liệu mà không cần gửi các yêu cầu HTTP không cần
thiết. Điều này giúp tiết kiệm băng thông mạng và năng lượng của
máy khách và máy chủ.

Nhược điểm:
o Hạn chế tương thích: Mặc dù hầu hết các trình duyệt hiện đại đều
hỗ trợ WebSocket, nhưng vẫn có một số trình duyệt cũ hơn khơng
hỗ trợ giao thức này. Điều này có thể gây ra sự khơng tương thích
giữa các phiên bản trình duyệt và yêu cầu sử dụng các giải pháp
thay thế cho các trình duyệt khơng hỗ trợ WebSocket.
o Thiết lập kết nối ban đầu phức tạp: Trong quá trình thiết lập kết nối
ban đầu, WebSocket sử dụng một số yêu cầu HTTP để thiết lập kênh
truyền thơng. Điều này có thể tạo ra một số độ trễ ban đầu và tác
động đến hiệu suất trong giai đoạn khởi đầu.

2.3.

Công nghệ sử dụng:

2.3.1. Flutter:
2.3.1.1. Flutter là gì ?
• Flutter được phát triển nhằm giải quyết bài toán thường gặp trong mobile
là Fast Development và Native Performance. Nếu như React Native chỉ
đảm bảo Fast Development và code native thuần chỉ đảm bảo Native
Performance thì Flutter làm được cả 2 điều trên.

2.3.1.2. Flutter giúp phát triển ứng dụng như thế nào ?
• Phát triển ứng dụng gốc so với phát triển ứng dụng đa nền tảng

9



Viết mã một ứng dụng cho một nền tảng cụ thể, chẳng hạn như iOS,
được gọi là phát triển ứng dụng gốc. Ngược lại, phát triển ứng dụng đa
nền tảng sẽ xây dựng một ứng dụng cho nhiều nền tảng với một nền mã
duy nhất.
• Phát triển ứng dụng gốc
-

Vì các nhà phát triển viết mã cho một nền tảng cụ thể trong phát triển
ứng dụng gốc, họ có tồn quyền truy cập vào chức năng của thiết bị
gốc. Điều này thường mang lại hiệu suất và tốc độ cao hơn so với phát
triển ứng dụng đa nền tảng.

-

Tuy nhiên, nếu bạn muốn khởi chạy một ứng dụng trên nhiều nền tảng,
phát triển ứng dụng gốc cần nhiều mã hơn và nhiều nhà phát triển hơn.
Ngồi những chi phí này, phát triển ứng dụng gốc khiến việc khởi chạy
trên các nền tảng khác nhau cùng một lúc với trải nghiệm người dùng
nhất quán trở nên khó khăn hơn. Đây là nơi mà các khung phát triển
ứng dụng đa nền tảng như Flutter có thể hữu ích.

• Phát triển ứng dụng đa nền tảng
-

Phát triển ứng dụng đa nền tảng cho phép các nhà phát triển sử dụng
một ngôn ngữ lập trình và một nền mã để xây dựng một ứng dụng cho
nhiều nền tảng. Nếu bạn chuẩn bị phát hành một ứng dụng cho nhiều
nền tảng, phát triển ứng dụng đa nền tảng sẽ ít tốn kém và đỡ mất thời

gian hơn so với phát triển ứng dụng gốc.

-

Quá trình này cũng cho phép các nhà phát triển tạo ra trải nghiệm nhất
quán hơn cho người dùng trên các nền tảng.

-

Cách tiếp cận này có thể có những hạn chế so với phát triển ứng dụng
gốc, đó là quyền truy cập hạn chế vào chức năng của thiết bị gốc. Tuy
nhiên, Flutter có các tính năng giúp phát triển ứng dụng đa nền tảng
mượt mà hơn và đạt hiệu suất cao.

• Ưu điểm:

10


-

Hiệu suất gần với phát triển ứng dụng gốc. Flutter sử dụng ngơn ngữ
lập trình Dart và biên dịch thành mã máy. Các thiết bị máy chủ hiểu
được mã này, điều này đảm bảo hiệu suất nhanh và hiệu quả.

-

Kết xuất nhanh, nhất quán và có thể tùy chỉnh. Thay vì dựa vào các
cơng cụ kết xuất theo nền tảng, Flutter sử dụng thư viện đồ họa Skia
nguồn mở của Google để kết xuất UI. Điều này mang đến cho người

dùng phương tiện trực quan nhất quán cho dù họ sử dụng nền tảng nào
để truy cập ứng dụng.

-

Công cụ thân thiện với nhà phát triển. Google đã xây dựng Flutter chú
trọng vào tính dễ sử dụng. Với các cơng cụ như tải lại nóng, nhà phát
triển có thể xem trước các thay đổi mã sẽ như thế nào mà không bị mất
trạng thái. Các công cụ khác như widget inspector giúp dễ dàng trực
quan hóa và giải quyết các vấn đề với bố cục UI.

2.3.2. JWT for authentication:
2.3.2.1. JWT là gì ?
JWT (JSON Web Token) là một tiêu chuẩn mở (RFC 7519) xác định
một cách gọn nhẹ và tự chứa để truyền thơng tin một cách an tồn giữa
các bên dưới dạng một đối tượng JSON. JWT có thể được xác minh và
tin tưởng vì nó được ký số. JWT có thể được ký bằng một secret (sử
dụng thuật tốn HMAC) hoặc một cặp khóa cơng khai/tư nhân sử dụng
RSA hoặc ECDSA.

2.3.2.2. JWT hoạt động như thế nào ?
-

Trong việc xác thực (authentication), JWT được sử dụng để xác minh
danh tính của người dùng. Khi một người dùng đăng nhập thành công,
server sẽ tạo ra một JWT và gửi lại cho client. Từ đó, client sẽ gửi JWT
này cùng với mỗi yêu cầu tiếp theo để chứng minh danh tính của mình.
JWT chứa các thơng tin về người dùng và các quyền hạn tương ứng.
Server có thể xác minh tính hợp lệ của JWT bằng cách kiểm tra chữ ký
số trên JWT.


11


-

JWT có thể được sử dụng trong việc xác thực API và ủy quyền giữa
các server. Với JWT, người dùng có thể truy cập vào các tài nguyên,
dịch vụ và route được phép với token đó mà khơng cần gửi lại thông
tin xác thực (như mật khẩu) trong mỗi yêu cầu.

-

Tuy nhiên, cần lưu ý rằng JWT không nên được sử dụng như session
token mặc định. JWT có một số hạn chế như kích thước lớn hơn so với
các session token thông thường, không thể thu hồi JWT một khi đã phát
hành và không cung cấp khả năng xử lý lỗi và tái xác thực như session
truyền thống.

2.3.2.3. JWT có lợi ích gì trong authentication ?
-

Stateless: JWT là stateless, tức là server không cần lưu trữ phiên đăng
nhập (session) của người dùng. Mỗi yêu cầu đến server đều chứa thông
tin xác thực trong JWT, giúp giảm tải cho server và hỗ trợ việc mở rộng
hệ thống.

-

Phân quyền (Authorization): JWT chứa thông tin về quyền truy cập của

người dùng, cho phép server kiểm tra và xác định người dùng có quyền
truy cập vào tài nguyên hay không.

-

Giao tiếp giữa các hệ thống: JWT có thể được sử dụng để xác thực và
truyền thông tin giữa các hệ thống khác nhau một cách an tồn và đáng
tin cậy.

2.3.3. Node js:
• NodeJS là một nền tảng được xây dựng trên V8 JavaScript Engine – trình
thơng dịch thực thi mã JavaScript, giúp xây dựng các ứng dụng web một
cách đơn giản và dễ dàng mở rộng.
• NodeJS được phát triển bởi Ryan Dahl vào năm 2009 và có thể chạy trên
nhiều hệ điều hành khác nhau: OS X, Microsoft Windows, Linux.

- Lợi ích của việc dùng NodeJS:
• NodeJS được viết bằng JavaScript với cộng đồng người dùng lớn mạnh.
Nếu bạn cần hỗ trợ gì về NodeJS, sẽ nhanh chóng có người hỗ trợ bạn.

12


• Tốc độ xử lý nhanh. Nhờ cơ chế xử lý bất đồng độ (non-blocking), NodeJS
có thể xử lý hàng ngàn kết nối cùng lúc mà không gặp bất cứ khó khăn nào.
• Dễ dàng mở rộng. Nếu bạn có nhu cầu phát triển website thì tính năng dễ
dàng mở rộng của NodeJS là một lợi thế cực kỳ quan trọng.

- Lợi ích khi áp dụng NodeJS khi viết server:
• Hiệu suất cao: Node.js sử dụng mơ hình khơng đồng bộ (asynchronous) và

sự kiện (event-driven), cho phép xử lý đồng thời nhiều yêu cầu mà không
phụ thuộc vào số luồng (thread) như các mơ hình truyền thống. Điều này
giúp tăng hiệu suất và độ phản hồi của ứng dụng.
• Xử lý đồng thời: Nhờ mơ hình khơng đồng bộ, Node.js có khả năng xử lý
hàng ngàn kết nối đồng thời với tài nguyên hệ thống tối thiểu. Điều này
đặc biệt hữu ích trong các ứng dụng thời gian thực hoặc có yêu cầu xử lý
đồng thời lớn như ứng dụng chat, streaming, và game trực tuyến.
• Phát triển nhanh: Node.js có cú pháp đơn giản và cộng đồng JavaScript rất
lớn, cung cấp nhiều thư viện và module để phát triển ứng dụng nhanh
chóng. Express.js, một framework phổ biến cho Node.js, cung cấp cú pháp
đơn giản và mơ hình MVC (Model-View-Controller) để xây dựng các ứng
dụng web.
• Chia sẻ mã giữa client và server: Với Node.js, mã JavaScript có thể chạy
cả trên phía máy chủ và phía trình duyệt, giúp tiết kiệm thời gian và công
sức trong việc chia sẻ mã và xây dựng các ứng dụng đơn nhất đúng một
ngôn ngữ.
• Hệ sinh thái mở: Node.js có một hệ sinh thái phong phú với hàng ngàn
module được phát triển bởi cộng đồng. Điều này giúp lập trình viên tiếp
cận và sử dụng các giải pháp sẵn có để nhanh chóng xây dựng các chức
năng và tính năng cho ứng dụng.

2.3.4. Ngơn ngữ Dart:
2.3.4.1. Dart là gì?

13


Dart là ngơn ngữ lập trình đa mục đích ban đầu được phát triển
bởi Google và sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu
chuẩn. Nó được sử dụng để xây dựng các ứng dụng web, server,

máy tính để bàn và thiết bị di động. Dart là một ngôn ngữ hướng
đối tượng, được xác định theo lớp, với cơ chế garbage-collected,
sử dụng cú pháp kiểu C để dịch mã tùy ý sang JavaScript. Nó hỗ
trợ interface, mixin, abstract, generic, static typing và sound type
(2 cái cuối có thể hiểu là type-safe). Dart là ngơn ngữ mã nguồn
mở và miễn phí, được phát triển trên GitHub. Hiện nay Dart đã
release phiên bản 3.0.5
2.3.4.2. Lịch sử hình thành ngơn ngữ dart:
• Lịch sử hình thành của ngơn ngữ Dart bắt đầu từ khi Google công bố ngôn
ngữ này tại Hội thảo GOTO vào ngày 10 tháng 10 năm 2011 tại Aarhus.
Mục đích của Dart không phải để thay thế JavaScript như ngôn ngữ kịch
bản chính bên trong trình duyệt web, mà là cung cấp sự lựa chọn hiện đại
hơn. Dart được phát triển nhằm giải quyết các vấn đề của JavaScript trong
khi cung cấp hiệu năng tốt hơn, khả năng làm việc trong các dự án lớn và
bảo mật tốt hơn.

2.3.4.3. Lợi ích của ngơn ngữ dart:
• Tối ưu hóa cho giao diện người dùng (UI): Dart được thiết kế đặc biệt để
đáp ứng nhu cầu tạo giao diện người dùng. Điều này giúp lập trình viên
phát triển các ứng dụng có giao diện người dùng một cách hiệu quả.
• Phát triển nhanh chóng: Dart hỗ trợ tính năng "hot reload", cho phép lập
trình viên thấy kết quả ngay lập tức khi thay đổi mã nguồn trong quá trình
chạy ứng dụng. Điều này giúp tăng sự sản xuất trong quá trình phát triển
ứng dụng.
• Tốc độ nhanh trên mọi nền tảng: Dart có thể được biên dịch thành mã máy
ARM và x64 để chạy trên các thiết bị di động, máy tính để bàn và backend.

14



×