Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến Xây dựng hệ thống website tin tức trực tuyến
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2i
LỜ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ững người xung quanh dù cho sự giúp đỡ đó là ít hay nhiều, trực tiếp hay gián tiếp Trong suố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ững kiế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ại trườ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àm khó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àm bà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áo cá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ủa Thầ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 3v
MỤ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
1.4.3 Giới thiệu về API Gateway 11
Trang 4vi
1.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 5vii
4.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 6viii
4.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 7ix
DANH 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
Hình 4.31 Màn hình đăng nhập 72
Trang 8x
Hì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 9xi
DANH 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
Bảng 4.5 Chi tiết bảng Lịch sử thao tác trên Item 63
Trang 10xii
Bả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 11xiii
DANH MỤC TỪ VIẾT TẮT
13 CLI Tool : Command Line Interface Tool
22 HTTP : HyperText Transfer Protocol
Trang 12xiv
MỞ ĐẦ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; Washington Post: 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 đều phả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ếp tụ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ước Phá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ống cò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 Pais tì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ử The Huffington Post chiến thắng ở hạng mục tin bài trong nước David Wood đã có một loạ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ến tranh Ở một thể loại khác là tranh biếm họa, tờ báo điện tử Politico cũng được vinh danh 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 "con lừa" và "con voi" Pulitzer là giải thường niên, được đánh giá là danh giá nhất trong lĩ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 cho thấ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 13xv
Ở 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 đến hiệ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 tin dà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ác bá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ách tiế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ống truyề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ính tươ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 được tiề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ực tuyế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ức năng và công việc cơ bản như sau:
- Nhóm chức năng quản trị hệ thống website:
Quản lý danh mục tin tức: Chức năng cho phép tìm kiếm, thống kê, thêm mới, cập nhật danh mục tin tức
Quản lý tin tức: Chức năng cho phép tìm kiếm, thêm mới, thống kê, duyệt tin tức, cập nhật, gỡ tin tức
Quản lý tài khoản: Chức năng cho phép quản trị có thể cập nhật các quyền cũng như tài khoản cho người dùng
Quản lý quyền: Chức năng cho phép quản trị viên có thể tìm kiếm, thêm, cập nhật quyền
Quản lý việc Crawling RSS: Chức năng cho phép quản trị viên có thể cấu 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 URL này
Trang 14xvi
- Nhóm chức năng dành cho người dùng:
Xem tin tức theo danh mục: Với chức năng này người dùng có thể xem riêng loại tin tức đó
Xem chi tiết tin tức: Với chức năng này người dùng có thể xem chi tiết tin tức, có thể tương tác như like, bỏ like trên mỗi tin tức
Quản lý tài khoản: Người dùng có thể đăng nhập, đăng ký, cập nhật thông
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 nghiên cứu
Tất cả mọi người hiểu được tiếng Việt và có nhu cầu xem tin tức trực tuyến, cập nhật thông tin liên tục
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ệm liê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à khoa họ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:
Một số ứng dụng có giao diện chưa thu hút người dùng
Một số ứng dụng có giao diện đẹp tuy nhiên hơi khó sử dụng
Trang 15xvii
5 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 161
NỘ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 doanh nghiệ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 quan trọ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 cho doanh 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ền khi 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 Trong nhữ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 2 interface khác nhau, cần qúa nhiều mã nghi thức (ceremonial code) để đáp ứng yêu cầu củ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àng tă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 Rod Johnson đã cho xuất bản một cuốn sách được phổ biến rộng rãi có nhan đề “J2EE Development 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 Rod Johnson 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 17Spring 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ùng rất lớn
Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là: 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 Java Desktop, ứ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 Java Object)
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 ứng dụ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 18Spring Core Container
Bao gồm các module spring core, beans, context và expression language (EL):
Spring core, bean cung cấp tính năng IOC và Dependency Injection
Spring Context hỗ trợ đa ngôn ngữ (internationalization), các tính năng Java EE như EJB, JMX
Expression Language được mở rộng từ Expresion Language trong JSP Nó cung cấp hỗ trợ việc setting/getting giá trị, các method cải tiến cho phép truy cập collections, index, các toán tử logic…
AOP, Aspects and
Instrumentation
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ới
AspectJ
Data Access / Integration
Nhóm này bao gồm JDBC, ORM, OXM, JMS và module Transaction Những module này cung cấp khả năng giao tiếp với database
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ạn khô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ất nhiều
Trang 194
Spring đượ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 đến
phần còn lại
Spring hỗ trợ sử dụng khá nhiều công nghệ như ORM Framework, các logging
framework, 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
1.1.2.1 Spring Boot là gì?
Hình 1.2 Nền tảng Spring IO
Spring Boot là một Project nằm trên tầng IO Execution (Tầng thực thi) của Spring
IO Framework
Spring Boot là một bước tiếp theo của Spring, để làm cho Spring dễ dàng hơn
trong việc thiết lập và phát triển ứng dụng Với Spring Boot các cấu hình Spring được
giảm thiểu tối đa Spring Boot hỗ trợ các bộ chứa nhúng (embedded containers) điều
này cho phép các ứng dụng web có thể chạy độc lập mà không cần phải trên khai lên
các Web Server
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 Spring
Boot cung cấp cho bạn một "CLI Tool" để chạy các kịch bản Spring (spring scripts)
Trang 205
Spring 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ệ sang các object trong ngôn ngữ hướng đối tượng Hibernate là 1 Framework cho persistence
Trang 216
layer: 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ưu trữ…)
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 java bean 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ới thuộ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ụng Hibernate 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ết nố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úc Hướ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ập trình hiện đại như Net, Java, Php …
Trang 227
Vớ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ản Angular 2 (Hiện nay là phiên bản Angular 5) trở đi , nền tảng công nghệ có sự thay đổi lớ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ụng thà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 theo cá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ía giao 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 ứng dụng là nhờ Module
Trang 23Directive đượ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 Angular cung 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ện tươ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ệu trong 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 ứng dụng của Angular đều có 1 module gốc, module gốc được gọi là AppModule và có ít nhất một lớp NgModule Tùy theo quy mô của ứng dụng, với ứng dụng nhỏ chỉ cần mộ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ác Module 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 249
Hì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:
declarations: Khai báo các lớp View (Bao gồm Component, directive và 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ị (View class)
Exports: Khi chúng ta sử dụng các Component tại Module, chúng ta muốn 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ác Component này tại mảng đối tượng trực thuộc từ khóa Export này
Imports: Chúng tả muốn sử dụng các Module khác trong module này, thì 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
Providers: Khai báo các service được sử dụng trong module
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
Trang 2510
1.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ần mềm Trong ngôn ngữ UML có nhiều các biểu đồ khác nhau Để mô hình hóa chức nă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ăng hoặ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ới nhau thì người ta sẽ sử dụng biểu đồ biểu đồ thành phần (Component Diagram – Chứa nhiề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ành phầ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 truy cập hệ thống và 1 biểu đồ thành phần sử dụng để Quản lý nhân sự - Hrm) Tương ứng sang 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 adapter khá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 đối tượ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ích hơ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-end services Thay vào đó có API gateway đứng giữa
Trang 2611
Kiế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ến trú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ối API 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 ứng dụng:
Hình 1.9 Sơ đồ minh họa API Gateway
Trang 2712
Cổ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ác giao 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ối API đị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ợp cá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ấp API “thô” (coarse-grained) cho mobile client Cùng xem xét lại ví dụ về kịch bản trang thô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ết củ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ầu bằ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 28 Lưu trữ được thông tin chi tiết của tin tức, người dùng
Cho phép người dùng xem tin tức theo danh mục
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ề:
Thông tin chi tiết về danh mục tin tức: mã danh mục, tên danh mục, ngày tạo, người tạo, ngày cập nhật, người cập nhật
Thông tin chi tiết về tin tức: mã tin tức, tiêu đề, nội dung ngắn gọn, nội dung đầy đủ, lượt like, comment, view, hình ảnh thuộc danh mục, ngày tạo, người tạo, ngày cập nhật, người cập nhật
Thông tin tài khoản: tên đăng nhập, mật khẩu, quyền/nhóm quyền, tên tài khoản, hình ảnh, địa chỉ, email, …
Tìm kiếm/ tra cứu:
Tìm kiếm thông tin tin tức
Tìm kiếm danh mục tin tức
Thống kê:
Thống kê danh sách tin tức
Thống kê danh sách người dùng
Thống kê danh sách quyền
Trang 2914
Thống kê danh sách danh mục tin tức
Thống kê tin tức theo danh mục
Duyệt:
Duyệt tin tức khi thêm
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
STT Công việc Loại công
việc
Quy định/Công thức liên quan
Biểu mẫu liên quan
Ghi chú
Khi thêm mới một người dùng thì quy định phân quyền truy cập rõ ràng
Trang 3015
Bộ phận (Người thực hiện): Nhân viên
Bảng 2.2 Bảng chức năng nghiệp vụ của nhân viên.
STT Công việc Loại công
việc
Quy định/Công thức liên quan
Biểu mẫu liên quan
Ghi chú
Khi tin tức được thêm mới thì cần phải được duyệt bởi người có thẩm quyền
Trang 31
16
Bộ phận (Người thực hiện): Người dùng
Bảng 2.3 Bảng chức năng nghiệp vụ của người dùng.
STT Công việc Loại công
việc
Quy định/Công thức liên quan
Biểu mẫu liên quan
Ghi chú
2.2.1.2 Yêu cầu chức năng hệ thống
Bảng 2.4 Bảng yêu cầu chức năng của hệ thống.
Nhân viên: Quản lý danh mục tin tức, quản lý tin tức và có thể
sử dụng tất cả các quyền của Thành viên
Quản trị viên: Quản lý người dùng, quản lý quyền, quản lý, xem thống kê tin tức theo danh mục, cấu hình Crawling url và
có thể làm tất cả các công việc của Khách, Nhân viên
Chương trình được cấp nhiều tài khoản (User) gồm các quyền: Thành viên, Nhân viên, Quản trị viên
Riêng Khách không cần
có tài khoản
phục hồi thông tin
Sao lưu thông tin tất cả các thông tin của thành viên (kể cả
đã bị khóa tài khoản) và có thể
Trang 3217
phục hồi khi cần thiết
2.2.2 Yêu cầu phi chức năng
Bảng 2.5 Bảng yêu cầu phi chức năng.
chú
2
Tiết kiệm được thời
gian, thu hẹp không
Khách hàng ở mọi lứa tuổi đều có thể dễ dàng sử dụng
dụng, gần gũi với người dùng
Trang 3318
CHƯƠNG 3 MÔ HÌNH HÓA YÊU CẦU
3.1 NHẬN DIỆN TÁC NHÂN VÀ CHỨC NĂNG TRONG SƠ ĐỒ USE CASE
Bảng 3.1 Bảng Danh sách tác nhân và chức năng.
Xem thống kê tin tức theo danh mục
Quản lý, cấu hình Crawling url
Trang 34Bảng 3.2 Bảng tác nhân và vai trò của tác nhân.
Quản trị viên
Đăng xuất
Xem danh sách người dùng
Chỉnh sửa quyền người dùng
Hủy kích hoạt/ Kích hoạt người dùng
Thêm, sửa quyền
Xem danh sách quyền
Kích hoạt/ Hủy kích hoạt quyền
Xem, xóa chi tiết liên hệ
Xem danh sách liên hệ
Xem, sửa thông tin cá nhân
Chỉnh sửa mật khẩu
Trang 3520
Cập nhật ảnh đại diện
Xem chi tiết tin tức
Tìm kiếm tin tức
Xem thống kê tin tức theo danh mục
Xem, thêm, cập nhật, xóa Crawling url
Nhân viên
Thành viên
Trang 36Cho phép khách có thể đăng ký và trở thành thành viên, khách cần điền đầy đủ nội dung bao gồm: email, mật khẩu, họ và tên
Trang 3722
Quản trị viên nhập đầy đủ thông tin của quyền vào hệ thống, thông tin nhập bao gồm : Tên quyền và cấu hình quyền
quyền và cấu hình quyền
Quản trị viên có thể nhận được những liên hệ từ người dùng và xem chúng Thông tin liên hệ bao gồm: email, nội dung
dung liên hệ mà người dùng đã gửi đến
Cho phép người dùng xem đầy đủ thông tin cá nhân của mình, thông tin bao gồm: Họ tên, giới tính, năm sinh, địa chỉ, ảnh đại diện, email, số điện thoại
Người dùng chỉnh sửa thông tin cá nhân như :
Họ tên, giới tính, năm sinh, địa chỉ, ảnh đại diện, số điện thoại
Cho phép người dùng xem đầy đủ thông tin về tin tức, thông tin bao gồm : Tiêu đề, nội dung vắn tắt, nội dung đầy đủ, hình, tác giả, số lượng lượt xem, thích, bình luận, chia sẻ, tải về
Trang 38Nhân viên được cấp quyền được chỉnh sửa tin tức với nội dung bao gồm : Tiêu đề, nội dung vắn tắt, nội dung đầy đủ, hình, tác giả
Nhân viên được cấp quyền được xóa tin tức, tin tức sẽ không bị xóa khỏi cơ sở dữ liệu mà xét trạng thái đã bị xóa, dễ dàng cho việc phục hồi
Nhân viên được cấp quyền được phép duyệt những tin tức chưa được duyệt để đưa vào sử dụng
Trang 39Quản trị viên có thể thêm url của các website muốn lấy dữ liệu để lưu vào database và dùng làm data của website
Quản trị viên có thể cập nhật url của các website muốn lấy dữ liệu để lưu vào database
và dùng làm data của website
không muốn lấy dữ liệu nữa
mục
Quản trị viên có thể xem thống kê các tin tức hiện có theo danh mục
Trang 4025
3.3 SƠ ĐỒ USE CASE
3.3.1 Các sơ đồ Use case
Hình 3.1 Use case chung của hệ thống
Hình 3.2 Use case Quản lý người dùng
uc He thong Website tin tuc Online
Khach
Quan tri vien
Dang ky
Xem chi tiet tin tuc
Tim kiem tin tuc Dang nhap
Dang xuat
Quan ly thong tin ca nhan
Quan ly tin tuc
Quan ly nguoi dung
Quan ly quyen Them tin tuc
Quan ly web lay du lieu
Chinh sua mat khau
Quan ly loai tin tuc Thich tin tuc
Quan ly link rss
Xem thong ke tin tuc theo danh muc
uc Quan ly nguoi dung
Quan tri vien
Quan ly nguoi dung
Kich hoat/ Huy kich hoat nguoi dung
Chinh sua quyen cua nguoi dung
Xem danh sach nguoi dung
«extend»
«extend»
«extend»