1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến

183 11 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 183
Dung lượng 5,86 MB

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

Nội dung

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 1

BỘ 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 2

TRƯỜ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 3

TRƯỜ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 6

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ữ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 9

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

iv

Trang 12

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

Trang 13

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 14

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 15

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 16

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

Trang 17

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 18

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

Trang 19

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 20

DANH 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 21

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

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 25

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

dự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 27

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

3

Trang 29

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 đế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 30

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ệ sangcác object trong ngôn ngữ hướng đối tượng Hibernate là 1 Framework cho persistence

Trang 31

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ư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 32

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ả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 33

Component 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 34

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:

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 35

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

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

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á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 38

CHƯƠ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 40

14

Ngày đăng: 27/12/2021, 08:51

HÌNH ẢNH LIÊN QUAN

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: - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
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: (Trang 36)
Hình 1.10 Cấu trúc Microservices nhóm sử dụng trong Project. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 1.10 Cấu trúc Microservices nhóm sử dụng trong Project (Trang 37)
Bảng 2.4 Bảng yêu cầu chức năng của hệ thống. STT - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Bảng 2.4 Bảng yêu cầu chức năng của hệ thống. STT (Trang 42)
Bảng 3.2 Bảng tác nhân và vai trò của tác nhân. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Bảng 3.2 Bảng tác nhân và vai trò của tác nhân (Trang 46)
Hình 3.1 Use case chung của hệ thống. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 3.1 Use case chung của hệ thống (Trang 52)
Hình 4.3 Sequence Diagram use case Đăng ký. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.3 Sequence Diagram use case Đăng ký (Trang 86)
Hình 4.7 Sequence Diagram use case Chỉnh sửa loại tin tức. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.7 Sequence Diagram use case Chỉnh sửa loại tin tức (Trang 88)
Hình 4.9 Sequence Diagram use case Thêm loại tin tức - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.9 Sequence Diagram use case Thêm loại tin tức (Trang 90)
Hình 4.11 Sequence Diagram use case Kích hoạt/ Hủy kích hoạt người dùng. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.11 Sequence Diagram use case Kích hoạt/ Hủy kích hoạt người dùng (Trang 91)
Hình 4.13 Sequence Diagram use case Kích hoạt/ Hủy kích hoạt quyền. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.13 Sequence Diagram use case Kích hoạt/ Hủy kích hoạt quyền (Trang 93)
Hình 4.15 Sequence Diagram use case Cập nhật ảnh đại diện. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.15 Sequence Diagram use case Cập nhật ảnh đại diện (Trang 94)
Hình 4.17 Sequence Diagram use case Phân loại tin tức. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.17 Sequence Diagram use case Phân loại tin tức (Trang 95)
Hình 4.19 Sequence Diagram use case Xóa tin tức. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.19 Sequence Diagram use case Xóa tin tức (Trang 96)
Hình 4.21 Sequence Diagram use case Tìm kiếm tin tức. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.21 Sequence Diagram use case Tìm kiếm tin tức (Trang 97)
Hình 4.23 Sequence Diagram use case Cập nhật web lấy dữ liệu. - (Đồ án tốt nghiệp) xây dựng hệ thống website tin tức trực tuyến
Hình 4.23 Sequence Diagram use case Cập nhật web lấy dữ liệu (Trang 98)

TỪ KHÓA LIÊN QUAN

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

w