CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ứng ụng được xây dựng bởi ASP. Đặc biệt có thể phát triển ứng dụng ASP.NET Core trên Docker container. • Mô-đun hóa và giảm sự phụ thuộc: các thư viện trong NuGet là những thành phần đầu tiên trong. Ứng dụng ASP.NET Core là sự kết hợp của rất nhiều thư viện trên NuGet.
Điều này cho phép ứng dụng chỉ phụ thuộc vào các thành phần mà ứng dụng thật sự cần thiết.NET Core còn hỗ trợ dependency injection (một nguyên lý phát triển phần mềm, ở đây được đã được ASP.NET Core triển khai), nó giúp giảm thiểu sự phụ thuộc giữa các thành phần trong ứng dụng, thay vì phụ thuộc vào những triển khai cụ thể thì ứng dụng chỉ phụ thuộc vào các trừu tượng hóa. [2] • Dễ dàng kiểm thử: ứng dụng ASP.NET Core hỗ trợ kiểm thử đơn vị. Với dependency injection việc kiểm thử trở nên dễ dàng hơn bao giờ hết khi mà có thể tạo các dữ liệu giả và hành vi giả để phục vụ mục đích kiểm thử. Việc kiểm thử chức năng cũng có thể được thực hiện bằng cách gửi các yêu cầu đến TestServer một máy chủ có thể chạy trực tiếp trên máy được cung cấp bởi ASP.
Entity Framework Core Entity Framework Core là một framework ORM (Object-Relational Mapping) mã nguồn mở của Microsoft, được sử dụng để tạo và quản lý liên kết giữa cơ sở dữ liệu và mã nguồn trong các dự án ASP.NET Core và. Nó cho phép lập trình viên làm việc với cơ sử dữ liệu thông qua các đối tượng trong .NET thay vì làm việc trực tiếp với SQL [3]. Một số ưu điểm của Entity Framework Core: • Tích hợp dễ dàng: Entity Framework Core được tích hợp sâu vào các dự án ASP.NET Core và .NET Core, giúp cho việc tạo, truy vấn và cập nhật dữ liệu trở nên dễ dàng và nhanh chóng. • Tính linh hoạt: Entity Framework Core hỗ trợ nhiều loại cơ sở dữ liệu khác nhau như SQL Server, MySQL, PostgreSQL, SQLite, v.
Điều này giúp cho việc triển khai ứng dụng trên nhiều nền tảng và cơ sở dữ liệu trở nên dễ dàng hơn. SignalR SignalR là một thư viện mã nguồn mở của Microsoft được sử dụng để xây dựng các ứng dụng web thời gian thực (real-time). Nó cho phép việc truyền tin nhắn và dữ 5 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT liệu giữa máy chủ và các máy khách (client) diễn ra một cách đồng bộ và liên tục, giúp cho việc cập nhật dữ liệu và hiển thị thông tin mới trên giao diện người dùng ngay khi nó được tạo ra hoặc thay đổi. Một vài ưu điểm của SignalR: • Thời gian thực: SignalR cung cấp các tính năng để xây dựng các ứng dụng web thời gian thực một cách dễ dàng, bao gồm trò chuyện trực tuyến, cập nhật dữ liệu trực tiếp, và thông báo tức thì.
• Dễ sử dụng và tích hợp: SignalR tích hợp một cách tương thích với các dự án ASP.NET Core và ASP.NET Framework, giúp cho việc triển khai và sử dụng trở nên dễ dàng và nhanh chóng. Docker Docker là một nền tảng cho lập trình viên để phát triển và chạy ứng dụng với container. Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy và phát triển ứng dụng, môi trường này được gọi là container. Khi cần deploy lên bất kỳ máy chủ nào chỉ cần chạy container của Docker thì ứng dụng sẽ được khởi chạy ngay lập tức.
[4] Một số ưu điểm của Docker: • Khả năng chuyển đổi: Docker cho phép đóng gói ứng dụng vào một container, giúp cho việc di chuyển ứng dụng giữa các môi trường phát triển, thử nghiệm trở nên dễ dàng hơn. • Tính cô lập: Docker sử dụng container để cô lập ứng dụng và môi trường của nó khỏi hệ thống máy chủ. Điều này đảm bảo rằng các ứng dụng chạy trong các container không ảnh hưởng đến nhau và không ảnh hưởng đến hệ thống máy chủ. • Dễ dàng đưa lên đám mây: ứng dụng chạy trong container, container này dễ dàng được đưa lên các kho lưu trữ container và được các dịch vụ trên đám mây lấy về để chạy.
Algolia Search Algolia là một dịch vụ tìm kiếm được thiết kế để cung cấp trải nghiệm tìm kiếm nhanh chóng và mạnh mẽ cho các ứng dụng web và điện thoại. Algolia cung cấp tìm kiếm văn bản, chữ số và các khía cạnh. Các kết quả tìm kiếm được Algolia trả về theo thời gian thực ngay từ khi bắt đầu nhập từ khóa tìm kiếm. [5] 6 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Các ưu điểm của Algolia: • Tìm kiếm nhanh chóng: Algolia được xây dựng với việc tối ưu hiệu suất, giúp cho việc tìm kiếm trở nên nhanh chóng và linh hoạt.
• Tùy chỉnh linh hoạt: Algolia cung cấp một loạt các tùy chọn tùy chỉnh cho giao diện tìm kiếm, cho phép bạn tinh chỉnh và điều chỉnh việc hiển thị kết quả tìm kiếm theo nhu cầu cụ thể của ứng dụng của bạn giúp tăng trải nghiệm tìm kiếm của người dùng. • Tích hợp dễ dàng: Algolia cung cấp các thư viện và SDK đa nền tảng để tích hợp. Stripe Stripe là một dịch vụ thanh toán trực tuyến cho các doanh nghiệp. Stripe cho phép các doanh nghiệp chấp nhận thanh toán từ khách hàng thông quá Internet, bằng cách sử dụng các phương tiện thanh toán như thẻ tín dụng, thẻ ghi nợ, ví điện tử.
Stripe được biết đến với tính bảo mật cao, tích hợp dễ dàng và tính linh hoạt, giúp cho doanh nghiệp có thể xây dựng và quản lý hệ thống thanh toán trực tuyến một cách hiệu quả và tiện lợi. Những ưu điểm của Stripe: • Dễ sử dụng và tích hợp: Stripe cung cấp các API và SDK sử dụng cho các nhà phát triển, giúp cho việc tích hợp thanh toán vào ứng dụng trở nên đơn giản và nhanh chóng. Điều này giúp tiết kiệm thời gian và công sức cho việc phát triển và triển khai hệ thống thanh toán. • Bảo mật cao: Stripe tuân thủ các tiêu chuẩn bảo mật cao nhất trong ngành, bao gồm mã hóa dữ liệu thông tin thanh toán của khách hàng giúp đảm bảo an toàn thông tin cho khách hàng.
Các công nghệ phía Front-end 1. ReactJS ReactJS là một thư viện JavaScript có tính hiệu quả và linh hoạt để xây dựng các thành phần giao diện người dùng (UI) mang tính tái sử dụng. ReactJS giúp phân chia các UI phức tạp thành các thành phần nhỏ (được gọi là component). Nó được tạo ra bởi Jordan Walke, một kỹ sư phần mềm tại Facebook.
ReactJS sử dụng cơ chế one-way data binding – luồng dữ liệu 1 chiều. Dữ liệu được truyền từ cha đến con thông qua props. Luồng dữ liệu đơn giản giúp dễ dàng quản 7 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT lý. Các component trong ReactJS duy trì và thay đổi theo thời gian dựa trên state (trạng thái của component) và khi state thay đổi, component sẽ tự động được render lại để phản ánh sự thay đổi đó.
[6] Với các đặc điểm ở trên, ReactJS dùng để xây dựng các ứng dụng lớn mà dữ liệu của chúng thay đổi liên tục theo thời gian. Một số ưu điểm khác của ReactJS • ReactJS sử dụng mô hình lập trình dựa trên thành phần, cho phép phân chia giao diện người dùng thành các phần độc lập và tái sử dụng được. Điều này giúp tăng tính linh hoạt và bảo trì mã nguồn, đồng thời giảm thiểu sự phức tạp và tái sử dụng mã. • React sử dụng Virtual DOM để tối ưu hóa hiệu suất của ứng dụng thay vì cập nhật trực tiếp DOM mỗi khi có sự thay đổi, React sẽ tạo ra một bản sao ảo của DOM, so sánh DOM hiện tại và chỉ cập nhật những phần thay đổi.
Điều này giúp giảm thiểu thời gian xử lý và render, làm cho ứng dụng chạy mượt mà hơn. • Cú pháp dễ sử dụng: ReactJS sử dụng JSX một cú pháp cho phép viết các component tương tự với cú pháp HTML. Từ đó giúp phát triển ứng dụng một cách nhanh chóng. Redux toolkit Redux là một khuôn mẫu và thư viện dùng để quản lý và cập nhật trạng thái (state) của ứng dụng, sử dụng các sự kiện được gọi là “action”.
Nó được sử dụng như một kho lưu trữ tập trung cho trạng thái cần được sử dụng trên toàn bộ ứng dụng với các quy tắc đảm bảo trạng thái chỉ có thể được cập nhật theo cách có thể dự đoán được. Redux toolkit là một bộ công cụ được cung cấp bởi Redux nhằm giúp đơn giản hóa việc viết logic cho Redux. Bộ công cụ này cung cấp các API và phương pháp tích hợp sẵn giúp giảm thiểu các đoạn mã bị lặp lại nhiều lần và giúp cho Redux dễ sử dụng hơn. Một số ưu điểm của Redux toolkit: • Giảm thiểu các đoạn mã bị trùng lặp: đây là mục đích chính của Redux toolkit.
• Hỗ trợ tốt cho lập trình bất đồng bộ: Redux toolkit cung cấp cách thức giúp xử lý logic bất đồng bộ dễ dàng hơn. • Hiệu suất cao và cung cập cấu trúc rõ ràng. 8 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. Material UI Material UI là một thư viện giao diện người dùng (UI) mã nguồn mở được xây dựng trên nền tảng React, được thiết kế dựa trên hướng dẫn thiết kế của Google Material Design.
Nó cung cấp các thành phần giao diện đồng nhất và thẩm mỹ, giúp cho việc xây dựng các ứng dụng web trở nên dễ dàng và nhanh chóng. Ưu điểm của Material UI: • Thiết kế thẩm mỹ và linh hoạt: Material UI cung cấp một bộ sưu tập các thành phần giao diện đẹp mắt và linh hoạt, từ nút, hộp thoại, đến thanh điều hướng và biểu đồ. Điều này giúp cho việc xây dựng giao diện người dùng trở nên nhanh chóng và dễ dàng, đồng thời đảm bảo tính đồng nhất trong toàn bộ ứng dụng. • Dễ dàng tùy chỉnh: Material UI cung cấp các thành phần có thể tùy chỉnh một cách linh hoạt, từ màu sắc, kiểu chữ, đến kích thước và hình dạng.
Điều này giúp cho việc điều chỉnh giao diện người dùng để phù hợp với nhu cầu cụ thể của từng ứng dụng trở nên dễ dàng hơn. Clean Architecture Clean Architecture là một phương pháp thiết kế phần mềm được đề xuất bởi Robert C. Phương pháp này tập trung vào việc phân tách các vấn đề và sự độc lập của nghiệp vụ ra khỏi các phụ thuộc bên ngoài như các framework, cơ sở dữ liệu, và giao diện người dùng. Hình 1: Clean Architecture 9 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Clean Architecture chia ứng dụng thành các vòng tròn tập trung hoặc các lớp, với vòng tròn bên trong biểu diễn cho nghiệp vụ cốt lõi, và mỗi vòng tròn bên ngoài biểu diễn cho các phụ thuộc và các framework cấp cao.