20
• Tầng xử lí (Controller) và logic dữ liệu (Model) sẽ được phát triển độc lập ở
phía server sử dụng các công nghệ Backend như ExpressJS, DotNetCore, Flank, …
Sau khi hoàn thành việc phát triển, client sẽ cung cấp 1 bản build hoàn chỉnh để thêm vào phía Server. Người dùng sẽ yêu cầu thành phần giao diện thông qua request gửi đến Server.
2.4. Nodejs
2.4.1. Giới thiệu
NodeJS là một môi trường thực thi mã nguồn mở của Javascript. Hiện nay - NodeJS rất phổ biến và được sử dụng trong rất nhiều project có quy mơ lớn và nhỏ khác nhau. Đặc trưng của NodeJS
Mỗi ứng dụng NodeJS chạy trên một process đơn và không tạo thêm luồng mới cho mỗi request. Đây cũng là điểm khác biệt của NodeJS so với các môi trường thực thi khác như DotNetCore, … . Thay vào đó, NodeJS sử dụng cơ chế bất đồng bộ I/O
(non-blocking I/O) để quản lý các request thay vì block chúng nhằm giảm thiểu việc
tốn tài nguyên xử lý. Nhờ vào cơ chế này, NodeJS có thể xử lý hàng ngàn kết nối đồng thời với 1 server duy nhất mà không cần nhà phát triển phải bỏ công sức và thời gian để quản lý các luồng [17].
2.4.2. Ưu điểm
• Nodejs giúp các ứng dụng có tốc độ xử lý nhanh.
• Nodejs có cơ chế non-blocking I/O làm ứng dụng nhẹ nhưng hiệu quả.
• NodeJS có thể hoạt động đa nền tảng do đó rất tiện lợi cho việc phát triển ứng dụng nói chung.
• NodeJS sử dụng Javascript, ngơn ngữ lập trình được hàng triệu nhà phát triển sử dụng. Có nhiều thư viện và framework mã nguồn mở hỗ trợ mạnh mẽ cho việc phát triển.
21
2.4.3. Nhược điểm
• Nodejs gây hao tốn tài nguyên và thời gian. Nodejs được viết bằng C++ và JavaScript nên khi xử lý cần phải trải qua một quá trình biên dịch. Nếu bạn cần xử lý những ứng dụng tốn tài nguyên CPU thì khơng nên sử dụng Nodejs.
• Nodejs so với các ngơn ngữ khác như PHP, Ruby và Python sẽ khơng có sự chênh lệch quá nhiều. Nodejs có thể sẽ phù hợp với việc phát triển ứng dụng mới. Tuy nhiên khi xây dựng và triển khai dự án quan trọng thì Nodejs khơng phải là sự lựa chọn hoàn hảo nhất.
2.5. VueJS
2.5.1. Giới thiệu
VueJS là một frontend framework linh động hỗ trợ xây dựng giao diện người dùng. Khác với các framework khác, VueJS được thiết kế với khả năng phát triển liên tục. Thư viện chính của VueJS chỉ tập trung vào tầng view, do đó VueJS rất dễ học và có khả năng tích hợp cao với các thư viện khác [18].
VueJS được tạo ra bởi Evan You vào tháng 2/2014. Tới thời điểm hiện tại, VueJS đã qua 3 phiên bản. Phiên bản mới nhất (Vue3) được ra mắt vào 18/9/2020 với khả năng tối ưu hóa và scale cao so với Vue2.
VueJS giới thiệu khác niệm Single File Component. Mỗi file (có đi là .vue) sẽ bao hàm toàn bộ đặc điểm của component bao gồm kết cấu giao diện, logic và style.
2.5.2. Ưu điểm
• Kích thước nhỏ: VueJS có kích thước rất nhỏ so với các framework khác. Qua đó giảm thiểu kích cỡ download của client và tăng hiệu suất của ứng dụng.
• Virtual DOM Rendering: VueJS cung cấp 1 cây DOM (Document Object Model) ảo hỗ trợ cập nhật và render các phần tử HTML một cách hiệu quả hơn.
22
• Two-way data binding: VueJS hỗ trợ binding dữ liệu 2 chiều (tương tự như Angular), qua đó giúp quản lý và theo dõi sự thay đổi của dữ liệu và khả năng cập nhật tự động của component.
• Single File Component
2.5.3. Nhược điểm
• Vì tuổi đời của VueJS trẻ hơn so với các framework khác nên VueJS thiếu khả năng hỗ trợ và giải pháp trong việc xây dựng các ứng dụng lớn.
• Tài nguyên hạn chế: Hiện tại vẫn chưa có nhiều plugin và thư viện hỗ trợ cho việc phát triển VueJS so với các framework khác như ReactJS, AngularJS.
2.6. Android Native
2.6.1. Native App
Native App là một loại phần mềm được tạo ra và phát triển bởi các cơng cụ được phát triển bởi chính các nhà phát triển mang đến cho lập trình viên. Hiện nay, đang có 2 nhà phát triển đang phát triển song song và cạnh tranh một cách mạnh mẽ với nhau là Android và IOS.
Ứng dụng này được sử dụng vô cùng phổ biến trong một số ngôn ngữ trong hệ điều hành. Đồng thời, cơng cụ này cũng có đầy đủ các tính năng có sẵn trên các hệ điều hành ấy. Điều này giúp cho các hệ điều hành này có tốc độ vận hành cao, không yêu cầu bắt buộc phải thực hiện thông qua engine hay bất cứ một ứng dụng thứ 3 nào khác.
2.6.2. Hệ điều hành Android
Hệ điều hành Android đang chiếm hơn 80% thị trường thiết bị di động hiện đại ngày
nay. Nhu cầu sử dụng ứng dụng di động cũng ngày càng cao.
Android là hệ điều hành mã nguồn mở, dựa trên Linux Kernel, dành cho các thiết bị
di động nói chung (điện thoại, máy tính bảng, đồng hồ thông minh, máy nghe nhạc,…).
23
Có nghĩa là Android khơng chỉ giới hạn trong phạm vi một hệ điều hành cho điện thoại! Nó có thể được nhà sản xuất cài đặt lên đồng hồ, máy nghe nhạc, thiết bị định vị GPS, thậm chí là ơ tơ (các thiết bị Android Auto).
Android cũng không phải là một thiết bị hay sản phẩm cụ thể, nó là một hệ điều hành dựa trên Linux, nguồn mở, linh hoạt.
Hiện Android là một thương hiệu của Google. Có khả năng tùy biến rất cao và có thể chạy trên nhiều thiết bị, nhiều kiến trúc vi xử lý (ARM / x86) [19].
2.6.3. Kotlin
Kotlin – Một ngơn ngữ lập trình được phát triển đặc biệt để làm việc với Java và Java
Virtual Machine. Do đó, việc sử dụng nó được Google hỗ trợ và phê duyệt để phát triển các ứng dụng Android. Một trong những ưu điểm chính của Kotlin so với Java thơng thường là giao diện của nó cho phép làm việc theo cú pháp ngắn hơn. Thực tế này giúp giảm thời gian lập trình cần thiết để tạo một ứng dụng cho Android. Bây giờ nó được bao gồm như là một thay thế cho trình biên dịch Java tiêu chuẩn cho Android Studio. Expedia, Square, Pinterest và Flipboard có thể được nêu tên trong số những ví dụ điển hình nhất về các công ty sử dụng Kotlin cho các ứng dụng Android của họ.
2.6.1. Ưu điểm
• Better performance – Khi chúng ta phân tích performance của Hybrid so với
Native, rõ ràng các Native app sẽ nhanh hơn. Chúng được xây dựng với framework có nguồn gốc từ platform.
• Data protection / Bảo mật dữ liệu – Nó dễ dàng hơn nhiều để làm cho Native
app an tồn. Đó là lợi thế mà rất nhiều công ty quan tâm trong việc cung cấp cho khách hàng của họ đặc biệt là trong lĩnh vực doanh nghiệp, fintech và các ứng dụng có dữ liệu nhạy cảm.
• Overall functionality / Chức năng tổng thể – Ứng dụng sẽ có khả năng quan
trọng để kết nối các tính năng phần cứng của thiết bị và các cơ sở dữ liệu khác nhau. Không cần plugin hay công cụ bổ sung.
24
• Customer experience / Trải nghiệm khách hàng – Chúng chắc chắn sẽ có
performance cao. Ngồi ra, chúng có thể hoạt động ở chế độ ngoại tuyến, đây vẫn là một vấn đề đối với các ví dụ Hybrid app.
• Comprehension / Tổng quát – Các nhà phát triển đã nhận thức được tất cả các
điểm mạnh và điểm yếu của việc sử dụng các công nghệ được thiết lập tốt. Chúng sẽ giúp tìm ra phương pháp phù hợp để nhận được kết quả mong muốn cuối cùng. • Bản build nhẹ hơn – Dung lượng của bản build gọn nhẹ, ít tốn bộ nhớ của device.
2.6.2. Nhược điểm
• Time and money-consuming / Tốn thời gian và tiền bạc – Chắc chắn đòi hỏi
thời gian để xây dựng phần mềm phức tạp. Phân phối người dùng trên hai platforms chính nên tăng gấp đơi số lượng công việc và testing cần thiết để duy trì hai ứng dụng riêng biệt cho cả iOS và Android hoạt động.
• Distributed codebase / Codebase phân tán – Có một số tính năng khơng có sẵn
cho iOS hoặc Android là một thực tế lớn có ngay cả trong năm 2019. Điều này xảy ra do những hạn chế về ngân sách hoặc hạn chế của platform. Đơi khi, ứng dụng trên App Store có thể bị hủy bỏ trong nhiều năm trong khi phiên bản Android nhận được cập nhật thường xuyên và ngược lại.
25
2.7. Hệ quản trị cơ sở dữ liệu MongoDB
2.7.1. Giới thiệu