Chương 4: THIẾT KẾ KIẾN TRÚC DỮ LIỆU
4.2 Kiến trúc mô hình
Mô hình MVC (Model – View – Controller) là một trong những mô hình kiến
trúc ứng dụng phổ biến nhất. Ban đầu mô hình này được áp dụng chủ yếu ở các ứng dụng desktop, nhưng sau này ý tưởng về mô hình MVC được ứng dụng cho các nền tảng khác như Web.
Hình 4.2 Mô Hình MVC 4.2.1 Cấu trúc mô hình MVC
Tầng xử lý – Controller
Xử lý logic của ứng dụng, là cầu nối giữa tầng View và Model. Hay nói một
cách cụ thể, Controller sẽ nhận yêu cầu được gửi từ View và thực hiện xử lí yêu cầu, truy vấn hoặc thao tác dữ liệu lên tầng Model. Sau khi xử lý xong, kết quả sẽ được trả về lại cho tầng View.
Tầng logic dữ liệu – Model
Tầng Model là trung gian giữa ứng dụng và hệ quản trị cơ sở dữ liệu để cung
cấp và quản lý mô hình và các thao tác lên dữ liệu. Thông thường, tầng Model sẽ kết nối với một hoặc nhiều cơ sở dữ liệu để thực hiện các thao tác lên dữ liệu.
Tầng giao diện – View
Thể hiện giao diện người dùng, là thành phần giao tiếp giữa người dùng (user)và ứng dụng (application).
4.2.2 Mô hình MVC trong ứng dụng Web
Với sự phát triển của các công nghệ xây dựng web ở cả Frontend và Backend,
các nhà phát triển có thể xây dựng và phát triển ứng dụng web một cách độc lập nhưng vẫn đảm bảo được tính kiến trúc của ứng dụng.
Hình 4.2.2 Mô Hình MVC trong ứng dụng Web
− Tầng giao diện người dùng (View) sẽ được phát triển độc lập ở phía client sử dụng các công nghệ Frontend như VueJS, ReactJS, ... Nói cách khác, client sẽ được chạy trên 1 server độc lập và có thể tương tác với phía server của backend.
− 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.
4.2.3 NodeJS
Hình 4.2.3 Nodejs Nodejs là gì ?
NodeJS là mã nguồn mở chạy trên môi trường V8 JavaScript runtime (một trình thông dịch JavaScript chạy cực nhanh trên trình duyệt Chrome). NodeJS giúp các nhà phát triển xây dựng các ứng dụng web một cách đơn giản và dễ dàng mở rộng.
NodeJS có thể được dùng để xây dựng các loại ứng dụng khác nhau như các ứng dụng dòng lệnh, ứng dụng web, ứng dụng trò chuyện theo thời gian thực, máy chủ REST API,..
Tuy nhiên, NodeJS thường được dùng chủ yếu để xây dựng các chương trình mạng như máy chủ web, tương tự như PHP, Java hoặc ASP.NET.
Vì đây là mã nguồn mở nên cho phép bạn sử dụng miễn phí và đồng thời được liên tục được chỉnh sửa, cải tiến bởi cộng đồng các nhà phát triển toàn cầu.
Lợi ích sử dụng Nodejs
IO hướng sự kiện không đồng bộ giúp xử lý nhiều yêu cầu đồng thời.
Đáp ứng được những yêu cầu về thời gian thực.
Có tốc độ cực rất nhanh, đáp ứng được nhu cầu sử dụng của khách truy cập
‘khổng lồ’ trong thời gian ngắn.
Sử dụng JavaScript, một ngôn ngữ lập trình rất dễ học.
Chia sẻ cùng một đoạn mã với cả phía máy chủ và máy khách.
Npm và các module rất mạnh mẽ và vẫn đang tiếp tục phát triển.
Có một cộng đồng lớn mạnh, có nhiều mã được chia sẻ qua github
Tương thích với nhiều thiết bị, nhiều hệ điều hành như MacOS, Window, Linux,
… 4.2.4 NextJS
Hình 4.2.4.a Nextjs NextJS là gì?
Next.js là một open-source React front-end framework được bổ sung các tính năng như Server Side Rendering (SSR) và Static Site Generation (SSG). Next.js được xây dựng dựa trên thư viện React có nghĩa là Next.js lấy những lợi thế của React và bổ sung các tính năng.
Các tính năng chính của NextJS.
Chúng ta đã vừa tìm hiểu NextJS là gì rồi, vậy bây giờ hãy xem nó có những tính năng gì.
Server Side Rendering:
SSR cho phép máy chủ access tất cả required data và xử lý javaScript để hiển thị lên trang web. Theo cơ chế này thì hầu hết các xử lý logic đều ở phía máy chủ. Trong đó,
máy chủ thực hiện xử lý và tiến hành các thao tác với cơ sở dữ liệu để thông dịch (render) ra thành HTML, sau đó gửi phản hồi cho khách hàng. Trình duyệt của khách hàng cũng sẽ chỉ hiển thị HTML này.
Hình 4.2.4.b SSR Search Engine Optimization (SEO):
Sử dụng SSR cũng mang lại cho bạn lợi thế về SEO, giúp trang web của bạn hiển thị cao hơn trên các trang kết quả của công cụ tìm kiếm. SSR làm cho các trang web xếp hạng tốt hơn cho SEO vì chúng tải nhanh hơn và nhiều nội dung trang web có thể được quét bởi các trình theo dõi SEO.Redux
Brings organic traffic
Các trang web được phát triển bằng Next JS không chỉ nhanh mà còn đơn giản để tìm kiếm và cung cấp trải nghiệm người dùng tuyệt vời. Ba yếu tố: tốc độ, cấu trúc và trải nghiệm người dùng, là những yếu tố xếp hạng quan trọng sẽ tăng thứ hạng trên công cụ tìm kiếmcủa Google trang web của bạn.
4.2.5 MongoDB
Hình 4.2.5 MongoDB
MongoDB là gì?
MongoDB là một database hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON có một schema rất linh hoạt gọi là BSON.
MongoDBsử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và các document khác nhau. Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh.
Ưu điểm của MongoDB
Dữ liệu lưu trữ phi cấu trúc, không có tính ràng buộc, toàn vẹn nên tính sẵn sàng cao, hiệu suất lớn và dễ dàng mở rộng lưu trữ.
Dữ liệu được caching (ghi đệm) lên RAM, hạn chế truy cập vào ổ cứng nên tốc độ đọc và ghi cao.