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

Khóa luận tốt nghiệp ứng dụng gắn kết cộng đồng BOWIE

90 28 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

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM MAI ANH DINH NGUYỄN THÀNH LUÂN KHÓA LUẬN TỐT NGHIỆP ỨNG DỤNG GẮN KẾT CỘNG ĐỒNG BOWIE Application for expanding community connections KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM TP HỒ CHÍ MINH, 2020 ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN KHOA CÔNG NGHỆ PHẦN MỀM MAI ANH DINH - 16521645 NGUYỄN THÀNH LUÂN – 16520703 KHÓA LUẬN TỐT NGHIỆP ỨNG DỤNG GẮN KẾT CỘNG ĐỒNG BOWIE Application for expanding community connections KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM GIẢNG VIÊN HƯỚNG DẪN TS HUỲNH NGỌC TÍN TP HỒ CHÍ MINH, 2020 THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số …………………… ngày ………………… Hiệu trưởng Trường Đại học Công nghệ Thông tin LỜI CẢM ƠN Trân trọng gửi lời cảm ơn đến Giảng viên Khoa Công nghệ phần mềm, Trường Đại học Công nghệ thông tin – ĐHQG TP.HCM Trong khoảng thời gian học tập trường, nhóm em trang bị kiến thức bản, kỹ hình thành thái độ tích cực để hồn thành Khóa luận tốt nghiệp Đặc biệt gửi lời cảm ơn sâu sắc đến TS Huỳnh Ngọc Tín, người trực tiếp hướng dẫn, góp ý đánh giá suốt q trình hồn thiện Khóa luận tốt nghiệp Tuy nhiên, thiếu sót khâu hồn tất Khóa luận tốt nghiệp điều khó tránh khỏi Vì nhóm em mong nhận góp ý quý Thầy Cơ bạn để báo cáo hồn thiện Một lần nữa, nhóm em xin chân thành cảm ơn Thành phố Hồ Chí Minh, tháng 12 năm 2020 Sinh viên Mai Anh Dinh Nguyễn Thành Luân MỤC LỤC Chương TỔNG QUAN ĐỀ TÀI .2 1.1 Dẫn nhập 1.2 Mục tiêu đề tài .3 1.3 Phạm vi, đối tượng thực 1.4 Kết mong đợi 1.5 Bố cục khóa luận .4 Chương XÁC ĐỊNH VÀ PHÂN TÍCH YÊU CẦU 2.1 Phát biểu toán 2.2 Phân tích yêu cầu 2.2.1 Yêu cầu chức 2.2.1.1 Yêu cầu lưu trữ 2.2.1.2 u cầu tính tốn .8 2.2.1.3 Yêu cầu tra cứu 2.2.1.4 Yêu cầu thống kê .9 2.2.2 Yêu cầu phi chức 2.3 Phương án thiết kế .10 2.3.1 Các yêu cầu hệ thống 10 2.3.1.1 Các yêu cầu bản, bắt buộc .10 2.3.1.2 Các yêu cầu cần thiết .10 2.3.1.3 Các yêu cầu mong muốn 10 2.3.2 Các ràng buộc hệ thống 10 Chương HIỆN THỰC ĐỀ TÀI .11 3.1 Thiết kế ứng dụng 11 3.1.1 Kiến trúc chương trình 11 3.1.2 Danh sách usecase .13 3.1.3 Mô tả usecase 14 3.1.3.1 Usecase Đăng nhập 14 3.1.3.2 Usecase Đăng ký tài khoản 15 3.1.3.3 Usecase Đổi mật 16 3.1.3.4 Usecase Chỉnh sửa thông tin tài khoản 17 3.1.3.5 Usecase Cá nhân hóa cài đặt ứng dụng 18 3.1.3.6 Usecase Đăng xuất 18 3.1.3.7 Usecase Xem danh sách events .19 3.1.3.8 Usecase Xem thông tin event 19 3.1.3.9 Usecase Lọc events 20 3.1.3.10 Usecase Tìm kiếm event 20 3.1.3.11 Usecase Tạo event .21 3.1.3.12 Usecase Tham gia event 22 3.1.3.13 Usecase Event chatting 23 3.1.4 Thiết kế sở liệu 24 3.1.4.1 Sơ đồ lớp mức phân tích 24 3.1.4.2 Định nghĩa lớp đối tượng 25 3.1.4.3 Định nghĩa thuộc tính lớp đối tượng .26 3.1.5 Thiết kế hình 30 3.1.5.1 Màn hình Đăng nhập, Đăng kí .30 3.1.5.2 Màn hình Trang chủ .33 3.1.5.3 Màn hình Tạo kiện 35 3.1.5.4 Màn hình Cuộc trị chuyện 40 3.1.5.5 Màn hình Quản lý thơng báo 42 3.1.5.6 Màn hình Cài đặt, Thông tin tài khoản 42 3.1.5.7 Thanh điều hướng ứng dụng 47 3.2 Thông tin mã nguồn cài đặt 48 3.2.1 Thông tin mã nguồn 48 3.2.2 Hướng dẫn cài đặt 48 3.3 Kiểm thử phát hành ứng dụng 49 3.3.1 Kiểm thử ứng dụng 49 3.3.2 Quy trình deploy 49 3.3.3 Phản hồi từ người dùng .49 Chương KẾT LUẬN .50 4.1 Kết đạt 50 4.2 Hướng phát triển 50 DANH MỤC HÌNH Hình 3-1 Sơ đồ kiến trúc chương trình .11 Hình 3-2 Sơ đồ lớp mức phân tích ứng dụng .24 Hình 3-3 Thiết kế hình đăng nhập 30 Hình 3-4 Thiết kế hình đăng kí 31 Hình 3-5 Thiết kế hình trang chủ 33 Hình 3-6 Thiết kế hình Nhập thông tin địa điểm 35 Hình 3-7 Thiết kế hình Nhập thơng tin thời gian 37 Hình 3-8 Thiết kế hình Nhập thơng tin chi tiết kiện 38 Hình 3-9 Thiết kế hình danh sách trị chuyện 40 Hình 3-10 Thiết kế hình cài đặt .42 Hình 3-11 Thiết kế hình cập nhật thơng tin tài khoản 44 Hình 3-12 Thiết kế hình thay đổi mật 46 Hình 3-13 Thiết kế điều hướng ứng dụng .47 Hình 4-1 Các ngôn ngữ sử dụng cho framework 57 Hình 4-2 Logo React Native Framework 58 Hình 4-3 Logo Xamarin Framework 58 Hình 4-4 Logo Flutter Framework 59 Hình 4-5 Logo Typescript 61 Hình 4-6 Danh sách ngơn ngữ lập trình u thích năm 2019 62 Hình 4-7 Logo Node.js 64 Hình 4-8 Synchronous Load Asynchronous Load .65 Hình 4-9 Mỗi API REST tương ứng với endpoint khác .69 Hình 4-10 Logo MongoDB .71 Hình 4-11 Cấu trúc hoạt động MongoDB database 72 Hình 4-12 Luồng xử lý phương pháp Cookie-Based Authentication 77 DANH MỤC BẢNG Bảng 2-1 Ưu nhược điểm ứng dụng mạng xã hội việc tạo tìm kiếm hoạt động Bảng 2-2 Bảng xác định yêu cầu lưu trữ ứng dụng Bảng 2-3 Bảng xác định u cầu tính tốn ứng dụng Bảng 2-4 Bảng xác định yêu cầu tra cứu ứng dụng Bảng 2-5 Bảng xác định yêu cầu thống kê ứng dụng Bảng 3-1 Danh sách usecases 14 Bảng 3-2 Bảng định nghĩa lớp đối tượng sở liệu 25 Bảng 3-3 Bảng mô tả lớp đối tượng User 26 Bảng 3-4 Bảng mô tả lớp đối tượng Event .27 Bảng 3-5 Bảng mô tả lớp đối tượng EventTag 27 Bảng 3-6 Bảng mô tả lớp đối tượng Place 28 Bảng 3-7 Bảng mô tả lớp đối tượng Coord .28 Bảng 3-8 Bảng mô tả lớp đối tượng Information 28 Bảng 3-9 Bảng mô tả lớp đối tượng Message 29 Bảng 3-10 Bảng mô tả lớp đối tượng ImageFactory 29 Bảng 3-11 Bảng mô tả lớp đối tượng Sessions 29 Bảng 3-12 Bảng mơ tả hình đăng nhập, đăng kí .32 Bảng 3-13 Bảng mô tả hình trang chủ 34 Bảng 3-14 Bảng mơ tả hình Nhập thông tin địa điểm .36 Bảng 3-15 Bảng mơ tả hình Nhập thơng tin thời gian 37 Bảng 3-16 Bảng mơ tả hình Nhập thơng tin chi tiết kiện .39 Bảng 3-17 Bảng mô tả hình danh sách trị chuyện 41 Bảng 3-18 Bảng mơ tả hình cài đặt 43 Bảng 3-19 Bảng mơ tả hình cập nhật thơng tin tài khoản 45 Bảng 3-20 Bảng mơ tả hình thay đổi mật 47 Bảng 3-21 Bảng mô tả điều hướng ứng dụng 47 Bảng 3-22 Thông tin mã nguồn ứng dụng 48 - Lập trình đồng thực thi dịng code tiến hành thực thi dòng dòng thực thi xong - Lập trình bất đồng thực thi tất dòng code lúc Node.js chất ngôn ngữ bất đồng bộ, điều có nghĩa Javascript engine chạy qua tồn đoạn code lần khơng đợi đến hàm return Nó sử dụng mơ hình thực thi non-blocking I/O Các dòng code bên function thực thi, function thực thi trả output sau hoàn thành Do đó, tốc độ Node.js nhanh so với tảng backend khác Hình 4-8 Synchronous Load Asynchronous Load (Nguồn: https://codelearn.io/sharing/nodejs-va-php-cuoc-chien-back-end, truy cập lần cuối 25/12/2020) 1.2.4 Ưu nhược điểm Node.js 1.2.4.1 Ưu điểm • Easy Scalability: Một ưu điểm trội Node.js khả mở rộng ứng dụng theo chiều hướng nào, hiệu server Javascript cịn lại 65 • Single Programming Language: Node.js cho phép lập trình viên xây dựng ứng dụng với việc sử dụng ngơn ngữ lập trình Javascript, frontend backend • Large Community: Vì open-source, Node.js có cộng đồng hỗ trợ lớn, ln khơng ngừng đóng góp, cải tiến để giúp cho cơng cụ ngày hồn thiện • Handle the Requests Simultaneously: Node.js thực thi theo mơ hình nonblocking I/O, giúp cho server xử lý nhiều requests lúc cách có hệ thống nhanh chóng 1.2.4.2 Nhược điểm • Application Programming Interface (API) is Not Stable: Một vấn đề lớn mà lập trình viên gặp phải khơng ổn định APIs Node.js Khi mà phiên APIs xuất hiện, khơng tương thích với phiên cũ dễ dẫn đến lỗi phát sinh khó kiểm sốt • Does not have a Strong Library Support System: Node.js, Javascript khơng có hệ thống thư viện chuẩn, mạnh mẽ so với ngôn ngữ lập trình khác Hệ lập trình viên buộc phải sử dụng thư viện để giải task xử lý hình ảnh, xử lý tác vụ database • Asynchronous Programming: Điểm mạnh điểm yếu người sử dụng tiếp cận đến với lập trình bất đồng khiến họ không tránh khỏi việc gọi code lồng (nested calls), làm cho code trở nên lộn xộn khó kiểm sốt 1.2.5 ExpressJS Framework ExpressJS framework xây dựng tảng Node.js Nó cung cấp tính mạnh mẽ để phát triển web mobile ExpressJS hỗ trợ method HTTP middleware để tạo API vô mạnh mẽ dễ sử dụng Tổng hợp số chức ExpressJS sau: 66 − Thiết lập lớp trung gian để tra HTTP request − Define router cho phép sử dụng với hành động khác dựa phương thức HTTP URL − Cho phép trả trang HTML dựa vào tham số Ngồi chức vừa kể trên, sử dụng framework ExpressJS NodeJS mang lại ưu điểm sau: − Giúp tăng tốc cải thiện trình xây dựng mobile app − Dễ dàng tùy chỉnh cấu hình theo nhu cầu ứng dụng − Cho phép định nghĩa lớp trung gian để xử lý lỗi xảy − Dễ dàng quản lý static resources − REST API tính trội việc phát triển ứng dụng mobile − Tương thích hỗ trợ mạnh mẽ database MySQL, Redis hay MongoDB 1.2.6 MikroORM 1.2.6.1 ORM gì? ORM – Object-Relational-Mapping (Ánh xạ quan hệ đối tượng) ý tưởng phép ta viết queries giống SQL đây: SELECT * FROM users WHERE email = 'test@test.com'; truy vấn phức tạp hơn, cách sử dụng mơ hình hướng đối tượng (object-oriented paradigm) ngôn ngữ sử dụng project Có nghĩa là, tương tác với database thơng qua ngơn ngữ lập trình, khơng phải ngôn ngữ truy vấn 67 1.2.6.2 MikroORM Library MikroORM thư viện Typescript ORM Node.js, dựa pattern Data Mapper, Unit of Work, Identity Map Nói ngắn gọn MikroORM sử dụng để Node.js tương tác với database phía backend, sử dụng ngơn ngữ lập trình Typescript MikroORM hỗ trợ SQL database NoSQL database MongoDB, MySQL, MariaDB, PostgreSQL MikroORM hỗ trợ chế Implicit Transactions Khi gọi em.flush(), thay đổi tự động đóng gói xử lý database transaction 1.3 GraphQL Ngắn gọn thì, GraphQL “query language for API” GraphQL cách đại để xây dựng truy vấn APIs Nó đơn giản cú pháp để mô tả cách mà truy vấn tới data, thường dùng để load data từ server tới client GraphQL có đặc điểm khiến khác biệt so với ngơn ngữ truy vấn cịn lại: − Cho phép client rõ xác liệu cần lấy − Cho phép dễ dàng tổng hợp liệu từ nhiều nguồn − Sử dụng type để định nghĩa kiểu liệu 1.3.1 Tiền đề - REST APIs Bàn lại REST APIs, phủ nhận REST mang lại cho khái niệm liền mạch việc định nghĩa nên APIs Nhưng ứng dụng ngày phức tạp mở rộng hơn, kéo theo APIs ngày phát triển địi hỏi nhiều u cầu hơn, REST bộc lộ nhược điểm mình: 68 • Q nhiều endpoints: Với resource REST biểu diễn endpoint Trong thực tế, có nhiều endpoints cho nhiều resources khác cần truy vấn Nếu muốn thực GET request, cần endpoint tương ứng với request cụ thể đó, với parameter cụ thể, tương ứng với methods khác Với ứng dụng khổng lồ Facebook hay Github, họ đối mặt với việc có lượng API khổng lồ tốn nhiều effort quản lý maintain APIs Hình 4-9 Mỗi API REST tương ứng với endpoint khác (Nguồn: https://viblo.asia/p/graphql-tuong-lai-cua-api-ByEZk6wxKQ0, truy cập lần cuối 04/01/2021) • Over-fetching Under-fetching: Đây khuyết điểm lớn REST Chẳng hạn muốn lấy tên User thơi có endpoint GET tồn thơng tin User, phải dùng khơng muốn phải implement endpoint khác Những thông tin lặt vặt kèm trở nên thừa thãi khơng cần thiết chất REST trả cấu trúc fix cứng, khiến khơng thể lấy xác cần Hoặc cần lấy thông tin từ nhiều resources, ta phải call tới nhiều API tương ứng với resources đó, dẫn tới vấn đề maintain số lượng resources thay đổi hay mở rộng • Version: Để tránh việc xung đột hay code không chạy với client cũ, API cập nhật thường giữ nguyên version cũ thêm version vào 69 1.3.2 Lợi ích việc sử dụng GraphQL GraphQL giải pháp sinh để giải vấn đề tồn đọng REST APIs Về bản, là: • Single endpoint: Việc tạo nhiều endpoint không cần thiết với GraphQL • Needed data only: Khơng cịn tình trạng over-fetching hay under-fetching giống REST Chỉ cần define liệu mà cần, ta nhận liệu mong muốn Việc làm tăng performance không cần phải lấy xử lý liệu thừa thãi • Single version: Với GraphQL, không cần phải thực việc thêm version cho phiên APIs Khi muốn maintain API đó, cần thêm code mà không cần lo vấn đề tương thích với client cũ 1.3.3 TypeGraphQL TypeGraphQL thư viện giúp cho việc định nghĩa schema GraphQL ngôn ngữ Typescript trở nên đơn giản hiệu Ngồi TypeGraphQL cịn cung cấp tính hữu ích validation, authorization hay dependency injection 1.3.4 Apollo Platform Apollo tảng giúp đơn giản hóa q trình phát triển ứng dụng thơng qua việc tổng hợp APIs, databases microservices vào data graph layer kết nối ứng dụng tới cloud server để truy vấn liệu thơng qua GraphQL Về tính năng, Apollo cung cấp built-in features giải khó khăn mặt kết nối client server Chẳng hạn như, Apollo Client lưu requests nhớ đệm, giúp cho việc tránh phải thực lại requests mà kết có sẵn Điều cải thiện đáng kể hiệu suất phản hồi tiết kiệm băng thông đường truyền (network traffic) Hơn nữa, Apollo Client đơn giản hóa liệu lưu trữ với kiến trúc non-nested data với entity tương ứng với 70 identifier riêng Nghĩa thay phải tìm kiếm “article” entity “author” entity, Apollo Client cho phép truy xuất trực tiếp tới đối tượng cần tìm thơng qua identifier Ngồi ra, Apollo Client cịn cung cấp tính quản lý lỗi (error management), hỗ trợ phân trang user interface, nạp trước liệu (prefetching data), kết nối data layer (Apollo Client) tới view layer 1.4 MongoDB MongoDB database hướng tài liệu (document), dạng NoSQL database Vì thế, MongoDB tránh cấu trúc table-based relational database để thích ứng với tài liệu JSON có schema linh hoạt gọi BSON MongoDB sử dụng lưu trữ liệu dạng Document JSON nên collection các kích cỡ document khác Các liệu lưu trữ document kiểu JSON nên truy vấn nhanh MongoDB trở thành NoSQL database trội thời điểm tại, dùng làm backend cho nhiều website application eBay, SourceForge The New York Times Hình 4-10 Logo MongoDB 1.4.1 Các key feature MongoDB • Ad hoc query: Hỗ trợ search field, phép search thông thường, regular expression searches, range queries • Indexing: Bất kỳ field sở liệu MongoDB index • Replication: Là phiên giống hệt phiên tồn tại, sử dụng Với sở liệu, nhu cầu lưu trữ lớn, đòi hỏi sở liệu tồn vẹn, khơng bị 71 mát trước cố ngồi dự đốn cao Vì vậy, người ta nghĩ khái niệm Replication (tạm dịch: “nhân bản”), tạo phiên sở liệu giống hệt sở liệu tồn tại, lưu trữ nơi khác, đề phịng có cố • Aggregation: Các Aggregation operation xử lý ghi liệu trả kết tính tốn Các phép tốn tập hợp nhóm giá trị từ nhiều document lại với nhau, thực nhiều phép toán đa dạng liệu nhóm để trả kết Trong SQL, COUNT(*) GROUP BY tương tự Aggregation MongoDB • Data Storage: MongoDB dùng hệ thống lưu trữ liệu lớn với thông lượng cao (high throughput operations) thông qua chế sharding Sharding phương thức phân phối liệu nhiều đầu máy 1.4.2 Cơ chế hoạt động MongoDB Hình 4-11 Cấu trúc hoạt động MongoDB database 72 (Nguồn: https://viblo.asia/p/tim-hieu-ve-mongodb-4P856ajGlY3, truy cập lần cuối 25/12/2020) • MongoDB hoạt động tiến trình ngầm service, ln mở cổng (cổng mặc định 27017) để lắng nghe yêu cầu truy vấn, thao tác từ ứng dụng gửi vào sau tiến hành xử lý • Mỗi ghi MongoDB tự động gắn thêm field có tên “_id” thuộc kiểu liệu ObjectId mà quy định để xác định tính ghi so với ghi khác, phục vụ thao tác tìm kiếm truy vấn thông tin sau Trường liệu “_id” tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao • Mỗi có truy vấn liệu, ghi cache (ghi đệm) lên nhớ RAM, để phục vụ lượt truy vấn sau diễn nhanh mà không cần phải đọc từ ổ cứng • Khi có yêu cầu thêm/sửa/xóa ghi, để đảm bảo hiệu suất ứng dụng mặc định MongoDB chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây MongoDB thực ghi toàn liệu thay đổi từ RAM xuống ổ cứng 1.4.3 Ưu nhược điểm MongoDB database 1.4.3.1 Ưu điểm • Tương thích tốt với backend Node.js • Dữ liệu phi cấu trúc (No-SQL), khơng có tính ràng buộc, tồn vẹn nên tính sẵn sàng cao, hiệu suất lớn dễ dàng mở rộng lưu trữ • Dữ liệu ghi đệm (caching) lên RAM trước truy cập vào ổ cứng nên tốc độ đọc ghi cao, cho hiệu suất phản hồi tốt 1.4.3.2 Nhược điểm • Vì khơng có ràng buộc nên ứng dụng cho mơ hình giao dịch u cầu độ xác cao • Mọi thay đổi liệu mặc định chưa ghi xuống ổ cứng (do chế caching) nên rủi ro bị liệu từ cố bất ngờ cao 73 1.5 Maps Để sử dụng map React Native, cần cài đặt thư viện react-native-maps (Nguồn: https://github.com/react-native-maps/react-native-maps) Với thư viện Android, map sử dụng Google Maps, cịn iOS lựa chọn Google Maps hay Apple Maps 1.6 WebSockets WebSocket công nghệ hỗ trợ giao tiếp hai chiều client server thông qua liên kết TCP để tạo kết nối hiệu tốt Một giao thức WebSocket gồm hai bước: mở handshake client server, truyền tải liệu 1.6.1 Tiền đề Trước đây, việc tạo ứng dụng yêu cầu tính real-time gaming hay chatting buộc người dùng phải lạm dụng giao thức HTTP để thiết lập truyền tải liệu hai chiều Đã có nhiều cách để đạt điều đó, khơng có cách hiệu WebSockets HTTP polling, HTTP streaming, Comet, SSE, tất chúng có nhược điểm riêng 1.6.1.1 HTTP polling Một cách để giải vấn đề real-time lặp lặp lại q trình polling từ phía client đến server, gọi tắt long-polling Q trình diễn sau: - Client gửi request chờ đợi response - Server xác định request gửi đến thiết lập trạng thái hanging có thay đổi (có thể change, update, timeout) để trả cho Client - Server gửi response thay đổi cho Client - Client tiếp tục gửi request bắt đầu lần polling để nhận lại thay đổi 74 Có nhiều lỗ hổng kỹ thuật long-polling: header overhead (kích thước header lớn), latency (độ trễ cao), caching (các vấn đề nhớ đệm) 1.6.1.2 HTTP streaming Phương pháp giúp giảm độ trễ từ kỹ thuật HTTP polling request giữ trạng thái open Tuy nhiên, response gửi lại client, request không bị chấm dứt Server giữ kết nối mở gửi cập nhật có thay đổi 1.6.1.3 Server-sent events (SSE) Với SSE, server đẩy liệu đến client Bởi SSE sử dụng giao thức HTTP thơng thường có giới hạn số lượng kết nối mở, ứng dụng gaming chatting khơng thể hồn tồn dựa vào phương pháp 1.6.2 Lựa chọn WebSockets WebSockets thiết kế để thay phương thức giao tiếp hai chiều cũ Các phương pháp trên, nói, khơng hiệu khơng đủ tin cậy để thực full-duplex real-time communication WebSockets tương tự SSE, phát triển việc nhận phản hồi theo chiều ngược lại – từ client gửi đến server Hạn chế số lượng kết nối SSE giải liệu cung cấp qua kết nối TCP socket 1.6.3 GraphQL Subscriptions Ngồi queries mutations, GraphQL cịn hỗ trợ operation type khác subscriptions Giống queries, subscriptions cho phép lấy liệu (fetching data) Hơn nữa, subscriptions cịn cho phép trì kết nối tới GraphQL server (thông qua WebSockets) Điều cho phép server cập nhật thay đổi theo thời gian mà client không cần phải gửi request liên tục Vì subscriptions thực hữu ích sử dụng để phát triển tính real-time notifications, chatting 75 1.7 Authentication User Authentication tính yêu cầu nhiều xây dựng ứng dụng Nó cho phép xác thực người dùng, user sessions, điều quan trọng cung cấp móng cho việc thực user authorization (roles permissions) Về bản, ta cần phát triển hình đăng nhập cho phép người dùng nhập email/username password, sau gửi yêu cầu đến server Nếu server kiểm tra user authentication đúng, server gửi phản hồi người dùng đăng nhập thành công kèm theo vài phương thức dùng để xác thực khác, phịng trường hợp người dùng ứng dụng mà khơng đăng xuất, lần mở ứng dụng không cần phải thực lại thao tác hình đăng nhập 1.7.1 Cookie-Based Authentication Cookie-Based Authentication phương pháp truyền thống sử dụng nhiều để xác thực người sử dụng ứng dụng khoảng thời gian dài Cookie-Based Authentication phải đảm bảo tính chất stateful Điều có nghĩa authentication loggers/records sessions phải lưu trữ hai phía client-side server-side Server cần theo dõi active sessions database, phía frontend, cookie tạo dùng để xác minh session người dùng Đây flow phương pháp này: - User nhập thông tin xác thực hình đăng nhập - Server xác minh thơng tin đăng nhập tạo session lưu vào database - Một cookie chứa session ID lưu trữ trình duyệt, ứng dụng phía người dùng - Trong lần login request tiếp theo, session ID xác minh lần từ phía database để xác thực người dùng - Một người dùng đăng xuất khỏi ứng dụng, session bị hủy hai phía client server 76 Hình 4-12 Luồng xử lý phương pháp Cookie-Based Authentication (Nguồn: Cookies vs Tokens: The Definitive Guide - DZone Integration, truy cập lần cuối 26/12/2020) 77 78 79 ... giao diện người dùng TÓM TẮT KHÓA LUẬN Ứng dụng gắn kết cộng đồng Bowie (tên tiếng Anh: Application for expanding community connections) sản phẩm Khóa luận tốt nghiệp nhằm mục đích giải phần... sau thực khóa luận - Chương 2: Giới thiệu cơng nghệ tìm hiểu áp dụng khóa luận - Chương 3: Trình bày trình thiết kế, triển khai xây dựng, kiểm thử phát hành Ứng dụng gắn kết cộng đồng Bowie -... CÔNG NGHỆ PHẦN MỀM MAI ANH DINH - 16521645 NGUYỄN THÀNH LUÂN – 16520703 KHÓA LUẬN TỐT NGHIỆP ỨNG DỤNG GẮN KẾT CỘNG ĐỒNG BOWIE Application for expanding community connections KỸ SƯ NGÀNH KỸ THUẬT

Ngày đăng: 05/09/2021, 20:51

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    Chương 1. TỔNG QUAN ĐỀ TÀI

    1.2. Mục tiêu của đề tài

    1.3. Phạm vi, đối tượng thực hiện

    1.4. Kết quả mong đợi

    1.5. Bố cục của khóa luận

    Chương 2. XÁC ĐỊNH VÀ PHÂN TÍCH YÊU CẦU

    2.1. Phát biểu bài toán

    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 lưu trữ

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

TÀI LIỆU LIÊN QUAN

w