Bảng 46. Kiểm thử các chức năng quản lý tài khoản ... 148 Bảng 47. Kiểm thử các chức năng quản lý truyện tranh, chương truyện ... 149 Bảng 48. Kiểm thử các chức năng quản lý danh mục, tác giả ... 150
23
PHẦN MỞ ĐẦU 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Xã hội con người ngày càng phát triển và nhu cầu giải trí của con người ngày càng tăng cao. Cách ngày nay khoảng 20 năm, thời kỳ mà internet chưa hoàn toàn phổ biến.
Nhu cầu giải trí của con người vô cùng cao và để giải quyết cho vấn đề này thì hàng loạt sách, báo, truyện tranh, ảnh ra đời, phù hợp với mọi độ tuổi. Và đặc biệt trong thời đại ngày nay, công nghệ phát triển, thay vì những hình thức in ấn truyền thống thì truyện tranh thông qua internet đã ngày càng được nhiều người biết đến và đón nhận. Truyện tranh online dần dần có vị thế trên bảng xếp hạng từ khóa tìm kiếm của Google. Rất nhiều nước trên thế giới có nền kinh tế phát triển dựa vào truyện tranh như Nhật Bản, Hàn Quốc. Nắm bắt xu thế chúng em đã quyết định thực hiện đề tài: “Xây dựng ứng dụng đọc truyện tranh trên Android”.
2. MỤC TIÊU ĐỀ TÀI
● Xây dựng website cho quản trị viên để quản lý truyện tranh và người dùng.
● Xây dựng app cho người dùng để có thể đọc truyện tranh và theo dõi thông tin trên đó.
● Vận dụng thành công các công nghệ mới, ngôn ngữ lập trình hiện đại vào đề tài để xây dựng website và app.
3. PHƯƠNG PHÁP THỰC HIỆN
Tìm hiểu các kiến thức cần thiết để thực hiện đề tài:
● Các kỹ thuật phân tích thiết kế hệ thống
● Tìm hiểu những công nghệ mới phù hợp với đề tài
● Tìm hiểu các thư viện hỗ trợ cho đề tài ở Flutter và .NET
24
PHẦN NỘI DUNG
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT 1.1. Dart
1.1.1. Giới thiệu về Dart
Hình 1. Logo của ngôn ngữ lập trình Dart
Dart là ngôn ngữ lập trình được phát triển bởi Google và là một ngôn ngữ mã nguồn mở miễn phí, Mục tiêu của Dart là cung cấp một ngôn ngữ lập trình hiệu quả để
phát triển đa nền tảng cũng như kết hợp với khả năng thực thi linh hoạt với nền tảng đang chạy (flexible execution runtime platform).
Là một ngôn ngữ hướng đối tượng, được sử dụng để xây dựng các ứng dụng web, server, ứng dụng máy tính và thiết bị di động. Dart cũng là nền tảng của Flutter, cung cấp một ngôn ngữ lập trình mạnh mẽ cho ứng dụng Flutter cũng như hỗ trợ định dạng, phân tính và kiểm thử câu lệnh.
1.1.2. Ưu điểm
Dart được sử dụng để tạo các ứng dụng chất lượng cao, quan trọng cho các nền tảng khác nhau (iOS, Android và web). Dart giúp bạn tạo ra những trải nghiệm đẹp, chất lượng cao trên tất cả các màn hình, với:
● Một ngôn ngữ được tối ưu hóa cho client.
● Framework mạnh mẽ.
● Công cụ linh hoạt.
● Cú pháp dễ làm quen, rõ ràng, súc tích, sớm xác định được các lỗi.
● Tối ưu hóa việc biên dịch trước thời hạn để có được dự đoán hiệu suất cao và khởi động nhanh trên các thiết bị di động và web.
● Dart biên dịch thành mã ARM và x86, để các ứng dụng di động của Dart có thể
chạy tự nhiên trên iOS, Android và hơn thế nữa. Đối với các ứng dụng web, chuyển mã từ Dart sang JavaScript.
25 1.2. Flutter
1.2.1. Giới thiệu về Flutter
Hình 2. Logo Flutter framework [2]
Là một công cụ cho phép chúng ta xây dựng một native cross-platform (iOS, Android) apps với duy nhất một ngôn ngữ lập trình (Dart) và một mã nguồn gốc. Bao gồm:
● SDK: Công cụ để biên dịch các dòng lệnh thành native machine code giúp lập trình đơn giản hơn.
● Framework/ Widget Library: Cung cấp các UI building blocks có thể tái sử dụng (Widgets), các hàm tiện ích (utility function), và các packages
1.2.2. Biên dịch trong Flutter
Sau đây là hình minh họa cho cách Flutter/Dart biên dịch thành Native App:
Hình 3. Cách biên dịch thành Native App [3]
Ta có thể thấy chỉ với một codebase nhờ vào Flutter SDK sẽ giúp chúng ta có thể
build thành các Native App trên nhiều nền tảng khác nhau.
26 Flutter render UI bằng cách kiểm soát tất cả các pixel trên màn hình của thiết bị mà không sử dụng cái thành phần UI của iOS hay Android cụ thể nào cả. Từ đó giúp cho chúng ta có thể có được khả năng tùy biến cao, không bị giới hạn bởi nền tảng thiết bị.
1.2.3. So sánh Flutter và các đối thủ
Một trong những framework được so sánh và đắn đo nhiều nhất khi đề cập đến Flutter là React Native, sau đây là một số so sánh giữa hai framework
Bảng 1. So sánh giữa Flutter và React Native
Flutter React Native
Ngôn ngữ lập trình /
Framework
Dart + Flutter Java Script/React.js
Biên dịch
Biên dịch thành các Native App Biên dịch một phần thành Native App vẫn còn một phần trong App được chạy dưới dạng JavaScript
Xây dựng các thành phần UI
Không biên dịch code thành các UIComponent của riêng Android hay iOS mà Flutter kiểm soát từng pixel trên màn hình.
Biên dịch code thành các UIComponent của riêng Android hay iOS
Nền tảng ứng dụng
Ứng dụng di động, web, desktop Hầu như là ứng dụng di động (Có thể có React Native Web)
Nhà phát triển Google Facebook
1.2.4. Ưu điểm của Flutter
Sau đây là các ưu điểm của Flutter:
● Phát triển ứng dụng nhanh chóng nhờ có hot reload.
● Giao diện người dùng đẹp và thu hút và không bị giới hạn bởi nền tảng thiết bị.
● Hiệu suất cao nhờ vào việc biên dịch ra các native app dựa trên nhiều nền tảng.
● Framework hiện đại.
27 1.3. BloC
Hình 4. Logo Bloc [4]
Bloc là một thư viện để quản lý state cho Flutter application. B.L.o.C nghĩa là Business Logic Component. Nhận 'Event' như là input và trả về output là 'State'. Bloc được xây dựng dựa trên RxDart.
1.3.1. Ưu điểm:
• Dễ hiểu và dễ sử dụng
• Dễ dàng khi mở rộng ứng dụng
• Dễ dàng tái sử dụng code
• Việc tổ chức cấu trúc project sẽ cực kỳ clear, phần code logic được tách hẳn hoàn toàn so với UI
1.3.2. Nhược điểm:
• Mô hình BloC đưa thêm các lớp trừu tượng và phức tạp vào kiến trúc ứng dụng.
Điều này có thể làm cho mã nguồn khó hiểu, đặc biệt là đối với người mới bắt đầu hoặc các nhà phát triển mới làm quen với Flutter.
• Mô hình BloC thường yêu cầu viết thêm mã để thiết lập các stream, sink và xử lý sự kiện. Điều này có thể dẫn đến một lượng mã mẫu đáng kể, làm tốn thời gian và có thể tăng nguy cơ gây ra lỗi.
• Trong một số trường hợp, mô hình BLoC có thể làm giảm hiệu suất, đặc biệt nếu không triển khai một cách hiệu quả. Việc đăng ký stream và xử lý sự kiện liên tục có thể tiêu thụ tài nguyên hệ thống, ảnh hưởng đến hiệu suất tổng thể của ứng dụng. Tuy nhiên, với các kỹ thuật tối ưu hóa đúng đắn, ta có thể giảm thiểu tải trọng này.
28 1.4. ASP.NET Core
1.4.1. ASP.NET Core là gì
Hình 5. ASP .NET Core [5]
ASP.NET Core là một open-source mới và framework đa nền tảng (cross- platform) cho việc xây dựng những ứng dụng hiện tại dựa trên kết nối đám mây, giống như web apps, IoT và backend cho mobile.
Ứng dụng ASP.NET Core có thể chạy trên .NET Core hoặc trên phiên bản đầy đủ của .NET Framework. Nó được thiết kế để cung cấp và tối ưu development framework cho những dụng cái mà được triển khai trên đám mây (cloud) hoặc chạy on- promise.
Nó bao gồm các thành phần theo hướng module nhằm tối thiểu tài nguyên và chi phí phát triển, như vậy bạn giữ lại được sự mềm dẻo trong việc xây dựng giải pháp của bạn. Bạn có thể phát triển và chạy những ứng dụng ASP.NET Core đa nền tảng trên Windows, Mac và Linux.
Đồng thời nó đã trở thành một mã nguồn mở. Đây là một thay đổi rất lớn và quan trọng nhất của ASP.NET Core. Điều mà trước đây khó có một lập trình viên nào có thể
nghĩ đến. Có lẽ đó cũng là một xu thế mà các ngôn ngữ lập trình hiện nay đang hướng tới.
29 1.4.2. Ưu điểm
▪ ASP.NET Core được thay đổi một số kiến trúc nên dẫn đến Modular Framework nhỏ hơn.
▪ ASP.NET Core không còn phụ thuộc vào nền tảng system.web.dll, Framework này dựa trên một tập hợp nhiều yếu tố của Nuget Packages.
▪ Bạn có thể tối ưu ứng dụng của mình dễ dàng thông qua những Nuget Packages cần thiết.
▪ Những ứng dụng web được thiết kế trên nền tảng ASP.NET Core sẽ ít tiêu hao dung lượng bộ nhớ, bảo mật chặt chẽ, tốc độ thực thi nhanh, hiệu năng hoạt động tốt và ổn định.
▪ ASP.NET Core giúp giảm dịch vụ, dễ bảo trì ứng dụng và tiết kiệm chi phí.
1.4.3. Một số cải tiến nổi bật của ASP.NET Core
▪ Các ứng dụng ASP.NET Core được xây dựng và khởi tạo ở đa dạng các nền tảng như Windows, Mac và Linux.
▪ Được phát triển từ .NET Core, ASP.NET Core hỗ trợ chất lượng App Versioning.
▪ Mang đến những công cụ và hàng loạt tính năng hiện đại, đơn giản hóa quy trình phát triển web.
▪ Tương thích với hệ thống xây dựng web UI và web APIs.
▪ Có thể tích hợp những client – side Frameworks hiện đại và những luồng phát triển.
▪ Cấu hình dựa trên mô hình đám mây có sẵn.
▪ Dependency Injection (DI) được xây dựng sẵn.
▪ Đa dạng cấu hình, thân thiện với nhiều môi trường.
▪ Có tính năng host trên IIS hoặc self-host trong Process của riêng mình.
▪ Chuyển thực thể, các thành phần module, dùng chung toàn bộ Nuget Package.
▪ Mã nguồn mở và tập trung vào cộng đồng.
30 CHƯƠNG 2: KHẢO SÁT, PHÂN TÍCH, THIẾT KẾ