Trang 8 CHƯƠNG 3: TÔNG QUAN VỀ .NET FRAMEWORK/ .NET CORE/ .NET 61.Khái niệm .Net .NET core là một framework được phát hành bởi Microsoft vào năm 2016 để xây dựng ứng dụng trên đa nền tả
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO LẬP TRÌNH WEB NÂNG CAO
NHÓM: 8
Sinh viên thực hiện : Hoàng Xuân Hiếu
Nguyễn Đức Quang Phạm Hoàng Trung Sơn
Đỗ Đức Vịnh Nguyễn Xuân Trường Giảng viên hướng
Trang 2Giảng viên chấm thi 1:
Giảng viên chấm thi 2:
Trang 3TUẦN 1 CHƯƠNG 1: CÀI ĐẶT MÔI TRƯỜNG LẬP TRÌNH C# TRÊN UBUNTU LINUX
1 Microsoft NET 6: cài đặt trên Ubuntu
1.1 Giới thiệu về Microsoft NET 6
-Nó là một nền tảng phát triển mã nguồn mở, đa nền tảng, miễn phí để tạo ra nhiều loại ứng dụng .NET dựa trên thời gian chạy hiệu suất cao được nhiều ứng dụng quy mô lớn sử dụng trong sản xuất
-Các tính năng được đề cập chính:
+Triển khai mã không đồng bộ
+Việc sử dụng các thuộc tính
+Việc sử dụng máy phân tích mã
1.2 Cài đặt trên Ubuntu
1.2.1 Các gói có khóa ký (khóa kho)
wget microsoft-prod.deb -O packages-microsoft-prod.deb
https://packages.microsoft.com/config/ubuntu/22.04/packages-sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
1.2.2 Cài đặt SDK
sudo apt-get update && \
sudo apt-get install -y dotnet-6.0
1.2.3 Cài đặt thời gian chạy
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-6.0
1.2.4 Cài đặt ASP.NET Core Runtime
sudo apt-get install -y dotnet-runtime-6.0
Trang 4Kiểm tra cài đặt:
Sau khi cài đặt, bạn đã có thể sử dụng phần mềm này thông qua những
phần mềm khác, chẳng hạn như Mã Visual Studio Tuy nhiên, đối với
kiểm tra rằng mọi thứ đều được cài đặt hoàn hảo và hoạt động, chỉ cần thực hiện các lệnh sau và xác thực thông tin đầu ra, như được hiển thị trong ảnh chụp màn hình sau:
dotnet list-sdks
dotnet list-runtimes
dotnet –info
2 Cài đặt visual studio code trên linux/ubuntu
Visual Studio Code (VSCode) là một trình soạn thảo mã nguồn mở mạnh mẽ và cực kỳ phổ biến do Microsoft phát triển Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách cài đặt VSCode trên Ubuntu từ phiên bản 20.04 LTS trở lên
Visual Studio Code hiện khả dụng trên cả Windows, macOS và Linux Tính chất đa nền tảng là một yếu tố quan trọng tạo nên sức hấp dẫn của
bộ công cụ này, vì nó cho phép các nhà phát triển không cần phải chuyển đổi công cụ hoặc học giao diện người dùng mới khi làm việc trên nhiều nền tảng hệ điều hành khác nhau
VSCode hỗ trợ nhiều gói ngôn ngữ lập trình khác nhau, bao gồm
JavaScript, TypeScript và Node.js Một bộ mở rộng phong phú có sẵn cho các ngôn ngữ khác, như C++, C#, Java, Python, PHP và Go, cũng như các runtime như NET và Unity
2.1 Cài đặt Visual Studio Code qua gói Snap
Microsoft hiện cung cấp gói cài đặt Visual Studio Code Snap chính thứctrên Canonical’s Snapcraft Store
Snaps là gì? Chúng là các gói phần mềm độc lập bao gồm tất cả các thành phần cần thiết để chạy ứng dụng Các gói Snap rất dễ nâng cấp và bảo mật Về cơ bản, bạn có thể cài đặt các gói Snap bằng ứng dụng Phần mềm Ubuntu hoặc bằng cách can thiệp sâu vào dòng lệnh
Trang 5Để cài đặt VS Code, bạn mở ứng dụng Ubuntu Software và tìm kiếm từ khóa “Visual Studio Code”.
Ngoài ra, nếu bạn cảm thấy thoải mái hơn khi sử dụng lệnh, hãy
nhấn Ctrl + Alt + T và chạy lệnh sau:
sudo snap install code classic
Đó là tất cả những gì bạn cần làm để cài đặt Visual Studio Code trên hệ thống của mình
Về các bản cập nhật trong tương lai thì sao? Bạn không cần lo lắng vì các phiên bản mới của Visual Studio Code được tự động tải xuống và cài đặt trong nền khi khả dụng
2.2 Cài đặt Visual Studio Code bằng gói deb
Microsoft hiện duy trì một kho lưu trữ apt để người dùng Linux cài đặt Visual Studio Code từ đây
Bạn có thể thêm kho lưu trữ mã apt Visual Studio Code theo cách thủ công bằng lệnh Nhưng một cách nhanh hơn để thiết lập nó trên hệ thống của là tải xuống và cài đặt gói VSCode Linux từ trang web của ứng dụng
Là một phần của quá trình cài đặt, kho lưu trữ apt sẽ được thêm vào danh sách Software Sources của bạn
Download Visual Studio Code (64-bit deb)
Sau khi quá trình tải xuống hoàn tất, hãy điều hướng đến thư mục
Download (hoặc vị trí bạn đã chọn để lưu trình cài đặt) và nhấp đúp vào tệp deb Phần mềm Ubuntu sẽ mở ra Nhấp vào nút "install"
Khi phiên bản mới được phát hành, bạn có thể cập nhật gói Visual Studio Code (cùng với bất kỳ bản cập nhật nào khác mà mình có) bằng công cụ Trình cập nhật phần mềm của Ubuntu
Trang 6CHƯƠNG 2: TÌM HIỂU TỔNG QUAN VỀ LẬP TRÌNH VỚI NGÔN NGỮ C#:
Lập trình web với ngôn ngữ C# là quá trình tạo ra các ứng dụng web sửdụng ngôn ngữ lập trình C# và Framework NET Dưới đây là tổng quan
về quá trình lập trình web với ngôn ngữ C#:
1 Ngôn ngữ lập trình C#: C# là một ngôn ngữ lập trình mạnh mẽ và phổbiến được phát triển bởi Microsoft C# hỗ trợ nhiều tính năng như tính kếthừa, đa hình, và quản lý bộ nhớ tự động
2 ASP.NET: ASP.NET là một framework phát triển ứng dụng webđược xây dựng trên nền tảng NET của Microsoft ASP.NET cung cấpcác công cụ và thư viện mạnh mẽ để phát triển ứng dụng web sử dụngngôn ngữ C#
3 MVC và MVVM: MVC (Model-View-Controller) và MVVM(Model-View-ViewModel) là hai kiến trúc phổ biến được sử dụng tronglập trình web với ngôn ngữ C# Kiến trúc MVC tách biệt dữ liệu, giaodiện và logic ứng dụng, trong khi kiến trúc MVVM giúp ràng buộc dữliệu giữa giao diện và logic ứng dụng
4 HTML, CSS và JavaScript: Để xây dựng giao diện người dùng trênweb, người lập trình thường sử dụng HTML để định dạng nội dung, CSS
để thiết kế và trang trí giao diện, và JavaScript để tương tác với ngườidùng và thay đổi nội dung động trên trình duyệt
5 Cơ sở dữ liệu: Để lưu trữ và truy xuất dữ liệu trong ứng dụng web,ngôn ngữ C# thường kết hợp với các hệ quản trị cơ sở dữ liệu nhưMicrosoft SQL Server hoặc MySQL
6 Bảo mật: Lập trình web với ngôn ngữ C# cũng đòi hỏi người lập trìnhcần chú trọng đến vấn đề bảo mật Các biện pháp bảo mật như mã hóa,xác thực và phân quyền được sử dụng để bảo vệ ứng dụng khỏi các lỗhổng bảo mật
Quá trình lập trình web với ngôn ngữ C# là một sự kết hợp của các côngnghệ và phương pháp trên Sử dụng các công cụ và thư viện phát triểnphù hợp, người lập trình có thể xây dựng các ứng dụng web mạnh mẽ vàđáng tin cậy bằng ngôn ngữ C#
Trang 7Chương trình đơn giản:
Trang 8CHƯƠNG 3: TÔNG QUAN VỀ NET FRAMEWORK/ NET
CORE/ NET 6
NET core là một framework được phát hành bởi Microsoft vào năm 2016 để xây dựng ứng dụng trên đa nền tảng (window, linux và macOS)
Có thể xây dựng ứng dụng Desktop (WPF, Winform), website, mobile, game, IOT và cả AI
Các phiên bản của NET Core: (từ net 5 (2020) microsoft đã bỏ chữ core và gọi chung là NET), khuyến khích dùng các phiên bản LTS (Long term support) được MS hỗ trợ lâu dài
NET core là mã nguồn mở (open source) và source code được public trên github, các lập trình viên có thể vào để đóng góp phát triển giúp mã nguồn tốt hơn
Biên dịch và thực thi trong Net: Các ứng dụng viết bằng ngôn ngữ được hỗ trợ bởi Net sẽ được trình trình biên dịch tương ứng chuyển đổi thành ngôn ngữ trung gian (Đươc gọi là MSIL(Microsoft Intermediate Language) hoặc CIL(Common Intermediate Language) hoặc
IL(Intermediate Language)) cùng với metadata của nó (Chứa các thông tin về class, method, các trường dữ liệu, thông tin runtime, etc ) và chúngđược lưu trữ trong file assembly (.dll hoặc exe), khi chạy ứng dụng Net thì CLR nó lấy assembly và sử dụng trình biên dịch JIT để chuyển đổi assembly đó (Tức là chuyển đổi CIL) thành mã máy và sau đó CPU trên máy của bạn sẽ thực thi mã máy đó Hình dưới đây thì "Compile Time" làquá trình "built", "Run time" là quá trình chạy (Quá trình này bắt đầu từ khi bạn khởi động ứng dụng của mình)
Common Language Runtime (CLR): là thành phần máy ảo cũng như là một môi trường runtime(Môi trường hoạt động, đây là môi trường cung cấp các dịch vụ có sẵn để chạy chạy các chương trình Net,
CLR là triển khai (or CLR là một phiên bản) của Hệ thống thực thi
ảo (Virtual Execution System (VES): VES có nhiệm vụ tải và thực thi cácchương trình tương thích vs CLI, ,
Trang 92 .NET Framework là gì
Net Framework là một framework được phát hành bởi Microsoft vào năm 2001 để xây dựng ứng dụng trên nền tảng Window
Có thể xây dựng ứng dụng website, winform, webform, web
service, wpf bằng Net Framework
Version hiện tại của net framework là NET Framework 4.8 và microsoft hiện chưa có plan để ra phiên bản mới (4.9)
NET Framework là mã nguồn đóng (không được microsoft public source code ra bên ngoài)
NET Framework có 2 thành phần chính đó là Common Language Runtime (CLR) và NET Framework Class Library (FCL)
Class Library: FCL là một tập hợp các class, namespace, interface
và các kiểu dữ liệu (string, number ) được sử dụng để xây dựng nhiều chức năng và các loại ứng dụng khác nhau như ứng dụng web hay
desktop FCL này cũng được tích hợp với CLR của NET Framework vàđược sử dụng bởi tất cả ngôn ngữ NET như: C#, F#, Visual Basic NET, etc Ngoài ra nó cũng bao gồm các api cho việc đọc, viết file, kết nối databse, etc BCL (Base Class Library) là tập con (subnet) của FCL và cung cấp các chức năng cơ bản
Common Language Runtime (CLR): là thành phần máy ảo cũng như là một môi trường runtime(Môi trường hoạt động, đây là môi trường cung cấp các dịch vụ có sẵn để chạy chạy các chương trình Net, môi trường runtime này cùng với Libraries (thư viện) và Toolings (công cụ phát triển) là khác nhau trong từng triển khai của Net) trong Net
Frameword để chạy code và đồng thời cung cấp các dịch vụ khác nhau như quản lý luồng, type-safety, xử lý exception giúp cho quá trình phát triển ứng dụng dễ dàng hơn (Hiểu cơ bản là nó sẽ chịu trách nhiệm quản
lý việc thực thi các trương chình Net )
3.1 Sự khác nhau:
Net Framework trợ giúp tạo Console app, các ứng dụng window
và web Cụ thể là bạn có thể sử dụng Windows Forms, WPF, and UWP
Trang 10để xây dựng các ứng dụng window, ASP.NET MVC để xây dựng các ứngdụng web chạy trên IIS trong Net framework.
Net Core được sử dụng để sây dựng console app đa nền tảng, xây dựng các ứng dụng web bằng asp.net core và cloud services, Net core còn trợ giúp UWP (Universal Windows Platform (UWP): Giúp phát triển các ứng dụng kiểu Metro chạy trên cả window 10 và windown 10 mobile
mà không cần phải viết lại ứng dụng cho mỗi nền tảng.)
Net core là đa nền tảng, chạy đc trên window, linux, macos,
còn Net framework chỉ chạy trên win
Net core là mã nguồn mở nên được cộng đồng đóng góp phát triển, Net framerword thì không
Phần lớn những thay đổi trong Net là xảy ra trên Net Core
Net framework là tự động được cập nhật bởi window update, Net Core thì cập nhật thủ công
3.2 Sử dụng Net Core cho ở bên phía server khi
Ứng dụng của bạn (Web/service) cần chạy trên nhiều nền tảng như (Windows, Linux, and macOS)
Bạn đang sử dụng Docker containers
Bạn cần một hệ thống có hiệu suất cao và có thể mở rộng
Bạn cần một ứng dụng sử dụng một phiên bản Net thì dùng Net Core (Vì mỗi phiên bản Net framework nó sẽ thay thế phiên bản trước đó)
3.3 Sử dụng Net Framework cho ở bên phía server khi:
Ứng dụng của bạn sử dụng thư viện của bên thứ ba hoặc NuGet packages không có sẵn trong Net Core
App của bạn sử dụng các công nghệ Net không có sẵn Net Core
App của bạn chạy trên nền tảng không trợ giúp Net Core
(Window, Linux, MacOs trợ giúp Net Core)
3.4 Ưu điểm NET core so với Net Framework
NET Core hỗ trợ xây dựng ứng dụng đa nền tảng (window, linux, MacOS), NET Framework chỉ hỗ trợ trên window
Trang 11 NET Core ra đời sau nên Microsoft ra đời các phiên bản mới liên tục, cập nhật theo từng năm (tương lai), NET Framework ra đời lâu và Microsoft ngừng cập nhật phiên bản(lớn) mới.
NET Core có nhanh và nhẹ hơn NET Framework
NET Core không cần tải toàn bộ framework, chỉ cần cài bộ SDK
và khi cần package nào thfi tải xuống nên nhẹ hơn .NET Framework phảicài toàn bộ framework đầy đủ thư viện lên window nên rất nặng
NET Core là mã nguồn mở nên các nhà phát triển (developers) có thể đóng góp để gúp mã nguồn tốt hơn
.NET 6 là một phiên bản quan trọng của nền tảng phát triển ứng dụng Microsoft NET, được phát hành vào tháng 11 năng 2021 Đây là một phiên bản LTS (Long-Term Support), có nghĩa là sẽ nhận được hỗ trợ và bảo trì trong 1 khoảng thời gian dài, thường là 3 năm Dưới đây là một số điểm quan trọng về NET 6:
Đa nền tảng: NET 6 hỗ trợ phát triển ứng dụng trên nhiều nền tăng,
bao gồm Windows, Linux và macOS Điều này cho phép bạn xây dựng ứng dụng NET và chạy chúng trên nhiều hệ điều hành khác nhau
Performance cải thiện: NET 6 đã tối ưu hóa hiệu suất của mã CLT
(Common Language Runtime) và JIT (Just-In-Time) compiler, làm cho các ứng dụng NET chạy nhanh hơn và tiêu tốn ít bộ nhớ hơn
Blazor: Blazor, một công nghệ cho phép phát triển ứng dụng web đơn
trang (SPA) sử dụng C# và NET thay vì JavaScript, được cải thiện đáng
kể trong NET 6 với khả năng tăng tốc GPU và hỗ trợ cho Blazor hybrid apps, cho phép bạn tích hợp ứng dụng Blazor vào các ứng dụng di động
và máy tính
Entity Framework Core 6: Entity Framework Core là một ORM
(Object-Relational Mapping) phổ biến trong thế giới NET phiên bản 6 đi kèm với nhiều cải tiến và tính năng mới
.NET MAUI: NET Multi-platform App UI (MAUI) là một framework
cho phép bạn xây dựng ứng dụng di động và máy tính đa nền tảng bằng
Trang 12cách sử dụng một mã nguồn duy nhất .NET 6 cung cấp hỗ trợ ngày càng tốt cho NET MAUI.
Hỗ trợ C# 10: NET 6 đi kèm với phiên bản C# 10 mới nhất, có nhiều
tính năng và cải tiến ngôn ngữ
.NET Hot Reload: Tính năng này cho phép bạn chỉnh sửa mã nguồn
của ứng dụng NET trong thời gian chạy mà không cần khởi động lại ứng dụng Điều này giúp tăng nhanh quá trình phát triển và thử nghiệm ứng dụng
.NET và WebAssembly: NET 6 hỗ trợ WebAssembly mạnh mẽ hơn,
cho phép bạn chạy mã NET trực tiếp trong trình duyệt web mà không cần máy chủ trung tâm
Thư viện mới và cải tiến: NET 6 có nhiều thư viện và API mới, cũng
như cải tiến sâu về hiệu suất và bảo mật
.NET 6 đã mang lại nhiều cải tiến quan trọng và tính năng mới cho nhà phát triển NET và là một phiên bản quan trọng trong hành trình phát triển ứng dụng NET
Trang 13CHƯƠNG 4: TỔNG QUAN VỀ CÁC WEBSEVER: KESTREL/ APACHE/ NGINX/ IIS
4.2 Apache
Hiện nay, Apache là phần mềm web server miễn phí mã nguồn mở và
có thể bạn chưa biết, phần mềm này đang chiếm khoảng 46% thị phần websites trên toàn thế giới Máy chủ Apache thường tương thích rất tốt đối với những mã nguồn mở hiện tại
Vậy nên, phần mềm này được nhiều nhà cung cấp các dịch vụ Hosting lựa chọn sử dụng Bởi đây là phần mềm rất dễ cài đặt và hoàn toàn miễn phí
Apache là phần mềm web server miễn phí mã nguồn mở, hiện đang là một trong những web server được sử dụng phổ biến trên thế giới Tên chính thức của Apache là Apache HTTP Server, được điều hành và phát triển bởi Apache Software Foundation
Các yêu cầu gửi tới máy chủ sử dụng phương thức HTTP còn được gọi tắt là HTTP request
Sử dụng trình duyệt bạn có thể gửi đi một HTTP request đơn giản bằng cách nhập một địa chỉ IP (hoặc một URL chứa tên miền) và bấm Enter Khi đó bạn đã gửi đi một HTTP request tới một máy chủ trên internet Địa chỉ máy chủ này được xác định bởi địa chỉ IP (hoặc URL với tên miền) mà bạn đã nhập vào
4.3 NGINX
Nginx là một web server mạnh mẽ mã nguồn mở Nginx sử dụng kiến trúc đơn luồng, hướng sự kiện vì thế nó hiệu quả hơn Apache server Nó cũng có thể làm những thứ quan trọng khác, chẳng hạn như load
Trang 14balancing, HTTP caching, hay sử dụng như một reverse proxy Nginx là kiến thức không thể thiếu đối với một web developer, system
administrator hay devops
Tính năng:
• Có khả năng xử lý hơn 10.000 kết nối cùng lúc với bộ nhớ thấp
• Phục vụ tập tin tĩnh (static files) và lập chỉ mục tập tin
• Tăng tốc reverse proxy bằng bộ nhớ đệm (cache), cân bằng tải đơn giản
và khả năng chịu lỗi
• Hỗ trợ tăng tốc với bộ nhớ đệm của FastCGI, uwsgi, SCGI, và các máy chủ memcached
• Kiến trúc modular, tăng tốc độ nạp trang bằng nén gzip tự động
• Hỗ trợ mã hoá SSL và TLS
• Cấu hình linh hoạt; lưu lại nhật ký truy vấn
• Chuyển hướng lỗi 3XX-5XX
• Rewrite URL (URL rewriting) dùng regular expressions
• Hỗ trợ truyền tải file FLV và MP4
4.4 IIS (Internet Information Services)
IIS được đính kèm với các phiên bản của Windows
Microsoft Internet Information Services (các dịch vụ cung cấp thông tin Internet) là các dịch vụ dành cho máy chủ chạy trên nền Hệ điều hành Window nhằm cung cấp và phân tán các thông tin lên mạng, nó bao gồm nhiều dịch vụ khác nhau như Web Server, FTP Server, …
Nó có thể được sử dụng để xuất bản nội dung của các trang Web lên Internet/Intranet bằng việc sử dụng “Phương thức chuyển giao siêu văn
Trang 15bản “– Hypertext Transport Protocol (HTTP).
Tính năng:
• Xuất bản một Website của bạn trên Internet
• Tạo các giao dịch thương mại điện tử trên Internet (hiện các catalog vànhận được các đơn đặt hàng từ nguời tiêu dùng)
• Chia sẻ file dữ liệu thông qua giao thức FTP
• Cho phép người ở xa có thể truy xuất database của bạn (gọi là
Database remote access) Và rất nhiều khả năng khác …
Trang 16TUẦN 2 Tổng quan về mô hình MVC:
- MVC là viết tắt của cụm từ "Model-View-Controller" Đây là mô hìnhthiết kế được sử dụng trong kỹ thuật phần mềm MVC là mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính MVC chia thành ba thành phần được kết nối vơi snhau và mỗi thành phần đều có một nhiệm vụ tiêng của nó và độc lập với các thành phần khác Tên gọi của 3 thành phần:
+ Model(dữ liệu): Quản lí các dữ liệu
+ View(giao diện): Nơi hiển thị dữ liệu cho người dùng
+ Controller(bộ điều khiển): Điều khiển sự tương tác của hai thành phần Model và View
- Mô hình MVC(MVC pattern) thường được dùng để phát triển dao diệnngười dùng Nó cung cáp các thành phần cơ bản để thiết kế một chương trình cho máy tính hoặc điện thoại di dộng, cũng như là các ứng dụng web Trong đó:
+ Model: Là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng và là cầu nối giữa 2 thành phần bên dưới là View và Controller Một model là dữ liệu được sử dụng bởi chương trình Đây có thể là cơ sở
dữ liệu, hoặc file XML bình thường hay một đối tượng đơn giản Chẳng hạn như biểu tượng hay là một nhân vật trong game
+ View: Đây là phần giao diện (theme) dành cho người sử dụng View là phương tiện hiển thị các đối tượng trong một ứng dụng Chẳng hạn như hiển thị một cửa sổ, nút hay văn bản trong một cửa sổ khác Nó bao gồm bất cứ thứ gì mà người dùng có thể nhìn thấy được
+ Controller: Là bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến thông qua View Một controller bao gồm cả Model lẫn View Nó nhận input và thực hiện các update tương ứng
- Mô hình MVC hoạt động như thế nào?
Trang 17+ Khi một yêu cầu của từ máy khách (Client) gửi đến Server Thì
bị Controller trong MVC chặn lại để xem đó là URL request hay sự kiện
+ Sau đó, Controller xử lý input của user rồi giao tiếp với Model trong MVC
+ Model chuẩn bị data và gửi lại cho Controller
+ Cuối cùng, khi xử lý xong yêu cầu thì Controller gửi dữ liệu trở lại View và hiển thị cho người dùng trên trình duyệt
Trang 18Một solution (tổng thể) là một tập hợp các dự án liên quan đến nhau trongmột ứng dụng phức tạp Một solution thường bao gồm nhiều project, chẳng hạn:
Web Application Project: Đây là project chính của ứng dụng web,
thường là nơi xử lý logic chính và giao diện người dùng Đây có thể là một project ASP.NET Core MVC hoặc Razor Pages
Class Library Projects: Đây là các project thư viện chứa code tái sử
dụng có thể được sử dụng trong nhiều project khác Chẳng hạn, bạn có thể tạo các class library để quản lý logic kết nối cơ sở dữ liệu, xử lý xác thực, và các chức năng chung khác
Unit Test Projects: Đây là các project chứa các test unit để kiểm tra tính
đúng đắn của code trong các project khác
Integration Test Projects: Tương tự như unit test, nhưng tập trung vào
việc kiểm tra tích hợp giữa các thành phần khác nhau của ứng dụng
Configuration Files: Solution có thể chứa các tập tin cấu hình chung cho
tất cả các project trong solution
Project ASP.NET Core:
Một project ASP.NET Core là một phần của solution và chứa các thành phần cụ thể của ứng dụng web Cụ thể:
Controllers: Đây là nơi xử lý các yêu cầu từ người dùng và gửi lại các
phản hồi tương ứng Controllers thường chứa các phương thức được gắn liền với các hành động (action) như "Index", "Create", "Edit", và
"Delete"
Views: Các view chứa mã HTML và Razor markup để hiển thị giao diện
người dùng Chúng thường sử dụng dữ liệu từ controllers để động hoá nộidung
Models: Models đại diện cho dữ liệu và logic liên quan đến dữ liệu
Chúng thường tương tác với cơ sở dữ liệu hoặc các dịch vụ khác để truy xuất và lưu trữ thông tin
Middleware: ASP.NET Core sử dụng middleware để xử lý các yêu cầu
trước khi chúng đến được controller Middleware có thể thực hiện các tác
vụ như xác thực, ghi log, và nén dữ liệu
Trang 19Startup Class: Đây là nơi cấu hình và thiết lập ứng dụng khi nó được
khởi chạy Các dịch vụ, middleware và cấu hình routing thường được cấuhình ở đây
wwwroot: Thư mục này chứa các tài nguyên tĩnh như CSS, JavaScript,
hình ảnh, và các tập tin khác có thể truy cập trực tiếp từ trình duyệt
appsettings.json: Tập tin này chứa các cài đặt cấu hình của ứng dụng,
như chuỗi kết nối cơ sở dữ liệu, cấu hình bảo mật, và các giá trị khác
Trang 20TUẦN 3 MySQL là gì?
MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS) dựa trên ngôn ngữ truy vấn có cấu trúc ( SQL) được phát triển,phân phối và hỗ trợ bởi tập đoàn Oracle MySQL chạy trên hầu hết tất cả các nền tảng, bao gồm cả Linux , UNIX và Windows MySQL thường được kết hợp với các ứng dụng web
SQL là ngôn ngữ phổ biến nhất để thêm, truy cập và quản lý nội dung trong cơ sở dữ liệu Nó được chú ý nhất vì khả năng xử lý nhanh, độ tin cậy đã được chứng minh, dễ sử dụng và linh hoạt MySQL là một phần thiết yếu của hầu hết mọi ứng dụng PHP mã nguồn mở Các ví dụ điển hình cho các tập lệnh dựa trên PHP và MySQL là WordPress, Joomla, Magento và Drupal MySQL đang trở nên phổ biến vì nhiều lý do tốt:
MySQL được phát hành theo giấy phép nguồn mở Vì vậy, bạn không phải trả tiền để sử dụng nó
MySQL là một chương trình rất mạnh theo đúng nghĩa của nó Nó
xử lý một tập hợp lớn các chức năng của các gói cơ sở dữ liệu mạnh mẽ
lý nó) đến giới hạn lý thuyết là 8 triệu terabyte (TB)
MySQL là tùy biến Giấy phép GPL mã nguồn mở cho phép các lập trình viên sửa đổi phần mềm MySQL để phù hợp với môi trường cụ thể của riêng họ
Trang 21Cách thức hoạt động của MySQL
MySQL dựa trên mô hình client-server Cốt lõi của MySQL là máy chủ MySQL, xử lý tất cả các hướng dẫn cơ sở dữ liệu (hoặc các lệnh) Máy chủ MySQL có sẵn như là một chương trình riêng biệt để sử dụng trong môi trường mạng client-server và như một thư viện có thể được nhúng (hoặc liên kết) vào các ứng dụng riêng biệt
MySQL hoạt động cùng với một số chương trình tiện ích hỗ trợ quản trị
cơ sở dữ liệu MySQL Các lệnh được gửi đến MySQLServer thông qua máy khách MySQL, được cài đặt trên máy tính
MySQL ban đầu được phát triển để xử lý cơ sở dữ liệu lớn một cách nhanh chóng Mặc dù MySQL thường chỉ được cài đặt trên một máy, nhưng nó có thể gửi cơ sở dữ liệu đến nhiều vị trí, vì người dùng có thể truy cập thông qua các giao diện máy khách MySQL khác nhau Các giaodiện này gửi các câu lệnh SQL đến máy chủ và sau đó hiển thị kết quả.Các tính năng cốt lõi của MySQL
MySQL cho phép dữ liệu được lưu trữ và truy cập trên nhiều công cụ lưu trữ, bao gồm InnoDB, CSV và NDB MySQL cũng có khả năng sao chép dữ liệu và phân vùng bảng để có hiệu suất và độ bền tốt hơn Người dùng MySQL không bắt buộc phải học các lệnh mới; họ có thể truy cập
dữ liệu của mình bằng các lệnh SQL tiêu chuẩn
MySQL được viết bằng C và C++ và có thể truy cập và có sẵn trên hơn
20 nền tảng, bao gồm Mac, Windows, Linux và Unix RDBMS hỗ trợ cơ
sở dữ liệu lớn với hàng triệu bản ghi và hỗ trợ nhiều loại dữ liệu bao gồm các số nguyên có chữ ký hoặc không dấu có độ dài 1, 2, 3, 4 và 8 byte(s); FLOAT; DOUBLE; CHAR; VARCHAR; BINARY; VARBINARY; TEXT; BLOB; DATE; TIME; DATETIME; TIMESTAMP; YEAR; SET; ENUM; và các kiểu OpenGIS Các loại chuỗi có độ dài cố định và biến đổi cũng được hỗ trợ
Để bảo mật, MySQL sử dụng một đặc quyền truy cập và hệ thống mật khẩu được mã hóa cho phép xác minh dựa trên máy chủ Các máy khách MySQL có thể kết nối với Máy chủ MySQL bằng một số giao thức, bao gồm cả giao thức TCP/IP trên bất kỳ nền tảng nào MySQL cũng hỗ trợ
Trang 22một số chương trình máy khách và tiện ích, chương trình dòng lệnh và công cụ quản trị như MySQL Workbench.
Các nhánh của MySQL
Các nhánh của MySQL bao gồm:
Drijection: một hệ thống quản lý cơ sở dữ liệu nguồn mở nhẹ được
phát triển dựa trên MySQL 6.0
MariaDB: một sự thay thế phổ biến do cộng đồng phát triển cho
MySQL sử dụng các lệnh và API của MySQL
Percona Server với XtraDB: một phiên bản nâng cao của MySQL
được biết đến với khả năng mở rộng theo chiều ngang
Sự khác biệt giữa SQL và MySQL
Trang 23Kết nối asp.net core với mysql
Nếu muốn có loại Data Provider truy cập đến MySQL thì cài đặt
package MySql.Data, sẽ có Data Provider MySql.Data.MySqlClient
Để nhanh chóng, sử dụng docker tạo ra một dịch vụ MySQL Server, tạo
ra file docker-compose.yaml có nội dung như sau:
Trang 24Với file trên, sử dụng MySQL bản 5.7, cổng mặc định của MySQL
3306 khi expose ra máy host là cổng 3307 (localhost:3307 là truy cập vàoMySQL), sau đó thực hiện lệnh tạo dịch vụ
docker-compose up -d
Sau khi dịch vụ chạy, có thể sử dụng bất kỳ công cụ quản lý MySQL nào để quản trị nó, ví dụ hãy cài MySQL Workbench, rồi tạo kết nối đến MySQL (chú ý cổng 3307)
Nếu muốn nhanh chóng có CSDL ví dụ giống trên, hãy tạo một db tên xtlab và thực thi trong cửa sổ truy vấn các câu SQL
script_create_db_mysql
Tích hợp thư viện MySql.Data
Thư viện MySql.Data trên Nuget cho phép ứng dụng NET sử dụng ADO.NET để truy vấn MySQL, hãy thực hiện lệnh
dotnet add package MySql.Data
Thư viện này triển khai các Interface, Abstract của ADO.NET, ví dụ:+DbConnectionStringBuilder triển khai thành
MySqlConnectionStringBuilder +DbConnection triển khai thành
MySqlConnection
+DbCommand triển khai thành MySqlCommand
Trang 25// TẠO CHUỖI KẾT NỐI bằng SqlConnectionStringBuilder
var stringBuilder = new MySqlConnectionStringBuilder();
stringBuilder["Server"] = "127.0.0.1";
stringBuilder["Database"] = "xtlab";
stringBuilder["User Id"] = "root";
stringBuilder["Password"] = "abc123";
stringBuilder["Port"] = "3307";
String sqlConnectionString = stringBuilder.ToString();
var connection = new MySqlConnection(sqlConnectionString);
Console.WriteLine($"{"ConnectionString ",17} :
{stringBuilder}");
Console.WriteLine($"{"DataSource ",17} :
{connection.DataSource}");
Trang 26// Bắt sự kiện trạng thái kết nối thay đổi
connection.StateChange += (object sender, StateChangeEventArgs e) =>
// Dùng SqlCommand thi hành SQL - sẽ tìm hiểu sau
using (DbCommand command = connection.CreateCommand())
{
// Câu truy vấn SQL
command.CommandText = "select * from ";
var reader = command.ExecuteReader();
Trang 27static void Main(string[] args)
DataSource : 127.0.0.1
Kết nối thay đổi: Connecting, trạng thái trước: ClosedKết nối thay đổi: Open, trạng thái trước: Open
*/
Trang 28TUẦN 4 AJAX là gì?
AJAX (Asynchronous JavaScript and XML) là một kỹ thuật lập trình web cho phép giao tiếp giữa trình duyệt và máy chủ mà không cần tải lại toàn bộ trang web Thay vì gửi yêu cầu đồng bộ, nó cho phép dữ liệu được gửi và nhận bất đồng bộ, điều này mang lại trải nghiệm người dùng mượt mà hơn
Lợi ích của AJAX:
Tăng tốc độ tải trang: Với AJAX, chỉ cần tải lại các phần của trang cần thiết, không cần tải lại toàn bộ trang Điều này giúp giảm thời gian phản hồi và tăng tốc độ tải trang
Cải thiện trải nghiệm người dùng: Vì không phải tải lại cả trang, người dùng có thể tương tác liên tục mà không bị gián đoạn
Tiết kiệm băng thông: Bằng cách chỉ tải lại dữ liệu mới, AJAX giúp giảm lưu lượng mạng cần thiết
Tích hợp dễ dàng: AJAX có thể được tích hợp vào các ngôn ngữ lập trình web như JavaScript, PHP, ASP.NET, Java, v.v Nó cũng tương thích với các trình duyệt phổ biến như Chrome, Firefox, và Internet Explorer
Cơ chế hoạt động của AJAX:
Người dùng tạo yêu cầu gửi cho máy chủ thông qua JavaScript
Máy chủ xử lý yêu cầu và trả về kết quả dưới dạng dữ liệu, thường
là JSON hoặc XML
Trình duyệt sử dụng JavaScript để hiển thị dữ liệu nhận được mà không cần tải lại trang web
Sử dụng AJAX:
Để sử dụng AJAX, bạn cần biết những kiến thức cơ bản về HTML, CSS
và JavaScript Bạn có thể sử dụng các thư viện JavaScript như jQuery, Axios, Fetch API để thực hiện AJAX dễ dàng hơn
Dưới đây là một ví dụ đơn giản về cách sử dụng AJAX với jQuery:
Trang 29Trong ví dụ trên, chúng ta gửi một yêu cầu GET đến
http://example.com/data và xử lý kết quả được nhận về trong hàm success Nếu có lỗi, ta xử lý trong hàm error
Kết nối asp.net core với mysql
Nếu muốn có loại Data Provider truy cập đến MySQL thì cài đặt package MySql.Data, sẽ có Data Provider MySql.Data.MySqlClient
Trang 30Để nhanh chóng, sử dụng docker tạo ra một dịch vụ MySQL Server, tạo
ra file docker-compose.yaml có nội dung như sau:
Trang 31Với file trên, sử dụng MySQL bản 5.7, cổng mặc định của MySQL
3306 khi expose ra máy host là cổng 3307 (localhost:3307 là truy cập vàoMySQL), sau đó thực hiện lệnh tạo dịch vụ
docker-compose up -d
Sau khi dịch vụ chạy, có thể sử dụng bất kỳ công cụ quản lý MySQL nào để quản trị nó, ví dụ hãy cài MySQL Workbench, rồi tạo kết nối đến MySQL (chú ý cổng 3307)
Nếu muốn nhanh chóng có CSDL ví dụ giống trên, hãy tạo một db tên xtlab và thực thi trong cửa sổ truy vấn các câu SQL
script_create_db_mysql
Tích hợp thư viện MySql.Data
Thư viện MySql.Data trên Nuget cho phép ứng dụng NET sử dụng ADO.NET để truy vấn MySQL, hãy thực hiện lệnh
dotnet add package MySql.Data
Thư viện này triển khai các Interface, Abstract của ADO.NET, ví dụ:+DbConnectionStringBuilder triển khai thành
MySqlConnectionStringBuilder +DbConnection triển khai thành
Trang 32{
// TẠO CHUỖI KẾT NỐI bằng SqlConnectionStringBuilder
var stringBuilder = new MySqlConnectionStringBuilder();
stringBuilder["Server"] = "127.0.0.1";
stringBuilder["Database"] = "xtlab";
stringBuilder["User Id"] = "root";
stringBuilder["Password"] = "abc123";
stringBuilder["Port"] = "3307";
String sqlConnectionString = stringBuilder.ToString();
var connection = new MySqlConnection(sqlConnectionString);
Console.WriteLine($"{"ConnectionString ",17} :
{stringBuilder}");
Console.WriteLine($"{"DataSource ",17} :
{connection.DataSource}");
// Bắt sự kiện trạng thái kết nối thay đổi
connection.StateChange += (object sender, StateChangeEventArgs e) =>
{
Console.WriteLine($"Kết nối thay đổi: {e.CurrentState}, trạng thái trước: " + $"{e.OriginalState}");
};
Trang 33// mở kết nối
connection.Open();
// Dùng SqlCommand thi hành SQL - sẽ tìm hiểu sau
using (DbCommand command = connection.CreateCommand())
{
// Câu truy vấn SQL
command.CommandText = "select * from ";
var reader = command.ExecuteReader();
Trang 34ConnectionString : server=127.0.0.1;database=xtlab;user id=root;password=abc123;port=3307
DataSource : 127.0.0.1
Kết nối thay đổi: Connecting, trạng thái trước: ClosedKết nối thay đổi: Open, trạng thái trước: Open
*/
Trang 35TUẦN 5
I NoSQL
1.Khái niệm
Cơ sở dữ liệu NoSQL là Cơ sở dữ liệu được xây dựng dành riêng cho
mô hình dữ liệu và có sơ đồ linh hoạt để xây dựng các ứng dụng hiện đại
Cơ sở dữ liệu NoSQL được công nhận rộng rãi vì khả năng dễ phát triển, chức năng cũng như hiệu năng ở quy mô lớn
2.Cơ sở dữ liệu NoSQL (phi quan hệ) hoạt động như thế nào?
Cơ sở dữ liệu NoSQL sử dụng nhiều mô hình dữ liệu để truy cập và quản lý dữ liệu Các loại cơ sở dữ liệu này được tối ưu hóa dành riêng cho các ứng dụng yêu cầu mô hình dữ liệu linh hoạt có lượng dữ liệu lớn
và độ trễ thấp, có thể đạt được bằng cách giảm bớt một số hạn chế về tínhnhất quán của dữ liệu của các cơ sở dữ liệu khác
Hãy xem ví dụ về mô hình sơ đồ dành cho cơ sở dữ liệu sách đơn giản:
Trong cơ sở dữ liệu quan hệ, hồ sơ về một cuốn sách thường được phân tách (hay còn gọi là "chuẩn hóa") và lưu trữ trong các bảng tách biệtnhau, còn mối quan hệ được quy định bằng các ràng buộc khóa ngoại và khóa chính Trong ví dụ này, bảng Sách có các cột cho ISBN, Tên
sách và Số phiên bản, bảng Tác giả có các cột cho ID tác giả và Tên tác giả và cuối cùng, bảng Tác giả–ISBN có các cột cho ID tác giả và ISBN
Mô hình quan hệ được thiết kế để cho phép các cơ sở dữ liệu này thực thi tính toàn vẹn tham chiếu giữa nhiều bảng trong cơ sở dữ liệu, được chuẩnhóa để giảm dư thừa và thường được tối ưu hóa cho mục đích lưu trữ
Trong cơ sở dữ liệu NoSQL, hồ sơ về một cuốn sách thường được lưutrữ dưới dạng văn bản JSON Với từng quyển sách, mục, ISBN, Tên sách, Số phiên bản, Tên tác giả và ID tác giả được lưu trữ dưới dạng thuộc tính trong một văn bản duy nhất Trong mô hình này, dữ liệu được tối ưu hóa cho việc phát triển trực quan và khả năng thay đổi quy mô theochiều ngang
3 Tiện ích
Trang 36Cơ sở dữ liệu NoSQL là lựa chọn cực kỳ thích hợp cho nhiều ứng dụnghiện đại, ví dụ như di động, web và trò chơi đòi hỏi phải sử dụng cơ sở dữliệu cực kỳ thiết thực, linh hoạt, có khả năng thay đổi quy mô và hiệu năng cao để đem đến cho người dùng trải nghiệm tuyệt vời.
Linh hoạt: Cơ sở dữ liệu NoSQL thường cung cấp các sơ đồ linh hoạt giúp công đoạn phát triển nhanh hơn và có khả năng lặp lại cao hơn Mô hình dữ liệu linh hoạt biến cơ sở dữ liệu NoSQL thành lựa chọn lý tưởng cho dữ liệu không được tổ chức thành cấu trúc hoặc có cấu trúc chưa hoàn chỉnh
Khả năng thay đổi quy mô: Cơ sở dữ liệu NoSQL thường được thiết
kế để tăng quy mô bằng cách sử dụng các cụm phần cứng được phân phốithay vì tăng quy mô bằng cách bổ sung máy chủ mạnh và tốn kém Một
số nhà cung cấp dịch vụ đám mây xử lý các hoạt động này một cách không công khai dưới dạng dịch vụ được quản lý đầy đủ
Hiệu năng cao: Cơ sở dữ liệu NoSQL được tối ưu hóa theo các mô hình dữ liệu cụ thể và các mẫu truy cập giúp tăng hiệu năng cao hơn so với việc cố gắng đạt được mức độ chức năng tương tự bằng cơ sở dữ liệu quan hệ
Cực kỳ thiết thực: Cơ sở dữ liệu NoSQL cung cấp các API và kiểu dữ liệu cực kỳ thiết thực được xây dựng riêng cho từng mô hình dữ liệu tương ứng
4.Các loại cơ sở dữ liệu NoSql
Khóa–giá trị: Cơ sở dữ liệu khóa–giá trị có khả năng phân mảnh cao
và cho phép thay đổi quy mô theo chiều ngang ở các quy mô lớn mà các loại hình cơ sở dữ liệu khác không thể làm được Mô hình dữ liệu khóa–giá trị được dùng cho trò chơi, công nghệ quảng cáo và đặc biệt thích hợpcho IoT Amazon DynamoDB được thiết kế để có độ trễ ổn định chỉ vài mili giây cho khối lượng công việc thuộc quy mô bất kỳ Hiệu năng ổn định này là lý do chính để di chuyển tính năng Stories của Snapchat (kể
cả khối lượng công việc ghi lưu trữ lớn nhất của Snapchat) sang
DynamoDB
Trang 37Tài liệu: Trong mã ứng dụng, dữ liệu thường được biểu diễn dưới
dạng một đối tượng hoặc văn bản dạng JSON vì đây là mô hình dữ liệu hiệu quả và trực quan cho các nhà phát triển Cơ sở dữ liệu văn bản giúp nhà phát triển dễ dàng lưu trữ và truy vấn dữ liệu trong một cơ sở dữ liệu bằng cách sử dụng cùng một định dạng mô hình văn bản họ sử dụng trong mã ứng dụng của mình Tính chất linh hoạt, bán cấu trúc và phân cấp của các văn bản và cơ sở dữ liệu văn bản cho phép chúng phát triển phù hợp với yêu cầu của ứng dụng Mô hình văn bản phát huy hiệu quả với danh mục, hồ sơ người dùng và hệ thống quản lý nội dung, nơi từng văn bản là duy nhất và phát triển theo thời gian Amazon DocumentDB (với khả năng tương thích MongoDB) và MongoDB là các cơ sở dữ liệu văn bản phổ biến cung cấp các API mạnh mẽ và trực quan để phát triển linh hoạt và lặp lại
Đồ thị: Mục đích của cơ sở dữ liệu đồ thị là giúp việc dựng và chạy ứng
dụng hoạt động với các bộ dữ liệu có khả năng kết nối cao trở nên dễ dàng Cơ sở dữ liệu đồ thị thường được sử dụng cho các đồ thị tri thức, mạng xã hội, công cụ đề xuất và phát hiện lừa đảo Amazon Neptune là dịch vụ cơ sở dữ liệu đồ thị được quản lý đầy đủ Neptune hỗ trợ cả mô hình Đồ thị thuộc tính lẫn Framework mô tả tài nguyên (RDF), cung cấp cho người dùng lựa chọn hai API đồ thị: TinkerPop và RDF/SPARQL Các cơ sở dữ liệu đồ thị phổ biến gồm có Neo4j và Giraph
Trong bộ nhớ: Ứng dụng trò chơi và công nghệ quảng cáo đã sử
dụng loại Cơ sở dữ liệu này trong nhiều trường hợp như bảng xếp hạng, kho lưu trữ phiên và phân tích thời gian thực yêu cầu thời gian phản hồi đạt mức micro giây và lưu lượng có thể đạt mức đỉnh điểm vào bất kỳ thời điểm nào Amazon MemoryDB for Redis là một dịch vụ cơ sở dữ liệu trong bộ nhớ, bền, tương thích với Redis có chức năng đảm bảo độ trễ của thao tác đọc tính bằng micro giây, độ trễ của thao tác ghi chưa đếnmười mili giây và độ bền trên nhiều vùng sẵn sàng MemoryDB được xâydựng với mục đích đem lại độ bền và hiệu suất cực nhanh để bạn có thể
sử dụng làm cơ sở dữ liệu chính cho các ứng dụng vi dịch vụ, hiện
đại Amazon ElastiCache là dịch vụ bộ nhớ đệm trong bộ nhớ được quản
lý hoàn toàn, tương thích với cả Redis và Memcached để phục vụ khối