



















Preview text:
lOMoARcPSD|36892797
Web nâng cao-1-comp - Báo cáo hết học phần của môn lập
trình web nâng cao, project được viết bằng
Lập trình web nâng cao (Đại học Điện lực) Scan to open on Studeersnel
Studocu is not sponsored or endorsed by any college or university
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
LẬP TRÌNH WEB NÂNG CAO
Sinh viên thực hiện
: PHẠM TUẤN ANH, 21810310596
PHẠM THANH HẢI, 21810310175
LÊ BÁ HIẾU, 21810310654
NGUYỄN MINH DŨNG, 20810310596
Giảng viên hướng dẫn : TRẦN TRUNG Ngành
: CÔNG NGHỆ THÔNG TIN Chuyên ngành
: CÔNG NGHỆ PHẦN MỀM Lớp : D16CNPM6 Khóa : D16
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
Hà Nội, tháng 8 năm 2023 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: Họ và Tên Nội dung thực hiên Chữ ký Ghi chú Phạm Tuấn Anh Source Code,Sơ đồ Phạm Thanh Hải Nội dung, hình ảnh Lê Bá Hiếu Source Code, sơ đồ Nguyễn Minh Nội dung, hình ảnh Dũng Giảng viên chấm:
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797 Họ và tên Chữ ký Ghi chú Giảng viên chấm 1 : Giảng viên chấm 2 : MỤC LỤC LỜI MỞ ĐẦU 4 CHƯƠNG 1 5 CHƯƠNG 2 13 CHƯƠNG 3 32 CHƯƠNG 4 34 CHƯƠNG 5 39 CHƯƠNG 6 42 CHƯƠNG 7 49 CHƯƠNG 8 52 CHƯƠNG 9 59 CHƯƠNG 10 62 CHƯƠNG 11 66
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797 CHƯƠNG 12 70 CHƯƠNG 13 74 CHƯƠNG 14 90 CHƯƠNG 15 94 CHƯƠNG 16 98 KẾT LUẬN 109 LỜI MỞ ĐẦU
Lập trình web là một lĩnh vực phát triển nhanh chóng, với những tiến bộ mới được thực hiện liên
tục. Để đáp ứng với những thay đổi này, sinh viên cần được trang bị những kiến thức và kỹ năng
mới nhất trong lập trình web.
Báo cáo này tổng hợp về tất cả các kiến thức em đã học trong kỳ, bao gồm:
- Tổng quan về project ASP.NET - Tổng quan về Web server - Tổng quan về DB
- Tổng quan mô hình kiến trúc ( 3 tiers – MVC )
- Tổng quan lập trình Ajax
- Kiểm soát truy cập ( author – authen )
Ngoài ra còn có những nội dung thực hành như:
- Thiết lập môi trường ASP.NET Core 6.0 - Thiết lập project MVC - CRUD cổ điển - CRUD Ajax - Login
Sau đây là bản báo cáo sơ lược về báo cáo môn cùng những ưu điểm, thiếu sót và cách cải thiện
để trở nên tốt hơn. Những gì chúng em tìm hiểu được còn khá hạn chế, mong thầy cô giáo xem
và cho ý kiến đánh giá để em nhận ra những khiếm khuyết của mình.
Chúng em xin chân thành cảm ơn thầy cô và luôn mong nhận được sự đóng góp của thầy cô và các bạn
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
Sau cùng, chúng em xin kính chúc các thầy cô trong Khoa Công Nghệ Thông Tin dồi dào sức
khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau. Trân trọng!
CHƯƠNG 1: TỔNG QUAN VỀ .NET FRAMEWORK/ .NET CORE/ .NET 6 A. .NET FRAMEWORK 1. .NET FRAMEWORK LÀ GÌ ?
- Là một nền tảng phát triển phần mềm do Microsoft phát triển. Framework này tạo ra các
ứng dụng chạy trên nền tảng Windows. Phiên bản đầu tiên của .NET framework được phát hành vào năm 2002.
- Phiên bản đó được gọi là .Net framework 1.0. .NET framework đã đi một chặng đường
dài kể từ đó, và phiên bản hiện tại là 4.7.1.
- .NET framework có thể được sử dụng để tạo cả những ứng dụng dựa trên biểu mẫu
(Form-based) và dựa trên Web (Web-based). Các web service cũng có thể được phát triển
bằng cách sử dụng .NET framework.
- Framework cũng hỗ trợ các ngôn ngữ lập trình khác nhau như Visual Basic và C#. Vì
vậy, các nhà phát triển có thể lựa chọn ngôn ngữ để phát triển ứng dụng cần thiết.
2. KIẾN THỨC CỦA .NET FRAMEWORK
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
Kiến trúc của .NET framework dựa trên các thành phần chính sau:
* Thời gian chạy ngôn ngữ chung (Common Language Runtime)
"Cơ sở hạ tầng ngôn ngữ chung" hoặc CLI là một nền tảng mà trên đó các chương trình .Net được thực thi.
CLI có các tính năng chính sau đây: - Xử lý ngoại lệ
Ngoại lệ là các lỗi xảy ra khi ứng dụng được thực hiện.
Ví dụ về ngoại lệ là:
Nếu một ứng dụng cố mở một tệp trên local machine, nhưng tệp không có.
Nếu ứng dụng tìm nạp một số bản ghi từ cơ sở dữ liệu, nhưng kết nối đến cơ sở dữ liệu không hợp lệ. - Garbage Collection
Garbage Collection là quá trình loại bỏ các tài nguyên không mong muốn khi chúng không còn cần thiết nữa.
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
Ví dụ về Garbage Collection là:
Một xử lý tập tin không còn cần thiết: Nếu ứng dụng đã hoàn thành tất cả các thao tác trên một
tệp, thì trình xử lý tệp có thể không còn cần thiết nữa.
Kết nối cơ sở dữ liệu không còn cần thiết nữa: Nếu ứng dụng đã hoàn thành tất cả các hoạt động
trên cơ sở dữ liệu, thì kết nối cơ sở dữ liệu có thể không còn cần thiết nữa.
- Làm việc với các ngôn ngữ lập trình khác nhau
Như đã nêu ở phía trên, một developer có thể phát triển một ứng dụng bằng nhiều ngôn ngữ lập trình .Net.
Ngôn ngữ: Cấp độ đầu tiên là ngôn ngữ lập trình, phổ biến nhất là VB.Net và C #.
Trình biên dịch: Có một trình biên dịch sẽ được tách riêng cho từng ngôn ngữ lập trình. Vì vậy,
bên dưới ngôn ngữ VB.Net, sẽ có một trình biên dịch VB.Net riêng biệt. Tương tự, đối với C #,
bạn sẽ có trình biên dịch khác.
Common Language Interpreter: Đây là lớp cuối cùng trong .Net sẽ được sử dụng để chạy một
chương trình .net được phát triển bằng bất kỳ ngôn ngữ lập trình nào. Vì vậy trình biên dịch tiếp
theo sẽ gửi chương trình tới lớp CLI để chạy ứng dụng .Net. * Class Library
.NET Framework bao gồm một bộ các class libraries. Một class library là một tập hợp các
phương thức và các hàm có thể được sử dụng cho mục đích cốt lõi.
Ví dụ, có một class library với các phương thức để xử lý tất cả các hoạt động cấp tệp. Vì vậy, có
một phương pháp có thể được sử dụng để đọc văn bản từ một tập tin. Tương tự, có một phương
pháp để viết văn bản vào một tập tin.
Hầu hết các phương thức được chia thành các vùng tên System. *Hoặc Microsoft.*. (Dấu hoa thị
* chỉ có nghĩa là tham chiếu đến tất cả các phương thức nằm trong vùng tên System hoặc
Microsoft). Một namespace là một sự tách biệt logic của các phương thức. * Ngôn ngữ
Các loại ứng dụng có thể được xây dựng trong .NET framework được phân loại rộng rãi thành các loại sau. - WinForms
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
Được sử dụng để phát triển các ứng dụng Forms-based, quá trình này chạy trên end user
machine. Notepad là một ví dụ về ứng dụng dựa trên ứng dụng khách. - ASP.Net
Được sử dụng để phát triển các ứng dụng dựa trên web, được tạo để chạy trên bất kỳ trình duyệt
nào như Internet Explorer, Chrome hoặc Firefox.
Ứng dụng Web sẽ được xử lý trên một máy chủ, sẽ được cài đặt Dịch vụ thông tin Internet.
Dịch vụ thông tin Internet hoặc IIS là một thành phần của Microsoft được sử dụng để thực thi một ứng dụng Asp.Net.
Kết quả của việc thực hiện sau đó được gửi đến các máy khách và kết quả đầu ra được hiển thị trong trình duyệt. - ADO.Net
Công nghệ này được sử dụng để phát triển các ứng dụng tương tác với Cơ sở dữ liệu như Oracle hoặc Microsoft SQL Server.
Microsoft luôn đảm bảo rằng các .NET framework tuân thủ tất cả các hệ điều hành Windows được hỗ trợ.
3. Ưu, nhược điểm nổi bật của .NET framework
Một số ưu và nhược điểm nổi bật của .NET framework gồm có: a) Ưu điểm
* Thư viện lập trình lớn
Mộ trong những lợi ích lớn nhất của .NET framework chính là việc tạo ra môi trường chung,
giúp cung cấp hiệu suất tối ưu cho việc tạo lập và xây dựng các ứng dụng web. Đồng thời cho
phép truy cập, kết nối các cơ sở dữ liệu và cấu trúc dữ liệu, thực hiện việc lập trình giao diện,… * Đa ngôn ngữ
Dù là ngôn ngữ C#, C++ hay Visual Basic, người dùng cũng có thể thoải mái viết, trong khi vẫn
đảm bảo khả năng tích hợp. Các đoạn code này sẽ được sử dụng cho phần mềm tương thích với
các phần cứng mà .NET framework hỗ trợ.
* Nǎng suất làm việc cao
Lập trình, thiết kế ứng dụng với .NET framework không tiêu tốn nhiều thời gian do nó có sẵn rất
nhiều yếu tố có thể sử dụng trong thiết kế. Người dùng chỉ cần hiểu rõ cách sử dụng và tùy biến
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
các đoạn code này sao cho tương thích với dự án của bạn, theo đó việc lập trình cũng trở nên
nhanh chóng và dễ dàng hơn.
* Biến đổi linh hoạt nhờ kiến trúc “ghép nối lỏng”
.NET framework được tạo ra với khả năng tùy biến linh hoạt nhờ cấu trúc ‘ghép nối lỏng’. Tính
năng này giúp mang lại nhiều ưu điểm về mặt năng suất. * Bảo mật cao
.NET framework có phần kiến trúc bảo mật được xây dựng từ dưới lên, hỗ trợ bảo vệ dữ liệu và
các ứng dụng khỏi hacker thông qua mô hình bảo mật evidence-based.
* Tận dụng các dịch vụ được tích hợp sẵn trong hệ điều hành
Windows có nhiều loại dịch vụ vận hành trên các nền tảng gồm: truy cập dữ liệu, giao diện
người dùng tương tác, mô hình đối tượng thành phần, bảo mật tích hợp và giám sát giao dịch. Từ
những lợi thế đó, .NET hỗ trợ đơn giản hóa cách sử dụng, giúp cho việc lập trình trên công cụ
này trở nên đơn giản hơn. b) Nhược điểm
Cần phải cài đặt .NET framework trên PC để có thể chạy những chương trình được thiết kế dựa
trên nền tảng .NET framework.
4. Nguyên tắc thiết kế .NET framework
* Khả năng tương tác
.NET framework vẫn cung cấp rất nhiều hỗ trợ cho các phiên bản cũ hơn. Giả sử nếu bạn có một
ứng dụng được xây dựng trên một phiên bản cũ hơn của .NET framework như 2.0. Và nếu bạn
cố gắng chạy cùng một ứng dụng trên một máy có phiên bản cao hơn của .NET framework là
3.5. Ứng dụng sẽ vẫn hoạt động. Điều này là bởi vì với mọi bản phát hành, Microsoft đảm bảo
rằng các phiên bản cũ hơn của phiên bản này sẽ có hiệu lực tốt với phiên bản mới nhất. * Linh động
Các ứng dụng được xây dựng trên .NET framework có thể được thực hiện để làm việc trên bất
kỳ nền tảng Windows nào. Trong thời gian gần đây, Microsoft cũng đang phát triển để làm cho
các sản phẩm của Microsoft hoạt động trên các nền tảng khác, chẳng hạn như iOS và Linux. * Bảo mật
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
.NET Framework có một cơ chế bảo mật tốt. Các cơ chế bảo mật sẵn có giúp xác nhận và xác
minh các ứng dụng. Mỗi ứng dụng có thể xác định rõ ràng cơ chế bảo mật của chúng. Mỗi cơ chế
bảo mật được sử dụng để cấp cho người dùng quyền truy cập vào mã hoặc chương trình đang chạy. * Quản lý bộ nhớ
Common Language runtime thực hiện tất cả công việc hoặc quản lý bộ nhớ. .NET framework có
khả năng để xem các tài nguyên đang không được sử dụng bởi những chương trình đang chạy.
Sau đó, nó sẽ giải phóng các tài nguyên đó cho phù hợp. Điều này được thực hiện thông qua một
chương trình gọi là "Garbage Collector" chạy trong .NET framework.
Garbage collector chạy theo chu kỳ đều đặn và liên tục kiểm tra tài nguyên hệ thống nào không
được sử dụng và giải phóng chúng tương ứng.
* Triển khai được đơn giản hóa
.NET framework có các công cụ sử dụng để đóng gói các ứng dụng được xây dựng trên .NET
framework. Những gói này sau đó có thể được phân phối cho các máy khách. Các gói sau đó sẽ
tự động cài đặt ứng dụng.
B. TỔNG QUAN VỀ .NET CORE 1. .NET CORE là gì ?
.NET Core là một nền tảng phát triển đa mục đích, mã nguồn mở được duy trì bởi Microsoft và
cộng đồng .NET trên GitHub. Đó là nền tảng chéo (hỗ trợ Windows, macOS và Linux) và có thể
được sử dụng để xây dựng các ứng dụng thiết bị, đám mây và IoT. 2. Ngôn ngữ hỗ trợ
.NET Core hỗ trợ các ngôn ngữ như: C # và F # (và C ++ / CLI kể từ 3.1; chỉ được bật trên
Windows) và nó còn hỗ trợ một phần của Visual Basic .NET. Cụ thể:
• C#: Là loại ngôn ngữ lập trình phát triển theo hướng đối tượng và mục đích.
• F# : Là loại ngôn ngữ lập trình cho chức năng đa nền tảng, mã nguồn mở. Nó cũng
thường bao gồm lập trình cho hướng đối tượng và mệnh lệnh.
• Visual Basic: Là ngôn ngữ lập trình có cú pháp đơn giản giúp xây dựng cho các ứng dụng
hướng tới đối tượng an toàn.
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
Những công cụ (gọi tắt là IDE) để lập trình với .NET core: • Visual Studio • Visual Studio Code • Sublime Text • Vim
Các phiên bản .Net Core được ra đời từ năm 2016 đã phát triển rất đều đặn và nhận được những
sự tiếp đón từ phía cộng đồng lập trình viên. Trong đó bản được đánh giá là ổn định và được ưa
chuộng nhất chính là 3.1.2.
3. .NET CORE ra đời trong hoàn cảnh nào ?
ASP.NET đã xuất hiện cách đây 15 năm trước. Nó là một phần của .NET Framework. Nó đã có
hàng triệu lập trình viên đã sử dụng để xây dựng những ứng dụng web. Và Microsoft đã phát
triển thêm nhiều tính năng mới qua từng năm.
ASP.NET Core có một số thay đổi lớn. Từ việc học hỏi các framework module hóa khác.
ASP.NET Core không còn dựa trên System.Web.dll nữa. Mà được dựa trên một tập hợp các gói,
các module hay cũng được gọi là các Nuget packages.
Với ASP.NET Core bạn có thể:
• HTTP request được tối ưu nhẹ hơn.
• Hợp nhất xây dựng web UI và web APIs.
• Tích hợp những client-side frameworks hiện đại và có những luồng phát triển.
• Hệ thống cấu hình dựa trên môi trường đám mây thật sự.
• Dependency injection được xây dựng sẵn.
• Có thể host trên IIS hoặc self-host trong process của riêng bạn.
• Được xây dựng trên .NET Core, hỗ trợ thực sự app versioning.
• Những công cụ mới để đơn giản hóa quá trình phát triển web tối ưu.
• Xây dựng và chạy đa nền tảng(Windows, Mac và Linux).
• Mã nguồn mở và tập trung vào cộng đồng.
4. Thành phần của .Net Core
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
.NET Core bao gồm các nền tảng: .NET Compiler Roslyn, .NET Core framework CoreFX, .NET
Core runtime CoreCLR, và ASP.NET Core.
Cấu trúc của.Net Core chi tiết
• CoreFX: Nó được xem là nền tảng thư viện dành cho .NET Core.
• CoreCLR: Đây là công cụ thực thi .Net trong .Net Core. Nó hỗ trợ thực hiện một số chức
năng như thu gom và biên dịch rác thành mã máy.
• .Net Core runtime: Sẽ cung cấp một kiểu hệ thống, tải lắp ráp, trình thu gom rác và các dịch vụ cơ bản khác.
• Net Core runtime: Cung cấp framework để việc xây dựng các ứng dụng hiện đại tối ưu,
dựa trên đám mây, ứng dụng web, kết nối internet,…
• .Net Core SDK và trình biên dịch ngôn ngữ (Roslyn và F#): giúp cho phép phát triển .Net Core
• Lệnh dotnet: Lệnh dùng cho việc khởi chạy ứng dụng .NET Core và các lệnh CLI.
C. TỔNG QUAN VỀ .NET 6
• .NET 6 là phiên bản tiếp theo sau .NET Core, là sự hội tụ của .NET Framework và .NET Core.
• Ra mắt vào năm 2021 và được hứa hẹn là một phiên bản đa năng mạnh mẽ.
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
• Hỗ trợ đa nền tảng, bao gồm Windows, macOS và Linux, cũng như các môi trường điện toán đám mây.
• Đem lại sự thống nhất cho các API và thư viện, giúp đơn giản hóa việc phát triển ứng dụng đa nền tảng.
• Hỗ trợ phát triển các loại ứng dụng đa dạng, từ ứng dụng console đến ứng dụng web, di
động, nhúng, và cả trò chơi.
D. PHÂN BIỆT .NET CORE/ .NET FRAMEWORK/ MONO
Với người mới làm quen với .NET hay kể cả một số người đã làm việc với .NET lâu năm.
Những thuật ngữ, khái niệm như .NET Framework, Mono hay .NET core vẫn hay gây ra nhầm
lẫn. Về cơ bản thì .NET Framework, .NET core và Mono là ba phiên bản .NET khác nhau (có
nghĩa là mỗi phiên bản có Runtime, Libraries và Toolings riêng).
• .NET Framework: Được Microsoft đưa ra chính thức từ năm 2002. .NET Framework chỉ
hoạt động trên hệ điều hành Windows. Những nền tảng như: WPF, Winforms,
ASP.NET(1-4) hoạt động dựa trên .NET Framework.
• Mono là phiên bản cộng đồng giúp mang .NET đến những nền tảng ngoài Windows.
Mono được phát triển để xây dựng những ứng dụng với giao diện người dùng và được sử
dụng rất rộng rãi như: Unity Game, Xamarin…
• .NET core: Đến năm 2013, Microsoft định hướng đa nền tảng và phát triển .NET core.
.NET core hiện được sử dụng trong các ứng dụng Universal Windows platform và ASP.NET Core.
CHƯƠNG 2: TỔNG QUAN VỀ KESTREL/ IIS/ NGINX/ APACHE A. TỔNG QUAN VỀ KESTREL 1. Kestrel là gì?
Kestrel là một HTTP web server mã nguồn mở (open source), đa nền tảng (cross-platform),
hướng sự kiện (event-driven) và bất đồng bộ (asynchronous I/O). Nó được phát triển để chạy
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
ứng dụng ASP.NET Core trên bất cứ nền tảng nào. Nó được thêm vào mặc định trong ứng dụng ASP.NET Core.
Nó dựa trên Luv, và Kestrel là một mã nguồn mở trên Github
2. Tại sao sử dụng Kestrel
Ứng dụng ASP.NET cũ thường dính chặt vào IIS (Internet Information Service). IIS là một web
server với tất cả các tính năng đầy đủ cần có. Nó được phát triển từ khá lâu và rất trưởng thành,
nhưng nó cồng kềnh và nặng. Nó trở thành một trong những Web server tốt nhất ở thời điểm hiện
tại nhưng nó cũng là một trong những thứ chậm nhất.
ASP.NET dính chặt vào IIS cũng là gánh nặng cho IIS.
Thiết kế mới của ứng dụng ASP.NET Core giờ đây hoàn toàn tách rời khỏi IIS. Điều này tạo cho
ASP.NET Core có thể chạy trên bất cứ nền tảng nào. Nhưng nó vẫn có thể lắng nghe các HTTP
Request và gửi lại response về cho client. Đó là Kestrel. 3. Sử dụng Kestrel
Kestrel chạy in-process trong ứng dụng ASP.NET Core. Vì thế nó chạy độc lập với môi trường.
Kestrel web server nằm trong thư viện Microsoft.AspNetCore.Server.Kestrel.
Chúng ta hãy xem 2 class Program và Startup được giới thiệu trong bài: Khởi động ứng dụng
trong ASP.NET Core. Program class chứa một phương thức Main và là điểm khởi động của ứng dụng. public class Program {
public static void Main(string[] args) { BuildWebHost(args).Run(); }
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args) .UseStartup()
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797 .Build(); }
Phương thức Main gọi đến CreateDefaultBuilder, có trách nhiệm tạo một host cho ứng dụng.
(Host là nơi chứa ứng dụng để chạy). CreateDefaultBuilder đăng ký Kestrel như là server sẽ sử dụng trong ứng dụng.
4. Các cách để sử dụng Kestrel
Có 2 cách để sử dụng Kestrel
* Tự host (Self Hosting)
Mô hình self hosting của ASP.NET Core là lắng nghe trực tiếp các HTTP Request từ internet như hình dưới đây:
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
* Đằng sau Web Server khác
Kestrel không phải là một web server đầy đủ tính năng. Nhưng nó nhanh. Nó không đủ mạnh để
chạy Kestrel một mình trên môi trường Production. Nó được đề xuất chạy đằng sau một Web
Server Fully Feature như IIS, Nginx hay Apache…Trong kịch bản này các web server khác như
là một reverse proxy server (máy chủ ủy quyền). Các Reverse proxy server sẽ lấy HTTP Request
từ internet và gửi sang Kestrel. IIS có thể lấy HTTP Request và thực hiện một số các xử lý như
ghi log, lọc request, rewrite-url trước khi gửi sang cho Kestrel.
Có nhiều lý do tại sao chúng ta sử dụng mô hình này cho môi trường Production.
• Bảo mật: Nó có thể hạn chế việc phơi ra ngoài những gì không cần thiết và nó cũng cho
chúng ta các tùy chọn về cấu hình và bảo vệ ứng dụng.
• Dễ dàng cài đặt cân bằng tải
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
• Cài đặt SSL: Chỉ các máy chủ ủy quyền cần các chứng chỉ SSL, còn các server này có thể
làm việc với ứng dụng của bạn trên mạng nội bộ sử dùng HTTP thuần.
• Chia sẻ một IP với nhiều địa chỉ
• Lọc các Request, ghi log và rewrite-URL…
• Nó có thể restart ứng dụng nếu bị crash.
Phương thức CreateDefaultBuilder gọi UseIISIntegration, sẽ nói co ASP.NET rằng ứng dụng sử
dụng IIS như là một reverse proxy server đằng trước Kestrel. 5. Thay thế cho Kestrel
Kestrel không phải là cách duy nhất để host ứng dụng ASP.NET Core. Có một web server khác
triển khai có sẵn trên Windows là HTTP.SYS.
HTTP.sys là một HTTP Server dựa trên Http.Sys kernel driver và nó chỉ sử dụng trên Windows B. TỔNG QUAN VỀ IIS 1. IIS là gì?
- IIS (Internet Information Services) là các dịch vụ dành cho máy chủ chạy trên Windows nhằm
cung cấp thông tin và phân tán chúng lên hệ thống mạng. IIS bao gồm rất nhiều dịch vụ như:
FTP Server, Web Server,… Dịch vụ này được đính kèm ở những phiên bản hệ điều hành Windows
- IIS thường được sử dụng với vai trò xuất bản các nội cho website và đưa các nội dung lên nền
tảng Internet hoặc Intranet. Việc này được thực hiện dựa trên phương thức chuyển giao siêu văn
bản hay còn được gọi là HTTP (Hypertext Transport Protocol)
- Với vai trò đó, IIS là một trong những thành phần không thể thiếu của một trang web. Các nội
dung trên trang web của bạn chỉ được đăng tải và hiển thị trên Internet khi có một trang web
server, cụ thể ở đây là IIS. Nếu không có sự tồn tại của IIS thì wesbite của bạn chỉ được hiển thị
trên máy tính của bạn hoặc chỉ hiển thị khi bạn chia sẻ tệp dữ liệu trong mạng nội bộ
2. Cách thức hoạt động của IIS
- IIS hoạt động dựa trên 2 giao thức mạng chính là HTTP và FPT. Nhờ đó, IIS đóng vai trò tiếp
nhận các yêu cầu và truyền tải những thông tin trên Internet đi kèm với nhiều định dạng khác nhau.
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
- Trong số các dịch vụ của IIS, dịch vụ World Wide Web (WWW) là dịch vụ phổ biến nhất và
nhận được nhiều sự quan tâm nhất hiện nay. Để tiếp nhận các yêu cầu từ trình duyệt, dịch vụ
Web sử dụng giao thức mạng HTTP với thông tin có dạng địa chỉ URL. Sau đó, IIS sẽ gửi nội
dung của website tương ứng về Web Browser để phản hồi lại những yêu cầu ban đầu.
Để tạo ra các ký tự, văn bản, vị trí, nút, các tương tác,… IIS đã sử dụng những ngôn ngữ lập
trình cơ bản như HTML. Bên cạnh đó, IIS còn sử dụng một số giao thức khác như:
- Giao thức HTTP: Hỗ trợ quá trình trao đổi thông tin giữa người dùng với Web Server.
- Giao thức HTTPS: Giúp mã hóa quá trình giao tiếp và giúp bảo mật dữ liệu bằng cách sử dụng
SSL hoặc Transport Layer Security.
- Giao thức FTP/FTPS: Giúp hỗ trợ trong việc truyền tệp tin, thúc đẩy việc truyền tải nhanh chóng hơn.
- Giao thức SMTP: Để gửi và nhận thư điện tử hay những tin tức mạng.
3. IIS làm việc với ASP.NET Core
ASP.NET Core được tạo ra giúp tạo nên những website tương tác dễ dàng hơn theo các quy trình sau:
- ASP.NET Core sẽ xử lý các yêu cầu được gửi đến máy chủ và thông qua trang web. Sau khi
thông tin được xử lý, hệ thống sẽ phản hồi lại các yêu cầu cho khách hàng.
- WebDav cung cấp khả năng tạo lập và xuất bản các nội dung cho website IIS.
- Bên cạnh đó, các công cụ giúp phát triển tích hợp như Microsoft Visual Studio cũng được người dùng ưa chuộng.
4. IIS có những phiên bản nào?
IIS đã có rất nhiều bảng nâng cấp trong quá trình ra đời và phát triển phần mềm. Ở mỗi phiên
bản mới đều được nâng cấp thêm các tính năng ưu việt. Tổng hợp các phiên bản IIS hiện có là:
- IIS 1.0 được đi kèm cùng Windows NT 3.51
- IIS 2.0 được bao gồm trong Windows NT 4.0.
- IIS 3.0 được đi kèm với Service Pack 2 của Windows NT 4.0.
- IIS 4.0 được đi kèm cùng Option Pack của Windows NT 4.0.
- IIS 5.0 được đi kèm cùng với Windows 2000.
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com) lOMoARcPSD|36892797
- IIS 5.1 được phát hành cùng Windows XP Professional.
- IIS 6.0 được đi kèm cùng Windows Server 2003 và Windows XP Professional x64 Edition.
- IIS 7.0 đi kèm cùng Windows Server 2008 và Windows Vista.
- IIS 7.5 đã được đi kèm với Windows 7 và Windows Server 2008 R2 .
- IIS 8.0 đi kèm với Windows Server 2012 và Windows 8.
- IIS 8.5 được đi kèm cùng Windows Server 2012 R2 và Windows 8.1. - Không có IIS 9.0.
- IIS 10 phiên bản 1607 hay còn được biết đến là phiên bản 10.0.14393. Phiên bản này được ra
mắt đi kèm với Windows Server 2016 và Windows 10.
- IIS 10.0 phiên bản 1709 đi kèm với Windows Server 2016 và Windows 10 Fall Creators Update.
- IIS 10.0 phiên bản 1809, còn được gọi là phiên bản 10.0.17763 được đi kèm với Windows
Server 2019 và Bản cập nhật Windows 10.
5. IIS 10 có các tính năng nổi bật nào?
IIS 10 là phiên bản mới nhất hiện nay, qua nhiều lần nâng cấp, IIS 10 được nhà sản xuất bổ sung
nhiều tính năng ưu việt mới như:
- Phiên bản này sử dụng giao thức HTTP/2 để hỗ trợ cho việc quản lý và khai thác tài nguyên.
- IIS 10 hoạt động chủ yếu dựa trên mô hình Nano Server đi kèm với Windows Tomcat và PHP,
nên mang lại hiệu quả rất cao.
- Hơn nữa, ở phiên bản IIS 10 còn hoạt động dựa trên Container và máy ảo để thực hiện các ứng dụng web.
6. Thử nghiệm với IIS Express
Đây là một phiên bản được ra đời giúp người dùng có thể thử nghiệm những website độc quyền,
được sáng tạo bởi Microsoft. IIS Express cũng mang các chức năng tương tự như Web Server
IIS. Phiên bản thử nghiệm này cũng có những tác vụ vô cùng hiện đại. Người dùng có thể thực
hiện mọi thao tác mà không cần phải có quyền quản trị.
7. Thiết lập an toàn bảo mật trong IIS như thế nào?
Downloaded by Tr?ng Toàn Nguy?n (nguyentrongtoan954@gmail.com)