TRƯỜNG ĐH THÁI BÌNH DƯƠNG
ĐỒ ÁN TỐT NGHIỆP
Giáo viên hướng dẫn : Ths.Phạm Xuân Bình
Đề tài
: Website quản lý thư viện TBD
Tên SV : Nguyễn Quang Thanh
Mã SV: 181040019
Khóa : 2018 - 2022
Lớp
: DH18CNPM1
4/16/2022
Website quản
lý thư viện TBD
Trang web sử dụng framework
ASP.NET 6.0 để phát triển
Nguyễn Quang Thanh
1
Mục Lục
LỜI NÓI ĐẦU.................................................................................................................................................4
PHẦN 1 ASP.NET 6.0 MVC.........................................................................................................................5
1 . KHÁI LƯỢC..........................................................................................................................................5
1.1
GIỚI THIỆU VỀ ASP.NET........................................................................................................5
1.2 .GIỚI THIỆU .NET 6.0..................................................................................................................8
1.3 GIỚI THIỆU MƠ HÌNH MVC......................................................................................................11
1.4 Q TRÌNH BIÊN DỊCH CỦA .NET.........................................................................................15
2. NỘI DUNG...........................................................................................................................................16
2.1 CẤU HÌNH VÀ MƠI TRƯỜNG ĐỂ PHÁT TRIỂN ASP.NET 6.0..........................................16
2.2 DOTNET CLI.................................................................................................................................17
2.2 CẤU TRÚC THÀNH PHẦN CỦA DỰ ÁN ASP.NET MVC.....................................................20
2.3 KESTREL......................................................................................................................................21
2.4
MIDDEWARE VÀ REQUEST PIPELINE............................................................................23
2.5
CƠ CHẾ ROUTING................................................................................................................25
2.6
ACTION SELECTOR VÀ ACTION VERBS........................................................................29
2.7
RAZOR VIEW ENGINE..........................................................................................................31
2.8
LAYOUT VÀ SECTION..........................................................................................................31
2.9
VIEWBAG VÀ VIEWDATA.....................................................................................................33
2.11
CƠ CHẾ MODEL BIDING.................................................................................................37
PHẦN 2 WEBSITE THƯ VIỆN....................................................................................................................40
1, KHẢO SÁT HIỆN TRẠNG..................................................................................................................40
2, YÊU CẦU HỆ THỐNG.......................................................................................................................40
3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG................................................................................................41
3.1 Mơ tả hệ thống..............................................................................................................................41
3.2 sơ đồ dòng dữ liệu.......................................................................................................................42
3.3 SƠ ĐỒ DATABASE.....................................................................................................................43
3.4 SƠ ĐỒ KỸ THUẬT HỆ THỐNG................................................................................................46
3
XÂY DỰNG CHƯƠNG TRÌNH.....................................................................................................46
3.1 các thành phần giao diện và chức năng..................................................................................47
4
LỜI KẾT............................................................................................................................................52
TÀI LIỆU THAM KHẢO..............................................................................................................................53
2
LỜI NĨI ĐẦU
Trong thời đại của ngành cơng nghệ thơng tin phát triển mạnh mẽ , thời
đại của công nghệ 4.0 , internet đã có mặt tại khắp mọi nơi từ chốn thành thị đến
nông thôn , từ người già đến người trẻ ai cũng cần có nhu cầu kết nối internet vì
nhiều nhu cầu khác nhau từ xem phim , giải trí , cơng việc ,… Nắm bắt được su
thế việc này . Việc thiết kế ra website riêng cho các tổ chức doanh nghiệp là điều
quan trọng có ý nghĩa quảng bá và vận hành tổ chứ đó giúp thúc đẩy sự phát
triển cũng như quảng bá sản phẩm thương hiệu của mình tới mọi người .
Website đã trở thành bộ mặt để doanh nghiệp tiếp thị sảng phẩm của mình tới
mọi nơi trên thế giới .
Chúng ta có thể thấy được một số lợi ích của Website như : tạo ra mơi trường
bán sảng phẩm hàng hóa một cách chuyên nghiệp và tiết kiệm được chi phí , Cơ
hội tiếp súc với nhiều khách hàng hơn nhiều người biết đến hơn , có thể hoạt
động trên hầu hết các thiết bị đện tử của khách hàng từ máy tính cho tới các
chiết smartphone mà những thiết bị này bây giờ hầu như ai cũng sở hữu .
Hiện nay có khá nhiều cơng cụ để phát trển một trang web mà có thể áp
dụng , có thể kể ra như java , php ,… nhưng công nghệ được nhiều đơn vị lựa
chọn lại là ASP.NET với ngôn ngữ C# mà mới ra đây nhất là ASP.NET 6.0 có thể
kể ra những ưu điểm của ASP.NET như tính bảo mật tốt hơn (do kế thừ ưu điểm
của java ) , xây dựng bởi bộ thư viện đa dạng phong phú của .NET , hổ trợ tốt về
XML , tách bạnh phần giao diện và phần code nhờ đó việc quản lý và bảo trì dễ
dàng hơn và thuận tiện hơn , có thể cải thiện tốc độ tải trang , có khả năng tự
động tạo ra mã HTML cho các sever để web có thể hoạt động trên mọi trình
duyệt khác nhau .
Biết được những lợi ích mà website mang lại và trải qua việc lựa chọn
công nghệ . Bản thân em đã thực hiện hóa nó trong đề án ( phát triển website
cho thư viện trường ) bằng cơng nghệ ASP.NET . Đề án có sự giúp đỡ của thầy
Phạm Xuân Bình ( giáo viên cố vấn ) và một số bạn khác trong lớp . Cảm ơn các
thầy và các bạn đã nhiệt tình giúp đỡ trong suốt quản thời gian làm đề án tốt
nghiệp .
3
PHẦN 1
ASP.NET 6.0 MVC
1 . KHÁI LƯỢC
1.1 GIỚI THIỆU VỀ ASP.NET
1.1.1 GIỚI THIỆU ASP
Công nghệ Active Server Page (ASP) do Microsoft phát triển là mơi trường
lập trình về phía server ( server side programing ), hỗ trợ mạnh trong việc xây
dựng các ứng dụng thương mại điện tử ( các trang web ecommerce ). Các ứng
dụng ÁP rất dễ viết và dễ sửa đổi , thống thời tích hợp các cơng nghệ có sẵn của
Microsoft như : COM , DCOM ,….
Từ khoản thập nên 90 , ASP (Active Server page ) đã được nhiều lập trình
viên lựa chọn , để xây dựng và phát triển các ứng dụng web động trên máy chỉ
sử dụng hệ điều hành windows . ASP đã thể hiện được ưu điểm của mơ hình lập
trình thủ tục đơn giản , sử dụng hiệu quả các đối tượng COM : ADO ( ActiveX
Data Object ) – xử lý dữ liệu , FSO (File System Object – làm việc với hệ thống
thống tập tin,…,đồng thời , ASP cũng hổ trợ nhiều ngôn ngữ : VBScript ,
JavaScript . Chính nhữn ưu điểm đó , ASP đã được u thích trong một thời gian
dài .
Một ứng dụng ASP được triển khai trên Web Server là IIS (internet
Information Sevice) , có sẵn trong mơi trường Windows . Để có thể triển khai
ứng dụng ASP trên các môi trường khác , chúng ta phải cài đặt các thư viện hổ
trợ ASP.
Đặc điểm của trang ASP
o ASP là một tập tin văn bản (text file) có phần mở rộng .asp Phần
mở rộng này sẽ giúp web server yêu cầu trình sử lý trang asp (asp
engnie) trước khi trả về cho trình duyệt .
o Ngôn ngữ script thông dụng nhất để viết mã asp là VBSscript ,
Ngồi ra ta có thể viết mã bằng các ngôn ngữ khác như :
Javascript , perl , python ,… nếu trên server có cài đặt các bộ sử lý
ngôn ngữ này
o Các đoạn mã viết trong trang ASP sẽ được các bộ xử lý ngôn ngữ
trên Web server sẽ gửi trang HTML này về cho trình duyệt . Do đó ,
tại trình duyệt khơng thể thấy được , các đoạn mã chương trình
được viết trong trang ASP.
Ưu điểm
4
o Trang ASP được diễn dịch một cách tự động
o Xây dựng ứng dụng web động
o Xử lý dữ liệu hiệu quả
Nhược điểm
o Chỉ sử dụng hai ngôn ngữ kịch bản phi định kiểu ( non-type ) :
VBScript và JavaScript,
o Sử dụng trình thơng dịch cho các trang ASP
o Các đoạn mã lệnh và giao diện ( HTML ) trộn lẫn với nhau
o Không sử dụng lại được (reuse) các đoạn mã
o Không hổ trợ cơ chế bẫy lỗi (Debug)
1.1.2 GIỚI THIỆU ASP.NET
Như chúng ta đã biết , ASP vẫn cịn tồn đọng một số khó khăn , như là mã
lệnh ASP và HTML lẫn lộn , điều này làm cho q trình viết mã khó khăn , thể
hiện và trình bày mã khơng trong sáng , hạn chế khả năng sử dụng lại mã . Bênh
cạnh đó , Khi triển khai cài đặt , do không được biên dịch trước nên dễ bị mất mã
nguồn . Thêm và đó ASP khơng có hổ trợ cache , khơng được biên dịch trước
nên phần nào hạn chế về mặt tốc độ thực hiện . Q trình sử lý Postback khó
khăn ,…
Đầu năm 2002 , Microsoft giới thiệu một kỹ thuật lập trình Web khá mới
mẽ Với tên gọi ban đầu là ASP+ , tên chính thức sau này là ASP.NET , khơng
những khơng cần địi hỏi ph biết các tag HTML , thết kế web , mà nó cịn hổ trợ
lập trình hướng đối tượng trong quá trình xây dựng và phát triển web.
ASP.NET là kỹ thuật lập trình và phát triển ứng dụng web ở phía Server
dựa trên nền tảng của Microsoft.NET Framework.
Hầu hết , những người mới đến với lập trình web đều bắt đầu tìm hiểu
những kỹ thuật ở phía Client (Client) như : HTML , Javascript , CSS . Khi Web
browser yêu cầu một trang web (trang web sử dụng kỹ thuật client-side) , Web
server tìm trang web mà client yêu cầu , sau đó gởi về cho client . Client nhận
kết quả trả về từ Server và hiển thị lênh màng hình.
ASP.NET sử dụng kỹ thuật lập trình ở phía server thì hồn tồn khác , mã
lệnh ở phía server sẽ được sẽ được biên dịch và thi hành tại Web Server . Sau
khi được Server đọc, biên dịch và thi hành kết quả tự động chuyển sang
HTML/Javascript/CSS và trả về cho client . Tất cả các xử lý lệnh ASP.NET đều
được thực hiện tại Server , và do đó , gọi kỹ thuật lập trình ở phía Server.
Các ưu điểm của ASP.NET
o ASP chỉ sử dụng VBScript và JavaScript mà không sử dụng được
các ngôn ngữ khác như : Visual Basic , C++ … Trong khi đó ,
5
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
ASP.NET cho phép nhiều ngôn ngữ : VBScript, JavaScript , C# ,
Visual Basic.NET ,…
ASP.NET sử dụng phong cách lập trình mới : Code behide song
song với dạng Code inline . Tách mã riêng , giao diện riêng . Dễ đọc
, dễ quản lý và bảo trì.
Trong các trang ASP.NET hổ trợ các validation controls để kiểm tra
chúng ta không cần viết mã,…
Hổ trợ phát triển web được truy cập trên các thiết bị di động :
PoketPC , Smarphone,…
Hỗ trợ nhiều điều khiển phía máy chủ (web server controls).
Hỗ trợ thiết kế và xây dựng MasterPage lồng nhau.
Hỗ trợ bẫy lỗi (debug) với JavaScript.
Cho phép người dùng thiết lập giao diện trang web theo sở thích
các nhân sử dụng Theme ,Profile ,WebPart,…
Tăng cường các tính năng bảo mật .
Hỗ trợ kỹ thuật truy cập dữ liệu LINQ.
Hỗ trợ kỹ thuật xây dựng các ứng dụng đa phương tiện SilverLight.
Hỗ trợ kỹ thuật bất đồng bộ ASP.NET Ajax.
ASP.NET hỗ trợ mạnh mã bộ thư viện phong phú và đa dạng
của .NET Framework , là việc với XML , Web Server , truy cập
database qua ADO.NET ,…
ASPX và ASP có thể cùng hoạt động trong một ứng dụng
Kiến thức lập trình giống ứng dụng trên Windows.
Hỗ trợ quản lý trạng thái của các control.
Tự động phát sinh mã HTML cho cá Server control tương ứng với
từng loại Browser
Hỗ trợ nhiều cơ chế Cache.
Triển khai cài đặt : Không cần lock , không cần đăng ký DLL , cho
phép nhiều hình thức cấu hình ứng dụng.
Hõ trợ quản lý ứng dụng ở mức toàn cục : Global.aspx có nhiều sự
kiện hơn , quản lý session trên nhiều Server , không cần Cookies.
Trang ASP.NET được biên dịch trước . Thay vì phải đọc và thơng
dịch những trang web động thành những tệp tin DLL mà Server có
thể thi hành nhanh chóng và hiệu quả . Yếu tố này làm gia tăng tố
độ thực thi so với kỹ thuật thông dịch của ASP.
6
Hình 1.1 : Minh họa quá trình biên dịch trang ASP.NET
1.1.3 WEB SERVER IIS
Đây là phần mền Web Server của Microsot dành cho Windows
Internet Information Servces
IIS có thể được sử dụng như một Web server , kết hợp với ASP để xây
dựng các ứng dụng Web tận dụng các điểm mạnh của Server-side Script ,
COM component ,… theo mô hình Cline/Server .
1.2 .GIỚI THIỆU .NET 6.0
Tháng 11/2021 Microsoft cho ra mắt .NET 6 có sự hợp nhất giữa .NET
core và .NET Framework ở đây ta chỉ nêu ra một vài điểm mới so với .NET 5.0
Tương tự như các bản release trước, nền tảng .NET 6 cũng hỗ trợ cr Linux,
macOS và Windows. Ngồi ra cịn có Visual Studio 2022 là một mơi trường phát
triển tích hợp (IDE) cho nền tảng .NET 6. Những ai dùng Visual Studio Code thì
vẫn n tâm là ln xài được với mọi phiên bản. Riêng có Visual Studio thì phải
nâng cấp lên Visual Studio bản 2022 để có thể phát triển được .NET 6. Riêng với
Visual Studio for Mac thì vẫn có thể dùng Visual Studio 2019.
Các tính năng mới trong .NET 6 như sau:
o Hỗ trợ Production stress-tested dành cho ứng dụng Microsoft
services, ứng dụng cloud chạy bởi các công ty khác, và đã mở mã
nguồn.
o Hỗ trợ trong 3 năm hay gọi là LTS.
o Nền tảng thống nhất hỗ trợ nhiều loại trình duyệt, cloud, desktop,
IoT, và mobile apps, tất cả sử dụng chung code base có thể share
code dễ dàng.
7
o Hiệu năng được cải thiện rất nhiều và cho tác tác vụ I/O cụ thể,
bằng cách giảm thời gian thực thi, độ trễ và bộ nhớ sử dụng.
o C# 10 cải tiến ngơn ngữ bằng các tính năng như record structs,
implicit using, và new lambda capabilities, trong khi trình biên dịch
tăng khả năng gen code.
o Hot Reload cho phép ta tránh được việc build và khởi động lại ứng
dụng khi có thay đổi mới trong lúc ứng dụng vẫn đang chạy, hỗ trợ
trên Visual Studio 2022 và từ .NET CLI cho C# lẫn Visual Basic.
o Cloud diagnostics được cải tiến với OpenTelemetry và dotnet
monitor, hỗ trợ cho tìm lỗi trên môi trường Production trên Azure App
Service.
o JSON APIs được tăng khả năng và có hiệu năng cao hơn với
source generator cho bộ xử lý JSON.
o Minimal APIs được giới thiệu trong .NET Core giúp đơn giản và dễ
dàng bắt đầu cũng như cải tiến hiệu năng của HTTP services.
o Blazor có thể được render từ JavaScript và tích hợp với ứng dụng
Javascript base.
o WebAssembly AOT biên dịch cho ứng dụng Blazor WebAssembly
(Wasm), as well as support for runtime relinking and native
dependencies.
o Single-page apps được giới thiệu với ASP.NET Core giờ đây sử
dụng một pattern linh hoạt giúp ta có thể sử dụng Angular, React
hoặc các framework frontend Javascript khác.
o HTTP/3 được thêm vào ASP.NET Core, HttpClient, và gRPC có thể
tương tác với HTTP/3 giữa client và server.
o Cơ chế đọc ghi file (File IO) đã hỗ trợ liên kết tượng trưng và cải tiến
mạnh mẽ về hiệu năng với việc viết lại từ đầu FileStream class.
o Bảo mật được cải tiến bằng việc hỗ trợ OpenSSL 3, phương thức
mã hoá ChaCha20Poly1305, và các biện pháp ngăn chặn chiều sâu,
đặc biệt là W^X và CET.
o Single-file apps (extraction-free) được ra mắt trên Linux, macOS và
Windows (trước đây chỉ có trên Linux).
o IL trimming hiệu quả hơn với cảnh báo mới, bộ phân tích để đảm
bảo kết quả đúng cuối cùng.
o Source generators và analyzers được thêm vào giúp ta tái hiện bug
tốt hơn, an toàn hơn và tối ưu hiệu năng hơn..
o Source build cho phép tổ chức như Red Had xây dựng .NET từ mã
nguồn mở và tự xây dựng cho người dùng của mình..
8
Hỗ trợ
o Bản .NET 6 là một bản hỗ trợ lâu dài (LTS) được phát hành và được
hỗ trợ trong 3 năm. Nó hỗ trợ nhiều hệ điều hành bao gồm cả
macOS Apple Silicon và Windows Arm64.
o Red Hand hỗ trợ .NET trên Red Hat Enterprise Linux và đã làm việc
với team. .NET 6 được hỗ trợ với Visual Studio 2022 và Visual
Studio 2022 for Mac. Nó khơng hỗ trợ Visual Studio 2019, Visual
Studio for Mac 8 hoặc MSBuild 16. Nếu ta muốn dùng .NET 6 thì
phải upgrade lên Visual Studio 2022.
C# 10
o C# 10 có rất nhiều tính năng mới như:
Global using directive: sử dụng global using sẽ không phải
using mọi nơi như System namespace chẳng hạn.
File scoped namespace: không cần phải lồng class trong
namespace
Record struct
Hot Reload
Tính năng hot reload là một tính năng được mong đợi nhất hỗ trợ cho nhà
phát triển có thể tăng hiệu quả làm việc. Cho phép edit code ngay khi ứng
dụng đang chạy, giảm thời gian chờ rebuild, khởi động lại và điều hướng
đến đúng điểm ta có thay đổi. Hot Reload có sẵn trong dotnet watch CLI
và Visual Studio 2022. ta có thể sử dụng Hot Reload với các loại ứng dụng
khác nhau từ ASP.NET Core, Blazor, .NET MAUI, Console, Windows
Forms, WPF, WinUI 3, Azure Functions...
Bảo mật
Bảo mật được cải tiến đáng kể trong .NET 6 từ việc mơ hình, mã hố và
ngăn chặn xâm nhập. Trên Linux chúng ta có OpenSSL, trên macOS và
Windows chúng ta có chức năng tương tự từ hệ điều hành. Với mỗi phiên
bản .NET chúng ta thường cần thêm OpenSSL và .NET 6 hỗ trợ OpenSSL
3.
Arm64
Trên .NET Core 3.0 đã hỗ trợ Arm 32 nhưng với .NET 6 đã hỗ trợ Arm 64
giúp .NET 6 tương thích nhiều loại thiết bị hơn
9
1.3 GIỚI THIỆU MƠ HÌNH MVC
Mơ hình này là một trong những mơ hình trở nên phổ biến nhất khi áp dụng cho
việc thiết kế các ứng dụng web cũng như ứng dụng di động.
Mơ hình MVC (MVC Design Pattern) là viết tắt của Model — View — Controller.
Đó là một mẫu kiến trúc, mơ hình lập trình phổ biến, được các lập trình viên sử
dụng để tạo cấu trúc cho trang web, việc thiếts kế phần mềm theo yêu cầu hay
phát triển các ứng dụng. Theo góc nhìn rộng hơn, mơ hình MVC được sử dụng
để mơ tả q trình làm web của đại đa số các ngơn ngữ lập trình phổ biến chẳng
hạn như ngơn ngữ PHP, Ruby, Python hay JavaScript.
1.3.1 thành phần cấu trúc
Mơ hình MVC được chia thành ba phần độc lập và có thể tương tác được với
nhau:
Model (M): là nơi chứa các logic, nghiệp vụ tương tác với dữ liệu hoặc hệ
quản trị cơ sở dữ liệu (MySQL, SQL Server…), với chức năng lưu trữ toàn
bộ cơ sở dữ liệu của ứng dụng như là Class và các hàm xử lý get, set của
Class…đồng thời cũng là cầu nối giữa View và Controller. Một Model bao
gồm các phương thức thao tác xử lý kết nối database, cho phép xem, truy
xuất, xử lý dữ liệu,…Ví dụ cụ thể, Controller sẽ lấy thơng tin khách hàng từ
cơ sở dữ liệu, để Model thực hiện các thao tác xử lý chúng và gửi lại hoặc
sử dụng nó cho View.
View (V): như cái tên của nó, View là phần giao diện (theme) chứa các nút
bấm, khung nhập, menu, hình ảnh… dành cho người sử dụng. Người
dùng có thể thực hiện các thao tác về dữ liệu để lấy kết quả mình cần
thơng qua các thao tác truy vấn như tìm kiếm trên website, phần mềm hay
ứng dụng. Bên cạnh đó, View cũng có chức năng ghi nhận hoạt động của
người dùng để tương tác với Controller bằng cách hiển thị yêu cầu chuyển
cho Controller chứ không kết nối trực tiếp với layer này. Thông thường
trong các ứng dụng web, View là nơi các thành phần HTML được tạo ra.
Ví dụ cụ thể, khi người dùng nhấn nút “delete” thì View sẽ hiển thị hành
động đó để gửi yêu cầu xử lý cho Controller.
Controller (C): là bộ phận gồm những class/ function xử lý nhiều nghiệp vụ
logic. Nó có chức năng tiếp nhận những yêu cầu xử lý được gửi từ người
dùng mà View đưa đến, lấy đúng dữ liệu thông tin cần thiết nhờ các
nghiệp vụ lớp Model cung cấp mà trích xuất dữ liệu phù hợp với người
dùng. Controller cũng là bộ phận kết nối với Model.
10
1.3.2 Về kỹ thuật
Có rất nhiều luồng xử lý thơng tin trong model view controller, mà dưới đây là
uồng xử lý căn bản và phổ biến nhất.
View sẽ hiển thị ra phần nhập form tiêu đề và nội dung. Người dùng sẽ
nhập nội dung cần, sau đó gửi yêu cầu đến server, Controller sẽ tiếp nhận
yêu cầu đó.
Dữ liệu đầu vào sẽ được xử lý và quyết định luồng đi tiếp theo (trả về kết
quả hay tương tác với database để lấy dữ liệu) thông qua bộ phận
Controller. Trong trường hợp tương tác với database để lấy dữ liệu,
Controller sẽ gửi thông báo đến Model để lấy dữ liệu đầu ra. Trong trường
hợp còn lại, Controller sẽ trả về kết quả cho Client.
Model tương tác với Database để truy xuất dữ liệu phù hợp với yêu cầu,
sau đó Database sẽ trả dữ liệu cho Model theo yêu cầu ban đầu.
Sau đó, Model gửi trả về dữ liệu cho Controller xử lý
Controller sẽ gửi thhông báo đi kèm với dữ liệu phù hợp cho View, để
View hiển thị dữ liệu phù hợp với theo yêu cầu
Sau khi xử lý hiển thị dữ liệu, View trả kết quả (HTML, XML hoặc JSON…)
về cho Controller
Sau khi hoàn tất, Controller sẽ trả kết quả lại cho Client
11
Ưu điểm của model view controller
o Tạo mơ hình chuẩn cho từng dự án, từ đó tiếp cận với ứng dụng dễ
dàng hơn ngay cả với những người không có chun mơn
o Hỗ trợ q trình phát triển nhanh chóng nhờ các bộ phận hoạt động
độc lập với nhau. Từ đó các lập trình viên dễ dàng hát triển, quản lý,
vận hành, bảo trì trên từng bộ phận mà khơng làm ảnh hưởng đến
tồn hệ thống, đồng thời dễ dàng kiểm sốt được luồng xử lý của
ứng dụng.
o Trình tự xử lý rõ ràng, dễ dàng kiểm tra, rà sốt lỗi phần mềm trước
khi thơng tin trích xuất sau cùng hiển thị trước người dùng, từ đó
đảm bảo chất lượng và độ uy tín của thơng tin cao hơn
o Sở hữu bộ control ưu việt trên nền tảng các ngơn ngữ lập trình hiện
đại như CSS, HTML, Javascript với nhiều hình thức khác nhau
o Có khả năng cung cấp đồng thời nhiều khung View lưu trữ dữ liệu.
Nhờ đó ta tiết kiệm được diện tích băng thơng một cách tối ưu, đặc
biệt trong trường hợp có nhiều yêu cầu được thực hiện thì kích
thước càng tệp càng lớn
o Mơ hình MVC truyền tải dữ liệu nhưng khơng định dạng lại dữ liệu,
từ đó trạng thái dữ liệu được bảo tồn và sử dụng cho những lần sau
này
o Mơ hình có kết cấu tương đối đơn giản, dễ hiểu, xử lý những nghiệp
vụ đơn giản
12
Nhược điểm của model view controller
o Chỉ phù hợp với những dự án lớn, khơng thích hợp việc phát triển
các ứng dụng nhỏ vì mơ hình này u cầu người dùng phải lưu trữ
một số lượng lớn các file dữ liệu khác nhau. Điều đó tạo nên sự
cồng kềnh và phức tạp trong quá trình phát triển cũng như thời gian
trung chuyển dữ liệu
o Phân chia công việc và tác vụ khơng đồng đều giữa các layer, vì
phần Model phải đảm nhiệm hầu hết các tác vụ quan trọng
o Việc hiển thị của layer View phải phụ thuộc vào cả Controller và
Model nên sự hỗ trợ cho quá trình kiểm thử không quá tốt bởi dù
trên lý thuyết chúng độc lập với nhau. Nếu không thể nhận yêu cầu
và cũng khơng có dữ liệu được xử lý để hiển thị thì View cũng khơng
hiển thị được gì. Để tiến hành kiểm thử trên View, chúng ta cần giả
lập cả Controller và Model.
o Đối với các ứng dụng phức tạp, địi hỏi quy trình xử lý nghiệp vụ thì
MVC cũng không phải là lựa chọn tối ưu
13
1.4 QUÁ TRÌNH BIÊN DỊCH CỦA .NET
Visual C# project
Resources
C# Source File(s)
References
C# Compliter
Creates
Managed Assembly (.exe or .dll)
MSJL Metadata
Ilmetadata & sdreferences
loaded by CLR
.NET Framework
Common Language Runtime
Sencutity / Garbage
Collection /JIT Compiler
Users
.NET Framework
Class Libraries
Converted to native
machine code
Operating System
14
Common Language Runtime ( trình thực thi ngơn ngữ chung ) : sau khi
ứng dụng được biên dịch ra file Exe ( file exe này khác với file exe thông
thường nội dung của file exe này tuần theo tiêu chuẩn ngôn ngữ chung ,
dù viết bằng C# hay VB.NET . Ngôn ngữ này gọi là ngôn ngữ chung ) , tiếp
theo để file exe trung gian này có thể chạy được trên máy hiện hành cần
phải được biên dịch ra mã máy tương ứng . Việc biên dịch và chạy được
nhờ Chương trình thực thi ngơn ngữ chung -CLR ( common Language
Runtime ).
Base Class Library : là tập hợp các thư viện chứa các lớp cơ bản để sử
dụng trong tất cả các ngơn ngữ .NET Ví dụ các lớp sử lý xâu , xử lý toán
học ,…
ADO.NET : là tập hợp viện chuyên dành cho thao tác với database .
ASP.NET : Các thư viện dành cho phát triển ứng dụng Web ( webfrom)
2. NỘI DUNG
2.1 CẤU HÌNH VÀ MƠI TRƯỜNG ĐỂ PHÁT TRIỂN
ASP.NET 6.0
Có vài yêu cầu cài đặt trước khi ta phát triển ứng dụng với ASP.NET Core. Để
bắt đầu ta cần một IDE và Visual Studio 2017 là lựa chọn tốt nhất ở thời điểm
hiện tại. Phiên bản Community Edition là miễn phí và có thể sử dụng nó cho việc
phát triển ứng dụng ASP.NET Core. Ta cũng cần cài đặt .NET Core SDK.
Cài đặt Visual Studio 2022
Visual Studio là IDE (Integration Development Environment) là một sự lựa
chọn khi ta phát triển ứng dụng trên Windows. Khi dùng ASP.NET Core
2.2, ta cần sử dụng Visual Studio 2017 Update 15.9.12 hoặc cao hơn.
Ta có thể download Visual Studio 2022 tại Url
nếu phiên bản hiện tại đang là
Visual Studio 2019 Preview ta có thể cài Visual Studio 2019. Hoặc
download phiên bản 2022 tại
đây: Đến thời điểm
hiện tại thì đã có Visual Studio 2019 Preview 2.
Khi ta xem được bài viết này có thể đã có VS 2019 chính thức ta có thể
dung ln. Ta có thể sử dụng bất cứ phiên bản nào của Visual Studio
2017.
Chúng ta sẽ sử dụng bản Visual Studio Community edition vì nó miễn phí
cho mục đích cá nhân. Ta có thể đọc thơng tin bản quyền tại Url
15
Khi cài đặt Visual Studio chọn
ASP.NET Web development Workload
Download và cài đặt .NET 6 SDK
Để sử dụng được .NET 6.0 các ta cần download SDK của nó và cài trên
máy development tại URL /> Thay đổi TargetFramework trong các Project của Solution
Đổi toàn bộ các TargetFramework sang 6.0, để thực hiện: Chuột phải vào
Project --> Edit Project File
Nâng cấp các package lên 6.0
Các Package thuộc "họ ASP.NET Core" cần được nâng cấp lên 6.0, thông
thường là từ 5.0.x khác nhau nên các ta có thể xem xét. Có một số
package khơng có phiên bản 6.0 n nên dùng cửa sổ Nuget Package
Manager trên Visual Studio trên tab Update để kiểm tra chính xác các
phiên bản có sẵn cho package đó. Mở solution trên Visual Studio --> click
phải vào Project bất kỳ --> Chọn Manage Nuget Packages
2.2 DOTNET CLI
Cơng cụ giao diện dịng lệnh .NET CLI là cơng cụ mới cho việc phát triển ứng
dụng .NET. Nó hỗ trợ đa nền tảng như Windows, MAC hoặc Linux. Trong bài viết
này chúng ta sẽ tìm hiểu cách sử dụng .NET CLI để tạo ứng dụng ASP.NET
Core đơn giản.
CÀI ĐẶT DOTNET CLI
Dot Net CLI được cài đặt như một phần của .NET Core SDK. ta có thể
download tại URL />CLI cài đặt mặc định đi kèm và có thể có nhiều phiên bản được cài đặt
chung 1 máy.
2.2.1 CÁCH SỬ DỤNG DOTNET CLI
Cú pháp DotNet CLI gồm có 3 phần : từ khóa chính – động từ -- các tham số
Tên từ khóa chính là ‘dotnet’
Động từ là lệnh mà ta muốn thực hiện . Lệnh thực hiện một hành động
Các tham số sẽ được pass vào để cung cấp thêm thông tin cho hành động.
16
Dưới đây là một số câu lệnh phổ biến thường dùng cho dotnet :
Lệnh
mơ tả
new
Tạo mới project, file cấu hình hay solution.
restore
Tải về các thành phần phụ thuộc trong project.
build
Biên dịch dự án với các thành phần liên quan
publish
Đóng gói toàn bộ ứng dụng ra một thư mục.
run
Chạy source code mà không cần lệnh biên dịch.
test
Thực thi unit test
vstest
Thực thi unit test từ file cụ thể
pack
Đóng gói code vào NuGet package.
clean
Làm sạch output của dự án.
sln
Chỉnh sửa file .NET Core solution
help
Xem them trợ giúp
store
Lưu trữ các assembly cụ thể
17
2.2.2 TẠO DỰ ÁN ASP.NET SỬ DỤNG CLI
Mở cửa sổ Command Prompt hoặc Windows Powershell và tạo thư mục tên
“HelloWorld”
dotnet new
dotnet new là câu lệnh tạo mới project. Cú pháp như sau: dotnet new
<TEMPLATE> [--force] [-i|--install] [-lang|--language] [-n|--name] [-o|--output]
Các tham số
TEMPLATE
Tên mẫu dự án cần tạo
‘–force’
Tham số này giúp tạo project ngay cả nếu thư mục đã có một project rồi nó vẫn
tạo trên đó.
‘-i|–install <PATH|NUGET_ID>’
Cài đặt một nguồn hoặc một template từ đường dẫn PATH hoặc NUGET_ID
‘-l|–list’
Hiển thị danh sách template chỉ ra tên. Nếu ta gọi lệnh dotnet new trên thư mục
vừa được chạy, nó sẽ list ra các template có sẵn. Ví dụ thư mục hiện tại chứa
một project nó sẽ khơng list ra tất cả các loại project template.
‘-lang|–language {C#|F#|VB}’
Ngôn ngữ của template. Ngôn ngữ được chấp nhận tùy theo template.
‘-n|–name <OUTPUT_NAME>’
Tên được tạo ra, nếu không chỉ ra tên, tên sẽ theo thư mục hiện tại.
‘-o|–output <OUTPUT_DIRECTORY>’
Vị trí project được tạo ra, mặc định là thư mục hiện tại đang chạy câu lệnh
‘-h|–help’
In ra trợ giúp cho câu lệnh
18
Danh sách template
TEMPLATE
mô tả
console
Console Application
classlib
Class library
mstest
Unit Test Project
xunit
xUnit Test Project
web
ASP.NET Core Empty
mvc
ASP.NET Core Web App (Model-View-Controller)
razor
ASP.NET Core Web App
angular
ASP.NET Core với Angular
react
ASP.NET Core với React.js
reactredux
ASP.NET Core với React.js và Redux
webapi
ASP.NET Core Web API
2.2 CẤU TRÚC THÀNH PHẦN CỦA DỰ ÁN ASP.NET
MVC
Khi tạo dự án với asp.net bằng IDE visual studio xẽ sinh ra cho chúng ta các
thành phần của project như sau :
wwwroot : đây là nơi chứa các phần mà sẽ được sử lý trên máy client như
các thiết bọ di động máy tính bản hoặc máy tính phần này thông thường
xẽ là nơi chứa các file css , javascript , image …. Các file Khi đặt ở đây nó
xẽ có tốc độ truy xuất nhanh hơn vì nó được đặt trong máy client và khơng
cần phải thơng qua máy server
các thành phần của mơ hình MVC đã được nói trong phần ‘giới thiệu mơ
hình MVC’
o controller : đây là nơi sử lý logic để trả kết quả về views nó chứa các
hàm để sử lý các yêu cầu từ view gởi lênh .
o views : đây là nơi sẽ giao tiếp trực tiếp với người dùng và lấy yêu
cầu sử lý từ người dùng ,
19
o model : đây là nơi chứa các trường dữ liệu , nó liên kết với database
và là nơi chứa các bảng các trường của dữ liệu nơi này giao tiếp
với controller và trả dữ liệu về cho controller
appsettings.json : đây là file cấu hình hệ thống
Cấu hình là các tham số hoặc các cài đặt cụ thể cho ứng dụng. Các cài
đặt này được lưu trữ riêng biệt trong code và trong các file độc lập. Nó
giúp các developer và quản trị kiểm soát và dễ dàng thay đổi cách mà ứng
dụng chạy.
startup : đây là phần khởi tạo ứng dụng , khởi tạo những cái cần thiết để
asp.net có thể chạy được .
2.3 KESTREL
Kestrel là một web server dành cho ASP.NET Core. Cách mà chúng ta host ứng
dụng trong ASP.NET Core đã thay đổi so với phiên bản ASP.NET cũ. Kestrel là
cách mới để host ứng dụng ASP.NET Core. Nó chạy ứng dụng độc lập và hồn
tồn có thể tự host được.
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 ứ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.
Tại sao phải 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.
20
Cách sử dụng
Có 2 cách để sử dụng Kestrel
o 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
ASP.NET Application
Http Request/Response
internet
Kestrel (running
within the application
httpContext
Application Code
(Handle Request and
generates response )
o Đằ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
( đã nói trong phần web server 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.
Http
internet
ASP.NET Application
IIS Nginx
Apache
Http
Kestrel (running
within the application
httpContext
Application Code
(Handle Request and
generates response )
21
2.4 MIDDEWARE VÀ REQUEST PIPELINE
Request Pipeline
là cơ chế bắt đầu khi các request bắt đầu được xử lý với một đối tượng
Request đầu vào và kết thúc với đầu ra là một response. Pipeline chỉ ra
cách mà ứng dụng phản hồi với HTTP Request. Request đến từ trình
duyệt đi qua pipeline và quay trở lại khi xử lý xong để trả về client. Các
thành phần đơn lẻ tạo nên pipeline này được gọi là middleware.
Middleware
là thành phần của phần mềm đóng vai trị tác động vào request pipeline
(luồng request) để xử lý chúng và tạo ra response phản hồi lại client. Mỗi
một tiến trình middleware thao tác với các request nhận được từ
middleware trước nó. Nó cũng có thể quyết định gọi middleware tiếp theo
trong pipeline hoặc trả về response cho middleware ngay trước nó. (ngắt
pipeline).
Cách làm việc
ASP.NET Application
Midderware 1
Midderware 1
Response
Kestrel
Request
Midderware 1
Request Pipeline
Đầu tiên, HTTP Request đến (trực tiếp hoặc qua External web server) ứng dụng.
Kestrel web server nhặt lấy request và tạo một HttpContext và gán nó vào
Middleware đầu tiên trong request pipeline.
Middleware đầu tiên sẽ nhận request, xử lý và gán nó cho middleware tiếp theo.
Quá trình này tiếp diễn cho đến khi đi đến middleware cuối cùng. Tùy thuộc ta
muốn pipeline của ta có bao nhiêu middleware.
Middleware cuối cùng sẽ trả request ngược lại cho middleware trước đó, và sẽ
ngắt q trình trong request pipeline.
22
Mỗi Middleware trong pipeline sẽ tuần tự có cơ hội thứ hai để kiểm tra lại request
và điểm chỉnh response trước khi được trả lại.
Cuối cùng, response sẽ đến Kestrel nó sẽ trả response về cho client. Bất cứ
middleware nào trong request pipeline đều có thể ngắt request pipeline tại chỗ
đó với chỉ một bước đơn giản là khơng gán request đó đi tiếp.
Cấu hình Request Pipeline
Để bắt đầu sử dụng Middleware, chúng ta cần thêm nó vào Request Pipeline. Nó
được thực hiện bởi phương thức Configure trong Startup class
Mở file Startup và tìm phương thức Configure sau đó thay đổi code như sau;
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Run(async (context) => { await context.Response.WriteAsync("<div>
the middleware 1 </div>"); });
}
Chúng ta sử dụng phương thức app.Run để đăng ký middleware đầu tiên và
hiển thị dịng chữ “the Middleware 1” khi nó thực thi.
Phương thức app.Run để lấy thể hiện của HttpContext. Ta có thể sử dụng đối
tượng Response từ HttpContext để viết thêm các thơng tin vào HttpResponse.
o Cấu hình Middleware với Use và Run
Sử dụng hai extension method Use và Run để cho phép chúng ta đăng ký
Middleware nội bộ (inline middleware) vào request pipeline. Phương thức
Run thêm vào một middleware ngắt. Phương thức Use thêm vào
middleware, nó sẽ gọi middleware tiếp theo trong pipeline.
Giờ hãy thêm một middleware nữa sử dụng app.Run
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Use(async (context, next) => { await
context.Response.WriteAsync("<div> the middleware 1 </div>"); });
app.Run(async (context) => { await context.Response.WriteAsync("<div> the
middleware 2 </div>"); });
}
23
Phương thức app.Use có nhận hai tham số, một là HttpContext và hai là
một RequestDelegate, về cơ bản nó là tham chiếu tới middleware tiếp
theo. Giờ hãy chạy code.
Thông điệm “the middleware 1” xuất hiện trên trình duyệt. Thơng điệp từ
middleware thứ 2 khơng xuất hiện. Bởi vì trách nhiệm của nó gọi
middleware tiếp theo. Chúng ta có thể gọi middleware tiếp theo bằng cách
gọi phương thức Invoke của middleware tiếp theo:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
app.Use(async (context, next) => { await context.Response.WriteAsync("<div>
the middleware 1 </div>"); await next.Invoke(); });
app.Run(async (context) => { await context.Response.WriteAsync("<div> the
middleware 2 </div>"); });
}
Middleware là mã nguồn hay là các thành phần riêng lẻ để xử lý các request đến. Các
middleware này đứng theo dãy với nhau gọi là request pipeline. Ta tạo middleware và
đăng ký nó trong phương thức Configure của class Startup.
2.5 CƠ CHẾ ROUTING
Một trong các thành phần quan trọng nhất của kiến trúc MVC là cơ chế routing
(định tuyến). Nó là cơ chế quyết định xem Controller nào sẽ được xử lý request
nào. Bài này chúng ta sẽ tìm hiểu Routing làm việc ra sao trong ứng dụng
ASP.NET Core.
Routing là một quá trình khi ASP.NET Core xem xét các URL request gửi đến và
"chỉ đường" cho nó đến Controller Actions. Nó cũng được sử dụng để tạo ra URL
đầu ra. Quá trình này được đảm nhiệm bởi Routing Middleware. Routing
Middleware có sẵn trong thư viện Microsoft.AspNetCore.Routing.
Routing có 2 trách nhiệm chính:
Nó map request đến vào Controller Action.
Tạo ra URL đầu ra tương ứng với Controller action.
24