DANH MỤC BẢNGBảng 1.1 Bảng mô tả các chức năng của các module trong Spring Framework..... Trongnhững phiên bản đầu tiên, các lập trình viên phải cài đặt các lớp implementation cho 2inter
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ
CHÍ MINH
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
XÂY DỰNG HỆ THỐNG WEBSITE TIN
TỨC TRỰC TUYẾN
GVHD: NGUYỄN MINH ĐẠO SVTH:NGUYỄN HOÀNG LONG MSSV: 15110242
SVTH: BÙI XUÂN TRÍ MSSV: 15110338
SKL005868
Tp Hồ Chí Minh, tháng 8/2019
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN BỘ
GIÁO VIÊN HƯỚNG DẪN Th.S NGUYỄN MINH ĐẠO
KHÓA 2015 - 2019
Trang 3TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN BỘ
GIÁO VIÊN HƯỚNG DẪN Th.S NGUYỄN MINH ĐẠO
KHÓA 2015 - 2019
Trang 4ĐH SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên 1: Bùi Xuân Trí
Họ và tên Sinh viên 2: Nguyễn Hoàng Long
Ngành: Công nghệ Thông tin
MSSV 1: 15110338MSSV 2: 15110242
Tên đề tài: Tìm hiểu Spring, Microservices và xây dựng hệ thống website tin tức trựctuyến
Họ và tên Giáo viên hướng dẫn: ThS Nguyễn Minh Đạo
NHẬN XÉT
Tp Hồ Chí Minh, ngày tháng năm 2019
Giáo viên hướng dẫn (Ký & ghi rõ họ tên)
Trang 5ĐH SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên 1: Bùi Xuân Trí
Họ và tên Sinh viên 2: Nguyễn Hoàng Long
Ngành: Công nghệ Thông tin
MSSV 1: 15110338MSSV 2: 15110242
Tên đề tài: Tìm hiểu Spring, Microservices và xây dựng hệ thống website tin tức trựctuyến
Họ và tên Giáo viên phản biện: Th.S Lê Vĩnh
Thịnh NHẬN XÉT
Tp Hồ Chí Minh, ngày tháng năm 2019
Giáo viên phản biện (Ký & ghi rõ họ tên)
Trang 6LỜI CẢM ƠN
Sự thành công nào cũng đều gắn liền với những sự hỗ trợ, giúp đỡ của nhữngngười xung quanh dù cho sự giúp đỡ đó là ít hay nhiều, trực tiếp hay gián tiếp Trongsuốt thời gian từ khi bắt đầu làm khóa luận tốt nghiệp đến nay, nhóm đã nhận được sựquan tâm, chỉ bảo, giúp đỡ của quý Thầy Cô và bạn bè xung quanh
Với tấm lòng biết ơn vô cùng sâu sắc, nhóm xin gửi lời cảm ơn chân thành nhất từđáy lòng đến quý Thầy Cô của trường… đã bỏ ra nhiều tâm huyết và truyền đạt nhữngkiến thức quý báu để chúng em có thể trau dồi vốn hiểu biết trong thời gian học tập tạitrường
Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc tới Thạc sĩ Nguyễn Minh Đạo –Giảng Viên đã trực tiếp hướng dẫn và chỉ bảo chúng em rất nhiều trong quá trình làmkhóa luận tốt nghiệp
Trong quá trình học tập, làm khóa luận tốt nghiệp, cũng như là trong quá trình làmbài báo cáo khóa luận tốt nghiệp, khó tránh khỏi sai sót, rất mong các Thầy Cô bỏ qua.Đồng thời do trình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báocáo không thể tránh khỏi những thiếu sót, em rất mong nhận được ý kiến đóng góp củaThầy Cô để chúng em học thêm được nhiều kinh nghiệm trước khi rời khỏi giảngđường đại học và bước vào đời
Xin chân thành cảm ơn !
Trang 7ĐH SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
Thời gian làm luận văn: Bắt đầu từ 18/03/2019 đến 30/06/2019
Chuyên ngành: Công nghệ phần mềm
Tên khóa luận: Tìm hiểu Spring, Microservices và xây dựng hệ thống website tin tứctrực tuyến
Giáo viên hướng dẫn: ThS Nguyễn Minh Đạo
Nội dung thực hiện:
Kế hoạch thực hiện:
- Đặc tả Usecase, lược đồ sequence, thiết kế
- Tìm hiểu về mô hình Microservices
Trang 8- Thiết kế cơ sở dữ liệu, thiết kế luồng xử lýcác chức năng, lập danh sách các màn hình.
- Thiết kế, xây dựng mô hình Microservicecho Project
- Thiết kế giao diện các trang: đăng ký, quản
14/04/2019
quản lý tin tức
- Map các API với các giao diện tương ứng
21/04/2019
- Map các API với các giao diện tương ứng
- Thiết kế giao diện các trang: hiển thị tin tức,
- Map các API với các giao diện tương ứng
- Thiết kế giao diện các trang: quản lý người
- Map các API với các giao diện tương ứng
12/05/2019
- Map các API với các giao diện tương ứng
- Thiết kế giao diện các trang: đăng nhập,
- Map các API với các giao diện tương ứng
Trang 911 27/05/2019 đến - Ứng dụng Spring Security vào website.
02/06/2019
iii
Trang 10- Tìm hiểu cách Crawling RSS để lấy data từ
hiện thị
- Ứng dụng Crawling RSS vào website để có
Tp Hồ Chí Minh, ngày tháng năm 2019
Người viết đề cương (Ký & ghi rõ họ tên)
Ý kiến của giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
Th.S Nguyễn Minh Đạo
Trang 11iv
Trang 12MỤC LỤC
LỜI CẢM ƠN i
NHIỆM VỤ THỰC HIỆN KHÓA LUẬN TỐT NGHIỆP ii
MỤC LỤC v
DANH MỤC HÌNH ẢNH ix
DANH MỤC BẢNG xi
DANH MỤC TỪ VIẾT TẮT xiii
MỞ ĐẦU xiv
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI xiv
2 MỤC TIÊU CỦA ĐỀ TÀI xv
3 CÁCH TIẾP CẬN VÀ PHƯƠNG PHÁP NGHIÊN CỨU xvi
3.1 Đối tượng nghiên cứu xvi
3.2 Phạm vi nghiên cứu xvi
3.3 Phương pháp nghiên cứu xvi
4 PHÂN TÍCH CÁC HỆ THỐNG WEBSITE CÓ LIÊN QUAN xvi
5 KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC xvii
NỘI DUNG 1
CHƯƠNG 1 CÁC CÔNG NGHỆ SỬ DỤNG 1
1.1 TỔNG QUAN VỀ SPRING BOOT 1
1.1.1 Giới thiệu về Spring Framework 1
1.1.1.1 Enterprise Javabeans và Spring 1
1.1.1.2 Sự ra đời của Spring Spring là gì? 1
1.1.1.3 Kiến trúc, các module của Spring Framework 2
1.1.1.4 Các lợi ích của Spring Framework 3
1.1.2 Giới thiệu về Spring Boot 4
1.1.2.1 Spring Boot là gì? 4
1.1.2.2 Ưu điểm của Spring Boot 5
1.2 TỔNG QUAN VỀ HIBERNATE 5
1.3 TỔNG QUAN VỀ ANGULAR 5 6
1.3.1 Giới thiệu về Angular 6
1.3.2 Kiến trúc và các thành phần cơ bản 7
1.3.3 Giới thiệu về Module trong Angular 5 8
1.3.3.1 Module là gì? 8
1.3.3.2 Cách phân chia ứng dụng theo Module 10
1.4 TỔNG QUAN VỀ MICROSERVICES 10
1.4.1 Giới thiệu về Microservices 10
1.4.2 Ưu điểm của Microservices 11
Trang 131.4.4 Cấu trúc Microservices nhóm sử dụng trong Project 12
CHƯƠNG 2 KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 13
2.1 PHÂN TÍCH HIỆN TRẠNG 13
2.2 PHÂN TÍCH YÊU CẦU 13
2.2.1 Yêu cầu chức năng 13
2.2.1.1 Yêu cầu chức năng nghiệp vụ 13
2.2.1.2 Yêu cầu chức năng hệ thống 16
2.2.2 Yêu cầu phi chức năng 17
CHƯƠNG 3 MÔ HÌNH HÓA YÊU CẦU 18
3.1 NHẬN DIỆN TÁC NHÂN VÀ CHỨC NĂNG TRONG SƠ ĐỒ USE CASE 18
3.2 MÔ TẢ CHI TIẾT TỪNG CHỨC NĂNG VÀ TỪNG TÁC NHÂN 19
3.2.1 Mô tả tác nhân 19
3.2.2 Mô tả chức năng 21
3.3 SƠ ĐỒ USE CASE 25
3.3.1 Các sơ đồ Use case 25
3.3.2 Đặc tả Use case 28
CHƯƠNG 4 THIẾT KẾ PHẦN MỀM 45
4.1 THIẾT KẾ HỆ THỐNG 45
4.1.1 Lược đồ lớp 45
4.1.2 Lược đồ Sequence 45
4.1.2.1 Sequence Diagram cho use case Chỉnh sửa mật khẩu: 45
4.1.2.2 Sequence Diagram cho use case Đăng ký: 46
4.1.2.3 Sequence Diagram cho use case Đăng nhập: 46
4.1.2.4 Sequence Diagram cho use case Liên hệ với người quản trị: 47
4.1.2.5 Sequence Diagram cho use case Xóa chi tiết liên hệ: 47
4.1.2.6 Sequence Diagram cho use case Chỉnh sửa loại tin tức: 48
4.1.2.7 Sequence Diagram cho use case Kích hoạt/ Hủy kích hoạt loại tin tức: 48
4.1.2.8 Sequence Diagram cho use case Thêm loại tin tức: 49
4.1.2.9 Sequence Diagram cho use case Chỉnh sửa quyền của người dùng: 49
4.1.2.10 Sequence Diagram cho use case Kích hoạt/ Hủy kích hoạt người dùng: 50
4.1.2.11 Sequence Diagram cho use case Chỉnh sửa quyền: 50
4.1.2.12 Sequence Diagram use case Kích hoạt/ Hủy kích hoạt quyền: 51
4.1.2.13 Sequence Diagram cho use case Thêm quyền: 51
4.1.2.14 Sequence Diagram cho use case Cập nhật ảnh đại diện: 52
4.1.2.15 Sequence diagram cho use case Chỉnh sửa thông tin cá nhân: 52
4.1.2.16 Sequence Diagram cho use case Phân loại tin tức: 53
4.1.2.17 Sequence Diagram cho use case Duyệt tin tức: 53
4.1.2.18 Sequence Diagram cho use case Xóa tin tức: 54
Trang 144.1.2.19 Sequence Diagram cho use case Thêm tin tức: 54
4.1.2.20 Sequence Diagram cho use case Tìm kiếm tin tức: 55
4.1.2.21 Sequence Diagram cho use case Thêm web lấy dữ liệu: 55
4.1.2.22 Sequence Diagram cho use case Cập nhật web lấy dữ liệu: 56
4.1.2.23 Sequence Diagram cho use case Xóa web lấy dữ liệu: 56
4.1.2.24 Sequence Diagram cho use case Thêm link rss: 57
4.1.2.25 Sequence Diagram cho use case Cập nhật link rss: 57
4.1.2.26 Sequence Diagram cho use case Xóa link rss: 58
4.2 THIẾT KẾ DỮ LIỆU 58
4.2.1 Sơ đồ logic 58
4.2.1.1 Lược đồ logic 58
4.2.1.2 Chi tiết các bảng dữ liệu 59
4.2.2 Sơ đồ quan hệ 65
4.2.3 Danh sách các ràng buộc toàn vẹn trong cơ sở dữ liệu 65
4.2.3.1 Ràng buộc khóa chính 65
4.2.3.2 Ràng buộc khóa ngoại 68
4.2.3.3 Ràng buộc miền giá trị 70
4.3 THIẾT KẾ GIAO DIỆN 71
4.3.1 Danh sách màn hình và sơ đồ chuyển đổi 71
4.3.2 Mô tả chi tiết các màn hình 72
4.3.2.1 Màn hình đăng nhập 72
4.3.2.2 Màn hình đăng ký 73
4.3.2.3 Màn hình thông tin cá nhân 74
4.3.2.4 Màn hình chỉnh sửa thông tin cá nhân 75
4.3.2.5 Màn hình đổi mật khẩu 77
4.3.2.6 Màn hình quản lý người dùng 78
4.3.2.7 Màn hình chi tiết quản lý người dùng 80
4.3.2.8 Màn hình quản lý quyền 81
4.3.2.9 Màn hình chỉnh sửa quyền 83
4.3.2.10 Màn hình thêm quyền 84
4.3.2.11 Màn hình quản lý danh mục 86
4.3.2.12 Màn hình thêm danh mục 87
4.3.2.13 Màn hình trang chủ 88
4.3.2.14 Màn hình chi tiết tin tức 91
4.3.2.15 Màn hình tin tức theo danh mục 92
4.3.2.16 Màn hình quản lý tin tức 93
4.3.2.17 Màn hình phân loại tin tức 95
4.3.2.18 Màn hình chi tiết quản lý, phân loại tin tức 97
Trang 154.3.2.19 Màn hình thêm tin tức 97
4.3.2.20 Màn hình thống kê tin tức theo danh mục 99
4.3.2.21 Màn hình quản lý link rss 100
4.3.2.22 Màn hình quản lý web rss 102
CHƯƠNG 5 CÀI ĐẶT VÀ KIỂM THỬ 105
5.1 CÀI ĐẶT 105
5.2 KIỂM THỬ 105
KẾT LUẬN 108
1 NHỮNG KẾT QUẢ ĐẠT ĐƯỢC 108
2 NHỮNG KHÓ KHĂN VÀ CÁCH KHẮC PHỤC KHI THỰC HIỆN ĐỀ TÀI 108
3 ƯU ĐIỂM 109
4 HẠN CHẾ 109
5 KINH NGHIỆM ĐẠT ĐƯỢC 109
6 HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI 110
DANH MỤC TÀI LIỆU THAM KHẢO 111
PHỤ LỤC 112
Trang 16DANH MỤC HÌNH ẢNH
Hình 1.1 Kiến trúc tổng thể của Spring Framework 2
Hình 1.2 Nền tảng Spring IO 4
Hình 1.3 Hình minh họa giải thích về Spring Boot 5
Hình 1.4 Sơ đồ kiến trúc Hibernate Framework 6
Hình 1.5 Sơ đồ cấu trúc Angular 7
Hình 1.6 Các thành phần cơ bản của Angular 5 8
Hình 1.7 Module chứa nhiều các Submodule 9
Hình 1.8 Mô tả các thành phần thuộc tính của Module 9
Hình 1.9 Sơ đồ minh họa API Gateway 11
Hình 3.1 Use case chung của hệ thống 25
Hình 3.2 Use case Quản lý người dùng 25
Hình 3.3 Use case Quản lý quyền 26
Hình 3.4 Use case Quản lý thông tin cá nhân 26
Hình 3.5 Use case Quản lý tin tức 27
Hình 3.6 Use case Quản lý loại tin tức 27
Hình 3.7 Use case Quản lý web lấy dữ liệu 28
Hình 3.8 Use case Quản lý link rss 28
Hình 4.1 Lược đồ lớp 45
Hình 4.2 Sequence Diagram use case Chỉnh sửa mật khẩu 45
Hình 4.3 Sequence Diagram use case Đăng ký 46
Hình 4.4 Sequence Diagram use case Đăng nhập 46
Hình 4.5 Sequence Diagram use case Liên hệ với người quản trị 47
Hình 4.6 Sequence Diagram use case Xóa chi tiết liên hệ 47
Hình 4.7 Sequence Diagram use case Chỉnh sửa loại tin tức 48
Hình 4.8 Sequence Diagram use case Kích hoạt/ Hủy kích hoạt loại tin tức 48
Hình 4.9 Sequence Diagram use case Thêm loại tin tức 49
Hình 4.10 Sequence Diagram use case Chỉnh sửa quyền của người dùng 49
Hình 4.11 Sequence Diagram use case Kích hoạt/ Hủy kích hoạt người dùng 50
Hình 4.12 Sequence Diagram use case Chỉnh sửa quyền 50
Hình 4.13 Sequence Diagram use case Kích hoạt/ Hủy kích hoạt quyền 51
Hình 4.14 Sequence Diagram use case Thêm quyền 51
Hình 4.15 Sequence Diagram use case Cập nhật ảnh đại diện 52
Hình 4.16 Sequence Diagram use case Chỉnh sửa thông tin cá nhân 52
Hình 4.17 Sequence Diagram use case Phân loại tin tức 53
Hình 4.18 Sequence Diagram use case Duyệt tin tức 53
Hình 4.19 Sequence Diagram use case Xóa tin tức 54
Hình 4.20 Sequence Diagram use case Thêm tin tức 54
Hình 4.21 Sequence Diagram use case Tìm kiếm tin tức 55
Hình 4.22 Sequence Diagram use case Thêm web lấy dữ liệu 55
Hình 4.23 Sequence Diagram use case Cập nhật web lấy dữ liệu 56
Hình 4.24 Sequence Diagram use case Xóa web lấy dữ liệu 56
Hình 4.25 Sequence Diagram use case Thêm link rss 57
Hình 4.26 Sequence Diagram use case Cập nhật link rss 57
Hình 4.27 Sequence Diagram use case Xóa link rss 58
Hình 4.28 Lược đồ logic 58
Hình 4.29 Sơ đồ quan hệ 65
Hình 4.30 Hình Danh sách màn hình và sơ đồ chuyển đổi 71
Trang 17Hình 4.32 Sơ đồ biến cố màn hình đăng nhập 72
Hình 4.33 Màn hình đăng ký 73
Hình 4.34 Sơ đồ biến cố màn hình đăng ký 73
Hình 4.35 Màn hình thông tin cá nhân 74
Hình 4.36 Sơ đồ biến cố màn hình thông tin cá nhân 75
Hình 4.37 Màn hình chỉnh sửa thông tin cá nhân 75
Hình 4.38 Sơ đồ biến cố màn hình chỉnh sửa thông tin cá nhân 76
Hình 4.39 Màn hình đổi mật khẩu 77
Hình 4.40 Sơ đồ biến cố màn hình đổi mật khẩu 78
Hình 4.41 Màn hình Quản lý người dùng 78
Hình 4.42 Sơ đồ biến cố màn hình Quản lý người dùng 79
Hình 4.43 Màn hình Chi tiết quản lý người dùng 80
Hình 4.44 Sơ đồ biến cố màn hình Chi tiết quản lý người dùng 81
Hình 4.45 Màn hình Quản lý quyền 81
Hình 4.46 Sơ đồ biến cố màn hình Quản lý quyền 82
Hình 4.47 Màn hình Chỉnh sửa quyền 83
Hình 4.48 Sơ đồ biến cố màn hình Chỉnh sử quyền 84
Hình 4.49 Màn hình thêm quyền 84
Hình 4.50 Sơ đồ biến cố màn hình Thêm quyền 85
Hình 4.51 Màn hình Quản lý danh mục 86
Hình 4.52 Sơ đồ biến cố màn hình Quản lý danh mục 87
Hình 4.53 Màn hình Thêm danh mục 87
Hình 4.54 Sơ đồ biến cố màn hình Thêm danh mục 88
Hình 4.55 Màn hình trang chủ 89
Hình 4.56 Sơ đồ biến cố màn hình Trang chủ 90
Hình 4.57 Màn hình chi tiết tin tức 91
Hình 4.58 Sơ đồ biến cố màn hình Chi tiết tin tức 92
Hình 4.59 Màn hình tin tức theo danh mục 92
Hình 4.60 Sơ đồ biến cố màn hình tin tức theo danh mục 93
Hình 4.61 Màn hình Quản lý tin tức 94
Hình 4.62 Sơ đồ các biến cố màn hình quản lý tin tức 95
Hình 4.63 Màn hình phân loại tin tức 95
Hình 4.64 Sơ đồ biến cố màn hình phân loại tin tức 96
Hình 4.65 Màn hình chi tiết quản lý, phân loại tin tức 97
Hình 4.66 Sơ đồ biến cố màn hình chi tiết quản lý, phân loại tin tức 97
Hình 4.67 Màn hình thêm tin tức 98
Hình 4.68 Sơ đồ biến cố màn hình Thêm tin tức 99
Hình 4.69 Màn hình Thống kê tin tức theo danh mục 99
Hình 4.70 Sơ đồ biến cố màn hình Thống kê tin tức theo danh mục 100
Hình 4.71 Màn hình Quản lý link rss 101
Hình 4.72 Sơ đồ biến cố màn hình Quản lý link rss 102
Hình 4.73 Màn hình Quản lý web rss 103
Hình 4.74 Sơ đồ biến cố màn hình Quản lý web rss 104
Trang 18DANH MỤC BẢNG
Bảng 1.1 Bảng mô tả các chức năng của các module trong Spring Framework 3
Bảng 2.1 Bảng chức năng nghiệp vụ của Quản trị viên 14
Bảng 2.2 Bảng chức năng nghiệp vụ của nhân viên 15
Bảng 2.3 Bảng chức năng nghiệp vụ của người dùng 16
Bảng 2.4 Bảng yêu cầu chức năng của hệ thống 16
Bảng 2.5 Bảng yêu cầu phi chức năng 17
Bảng 3.1 Bảng Danh sách tác nhân và chức năng 18
Bảng 3.2 Bảng tác nhân và vai trò của tác nhân 19
Bảng 3.3 Bảng mô tả chức năng 21
Bảng 3.4 Bảng mô tả Use case Đăng nhập 28
Bảng 3.5 Bảng mô tả Use case Đăng xuất 29
Bảng 3.6 Bảng mô tả Use case Đăng ký 29
Bảng 3.7 Bảng mô tả Use case Chỉnh sửa quyền người dùng 30
Bảng 3.8 Bảng mô tả Use case Hủy kích hoạt/ Kích hoạt người dùng 30
Bảng 3.9 Bảng mô tả Use case Chỉnh sửa quyền 31
Bảng 3.10 Bảng mô tả Use case Kích hoạt/ Hủy kích hoạt quyền 32
Bảng 3.11 Bảng mô tả Use case Xem thông tin cá nhân 32
Bảng 3.12 Bảng mô tả Use case Sửa thông tin cá nhân 33
Bảng 3.13 Bảng mô tả Use case Xem chi tiết tin tức 33
Bảng 3.14 Bảng mô tả Use case Tìm kiếm tin tức 34
Bảng 3.15 Bảng mô tả Use case Xem thông tin cá nhân 34
Bảng 3.16 Bảng mô tả Use case Phân loại tin tức 35
Bảng 3.17 Bảng mô tả Use case Xóa tin tức 35
Bảng 3.18 Bảng mô tả Use case Duyệt tin tức 36
Bảng 3.19 Bảng mô tả Use case Xem danh sách người dùng 37
Bảng 3.20 Bảng mô tả Use case Xem danh sách quyền 37
Bảng 3.21 Bảng mô tả Use case Xem danh sách tin tức 37
Bảng 3.22 Bảng mô tả Use case Cập nhật ảnh đại diện 38
Bảng 3.23 Bảng mô tả Use case Chỉnh sửa mật khẩu 38
Bảng 3.24 Bảng mô tả Use case Thêm loại tin tức 39
Bảng 3.25 Bảng mô tả Use case Xem danh sách loại tin tức 39
Bảng 3.26 Bảng mô tả Use case Chỉnh sửa loại tin tức 39
Bảng 3.27 Bảng mô tả Use case Kích hoạt/ Hủy kích hoạt loại tin tức 40
Bảng 3.28 Bảng mô tả Use case Thích tin tức 40
Bảng 3.29 Bảng mô tả Use case Thêm quyền 41
Bảng 3.30 Bảng mô tả Use case Thêm web lấy dữ liệu 41
Bảng 3.31 Bảng mô tả Use case Cập nhật web lấy tin tức 42
Bảng 3.32 Bảng mô tả Use case Xóa web lấy dữ liệu 42
Bảng 3.33 Bảng mô tả Use case Thêm link rss 43
Bảng 3.34 Bảng mô tả Use case Cập nhật link rss 43
Bảng 3.35 Bảng mô tả Use case Xóa link rss 44
Bảng 3.36 Bảng mô tả Use case Xem thống kê tin tức theo danh mục 44
Bảng 4.1 Chi tiết bảng Loại tin tức 59
Bảng 4.2 Chi tiết bảng Tin tức 59
Bảng 4.3 Chi tiết bảng Người dùng 61
Bảng 4.4 Chi tiết bảng Quyền 62
Trang 19Bảng 4.6 Chi tiết bảng User_Role 63
Bảng 4.7 Chi tiết bảng Cat_Item 64
Bảng 4.8 Chi tiết bảng Web 64
Bảng 4.9 Chi tiết bảng Cat_Web 65
Bảng 4.9 Bảng các đối tượng màn hình đăng nhập 72
Bảng 4.10 Bảng các đối tượng màn hình đăng ký 73
Bảng 4.11 Bảng các đối tượng màn hình thông tin cá nhân 74
Bảng 4.12 Bảng các đối tượng màn hình chỉnh sửa thông tin cá nhân 75
Bảng 4.13 Các đối tượng màn hình đổi mật khẩu 77
Bảng 4.14 Bảng các đối tượng màn hình Quản lý người dùng 78
Bảng 4.15 Bảng các đối tượng màn hình Chi tiết quản lý người dùng 80
Bảng 4.16 Bảng các đối tượng màn hình Quản lý quyền 81
Bảng 4.17 Bảng các đối tượng màn hình Chỉnh sửa quyền 83
Bảng 4.18 Bảng các đối tượng màn hình Thêm quyền 84
Bảng 4.19 Bảng các đối tượng màn hình Quản lý danh mục 86
Bảng 4.20 Bảng các đối tượng màn hình Thêm danh mục 88
Bảng 4.21 Bảng các đối tượng màn hình Trang chủ 90
Bảng 4.22 Các đối tượng màn hình Chi tiết tin tức 91
Bảng 4.24 Các đối tượng màn hình tin tức theo danh mục 93
Bảng 4.25 Các đối tượng màn hình Quản lý tin tức 94
Bảng 4.26 Các đối tượng màn hình phân loại tin tức 96
Bảng 4.27 Bảng các đối tượng màn hình chi tiết quản lý, phân loại tin tức 97
Bảng 4.28 Các đối tượng màn hình Thêm tin tức 98
Bảng 4.29 Các đối tượng màn hình Thống kê tin tức theo danh mục 100
Bảng 4.30 Các đối tượng màn hình Quản lý link rss 101
Bảng 4.31 Các đối tượng màn hình Quản lý web rss 103
Bảng 5.1 Một số Test Case tiêu biểu nhóm đã kiểm thử 105
Bảng 1 Khó khăn về công nghệ trong dự án 108
Bảng 2 Khó khăn về quy trình nghiệp vụ trong dự án 108
Bảng 3 Khó khăn về con người trong dự án 109
Trang 20DANH MỤC TỪ VIẾT TẮT
1 UI/UX: UI - Giao diện người dùng , UX - Trải nghiệm người dùng
3 Java EE: Java Platform, Enterprise Edition
5 POJO: Plain Old Java Object
6 JMX: Java Management Extensions
7 EL : Expression language
8 AOP : Aspect Oriented Programming
9 JDBC: Java Database Connectivity
10 ORM: Object Relational Mapping
11 JMS: Java Message Service
12 JDK: Java Development Kit
13 CLI Tool : Command Line Interface Tool
14 XML: eXtensible Markup Language
15 CSDL: Cơ sở dữ liệu
16 SOA : Society of Actuaries
17 DI : Dependency Injecttion
18 UML: Unified Modeling Language
19 Hrm: Human resource management (Quản lý nhân sự)
20 RPC: Remote Procedure Calls
22. HTTP: HyperText Transfer Protocol
Trang 21MỞ ĐẦU
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Trên thế giới, nỗi quan ngại về sự "hết thời" của báo in đã được đặt ra cách đây đãlâu, khi sự khủng hoảng số lượng phát hành lan tới cả các "đại gia" báo in của nước
Mỹ như: New York Times, Washington Post, Los Angeles Times thậm chí tờ báo đã
có 80 năm tuổi là Newsweek cũng phải đình bản in để chuyển hoàn toàn sang báo điện
tử Theo một nghiên cứu của Hiệp hội báo in Hoa Kỳ (NNA), vào năm 2005, số ngườiđọc báo qua mạng vượt trội hẳn so với số người đọc báo in theo tỷ lệ không những gấpđôi mà thậm chí còn gấp sáu lần: New York Times: 12.8 triệu/5 triệu; WashingtonPost: 7.8 triệu/1.8 triệu, Los Angeles Times: 4.3 triệu/2.4 triệu Cũng giống như thịtrường báo chí Mỹ, báo in ở Pháp cũng rơi vào khủng hoảng khi nhiều báo lớn đềuphải cắt giảm nhân sự, giảm đáng kể lợi nhuận và phải chuyển sang báo điện tử để tiếptục duy trì hoạt động Ðiển hình như tờ nhật báo Lemonde, đã có phiên bản điện tửngay từ những năm 1990 và đến nay, trở thành tờ báo điện tử có uy tín bậc nhất nướcPháp cũng như thế giới Tây Ban Nha cũng không nằm ngoài cuộc khủng hoảng khi tờnhật báo hàng đầu là El Pais đã phải cắt giảm tới 129 nhân sự trong năm 2012 vàlượng phát hành thì tụt xuống còn 455.666 bản mỗi ngày so với thời hoàng kim cách
đó 10 năm là một triệu bản Lượng phát hành giảm kéo theo doanh thu giảm xuốngcòn 194 triệu euro so với 453 triệu euro năm 2005 Sau thất bại của tờ báo in, El Paistìm cách lấy lại uy tín cũng như doanh thu bằng cách chuyển hướng sang báo điện tử.Tại Giải thưởng Pulitzer năm 2012, báo điện tử tiếp tục lên ngôi khi được vinh danh ởhai thể loại Tại lễ trao Giải thưởng này, phóng viên David Wood của báo điện tử TheHuffington Post chiến thắng ở hạng mục tin bài trong nước David Wood đã có mộtloạt bài viết về những nỗi đau tinh thần cũng như thể xác mà những người lính Mỹ bịthương tại I-rắc, Áp-ga-ni-xtan đã phải chịu đựng trong suốt 10 năm diễn ra chiếntranh Ở một thể loại khác là tranh biếm họa, tờ báo điện tử Politico cũng được vinhdanh khi họa sĩ Matt Wuerker giành chiến thắng với tác phẩm miêu tả cuộc chiến giữaÐảng Dân chủ và Ðảng Cộng hòa thông qua hình ảnh biếm họa cuộc chiến giữa "conlừa" và "con voi" Pulitzer là giải thường niên, được đánh giá là danh giá nhất tronglĩnh vực báo chí ở Mỹ Việc có hai tờ báo điện tử được xướng tên để nhận giải chothấy tầm ảnh hưởng cũng như sức mạnh của loại hình báo chí hiện đại này
Trang 22Ở Việt Nam, báo điện tử cũng tạo ra một bước ngoặt trong hoạt động báo chí, với
sự gia tăng không ngừng số lượng các tờ báo, trang tin điện tử Thống kê cho thấy đếnhiện tại, cả nước có 77 tờ báo điện tử và gần 200 trang tin điện tử với lượng thông tindày đặc mỗi ngày Và báo in cũng phải đối diện với cuộc cạnh tranh khốc liệt khi cácbáo điện tử không chỉ mang đến một cách đọc tin mới mà còn mang đến những cáchtiếp cận thông tin mới mẻ, phù hợp tâm lý của đông đảo công chúng hiện đại Nhiều tờbáo in cũng đã có một số dấu hiệu "lùi bước" khi phải cắt giảm phóng viên, nhân viên,
vì sự suy giảm phát hành và quảng cáo đã làm cho nguồn thu giảm nghiêm trọng Quảthực, báo mạng với những tiện ích mà báo in khó có thể sánh được đã bùng nổ mạnh
mẽ, khiến một số báo in không còn cách nào khác là phải giảm số lượng phát hành vàngậm ngùi nhường vị trí áp đảo cho báo mạng Không chỉ báo in, ngay cả hệ thốngtruyền hình và phát thanh cũng khó cạnh tranh với báo mạng bởi tính nhanh nhạy, tínhtương tác và không gian không hạn định của loại hình báo chí này Nhận thức đượctiềm năng phát triển đó nhóm đã mạnh dạn chọn việc xây dựng website tin tức trựctuyến để có thể bắt kịp xu hướng thời đại
2 MỤC TIÊU CỦA ĐỀ TÀI
Tìm hiểu về Microservices, Angular, RESTful APIs
Phân tích, thiết kế và xây dựng hệ thống website tin tức trực tuyến với một số chứcnăng và công việc cơ bản như sau:
mới, cập nhật danh mục tin tức
tin tức, cập nhật, gỡ tin tức
cũng như tài khoản cho người dùng
cập nhật quyền
hình, thêm, xóa, sửa các URL của những trang báo khác để có thể lấy data từ các URLnày
Trang 23- Nhóm chức năng dành cho người dùng:
riêng loại tin tức đó
tức, có thể tương tác như like, bỏ like trên mỗi tin tức
tin tài khoản cá nhân của mình
3 CÁCH TIẾP CẬN VÀ PHƯƠNG PHÁP NGHIÊN CỨU 3.1 Đối tượng
3.3 Phương pháp nghiên cứu
Nghiên cứu và tìm hiểu các tài liệu, website liên quan đến các công nghệ, kiến thứcđang tìm hiểu
Tham khảo ý kiến của Thầy hướng dẫn cùng các anh, chị và bạn bè có kinh nghiệmliên quan đến các vấn đề liên quan đến đề tài tiểu luận để tạo tính chính xác và khoahọc của đề tài
4 PHÂN TÍCH CÁC HỆ THỐNG WEBSITE CÓ LIÊN QUAN
Đa số các website tin tức trực tuyến đều trình bày theo các danh mục bài viết,người dùng có thể dễ dàng đọc những tin tức mà mình muốn
Tuy nhiên một số ứng dụng vẫn có các nhược điểm mà nhóm em đã tổng hợpđược:
Trang 245 KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC
Xây dựng được website tin tức trực tuyến thông qua các công nghệ, kiến thức đã nghiên cứu được
Trang 25NỘI DUNG CHƯƠNG 1 CÁC CÔNG NGHỆ SỬ DỤNG
1.1 TỔNG QUAN VỀ SPRING BOOT
1.1.1 Giới thiệu về Spring Framework
1.1.1.1 Enterprise Javabeans và Spring
Có thể nói rằng Spring Framework ra đời là nhờ sự thành công của EJB EJB(Enterprise JavaBeans) là một kiến trúc phát triển dành cho các ứng dụng doanhnghiệp đòi hỏi tính mạnh mẽ và khả năng mở rộng cao EJB là một thành phần quantrọng của nền tảng Java EE EJB được tạo ra bởi hai gã khổng lồ công nghệ là IBM vàSun vào những năm cuối thập niên 90 Dưới sự phát triển của hai tập đoàn này, EJB đãtrở nên nặng nề hơn Tiêu chuẩn EJB cũng nhanh chóng được thông qua Sau tất cả,EJB được ca ngợi là giải pháp tốt nhất để xây dựng các ứng dụng phân tán dành chodoanh nghiệp
Nhưng rồi những chỉ trích về chi tiết kỹ thuật của EJB đã tăng nhanh còn hơn sựnổi tiếng của nó EJB là một framework lớn với độ phức tạp cao Các nhà phát triềnkhi làm việc với EJB đã nhận ra rằng nó không hoạt động như những gì nó đã đề ra.EJB chỉ tuyệt vời trên bàn giấy, nhưng ra thực tế đó lại là một chuyện khác Trongnhững phiên bản đầu tiên, các lập trình viên phải cài đặt các lớp implementation cho 2interface khác nhau, cần qúa nhiều mã nghi thức (ceremonial code) để đáp ứng yêu cầucủa EJB … EJB vẫn được tiếp tục phát triển, dễ sử dụng hơn nhiều so với buổi banđầu Nhưng những chỉ trích vẫn còn đó, nỗi thất vọng trong cộng đồng Java ngày càngtăng lên, đòi hỏi cần có một giải pháp thay thế
1.1.1.2 Sự ra đời của Spring Spring là gì?
Vào năm 2002, Spring Framework phát hành phiên bản đầu tiên bởi Rod Johnson.Việc xây dựng các ứng dụng doanh nghiệp trở nên đơn giản và dễ dàng hơn RodJohnson đã cho xuất bản một cuốn sách được phổ biến rộng rãi có nhan đề “J2EEDevelopment without EJB” Điều này đã cho Spring Framework rất nhiều động lực đểthay thế EJB Ngày nay, Spring đã trở thành framework mã nguồn mở phổ biến nhất
để xây dựng các ứng dụng doanh nghiệp Cách tiếp cận thực tế ban đầu của RodJohnson tiếp tục được phát triển và hướng tới một bộ công cụ hoàn chỉnh dành cho xây
Trang 26dựng các ứng dụng doanh nghiệp Theo một số nguồn, trên 50% các ứng dụng webJava hiện nay đang sử dụng Spring.
Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng triệulập trình viên Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lạicode…
Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB;trong suốt: hoạt động một cách trong suốt với lập trình viên)
Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùngrất lớn
Dependency Injection và Aspect Oriented Programming
Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát triển JavaDesktop, ứng dụng mobile, Java Web Mục tiêu chính của Spring là giúp phát triển cácứng dụng J2EE một cách dễ dàng hơn dựa trên mô hình sử dụng POJO (Plain Old JavaObject)
1.1.1.3 Kiến trúc, các module của Spring Framework
Spring được chia làm nhiều module khác nhau, tùy theo mục đích phát triển ứngdụng mà ta dùng 1 trong các module đó
Dưới đây là kiến trúc tổng thể của Spring Framework:
Hình 1.1 Kiến trúc tổng thể của Spring Framework
Trang 27Bảng 1.1 Bảng mô tả các chức năng của các module trong Spring Framework
Spring Core Container (internationalization), các tính năng Java EE như
EJB, JMX
Language trong JSP Nó cung cấp hỗ trợ việcsetting/getting giá trị, các method cải tiến cho phéptruy cập collections, index, các toán tử logic…
AOP, Aspects and Những module này hỗ trợ cài đặt lập trình hướng khía cạnh
(Aspect Oriented Programming), hỗ trợ tích hợp vớiInstrumentation
AspectJ
Nhóm này bao gồm JDBC, ORM, OXM, JMS và moduleData Access / Integration Transaction Những module này cung cấp khả năng giao
tiếp với database
Web Hay còn gọi là Spring MVC Nhóm này gồm Web,
Web-Servlet… hỗ trợ việc tạo ứng dụng web
1.1.1.4 Các lợi ích của Spring Framework
Spring cho phép lập trình viên sử dụng POJOs Việc sử dụng POJOs giúp bạnkhông phải làm việc với EJB, ứng dụng, các luồng chạy, cấu hình… đơn giản hơn rấtnhiều
Trang 283
Trang 29Spring được tổ chức theo kiểu mô đun Số lượng các gói và các lớp khá nhiều,nhưng bạn chỉ cần quan tâm đến những gì chúng ta cần và không cần quan tâm đếnphần còn lại.
Spring hỗ trợ sử dụng khá nhiều công nghệ như ORM Framework, các loggingframework, JEE, các thư viện tạo lịch trình (Quartz và JDK timer)…
Module Web của Spring được thiết kế theo mô hình MVC nên nó cung cấp đầy đủcác tính năng giúp thay thế các web framework khác như Struts
1.1.2 Giới thiệu về Spring Boot
Có thể dùng Spring Boot để tạo ứng dụng Java Web chạy bằng command line 'java-jar' hoặc xuất khẩu ra file war để triển khai lên Web Server như thông thường SpringBoot cung cấp cho bạn một "CLI Tool" để chạy các kịch bản Spring (spring scripts)
Trang 30Spring Boot có thể giải thích một cách đơn giản bởi hình minh họa dưới đây:
Hình 1.3 Hình minh họa giải thích về Spring Boot.
1.1.2.2 Ưu điểm của Spring Boot
Dễ dàng để phát triển các ứng dụng dựa trên Spring với Java hoặc Groovy
Giảm thiểu thời gian phát triển và tăng năng suất
Giúp tránh việc phải viết nhiều mã nguyên mẫu (boilerplate Code), Annotations vàcác cấu hình XML
Dễ dàng tương tác các ứng dụng Spring Boot với các hệ sinh thái của Spring nhưSpring JDBC, Spring ORM, Spring Data, Spring Security etc
Nó đi theo cách tiếp cận “Nguyên tắc cấu hình mặc định” để giảm thiểu thời gian
Không yêu cầu XML config…
Chuẩn cho Microservices (Cloud support; giảm việc setup, config; các thư viện hỗtrợ…)
1.2 TỔNG QUAN VỀ HIBERNATE
Hibernate là 1 ORM Framework: thực hiện mapping cơ sở dữ liệu quan hệ sangcác object trong ngôn ngữ hướng đối tượng Hibernate là 1 Framework cho persistence
Trang 31layer: Thực hiện giao tiếp giữa tầng ứng dụng với tầng dữ liệu (kết nối, truy xuất, lưutrữ…)
Kiến trúc Hibernate Framework:
Hình 1.4 Sơ đồ kiến trúc Hibernate Framework.
Mỗi table trong database là một object trong Hibernate Do đó, bạn cần có một javabean cho mỗi table trong database Các java bean này sẽ có các getters/setters và một
số ngoại lệ theo quy ước của Hibernate
Mỗi file mapping (ánh xạ) có dạng ***.hbm.xml có nhiệm vụ đặc tả mỗi quan hệgiữa các thuộc tính của đối tượng và các trường trong bảng CSDL (cột nào ứng vớithuộc tính nào của class, kiểu giá trị là gì, quan hệ giữa các bảng chuyển thành quan hệgiữa các lớp ra sao…)
File Hibernate.cfg.xml : Đây là tập tin được load đầu tiên khi khởi chạy ứng dụngHibernate Nó chứa các thông tin về kết nối (database kết nối là gì (MySQL, Oracle,SQL server…), username và password kết nối với database là gì, tên database được kếtnối), driver kết nối…
1.3 TỔNG QUAN VỀ ANGULAR 5
1.3.1 Giới thiệu về Angular
Angular là một Framwork mạnh mẽ được phát triển bởi Google Nó được sử dụng
để xây dựng các ứng dụng tương tác với người dùng thông qua giao diện Web.Angular cho cung cấp cho lập trình viên nền tảng công nghệ hiện đại dựa trên kiến trúcHướng dịch vụ SOA và cho phép tích hợp với hàng loạt các nền tảng công nghệ lậptrình hiện đại như Net, Java, Php …
Trang 32Với đặc trưng mạnh mẽ của các phiên bản trước kia như Angular 1.x, từ phiên bảnAngular 2 (Hiện nay là phiên bản Angular 5) trở đi , nền tảng công nghệ có sự thay đổilớn, ở đây ngôn ngữ lập trình được thực hiện đó là TypeScrip (Ngôn ngữ lập trình hiệnđại và hướng đối tượng), và framework này cũng phân chia việc phát triển ứng dụngthành nhiều các module riêng biệt, điều này giúp cho lập trình viên có thể tiếp cận theocách hướng mô hình một cách dễ dàng hơn.
1.3.2 Kiến trúc và các thành phần cơ bản
Ứng dụng được xây dựng và phát triển trên nền tảng Angular 5 có thể được mô tảtheo sơ đồ cây tổng quát sau:
Hình 1.5 Sơ đồ cấu trúc Angular.
Components: Được dịch là thành phần, nó chức đựng các chức năng tương tác phíagiao diện với người dùng Component có chứa Html, css hoặc scss, và các đoạn mãđược viết bằng ngôn ngữ Typescrip nhằm thực hiện gắn kết (Tương tác) giữa giao diệnứng dụng và các dịch vụ (Service) ở phía Server
Trong hình vẽ trên thì các component trực thuộc Module Và nó được nạp vào ứngdụng là nhờ Module
Trang 33Component sử dụng Dịch vụ (Service) để lấy dữ liệu hoặc thao tác với dữ liệu vàhiển thị chúng thông qua các đoạn mã chương trình được viết bằng TypeScript.
Component có thể sử dụng các đối tượng là thể hiện của dịch vụ thông qua cơ chếDependency Injection (Thể hiện của Dependency Injecttion - DI là rất dễ hiểu, lậptrình viên chỉ cần khai báo đối tượng thông qua hàm khởi tạo của lớp)
Directive được sử dụng trong template của Component nhằm để mở rộng các hành
vi của Html
Dữ liệu có thể được hiển thị tương ứng với các file html trong component Angularcung cấp cơ chế gắn kết dữ dữ liệu với giao diện (Template) của component cơ chế đóđược gọi là databinding
Thông qua cơ chế Databinding, bất kỳ thay đổi dữ liệu trong Angular, thì giao điệntương tác sẽ tự động cập nhật các thay đổi dữ liệu đó Tương tác về sự thay đổi dữ liệutrong Angular với phía giao diện (UI) có thể theo hướng 1 chiều hoặc 2 chiều
Hình ảnh dưới đây mô tả các thành phần cơ bản của Angular:
Hình 1.6 Các thành phần cơ bản của Angular 5.
1.3.3 Giới thiệu về Module trong Angular 5
1.3.3.1 Module là gì?
Angular 5 chia sự phát triển ứng dụng thành các Module khác nhau Tất cả các ứngdụng của Angular đều có 1 module gốc, module gốc được gọi là AppModule và có ítnhất một lớp NgModule Tùy theo quy mô của ứng dụng, với ứng dụng nhỏ chỉ cầnmột module là đủ Tuy nhiên với các ứng dụng lớn có thể có chứa rất nhiều cácModule khác nhau Chú ý trong một Module có thể chứa nhiều các Module con khác.Các module con được gọi là các SubModule Ví dụ được mô tả ở hình dưới đây
Trang 34Hình 1.7 Module chứa nhiều các Submodule.
Mỗi Module có chứa @ngModule Với các đặc chưng có chứa Metadata nhằm để định nghĩa các thuộc tính được sử dụng như sau:
Pipe nhằm thực hiện hiển thị thông tin do vậy người ta gọi là các lớp hiển thị (Viewclass)
các Component này được sử dụng tiếp ở các Module khác thì chúng ta sẽ khai báo cácComponent này tại mảng đối tượng trực thuộc từ khóa Export này
chúng ta phải khai báo chúng tại mảng đối tượng trực thuộc từ khóa Imports
Hình sau mô tả các thành phần của Module:
Hình 1.8 Mô tả các thành phần thuộc tính của Module.
9
Trang 351.3.3.2 Cách phân chia ứng dụng theo Module
Khi xây dựng ứng dụng với quy mô từ trung bình trở lên, người ta thường hay sửdụng ngôn ngữ mô hình hóa ví dụ như UML để thực hình mô hình hóa hệ thống phầnmềm Trong ngôn ngữ UML có nhiều các biểu đồ khác nhau Để mô hình hóa chứcnăng của hệ thống, các kỹ sư sẽ sử dụng biểu đồ Usecase để mô hình hóa 1 chức nănghoặc một nhóm chức năng của phần mềm, Khi muốn gom nhóm các chức năng lại vớinhau thì người ta sẽ sử dụng biểu đồ biểu đồ thành phần (Component Diagram – Chứanhiều biểu đồ Usecase)
Với các ứng dụng được viết bằng Angular 5 chúng ta có thể ánh xạ biểu đồ thànhphần sang thành các Module ứng dụng Với các SubModule tương ứng với các biểu đồUsecase trực thuộc biểu đồ thành phần
Ví dụ ta xây dựng 1 chương trình quản lý nhân sự, chương trình này bao gồm cóchứa ít nhất 2 biểu đồ thành phần (1 biểu đố Authortication – Dùng để kiểm tra truycập hệ thống và 1 biểu đồ thành phần sử dụng để Quản lý nhân sự - Hrm) Tương ứngsang Angular 5 ta cũng sẽ có 3 modules đó là : Application Module (Đóng vai trò làRootModule) và 2 module thành phần bao gồm AuthorModule và HrmModule
1.4 TỔNG QUAN VỀ MICROSERVICES
1.4.1 Giới thiệu về Microservices
Kiến trúc Microservices gồm nhiều dịch vụ nhỏ Mỗi dịch vụ nhỏ thực hiện một sốcác chức năng chuyên biệt như quản lý đơn hàng, quản lý khách hàng… Mỗi dịch vụ
là một ứng dụng nhỏ có kiến trúc đa diện lõi là business logic kết nối ra các adapterkhác nhau Một số dịch vụ nhỏ lộ đưa ra API cho dịch vụ nhỏ khác hay client gọi tới.Khi vận hành, mỗi dịch vụ nhỏ được chạy trong một máy ảo hoặc Docker container.Mỗi chức năng giờ được thực thị bởi một dịch vụ nhỏ Ứng dụng web cũng có thểchia nhỏ hơn chuyên cho từng đối tượng người dùng Thiết kế giao diện cho từng đốitượng người dùng giúp tối ưu trải nghiệm tốt hơn, tốc độ nhanh hơn, dễ tương thíchhơn trong khi chức năng tối giản hơn
Ứng dụng của người dùng cuối sẽ không được kết nối trực tiếp vào back-endservices Thay vào đó có API gateway đứng giữa
Trang 36Kiến trúc Microservices ảnh hưởng lớn đến quan hệ ứng dụng và cơ sở dữ liệu.Thay vì dùng chung một cơ sở dữ liệu giữa các dịch vụ, mỗi dịch vụ sẽ có cơ sở dữliệu riêng Cách này đi ngược lại việc tập trung hóa cơ sở dữ liệu trong truyền thống.
1.4.2 Ưu điểm của Microservices
Giảm thiểu sự gia tăng phức tạp rối rắm hệ thống lớn
Chia nhỏ ứng dụng một khối cồng kềnh thành các dịch vụ nhỏ dễ quản lý, bảo trìnâng cấp, tự do chọn, nâng cấp công nghệ mới
Mỗi dịch vụ nhỏ sẽ định ra ranh giới rõ ràng dưới dạng RPC hay API hướng thôngđiệp Mỗi dịch vụ nhỏ sẽ dễ phát triển hơn, nhanh hơn, dễ automation test
Microservice thúc đẩy tách rạch ròi các khối chức năng của một ứng dụng
1.4.3 Giới thiệu về API Gateway
Cổng kết nối API là phương pháp tiếp cận tốt hơn rất nhiều Một cổng kết nối API
là một máy chủ truy xuất duy nhất vào hệ thống Nó cũng tương tự như mẫu thiết kếFacade dựa trên thiết kế hướng đối tượng Cổng kết nối API che giấu đi thông tin kiếntrúc hệ thống nội bộ và nó cung cấp các API tùy chỉnh cho mỗi Client Cổng kết nốiAPI còn có trách nhiệm xác thực, giám sát, cân bằng tải, caching, định hình yêu cầu vàquản lí thông tin, xử lí phản hồi tĩnh
Sơ đồ minh họa dưới đây cho thấy một API Gateway phù hợp trong kiến trúc ứngdụng:
Hình 1.9 Sơ đồ minh họa API Gateway.
Trang 37Cổng kết nối API làm nhiệm vụ định tuyến các yêu cầu, kết hợp và chuyển đổi cácgiao thức Tất cả yêu cầu từ Client đều đi qua cổng kết nối API Sau đó cổng kết nốiAPI định tuyến các yêu cầu này tới microservice phù hợp Cổng kết nối API Gateway
sẽ xử lý một yêu cầu người dùng bằng cách gọi đến một loạt microservice rồi tổng hợpcác kết quả Nó có thể chuyển đổi giữa các giao thức web như HTTP, WebSocket vàcác giao thức nội bộ không thân thiện với web
Cổng kết nối API cũng có thể cung cấp API tùy chỉnh cho mỗi Client Nó cung cấpAPI “thô” (coarse-grained) cho mobile client Cùng xem xét lại ví dụ về kịch bản trangthông tin chi tiết sản phẩm Cổng kết nối API có thể cung cấp kết nối cuối(/productdetails?productid=xxx) cho phép mobile client nhận tất cả thông tin chi tiếtcủa sản phẩm chỉ với một lệnh yêu cầu duy nhất Cổng kết nối API xử lí lệnh yêu cầubằng cách truy vấn đến các dịch vụ khác nhau như dịch vụ thông tin sản phẩm, dịch vụkhuyến nghị, dịch vụ đánh giá… rồi sau đó tổng hợp lại kết quả
1.4.4 Cấu trúc Microservices nhóm sử dụng trong Project
Hình 1.10 Cấu trúc Microservices nhóm sử dụng trong Project.
Trang 38CHƯƠNG 2 KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU
2.1 PHÂN TÍCH HIỆN TRẠNG
Với sự bùng nổ thông tin trên Internet, vai trò của các trang thông tin điện tử trựctuyến ngày càng trở nên quan trọng Khác với báo chí truyền thông có giới hạn thờigian cập nhật tin tức, các tờ báo trực tuyến đã cung cấp được sự tiện lợi trong việc cậpnhật và phát hành thông tin Về phía người dùng, họ có thể xem thông tin mọi lúc mọinơi Về phía những người cung cấp thông tin, các nhà báo họ có thể dễ dàng cập nhậtnhững tin tức mới nhất, thời sự nhất Do đó việc sử dụng các trang thông tin trực tuyếnluôn là điều cần thiết hiện nay nhằm đáp ứng nhu cầu cập nhật thông tin của mọingười Sau đây là mô tả chi tiết các công việc mà hệ thống website tin tức trực tuyếncần có để đáp ứng nhu cầu của người dùng:
2.2 PHÂN TÍCH YÊU CẦU
2.2.1 Yêu cầu chức năng
2.2.1.1 Yêu cầu chức năng nghiệp vụ
Lưu trữ: các thông tin về:
tạo, người tạo, ngày cập nhật, người cập nhật
đầy đủ, lượt like, comment, view, hình ảnh thuộc danh mục, ngày tạo, người tạo, ngàycập nhật, người cập nhật
khoản, hình ảnh, địa chỉ, email, …Tìm kiếm/ tra cứu:
Trang 39 Thống kê danh sách danh mục tin tức.
Duyệt:
Bộ phận (Người thực hiện): Quản trị viên hệ thống
Bảng 2.1 Bảng chức năng nghiệp vụ của Quản trị viên
Khi thêm mớimột người dùng
phân quyền truycập rõ ràng
người dùng
5 Thêm url để crawling Lưu trữ
data
6 Sửa url để crawling Lưu trữ
data
7 Xóa url crawling data Lưu trữ
8 Xem thống kê tin tức Thống kê
theo danh mục
Trang 4014