Ưu điểm của ASP.NET • Phần thực thi của ứng dụng web được biên dịch, do đó ứng dụng sẽ chạy nhanh hơn các ngôn ngữ thông dịch khác • Ứng dụng có thể được cập nhật liên tục mà không cầ
Trang 1• Học xong chương này sinh viên có thể:
– Hiểu khái niệm ASP.NET và NET Framework.
– Biết sử dụng môi trường phát triển ứng dụng
Web Visual Studio Net.
– Hiểu ý nghĩa và cách bảo trì trạng thái ứng
dụng
– T ạo được ứng dụng Web, lưu giữ và sử dụng
trạng thái của các đối tượng trong ứng dụng
bằng Cookies, Session và Profile
Trang 2Nội dung
• ASP.NET và NET Framework
• Các điều khiển ASP.NET
• Thư viện lớp trong Net Framework
• Môi trường thực thi ngôn ngữ chung
Trang 3Giới thiệu
• ASP.NET là công nghệ nền tảng để xây
dựng ứng dụng web và dịch vụ web của
Microsoft
• ASP.NET không phải là công nghệ xây
dựng ứng dụng web duy nhất
• ASP.NET được tích hợp chặt chẽ với hệ
thống phần mềm của Microsoft, từ hệ điều
hành, web server… đến công cụ lập trình,
truy cập dữ liệu, bảo mật
– Không gian tên System.Web.
– Các điều khiển Server and HTML.
Trang 4Ưu điểm của ASP.NET
• Phần thực thi của ứng dụng web được biên
dịch, do đó ứng dụng sẽ chạy nhanh hơn các
ngôn ngữ thông dịch khác
• Ứng dụng có thể được cập nhật liên tục mà
không cần khởi động lại web server
• Khả năng sử dụng NET Framework là phần mở
rộng của Windows API
• Khả năng sử dụng cácngôn ngữ phổ biến Visual
Basic và ngôn ng ữ mới Visual C#
• Khả năng sử dụng các điều khiển server để xây
dựng giao diện giống như các ứng dụng
Windows
Ưu điểm của ASP.NET (tt)
• Khả năng tạo ra các điều khiển server mới
• Sử dụng cơ chế bảo mật có sẵn của hệ điều
hành Windows
• Khả năng truy cập dữ liệu bằng ADO.NET
• Khả năng hỗ trợ đầy đủ Extensible Markup
Language (XML), cascading style sheets
(CSS), và các chuẩn Internet khác
• Các tính năng caching trang web, bản địa
hóa nội dung được tích hợp sẵn
Trang 5• Các tập tin thực thi, các đoạn script
–Phần thông tin cấu hình:
• Các tập tin cấu hình, tập tin CSS, cấu
hình web server
Giới thiệu NET Framework
• NET Framework là nền tảng lập trình mới
của Microsoft để phát triển các ứng dụng
windows cũng như ứng dụng web
• NET Framework gồm 2 phần chính:
– Th ư viện các lớp cung cấp các hàm lập trình
cấp thấp (tương tự Windows API) cũng như cấp
cao để phát triển ứng dụng web (ASP.NET),
truy cập dữ liệu (ADO.NET), bảo mật…
– Phần lõi thực thi gọi là common language
runtime (CLR)
Trang 6Cách thực thi một ứng dụng NET
Thư viện lớp của NET
• Thư viện lớp của NET cung cấp khả năng
sử dụng các tính năng của CLR
• Thư viện lớp của.NET được tổ chức theo
không gian lớp
• Mỗi không gian lớp chứa các lớp có tính
năng liên quan với nhau
Trang 7Một số không gian tên của NET
• Namespace: Là tên gọi một nhóm các lớp
đối tượng phục vụ cho một mục đích nào đó
– Gồm các đối tượng Application, Browser,
Cache, Cookies, Exeception, Request,
Response, Server và Trace.
– Sử dụng các lớp này trong hầu hết các tác vụ
lập trình Web Các đối tượng Application định
nghĩa trong Global.asax được dựa trên lớp
Application
•
Trang 8Một số không gian tên trong
ứng dụng Web (tt)
• System.Web.SessionState
– Đối tượng Session
– Sử dụng các lớp này để lưu trữ và khôi phục
các thông tin trạng thái chứa trong Session.
– Đối tượng Page và Control
– Sử dụng các lớp này trong một Web form để
tạo và điều khiển giao diện người dùng Web
forms được dựa trên lớp Page
• System.Web.UI.WebControls
– Tất cả các đối tượng server control
– Sử dụng các lớp này trong các Web form.
Trang 9Một số không gian tên trong
ứng dụng Web (tt)
• System.Web.UI.HTMLControls
– Tất cả các đối tượng HTML control
– Sử dụng các lớp này trong Web forms.
• System.Web.Caching
– Đối tượng Cache
– Sử dụng các lớp này để điều khiển quá trình
caching trên server để cải thiện tốc độ thực thi
Trang 10• Là các file dll trên đĩa cứng, lưu trữ các lớp
của NET
– Ví dụ: tất cả các lớp trong ASP.NET Framework
đều nằm trong Assembly System.web.dll.
• Trước khi sử dụng các lớp trong dll, cần tạo
một tham chiếu đến file dll này
– Right click lên thư mục Website trong cửa sổ
Solution Explorer, chọn Add Reference…
Môi trường thực thi ngôn ngữ chung
• Commom Language Runtime (CLR): chịu
trách nhiệm thực thi mã nguồn ứng dụng: mã
nguồn của ứng dụng NET được biên dịch
thành ngôn ngữ đặc tả của Microsoft
(Microsoft intermediate language - MSIL) và
chứa trong tập tin gọi là assembly
• Khi chạy ứng dụng, MSIL sẽ được biên dịch
sang mã máy máy bởi JITTER (just in time
compiler)
• Trong quá trình thực thi, CLR sẽ tự động
thực hiện các tác vụ quản lý bộ nhớ, kiểm tra
kiểu dữ liệu, và một số tác vụ khác cho ứng
Trang 11Bài 2 Các điều khiển ASP.NET
• Giới thiệu
• Các điều khiển server
• Các biến cố của các điều khiển
• Mỗi điều khiển ASP.NET là một lớp, khi thực
thi trên server sẽ được trả về dạng mã HTML
hiển thị nội dung trên trình duyệt
• ASP.NET cung cấp rất nhiều điều khiển có
thể sử dụng trong xây dựng ứng dụng web
và tổ chức thành các nhóm dựa vào chức
năng và bản chất của điều khiển
Trang 12Các điều khiển server
• Standard control: bao gồm các điều khiển
chuẩn như: Label, Button, TextBox…
• Validator Control: là các điều khiển được sử
dụng đề kiểm tra tính hợp lệ của dữ liệu
nhập trước khi gởi về server
• Rich Control: là những điều khiển như
FileUpload, Calendar…
• Data Control là các điều khiển cho phép thao
tác với cơ sở dữ liệu
Các điều khiển server (tt)
• Navigation Control: là những điều khiển cho
phép di chuyển giữa các trang trong website
• Login control: Là các điều khiển về bảo mật
ứng dụng cho phép tạo các form đăng ký,
đăng nhập, thay đổi mật khẩu…
• HTML Control: cho phép chuyển các điều
khiển HTML thành các điều khiển có thể
thực thi trên server
Trang 13Các điều khiển server (tt)
View State
• View state của Web form là dữ liệu đươc ASP.NET
bảo toàn giữa các yêu cầu của trình duyệt
• ASP.NET lưu trữ các thông tin được đưa vào thuộc
tính ViewState của trang dưới dạng các field ẩn
trên trang
• View state chỉ sử dụng được cho từng web form
• View State lưu trữ dữ liệu ngay trên trang à chỉ có
một số kiểu đối tượng có thể được lưu
• Muốn lưu trữ các đối tượng phức tạp hơn trong
ViewState à chuyển đổi chúng thành các chuỗi.
Trang 14View State (tt)
• ASP.NET mã hóa các dữ liệu nhập vào các
điều khiển thành các field ẩn được lưu trữ
trên trang Nếu ta chọn View Source từ trình
duyệt, đoạn mã HTML của trường ẩn có
đoạn code sau:
27
GV
View State (tt)
• Ví dụ
–Đoạn mã sau cho phép thêm văn bản
nhập từ một text box vào các ô của một
bảng trên trang Web
• Lưu trữ các chuỗi trong hàm Button1_Click
• Tạo ra các ô và dòng trong bảng từ các chuỗi
này, như trình bày trong thủ tục
Page_PreRender
Trang 15View State (tt)
29
GV
Bài 3 Trang ASP.NET
• Tạo ứng dụng web trong môi trường VS.Net
• Biên dịch động
• Trang code-behind
• Biến cố mức trang
• Thuộc tính Page.IsPosBack
Trang 17Thêm Trang ASP.NET
Vào Web Site
Thêm Trang ASP.NET
Vào Web Site
Trang 18Chọn trang web làm trang
mặc định
Biên dịch
Trang 19Chạy thử trang web
Trang code-behind
• Khi một website được tạo, mặc định ứng
dụng sẽ tạo ra một tập tin Default.aspx và
một tập tin Default.aspx.cs
– Tập tin Default.aspx: cho phép thiết kế các thành
phần giao diện trên Web Form
– Tập tin Default.aspx.cs: là một class kết hợp với
tập tin Default.aspx, cho phép viết code một
cách độc lập tương tự như ứng dụng Windows
Form, thay vì phải viết code trong thẻ <script
runat=”sever”/> </script>
Trang 20Chỉ dẫn của tập tin aspx
Chỉ dẫn của tập tin aspx
Trang 21Chỉ dẫn của tập tin aspx
• ErrorPage: url đến trang web khác khi xảy ra lỗi
• ValidateRequest: cho phép nhập các giá trị đặc
biệt
– @Import: chỉ định không gian tên cần import
vào trang web
Trang 22Tập tin ứng dụng Global.asax
• Thêm vào ứng dụng tập tin Global.asax
– Từ menu Website, chọn Add New Item, Global
• Sử dụng sự kiện mức ứng dụng để khởi tạo
các đối tượng chung cho tất cả người dùng
của ứng dụng web
– Application_Start: Chỉ xảy ra một lần đầu tiên
khi bất kỳ trang nào trong ứng dụng được gọi.
– Application_End: Xảy ra khi dừng hoạt động
của WebServer.
– Application_Error: Xảy ra khi có lỗi phát sinh
trong quá trình thực thi.
– Application_BeginRequest: xảy ra mỗi khi trình
duyệt di chuyển đến một trang của ứng dụng
– Application_EndRequest – Kết thúc xử lý yêu
cầu của trình duyệt
Trang 23Sự kiện mức phiên làm việc
• Sử dụng sự kiện mức phiên làm việc để
khởi tạo các đối tượng được sử dụng chung
trong phạm vi một phiên làm việc
– Session_Start: Xảy ra khi có một người dùng
mới yêu cầu đến bất kỳ trang aspx của ứng
dụng, một SessionID sẽ được tạo ra và được
s ử dụng để quản lý người dùng trong quá trình
làm việc với ứng dụng.
– Session_End: Xảy ra khi phiên làm việc không
có gởi yêu cầu hoặc làm tươi trang aspx của
ứng dụng web trong một khoảng thời gian (mặc
Trang 24Sự kiện mức trang (tt)
• Page_Init: Khởi tạo trang: các điều khiển
được khởi tạo và gán giá trị từ view state
• Page_Load: Nạp trang: các điều khiển đã
được khởi tạo, gán giá trị và sẵn sàng để sử
dụng trong mã lệnh
• Page_PreRender: xảy ra khi trang Web
chuẩn bị được trả về cho Client
Trang 25Sự kiện mức trang
• Các sự kiện chính thường được sử dụng
của web form là Page_Load và Page_Error
• Có thể kết hợp thuộc tính IsPostBack với sự
kiện Page_Load để khởi tạo các đối tượng
cho web form trong lần đầu tiên (tương tự
như Session_Start nhưng ở mức trang)
• Cho biết trạng thái của trang web khi được
load: Load lần đầu -> IsPostBack = false
• Ví dụ:
private void Page_Load(object sender,
System.EventArgs e) { if( ! IsPostBack) {
// init … }
Trang 26Sự kiện các điều khiển Server
• Các điều khiển Server, như Button, TextBox,
DropDownList … có các sự kiện riêng của mình,
các sự kiện này xảy ra trong quá trình tương tác
với người dùng (tương tự trong windows form)
• Có 3 loại sự kiện điều khiển server:
• Được xử lý ngay tại phía client mà không cần post-back Chủ
yếu sử dụng bới các điều khiển kiểm chứng dữ liệu
51
GV
Sự kiện các điều khiển Server (tt)
• Các điều khiển Button, Link Button, và
Image Button tạo ra các sự kiện
post-back
• Các điều khiển TextBox, DropDownList,
ListBox, RadioButton, và CheckBox tạo ra
các sự kiện cached
• Tuy nhiên, ta có thể thay đổi điều này bằng
cách thay đổi thuộc tính AutoPostBack của
các điều khiển
Trang 27Trình tự xử lý sự kiện các điều khiển Server
53
GV
Bài 4 Các trạng thái ứng dụng
• Vòng đời của ứng dụng web
• Vòng đời của webform
Trang 28Vòng đời của ứng dụng web
• Khi người dùng đóng trình duyệt hoặc
chuyển sang một web site khác, session
của người dùng kết thúc
• Nếu không tồn tại session của người dùng
nào, ứng dụng web sẽ kết thúc
• Lưu ý: Điều này không xảy ra tức thời do cơ
chế quản lý bộ nhớ của ASP.NET Do đó
không thể nói chính xác khi nào sự kiện
Trang 29Vòng đời của webform
• Khi người dùng yêu cầu một trang web, trình
duyệt hiển thị mã HTML nhận được, người
dùng có thể tương tác với các điều khiển
như gõ vào textbox, lựa chọn trong listbox,…
cho đến khi thực hiện tác vụ làm phát sinh
sự kiện post-back (nhấn vào button,…)
• Sự kiện post-back khiến trình duyệt gửi lại
dữ liệu của trang (dưới dạng view state) về
cho server
Vòng đời của webform (tt)
• Sau khi nhận được view state, server sẽ khởi
tạo phiên bản mới của web form, đổ dữ liệu
từ view state vào web form, sau đó thực hiện
việc xử lý các sự kiện đã phát sinh
• Sau khi xử lý xong, server sẽ trả kết quả lại
cho trình duyệt dưới dạng HTML và hủy
phiên bản vừa tạo ra của web form
Trang 30Vòng đời của webform (tt)
Cách bảo toàn dữ liệu trên Webform
• Web forms được tạo ra và được huỷ tại mỗi
thời điểm mà trình duyệt trên máy khách tạo
ra một yêu cầu
• Do đó, các giá trị biến bên trong Web form
không giữ lại giá trị của chúng sau khi trang
Web được hiển thị
• Để giải quyết vấn đề này ASP.NET cung
cấp một số cách thức để giữ lại giá trị các
biến giữa các yêu cầu
Trang 31Query strings
• Chuyển thông tin giữa các yêu cầu và phản
hồi thông qua một phần của địa chỉ Web
• Query strings có thể nhìn thấy được bởi
người sử dụng, vì vậy chúng không nên
chứa các thông tin bảo mật như mật khẩu
• Gửi một query string bằng cách thêm nó
vào địa chỉ của phương thức Redirect
Trang 32Query strings (tt)
• Để nhận thông tin từ query string trong mã
lệnh, sử dụng phương thức QueryString của
đối tượng Request
63
GV
Cookies
• Lưu trữ các thông tin đơn giản trên máy client
• Các máy client có thể không chấp nhận
cookie, do đó cần kiểm tra trước khi sử dụng
• Khi trình duyệt web tạo một Cookie, một nội
dung sẽ được lưu vào header của trang web
với nội dung có dạng:
Set-Cookie: Message = value
• Phần tiêu đề Set-Cookie này yêu cầu trình
duyệt web tạo một Cookie có tên là Message
coq giá trị là value
Trang 33• Sau khi một Cookie được tạo trên trình
duyệt, mỗi khi trình duyệt yêu cầu một trang
web trong ứng dụng, trình duyệt sẽ gửi một
header có dạng :
Cookie: Message = value
• Tiêu đề Cookie chứa đựng tất cả các Cookie
được tạo trên Web Server Cookie được gửi
trở lại mỗi khi một yêu cầu được đưa ra trên
trình duyệt web
Cookies (tt)
• Có hai loại cookie:
– Session cookies chỉ tồn tại khi trình duyệt web
còn làm việc, và bị hủy khi đóng trình duyệt web
– Persistent Cookies: có thể tồn tại khá lâu Khi
một Persistent Cookies được tạo, nó sẽ được
lưu trữ trên một tập tin trên máy tính
Trang 34• Kiểm tra xem một trình duyệt có cho phép
cookies hay không:
– if ( Request.Browser.Cookies) { //do…}
Cookies (tt)
Trang 35– Có th ể lưu trữ nhiều giá trị trong một cookie
bằng cách sử dụng bộ [Name] [Value] được gọi
là khóa.
– Để tạo một Persistent Cookies, ta chỉ định thời
hạn kết thúc cho Cookies:
aCookie.Expires = DateTime.Now.AddDays(2);
– Ví dụ: Thay vì tạo ra hai tập tin cookie riêng biệt
có tên là userName và lastVisit,ta có thể tạo ra
một cookie đơn đặt tên UserInfo và có hai giá trị
là userName, lastVisit
Trang 37Application, Session state
• Application state
– Lưu trữ các thông tin chung cho tất cả các người
sử dụng
• Session state
– Lưu trữ các thông tin riêng biệt cho phiên làm
việc hiện hành (riêng cho một người dùng).
– Session cho phép lưu trữ dữ liệu với khối lượng
lớn, điều này không được cho phép khi sử dụng
Cookies
Application, Session state (tt)
• Các biến trạng thái Application và Session
được tạo ra một cách tức thời, mà không
kiểm tra tên biến hoặc kiểm tra kiểu dữ liệu
Ta nên giới hạn các điểm truy xuất đến các
Trang 38Sử dụng Session
• Lưu dữ liệu vào session:
– Cú pháp: Session[“session_name”]=value;
– VD: Session[“uname”] = “my name”;
• Lấy dữ liệu từ session:
– Kiểm tra sự tồn tại của session
– Lấy dữ liệu từ session và chuyển đổi về kiểu dữ
– Abandon: Kết thúc Session của một người dùng.
– Clear: Cho phép xoá toàn bộ dữ liệu trong Session State.
– Remove: cho phép xoá từng phần tử trong Session State
• Một số thuộc tính thường dùng của lớp
HttpSessionState
– SessionID: giá trị nhận dạng session
– Timeout: thời gian kết thúc một seesion
– cookieless
• AutoDetect: SessionID được lưu trữ trong một cookie khi trình
duyệt có cho phép Cookie, ngược lưu trữ vào địa chỉ URL.
• UseCookies: Session ID luôn luôn lưu trữ trong cookie
• UseUri: Session ID luôn luôn được thêm vào URL
Trang 39Thiết lập thời gian cho Session
• Mặc định, ASP.Net duy trì trạng thái session
là 20 phút, ta có thể thay đổi giá trị này bằng
cách cấu hình trong trang web.config
• Được dùng để thay thế cho Session hoặc
cookie để lưu trữ thông tin của người sử
dụng
• Tạo Profile bằng cách định nghĩa một danh
sách các thuộc tính Profile trong ứng dụng ờ
trang web.config trong thư mục website
Trang 40Profile (tt)
• Một số thuộc tính
– Name: tên của thuộc tính.
– Type: kiểu dữ liệu của thuộc tính
– Defaultvalue: giá trị mặc định của thuộc tính
– ReadOnly: tạo thuộc tính chỉ đọc
– allowAnonnyMous: cho phép ng ười dùng nặc
danh đọc và thiết lập thuộc tính
– Provider: kết hợp thuộc tính với một Profile
Provider riêng biêt