1. Trang chủ
  2. » Giáo án - Bài giảng

Bài 8: Thiết kê và lập trình web với ASP.NET - Quản lý trạng tháng với ASP.NET

11 464 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 333,25 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trang 1

Thi t k & L p trình Web 2

Bài 8

Qu n

Qu n lý lý Tr ng Tr ng thái thái v i v i ASP NET ASP NET

Ths Tr n Th Bích H nh

Khoa CNTT Khoa CNTT – – H.KHTN

© 2009 Khoa Công ngh thông tin

N i

N i dung dung

N i

N i dung dung

Gi i thi u v Qu n lý tr ng thái

Cácđ i t ng qu n lý tr ng thái c a ASP NET – Client-based State

– Server-based State

© 2009 Khoa CNTT - HKHTN

2

Thi t k & L p trình Web 2 – Gi i thi u môn h c

N i

N i dung dung

N i

N i dung dung

Gi i thi u v Qu n lý tr ng thái

Cácđ i t ng qu n lý tr ng thái c a ASP NET

– Client-based State

– Server-based State

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Qu n

Qu n lý lý Tr ng Tr ng thái thái

Qu n

Qu n lý lý Tr ng Tr ng thái thái

M i ng d ng web c nchia s thông tin gi a các request

Giao th cHTTP là Stateless – M i request g i đ n server đ c xem là m t request m i – Thông tin c a request tr c s không t n t i cho request sau

ASP NET cung c p các c ch cho phép qu n lý thông

tin gi a các request – Các đ i t ng qu n lý tr ng thái (State) phía Client và Server

– C ch Cache

Trang 2

N i

N i dung dung

N i

N i dung dung

Gi i thi u v Qu n lý tr ng thái

Cácđ i t ng qu n lý tr ng thái c a ASP NET

– Client-based State

– Server-based State

© 2009 Khoa CNTT - HKHTN

5

Client Client based State based State Client

Client based State based State

Là cácđ i t ng tr ng thái đ cl u tr máy Client

Bao g m – ViewState – Hidden Fields – QueryStrings – Cookies

© 2009 Khoa CNTT - HKHTN

6

Thi t k & L p trình Web 2 – Gi i thi u môn h c

ViewState

Duy trì thông tin tr ng thái c a các controltrênm t trang

webgi a các l n postbackx y ra

web gi a các l n postbackx y ra

< input type="hidden" name=" VIEWSTATE" id=" VIEWSTATE"

value="/wEPDwUJNjI3NjE4OTU5ZGTI7l3xKXYAdsL8nY4w0bddpzSkRQ"

/>

Không thích h p cho các control ch a nhi u d li u nh

GridView, Repeater…

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Enable & Disable Enable & Disable ViewState ViewState Enable & Disable

Enable & Disable ViewState ViewState

M cđ nh ViewState đ c kích ho t(enable) cho t t c các Server controls

Disable ViewState

– Page Level

Control Level

<%@ Page EnableViewState="false" … %>

– Control Level

<asp:GridView EnableViewState="false" … %>

M t s Control c b n nh TextBox, DropDownList… luôn duy trì ViewStatecho dù ViewStateđã b Disable

duy trì ViewStatecho dù ViewStateđã b Disable

Trang 3

L p

L p trình trình Qu n Qu n lý lý ViewState ViewState

L p

L p trình trình Qu n Qu n lý lý ViewState ViewState

M cđích: l uthông tin b sung gi a các l n post-back

trên cùng m t trang web

ViewState có th l u tr d li u thu cki u c s ho c

ki u tham chi u(đ i t ng - object)

ki u tham chi u( đ i t ng object)

L u ViewState ( name – value)

Vi St t [" R tC t "] t

Truy xu t ViewState (ph iép v ki ut ng ng)

ViewState[" RequestCount "] = count;

int count = (int) ViewState[" RequestCount "];

© 2009 Khoa CNTT - HKHTN

9

Serialization &

Serialization & Deserialization Deserialization Serialization &

Serialization & Deserialization Deserialization

Thông tin trong ViewStateđ cserialize vào th iđi m runtimeđ l u tr và sauđódeserializeđ khôi ph c runtime đ l u tr và sauđódeserializeđ khôi ph c thànhđ i t ngban đ u

– Serialization: Qui trình chuy n Q y đ i m t object sang m t dãy j g y bytes đ l u tr

– Deserialization: Qui trình khôi ph c dãy bytes thành đ i t ng

ban đ u

 m tđ i t ngcó th serialize và l u tr đ c trong ViewState ta ph ib sung thu c tính Serializable vàođ u ViewState, ta ph ib sung thu c tính Serializable vàođ u khai báo l p

[Serializable]

© 2009 Khoa CNTT - HKHTN

public class Book { … } 10

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Ví d d

Ví d d

protected void Page_Load(object sender, EventArgs e)

{

if(Page.IsPostBack==false)

{

Book book = new Book(1, "Harry Potter");

ViewState [ "myBook"] = book;

}

}

protected void Button1_Click(object sender, EventArgs e)

{

Book book = ( Book) ViewState [ "myBook"];

Label1.Text = book.ID + " " + book.BookName;

}

Thi t k & L p trình Web 2 – Gi i thi u môn h c

HiddenField

L u tr tr ng thái trong WebForm gi a các postback

Render v phía trình duy t v i th

<input type=‘hidden’ />

Có th s d ng hidden field đ l u tr tr ng tháic a các control trong WebFormngay c khi ViewState b disable

Ch thích h p trong vi c l u tr d li u thu c v ki u c

s ( int, float, string, … )

Trang 4

Là thông tin b sung thêm vào cu i chu i URL

http://domain/pathfile?name1=value1&name2=value2

Query string y gđ cUrl encoded( các ký t( ý đ c bi t ho c

d u xu t hi n trong query string đ u đ c thay th )

http://www.whatever.com/file.aspx? p resum%E9 & name = John+Lock

Thông tin truy nđi b gi i h n(IE – 2Kb)

KhôngKhôngthích h p truy n các thông tinthích h p truy n các thông tin b o m tb o m t

Nh n thông tin truy n t Query string

string name = Request QueryString[“ name "] ToString();

© 2009 Khoa CNTT - HKHTN

string name = Request.QueryString[ name ] ToString();

13

Cookies

Là cácthông tin (name – value) đ cl u trongm t ho c nhi ut p tin trên máy tính client

nhi ut p tin trên máy tính client

Các t p tin cookies do Browser qu n lý

Kích th cc a t p tin cookies cógi i h n(kho ng 4Kb)

Browser s t đ ng xóafile cookie vào th iđi m đ c ch

đ nh trong thu c tínhExpiresc a cookie

 ng d ngl u các thông tin v Client đ tái s d ng

nh ng l n s d ng sau:

nh ng l n s d ng sau:

– Thông tin cá nhân trong hóa đ n thanh toán Thông tin Username & Password

© 2009 Khoa CNTT - HKHTN

– Thông tin Username & Password – …

14

Thi t k & L p trình Web 2 – Gi i thi u môn h c

C

C ch ch ho t ho t đ ng đ ng c a c a Cookie Cookie

C

C ch ch ho t ho t đ ng đ ng c a c a Cookie Cookie

Browser và Server traođ i cookie khi có request đ n m t

page b t k trongcùng m t site (domain)

page b t k trongcùng m t site (domain)

Browser qu n lýkhôngcho cookie trong domain này

truy nđ n domain khác

truy nđ n domain khác

S l ngfile cookie trong m t domain cógi i h n(IE – 20

files))

Thi t k & L p trình Web 2 – Gi i thi u môn h c

HttpCookie

 L p đ i t ng qu n lý thông tin Cookie trong ASP.NET

Cá th tí h Htt C ki

 Các thu c tính c a HttpCookie – Name : tên c a Cookie – Value : Giá tr c a Cookie – Domain : domain cookie này thu c v – Expires : xác đ nh th i gian có hi u l c c a Cookie – HasKeys : Cookie có t p giá tr con hay không – Values : t p các giá tr c a Cookie

Trang 5

S d ng Cookies

S d ng Cookies

Ghi cookies

Response Cookies [cookie][(key)|.attribute] = value;

• cookie: tên bi n

• key : tham s tùy ch n, có th y y đ t nhi u giá tr cho 1 cookie g

• attribute: thu c tính (domain, path,….)

 c giá tr cookies

value = Request Cookies [cookie][(key)|.attribute]

© 2009 Khoa CNTT - HKHTN

17

Ví d d Cookies Cookies đ n Ví

Ví d d Cookies Cookies đ n

Ghi

Response.Cookies[ "userName“ ].Value = "mike“;

Response.Cookies[ "userName“ ].Expires = DateTime.Now.AddDays(1);

if (Request.Cookies[ "userName“ ] != null) LabelUsername.Text = Request.Cookies[ "userName“ ].Value;

 Xóa

Response.Cookies[ "userName“ ].Expires=DateTime.Now.AddDays( -1 );

© 2009 Khoa CNTT - HKHTN

18

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Ví d d Cookies Cookies có có các các subkey subkey

Ví d d Cookies Cookies có có các các subkey subkey

Ghi

Response.Cookies[ "userInfo“ ][ "userName“ ] = "mike“ ;

Response.Cookies[ "userInfo“ ][ "lastVisit“ ]=DateTime.Now.ToString();

Response.Cookies[ "userInfo“ ].Expires = DateTime.Now.AddDays(1);

if (Request.Cookies[ "userInfo“ ] != null) {

LabelUsername.Text = Request.Cookies[ "userInfo“ ][ "userName“ ];

LabelLastVisit.Text = Request.Cookies[ "userInfo“ ][ "lastVisit“ ];

}

Xóa

Response.Cookies[ "userInfo“ ].Expires = DateTime.Now.AddDays( -1 );

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Ví d d HttpCookie HttpCookie Ví

Ví d d HttpCookie HttpCookie

Ghi

HttpCookie cookie = new HttpCookie( “userInfo” );

cookie[ "userName“ ] = "mike“;

cookie[ "lastVisit“ ] = DateTime.Now.ToString();

cookie.Expires = DateTime.Now.AddDays(1);

Response.Cookies.Add(cookie);

HttpCookie cookie = Request.Cookies[ "userInfo“ ];

if (cookie != null) { LabelUsername.Text = cookie[ "userName“ ];

LabelLastVisit.Text = cookie[ "lastVisit“ ];

} }

Trang 6

N i

N i dung dung

N i

N i dung dung

Gi i thi u v Qu n lý tr ng thái

Cácđ i t ng qu n lý tr ng thái c a ASP NET

– Client-based State

– Server-based State

© 2009 Khoa CNTT - HKHTN

21

Server Server based State based State Server

Server based State based State

Là cácđ i t ng tr ng thái đ cl u tr máy Server

Bao g m – Session – Application

© 2009 Khoa CNTT - HKHTN

22

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Session

M t phiên làm vi c (session) là m t chu i các thao tác c a

ng i dùng trên cùng m t web application

ng i dùng trên cùng m t web application

V i m i phiên làm vi c c a client, s có m t Session

Object đ c t o ra,

– c l u tr trên server

– Cung c p nh ng thông tin v phiên làm vi c hi n hành c a

client

– c duy trì khi ng i dùng duy t t WebForm sang

WebForm khác trong cùng m t site

– B h y khi:

• Ng i dùng t ng minh thoát kh i session

• Sau m t kho ng th i gian (time-out) , m c Sau t o g t g a (t e out) , c đ nh là 20 phút đ à 0 p út

Thi t k & L p trình Web 2 – Gi i thi u môn h c

S d ng d ng Session Session

S d ng d ng Session Session

 Kh i t o/ Gán giá tr cho bi n Session

Session[“name”] = value;

 c d li u t bi n Session

Object obj = (Object)Session[“name”];

Object obj = (Object)Session[ name ];

 Qui đ nh kho ng th i gian t n t i c a m t phiên làm vi c

Session.Timeout = minutes;

Session.Timeout minutes;

 L y đ nh danh ID duy nh t c a phiên làm vi c

Session.SessionID

 H y phiên làm vi c (h y c bi n d li u)

Session.Abandon();

Trang 7

Ví d

Ví d Ki m tra Quy n Ki m tra Quy n đ ng nh p đ ng nh p

Ví d

Ví d Ki m tra Quy n Ki m tra Quy n đ ng nh p đ ng nh p

Làm th nào đ ng n không cho ng i dùng truy c p

vào các trang web n u ch a đ ng nh p?

Ý t ng

Ý t ng

– Dùng các bi n Session đ l u tr ng thái đ ng nh p c a ng i

dùng:

Session[“IsLogin”] = 0/1 : L u tr ng thái đ ng nh p

Session[“Username”] : L u Tên đ ng nh p

S i [“A th ti ti ”] L L i đ h

Session[“Authentication”]: L u Lo i quy n đ ng nh p

© 2009 Khoa CNTT - HKHTN

25

Làm th nào đ ng n không cho ng i dùng truy c p vào Làm th nào đ ng n không cho ng i dùng truy c p vào các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

1 Kh i t o giá tr m c đ nh cho bi n Session[“IsLogin”] = 0 (ch a

1 Kh i t o giá tr m c đ nh cho bi n Session[ IsLogin ] = 0 (ch a

đ ng nh p)

//global.asax

<script language="C#" runat="server">

void Session_OnStart (Object sender, EventArgs E) {

Session[“IsLogin"] = 0;

} /

</script>

© 2009 Khoa CNTT - HKHTN

26

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Làm th nào đ ng n không cho ng i dùng truy c p vào

Làm th nào đ ng n không cho ng i dùng truy c p vào

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

2 T o trang Login aspx cho phép ng i dùng đ ng nh p

2 T o trang Login.aspx cho phép ng i dùng đ ng nh p

– N u ki m tra thông tin đ ng nh p không đúng thì hi n th thông

báo yêu c u đ ng nh p l i

– Ng Ng c l i n u c l i, n u ÚNG thì dùng m t (ho c nhi u) bi n Session ÚNG thì dùng m t (ho c nhi u) bi n Session

đ l u tr ng thái login thành công l i

//Login.aspx.cs

void btnLogin_Click(Object Src, EventArgs E)

{

if ([Thong tin dang nhap dung])

Session [“IsLogin"] = 1;

else

Response.Write(“Vui lòng nh p l i!”);

}

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Làm th nào đ ng n không cho ng i dùng truy c p vào Làm th nào đ ng n không cho ng i dùng truy c p vào các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

3 Trong t t c các trang mu n b o m t, ki m tra ng i dùng đã login hay ch a, n u ch a thì redirect l i trang login.aspx

//MyForm.aspx.cs void Page_Load(Object Src, EventArgs E){

i t D D Nh (I t32) S i [“I L i "]

int nDaDangNhap = (Int32) Session [“IsLogin "];

if (nDaDangNhap == 0)

Response.Redirect(“Login.aspx”);

}

Trang 8

Làm th nào đ ng n không cho ng i dùng truy c p vào

Làm th nào đ ng n không cho ng i dùng truy c p vào

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

các trang web n u ch a đ ng nh p?

4 T o x lý khi ng i dùng logout

4 T o x lý khi ng i dùng logout

 Reset tr ng thái login là ch a đ ng nh p

//MyForm.aspx.cs

void btnLogout_Click(Object Src, EventArgs E){

Session [“IsLogin"] = 0; g Response.Redirect(“Login.aspx”);

}

© 2009 Khoa CNTT - HKHTN

29

Application

Qu n lý d li u dùng chung trong cùng m t ng d ng web

Có th truy xu t b i t t c các session trong site

T n t i trong su t chu trình s ng c a ng d ng web

© 2009 Khoa CNTT - HKHTN

30

Thi t k & L p trình Web 2 – Gi i thi u môn h c

c

c và và Ghi Ghi Application Application

c

c và và Ghi Ghi Application Application

Ghi thông tin

Application ["SiteRequestCount"] = 0;

Application[ "SiteName“] = "www.site.com";

 c n i dung t Application State

int count = (int)Application[ "SiteRequestCount"];

string name = (string)Application[ "SiteName"];

Thi t k & L p trình Web 2 – Gi i thi u môn h c

X lý lý v n v n đđ truy truy xu t xu t đ ng đ ng th i th i Application Application

X lý lý v n v n đđ truy truy xu t xu t đ ng đ ng th i th i Application Application

Lock application state đ h n ch l i x y ra do vi c truy

xu tđ ng th i b i nhi u client requestg q

Application Lock ();

if ( Application[ "SiteRequestCount"] == null) {

Application[ "SiteRequestCount"] = 0;

}

count = ( int) Application[ "SiteRequestCount"];

count++;

Application[ "SiteRequestCount"] = count;

Application UnLock ();

Trang 9

Kh i

Kh i t o t o Application Application

Kh i

Kh i t o t o Application Application

Kh i t o bi n Application trong file Global.asax

<%@ Application Language="C#" %>

<%@ Application Language C# %>

< script runat="server">

void Application_Start( object sender, EventArgs e)

{

// Code that runs on application startup pp p

Application[ "SiteRequestCount"] = 0;

Application[ "SiteName"] = "www.somesite.com";

}

</script>

© 2009 Khoa CNTT - HKHTN

33

Ví d

Ví d – – m s l n duy t 1 trang web

Ví d

Ví d – – m s l n duy t 1 trang web

//global.asax

<script language ="C#" runat= "server" >

void Application_OnStart (Object sender, EventArgs E) { Application[“SoLan"] = 0;

}

</script>

//M form asp cs //Myform.aspx.cs

void Page_Load(Object Src, EventArgs E){

Application.Lock();

Application[“SoLan"] = (Int32) Application [“SoLan"] + 1;

Application.UnLock();

Response.Write(“S l n vào trang này :" + Application[“SoLan"]); }

© 2009 Khoa CNTT - HKHTN

}

34

Thi t k & L p trình Web 2 – Gi i thi u môn h c

N i

N i dung dung

N i

N i dung dung

Gi i thi u v Qu n lý tr ng thái

Cácđ i t ng qu n lý tr ng thái c a ASP NET

– Client-based State

– Server-based State

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Cache

Cache là m tvùng b nh trên server/client/proxyl u tr cácthông tin th ng xuyên s d ngc a ng d ng web cácthông tin th ng xuyên s d ngc a ng d ng web

đ tái s d ng cho các l n truy c p sau mà không c n x

lý l i

Do đ c l u tr trong b nh (memory) nên cho phép truy xu t nhanh chóng

Nâng cao hi u n ng(performance) c a ng d ng web

Có th l u b t k ki u d li u nào

T n t i trong kho ng th i gian qui đ nh

Trang 10

C ch ch Cache Cache

C

C ch ch Cache Cache

1 Page Output Caching

• L u k t qu render trên m t WebForm và s d ng l i nh ng l n

request sau q

– L u toàn b WebForm

– L u m t ph n WebForm

2 Application Data Caching

• Cho phép l p trình l u các p p p đ i t ng trong Cache g g

© 2009 Khoa CNTT - HKHTN

37

Page Output Caching

L u toàn b trang web – Thêm ch đ nh OutputCache vào đ u trang ASPX

• Duration: Th i gian (second) l u trang web

• Location: Qui Location: Qui đ nh n i l u cache: Any (default), Client, Server, đ nh n i l u cache: Any (default) Client Server ServerAndClient, DownStream, None

• VaryByParam: L u nhi u phiên b n khác nhau c a trang web ph thu c vào tham s truy n t querystring

thu c vào tham s truy n t querystring

<%@ OutputCache Duration="60" Location=“Server” VaryByParam="None" %>

<%@ OutputCache Duration="60" VaryByParam=“CatId“ %>

© 2009 Khoa CNTT - HKHTN

38

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Page Output Caching

L u m t ph n trang web

– Control caching

• S d ng Web User Control v i ch th OutputCache đ u trang

ASCX

– Post-cache substitution

• Thi t l p OutputCache cho toàn b trang web

• Qui đ nh nh ng vùng Substitution cho phép thay đ i n i dung

Thi t k & L p trình Web 2 – Gi i thi u môn h c

Ví d d Post Post cache Substitution cache Substitution Ví

Ví d d Post Post cache Substitution cache Substitution

<div id="cartBox">

<h2>Your Shopping Cart</h2>

S b i i id " bC " " “ h d " C " /

<asp:Substitution id="subCart" runat="server“ MethodName=" GetCart " />

</div>

public static string GetCart (HttpContext context)

{

ShoppingCart cart = (ShoppingCart)context.Session["Cart"]; // Handle missing cart

… // Output the cart item markup for this session to a string string output = "";

foreach (CartItem item in cart) {

output += "<p class='cartRow'>";

output += item.Name + "</p>";

}

return output;

}

Ngày đăng: 09/05/2014, 14:41

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm