1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng hệ thống website tin tức trực tuyến

128 15 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 128
Dung lượng 4,84 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

i

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 3

v

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 4

vi

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 5

vii

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 6

viii

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 7

ix

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 8

x

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 9

xi

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 10

xii

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 11

xiii

DANH MỤC TỪ VIẾT TẮT

13 CLI Tool : Command Line Interface Tool

22 HTTP : HyperText Transfer Protocol

Trang 12

xiv

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 13

xv

Ở 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 14

xvi

- 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 15

xvii

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 16

1

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 17

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ù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 18

Spring 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 19

4

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 20

5

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 21

6

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 22

7

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 23

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 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 24

9

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 25

10

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 26

11

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 27

12

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 29

14

 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 30

15

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 32

17

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 33

18

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 34

Bả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 35

20

 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 36

Cho 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 37

22

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 38

Nhâ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 39

Quả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 40

25

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»

Ngày đăng: 18/02/2022, 22:32

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w