Quản lý trạng thái trong ASP.NET

Preview:

DESCRIPTION

Quản lý trạng thái và ứng dụng trong ASP.NET; Chi tết các đối tượng trong quản lý trạng thái.

Citation preview

  • Cng ngh .NET.NET Technology

    Lng Trn Hy HinB mn Cng ngh Phn mm

    Khoa Cng Ngh Thng Tin

    Trng HSP TP. H Ch Minh

  • Chng 3:

    ASP.NET Application & State Management

  • Cng ngh NET 3 HIENLTH

    Ni dung

    Request

    Response

    Server

    Qun l trng thi

    o View state

    o Session state

    o Cookie

    Cross-page Postback

    Application

  • Cng ngh NET 4 HIENLTH

    Tng quan

  • Cng ngh NET 5 HIENLTH

    Request Object

    Request l mt th hin ca lp HttpRequest, Browserdng Request object gi thng tin cn thit tiServer

    Dng c thng tin t client gi ln (header, querystring, cookies, )

    Data

  • Cng ngh NET 6 HIENLTH

    Request Object (tt)

    Cc thuc tnh

    RequestType: tr v phng thc truyn d liu tclient n server gm 2 phng thc POST v GET

    C php

    valMethod=Request.RequestType

  • Cng ngh NET 7 HIENLTH

    Ly d liu gi i

    Request.Form("Phn_t_cn_c"): c gi tr ca mt phn t c gi theo phng thc POST.

    Request.QueryString("Phn_t_cn_c"): c gi tr ca mt phn t c gi theo phng thc GET.

  • Cng ngh NET 8 HIENLTH

    Request Object - POST

    V d: thit k giao din nh hnh

  • Cng ngh NET 9 HIENLTH

    M giao din

    trang 1

    username

    password

  • Cng ngh NET 10 HIENLTH

    Request Object - POST

    V d (tt):Ly gi tr ca UserName v Password trn form

    string sUser, sPass;sUser = Request.Form["txtUser"];sPass = Request.Form["txtPass"];//Xut ra mn hnh

  • Cng ngh NET 11 HIENLTH

    Request Object - GET

    Ly d liu t cc phn t ca form:

    C php:

    Nu tham s khng c gi tr th gi tr tr v ca tham s khi s dng Request.QueryString l null.

    Request.QueryString[varName]

  • Cng ngh NET 12 HIENLTH

    Request Object - GET

    UserName:

  • Cng ngh NET 13 HIENLTH

    Request Object - GET

    Ti Server (file CheckUser.aspx), ly gi tr ca UserName v Password

    string strUser, strPws;

    strUser = Request.QueryString["txtUser"];

    strPws = Request.QueryString["txtPass"];

  • Cng ngh NET 14 HIENLTH

    Request Object - GET

    Hoc

    Tin Gio dc

    Var1=Request.QueryString[CatID];//Var1=eduVar2=Request.QueryString[NewsID];//Var2=98708

    Ti ReadNews.aspx mun ly gi catID and NewsID, s dng c php:

  • Cng ngh NET 15 HIENLTH

    Demo Query String

    To mt ng dng truy cp CSDL GameList gm:

    oGameList.aspx: hin th tn tt c cc game c trong database, vi mi game to url dng querystring vi id ca game , user kch vo s m ra trang GameDetail.aspx cho php xem chi tit thng tin ca game

    oGameDetail.aspx: ly id t querystring, c CSDL GameList v tr v chi tit tt c thng tin ca game.

  • Cng ngh NET 16 HIENLTH

    Query String

  • Cng ngh NET 17 HIENLTH

    Query String

    To trang GameList.aspx

    o Trang ny c control l label s hin th danh sch cc tn game.

    Label: c id l lblGameList

  • Cng ngh NET 18 HIENLTH

    Query String

    Trang GameList.aspx khi thc thi

    Danh sch cc tn game ly trong database

    Hyperlink xem chi tit ca Thun Thin Kim

  • Cng ngh NET 19 HIENLTH

    Query String

    To trang GameDetail.aspx

    o Trang ny c 4 label cha cc thng tin chi tit ca game:

    Tn game: lblTenGame, nh sn xut: lblNSX, nh pht hnh: lblNPH, th loi: lblTheLoai

  • Cng ngh NET 20 HIENLTH

    Query String

    Phn x l ca GameDetail.aspxprotected void Page_Load(object sender, EventArgs e)

    {// ly query stringstring sid = Request.QueryString["id"]; // tham s idif (sid != null) // kim tra xem tham s ny c tn ti hay khng{

    // truy cap database de lay du lieustring sConn = @"server=.; database=gamelist; trusted_connection=true";SqlConnection conn = new SqlConnection(sConn); // to i tng kt nitry{

    conn.Open(); // m kt nistring query = string.Format("select * from DanhMuc where ID={0}",sid);SqlCommand cmd = new SqlCommand(query, conn);SqlDataReader reader;reader = cmd.ExecuteReader(); // thc thi cu truy vn

    // phn tip theo trong slide k

  • Cng ngh NET 21 HIENLTH

    Query String

    // tip theo ca silde trcif (reader.HasRows) // nu c d liu

    {reader.Read(); // c 1 dng d liulblTenGame.Text = reader["TenGame"].ToString();lblNSX.Text = reader["NhaSanXuat"].ToString();lblNPH.Text = reader["NhaPhatHanh"].ToString();lblTheLoai.Text = reader["TheLoai"].ToString();

    }reader.Close(); conn.Close(); // ng kt ni

    }catch (Exception ex){

    Response.Write(ex.Message); // hin th thng bo li}

    } // end if (sid !=null)} // end method Page_Load

  • Cng ngh NET 22 HIENLTH

    Query String

    Chy demo

    id = 5 l m game C Long

  • Cng ngh NET 23 HIENLTH

    Response Object

    Response: i tng ny c dng gi ni dung (mt xu) bt k v cho trnh duyt

    Phng thc:o Response.Write() dng gi gi tr biu

    thc truyn vo cho pha trnh duyt.

    o Response.Redirect(a ch URL): Chuyn ti mt trang khc.

    Data

  • Cng ngh NET 24 HIENLTH

    Response Object (tt)

    Cc phng thc

    Response.Clear(): Xa vng tm

    C php:

    Response.Flush() dng a d liu cn trong b m pha server v cho pha trnh duyt.

    Response.End(): Kt thc tin trnh x l trn Server v y d liu ti Client

    Response.Clear()

  • Cng ngh NET 25 HIENLTH

    Response Object

    Cc thuc tnh

    Buffer: c 2 gi tr true v false quy nh cch

    truyn ti d liu:

    o True: Hon tt cng vic v gi mt ln

    o False: Thc hin xong n u th gi n

  • Cng ngh NET 26 HIENLTH

    Server Object

    i tng Server cung cp thng tin ca Web server chong dng, bao gm cc phng thc gip chuyn iu khingia cc trang vi nhau, ly thng tin v m li, encode,

    Cc thuc tnh

    o MachineName: tn server

    o ScriptTimeout: thit lp thi gian x l ti a 1 file

    V d:

    Server.ScriptTimeout = 100s //thit lp thi gian mc nh

  • Cng ngh NET 27 HIENLTH

    Server Object

    Cc phng thc

    MapPath(URL): nh x ng dn o thnh ng

    dn vt l cho mt tp tin trn Server

    o C php:

    o Path l chui thc hin ng dn tng i ca tp tintrn ng dng Web

    o Phng thc s tr v chui hin thc ng dn vt lca tp tin .

    Server.MapPath(path)

  • Cng ngh NET 28 HIENLTH

    Server Object

    Transfer: gi tt c thng tin m n x l t trang

    ASPX hin hnh sang trang ASPX khc. C php:

    Trong , tham s path l ng dn ca tp tin ASPX

    cn chuyn iu khin.

    Lu :

    o s dng k hiu ~ ch n ng dn tng i

    o s dng k hiu .. ch n ng dn tuyt i

    Server.Transfer(path)

    Phn bit Server.Tranfer vs Reponse.Redirect

  • Cng ngh NET 29 HIENLTH

    Server Object

    HtmlEncode(str): dng m ho HTML thnhchui

    C php:

    Server.HTMLEncode(str)

  • Cng ngh NET 30 HIENLTH

    Server Object

    Khi m ho chui HTML sang chui bnh

    thng nu gp cc k t nh sau s chuyn

    sang k t tng ng:

    o K t chuyn thnh >

    o K t & chuyn thnh &

    o Du i chuyn thnh "

  • Cng ngh NET 31 HIENLTH

    Server Object

    HtmlDecode(strcontent):gii m cc th HTML

    V d:

    Str = n>5

    Str = Server.HtmlDecode(str); // kt qu n>5

  • Cng ngh NET 32 HIENLTH

    Server Object

    Phng thc URLEncode: Tng t nhphng thc HTMLEncode, phng thcURLEcode dng m ho URL thnh chui

    C php:

    Quy tc chuyn:

    o K t khong trng chuyn thnh du +

    o K t khng thuc k t ch v s s chuyn thnh s hexadecimal

    Server.URLEncode(str)

  • Cng ngh NET 33 HIENLTH

    Qun l trng thi

  • Cng ngh NET 34 HIENLTH

    Qun l trng thi

    Mi ng dng cn chia s thng tin gia cc request

    ASP.NET cung cp cc c ch cho php chia s thng tin gia cc Request:

    o Cc i tng qun l trng thi (State) pha client v server.

    o C ch Cache

  • Cng ngh NET 35 HIENLTH

    Cc i tng qun l trng thi

    Client-based State

    o c lu tr my Client

    o Gm: ViewStates, Hidden Fields, QueryStrings, Cookies

    Server-based State

    o c lu tr my Server

    o Gm: Session, Application

  • Cng ngh NET 36 HIENLTH

    View state

    Cho php lu cc kiu d liu ca .NET

    Lu tr client side, trong hidden field ca trang web

    Lu tr trong cc ln post back ca trang. Mt d liu khi user nhp vo URL mi

    Phm vi gii hn trong mt trang web

    Bo mt: mc nh trng thi insecure. Tuy nhin ta c th thit lp page directive m ha

    Hn ch: lu tr s lng ln thng tin trong viewstate s lm chm thi gian response v request

    Thng dng ci t thng tin c bit no ca page

  • Cng ngh NET 37 HIENLTH

    View state

    View state l u tin chn la u tin khi cn lu tr thng tin trong phm vi ca mt trang web

    View state cng c s dng bi ASP.NET Web control, cho php cc control ny duy tr nhng thuc tnh gia cc ln postback

    C th add d liu vo

    view state collection

    thng qua thuc tnh

    Page.ViewState

    int count;if (ViewState["Count"] == null)

    count = 0;else

    count = (int) ViewState["Count"];count += 1;

    ViewState["Count"] = count;

    Label1.Text = string.Format("S ln postback {0}", count);

  • Cng ngh NET 38 HIENLTH

    View state

    Thun li:

    View state khng s dng memory trn server

    View state cng khng b rng buc no (nh time out)

    Tnh hung hn ch khi s dng view state

    Cn thit lu tr d liu c mc nhy cm cao. View state cng c th m ha, nhng session la chn tt hn

    Cn thit lu tr thng tin c s dng trong nhiu trang. Trong tnh hung ny ta s dng session, cookie hoc query string.

    Cn thit lu tr thng tin ln v khng mun lm chm thi gian truyn ti, nn s dng database, cache hoc session.

  • Cng ngh NET 39 HIENLTH

    Session l g?

    User 1

    User 2

    User 3

    Session: user 1Session: user 2Session: user 3

  • Cng ngh NET 40 HIENLTH

    Session l g?

    Khi nim phin lm vic Mi khi user request mt trang web ln u tin th

    phin lm vic c to ra. Mt nhn dng phin lm vic c cp bi server Phin lm vic kt thc khi

    Ngi lp trnh hy Kt thc cycle life (quy nh bi Timeout) User ng trnh duyt

    Phin lm vic l cch thc trao i/chia s d liu gia cc trang web trong Web app.

  • Cng ngh NET 41 HIENLTH

    Session

    Cho php lu tr d liu kiu .NET

    Lu tr trn b nh ca server

    Thi gian sng kt thc sau mt khong thi gian nh ngha trc (thng l 20 pht, c th thay i, hoc lp trnh hy)

    Phm vi ton b ng dng .NET

    Tnh bo mt cao, do d liu lu tr trn server, khng bao gi chuyn cho client v mi client c client session id ring

    Lu tr session vi d liu ln cng c th lm chm server, c bit nu nhiu ngi truy cp ng thi, do mi user s c bn copy session ring!

  • Cng ngh NET 42 HIENLTH

    Session

    Mi user s c gn mt gi tr gi l Session id, gi tr ny l duy nht

    c lu tr trong non-persistent cookie cho n khi trnh duyt ng.

    Session state s dng c php collection nh l view state

    int count;if (Session["Count"] == null)

    count = 0;else

    count = (int)Session["Count"];count++;Session["Count"] = count;

    int count;if (Session["Count"] == null)

    count = 0;else

    count = (int)Session["Count"];count++;Session["Count"] = count;

  • Cng ngh NET 43 HIENLTH

    Session cu hnh

    Thi gian sng ca session c th thit lp thng qua web.config (n v l pht)

    Session c th lm vic m khng cn cookie

    Trong trng ny Session ID lu tr trong URL

    http://server/(h44a1e55c0breu552yrecobl)/page.aspxhttp://server/(h44a1e55c0breu552yrecobl)/page.aspx

  • Cng ngh NET 44 HIENLTH

    Session

    Phng thc

    Abandon(): gii phng vng nh c dng duy tri tng Session trn Web Server ngay khi c githc hin. Nhng yu cu sau c Web server coinh l mt ngi dng mi.

    Remove(SessionName): xo d liu trn bin VarSession

    RemoveAll(): Xo d liu, nhng sessionID vn tn ti

  • Cng ngh NET 45 HIENLTH

    Session

    V d: To trang (Page) hoc User Control l Login.aspx

    Thit k giao din nh sau:

  • Cng ngh NET 46 HIENLTH

    Session

    Khi to v Hu thng tin ng nhp ca ngi dng trong Session

    void Session_Start(object sender, EventArgs e)

    {

    // Tng s khch ving khi c 1 phin lm vic ca user

    Application["SoKhachVieng"] = (int)Application["SoKhachVieng"] + 1;

    // Thit lp thi gian TimeOut cho mi phin l 30 pht

    Session.Timeout = 30;

    // t trng thi ban u ca user l cha ng nhp

    Session["LOGIN_OK"] = false;

    }

  • Cng ngh NET 47 HIENLTH

    protected void btnLogin_Click(object sender, EventArgs e) {

    if (Authority(txtUserName.Text, txtPassword.Text)) {

    // Lu thng tin ng nhp thnh cng vo SessionSession["LOGIN_OK"] = true; // n chc nng LoginpanelLogin.Visible = false; // Hin th chc nng logout v li cho mng LblGreeting.Text = "Cho mng bn " +

    txtUserName.Text + " ng nhp website!"; } else

    { // Lu thng tin ng nhp tht bi vo Session Session["LOGIN_OK"] = false;

    } }

  • Cng ngh NET 48 HIENLTH

    Session

    protected bool Authority(string user, string pwd)

    {

    if (user == "admin" && pwd == "12345")

    {

    return true;

    }

    return false;

    }

  • Cng ngh NET 49 HIENLTH

    Cookie

    L mu tin nh (dng chui) dng lu tr thng tin ngi dng trn my ca client (trong b nh hoc file text nh).

    Lifetime c thit lp bi ngi lp trnh, c s dng trong nhiu trang v trong cc ln visit site

    Phm vi ton b ng dng .NET

    Khng bo mt, do ton b d liu c gi cho client. Cookie c th modify d dng.

    Tng t nh view state, hn ch ch s dng d liu nh

    Thng lu tr thng tin c nhn custom cho website.

  • Cng ngh NET 50 HIENLTH

    Cookie

    thit lp mt cookie: To i tng System.Net.HttpCookie To d liu dng chui Add i tng cookie vo i tng Response ca

    trang web hin ti

    HttpCookie cookie = new HttpCookie(Account");cookie[Username"] = Nguyen Mai Chi";Response.Cookies.Add(cookie);

    HttpCookie cookie = new HttpCookie(Account");cookie[Username"] = Nguyen Mai Chi";Response.Cookies.Add(cookie);

  • Cng ngh NET 51 HIENLTH

    Cookie

    truy cp cookie S dng i tng Request ly cookie Kim tra xem cookie khc null? Truy cp gi tr cookie qua thuc tnh key

    string str = "";HttpCookie cookie = Request.Cookies["Account"];if (cookie != null)

    str = cookie["Username"];

    string str = "";HttpCookie cookie = Request.Cookies["Account"];if (cookie != null)

    str = cookie["Username"];

  • Cng ngh NET 52 HIENLTH

    Cookie

    Cookie c phn lm 2 loi Persistent cookies/permanent cookie

    Lu tr trong a cng ca client cho n khi ht hn, dng cookie ny c thit lp ngy ht hn (expiration date)

    Non persistent cookie/temporary cookie Khng nh ngha thi gian ht hn, cookie c lu tr

    trong browser memory, kt thc khi ng trnh duyt!

    Khng c s khc nhau khi s dng persistent v non persistent cookie

  • Cng ngh NET 53 HIENLTH

    Cookie

    Khai bo Persistent cookie

    HttpCookie cookie = new HttpCookie("Account");cookie["Username"] = "Nguyen Mai Chi";cookie["email"] = chiaki2412@yahoo.com";// khai bo thi gian ht hn cho cookiecookie.Expires = DateTime.Now.AddDays(5);// add cookie vo response ca trang webResponse.Cookies.Add(cookie);

    HttpCookie cookie = new HttpCookie("Account");cookie["Username"] = "Nguyen Mai Chi";cookie["email"] = chiaki2412@yahoo.com";// khai bo thi gian ht hn cho cookiecookie.Expires = DateTime.Now.AddDays(5);// add cookie vo response ca trang webResponse.Cookies.Add(cookie);

  • Cng ngh NET 54 HIENLTH

    Cross-page Postback

    Cross page postback l dng postback gi ti trang khc

    Cc button control nh Button, ImageButton v LinkButton u c thuc tnh PostBackUrl

    s dng Cross-page postback Thit lp PostBackUrl cho web form cn chuyn

    n Khi user click vo button Page s c gi ti URL mi vi tt c cc gi tr

    ca cc control trong trang hin thi.

  • Cng ngh NET 55 HIENLTH

    Cross-page Postback

    Trang cross page c th truy cp trang trc thng qua thuc tnh PreviousPage

    protected void Page_Load(object sender, EventArgs e){

    if (PreviousPage != null){

    lblInfo.Text = "You came from " +PreviousPage.Header.Title;

    }}

    protected void Page_Load(object sender, EventArgs e){

    if (PreviousPage != null){

    lblInfo.Text = "You came from " +PreviousPage.Header.Title;

    }}

  • Cng ngh NET 56 HIENLTH

    Cross-page Postback

    truy cp chi tit hn, cc gi tr ca control trn form, th cn phi gn tham chiu PreviousPage cho lp page tng ng

    Ta c th add thuc tnh vo trang ngun v c chng trang ch.

    if (PreviousPage != null) {SourcePage prevPage = PreviousPage as

    SourcePage;if (prevPage != null){

    lblInfo.Text = "Welcome" + prevPage.NameEntry;}

    }

    if (PreviousPage != null) {SourcePage prevPage = PreviousPage as

    SourcePage;if (prevPage != null){

    lblInfo.Text = "Welcome" + prevPage.NameEntry;}

    } Tn lp ca trang source

    Thuc tnh ca lp SourcePage

  • Cng ngh NET 57 HIENLTH

    Cross-page Postback

    Minh ha cross-page Postback

    To 2 trang SendInfo.aspx: cha form nhp thng tin user TargetPage.aspx: ly thng tin t user t

    SendInfo.aspx v hin th ln trnh duyt.

  • Cng ngh NET 58 HIENLTH

    Cross-page Postback

    M t control ca trang SendInfo.aspx

    Id control Kiu control Thuc tnh Din gii

    txtUsername TextBox Nhp tn user

    txtEmail TextBox Nhp a ch email

    txtCompany TextBox Nhp tn cng ty

    btnPostInfo Button PostBackUrl = ~/TargetPage.aspx

    Button thc thi thao tc Cross Page Postback

  • Cng ngh NET 59 HIENLTH

    Cross-page Postback

    Khai bo thuc tnh PostBackUrl cho button btnPostInfo

    Khai bo URL cho PostBackUrl

  • Cng ngh NET 60 HIENLTH

    Cross-page Postback

    M t trang TargetPage.aspx Ly thng tin t SendInfo.aspx v hin th ra

    trnh duyt

    Id control Kiu control Thuc tnh Din gii

    lblUsername Label - Hin th tn user

    lblEmail Label - Hin th email

    lblCompany Label - Hin th cng ty

  • Cng ngh NET 61 HIENLTH

    Cross-page Postback

    Phn x l ca TargetPage ly thng tin t SourcPage.aspx

    protected void Page_Load(object sender, EventArgs e) {// ly thng tin t previous pageif (PreviousPage != null) {

    // bin i tng source tham chiu n previous pageSendInfo source = PreviousPage as SendInfo;

    // ly cc control ca previous page (SourcePage.aspx)TextBox username = (TextBox) source.FindControl("txtUsername");TextBox email = (TextBox) source.FindControl("txtEmail");TextBox company = (TextBox)source.FindControl("txtCompany");

    // gn thng tin cho cc labellblUsername.Text = username.Text;lblEmail.Text = email.Text;lblCompany.Text = company.Text;

    } // end if} // end method Page_Load

    ID ca control trong SendInfo.aspx

    SendInfo l class page ca SendInfo.aspx

  • Cng ngh NET 62 HIENLTH

    Application

    i tng Application c s dng qun l

    tt c cc thng tin ca mt ng dng web, bao

    gm cc file, trang web, s kin, module v code

    trong th mc web o(virtual directory) v cc th

    mc con ca n.

    Application chia s thng, ngha l mt Application

    sau khi khi to th mi ngi s dng c th truy

    cp i tng ny.

  • Cng ngh NET 63 HIENLTH

    Application vs Session

    Application:

    o Chia s d liu cho tt c ngi dng ca mt ng dng (d liu ton cc, a ngi dng)

    Session:

    o Chia s d liu cho nhiu Web Form trong cng mt Session

    o Ch c Session hin hnh mi c kh nng truy cp thng tin Session ca chnh n.

  • Cng ngh NET 64 HIENLTH

    S kin Application v Session

    Application_Start: Ngi dng u tin ving thm 1 trang web trong ng dng web c gi.

    Application_End: Khi ng dng web kt thc (khng c ngi dng no m trang web ca ng dng)

    Application_Error: Xy ra khi c li trong ng dng

    Session_Start: Mt ngi dng mi, gh thm 1 trang web ca ng dng

    Session_End: Ngi dng ng trnh duyt hoc sau mt khong thi gian timeout khng request ln ng dng

  • Cng ngh NET 65 HIENLTH

    Application

    Khi to:

    i tng Application c to khi client yu cu bt k trang no trong ng dng

    Application.Lock();

    Application[TenBien] = Value ;

    Application.UnLock();

  • Cng ngh NET 66 HIENLTH

    Application

    Ly gi tr:

    = Application[tn bin];string s = (string) Application[chuoi] ;

    int count = (int) Application[count] ;

  • Cng ngh NET 67 HIENLTH

    V d dng Application

    c s lt truy cp, s ngi online

  • Cng ngh NET 68 HIENLTH

    THE END

Recommended