Tài liệu Tìm hiểu Microsoft ASP.NET: ... Ebook Tìm hiểu Microsoft ASP.NET
108 trang |
Chia sẻ: huyen82 | Lượt xem: 1997 | Lượt tải: 0
Tóm tắt tài liệu Tìm hiểu Microsoft ASP.NET, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Môc Lôc
Lêi nãi ®Çu
Thế hệ kế tiếp của Internet sẽ như thế nào? Nhiều người trong chúng ta sẽ hình dung một thế giới trực tuyến trong đó các máy PC, server, thiết bị thông minh và các dịch vụ trên nền Internet có thể tương tác khăng khít với nhau. Các doanh nghiệp sẽ có thể chia xẻ dữ liệu, tích hợp các quá trình nghiệp vụ cũng như sức lực để đem lại các giải pháp tổng hợp cho khách hàng. Và thông tin mà ta hoặc doanh nghiệp của ta cần đến sẽ luôn luôn sẵn sàng bất cứ đâu và trên bất kỳ một nền tảng hoặc một ứng dụng nào.
§ã còng lµ lý do mµ Microsoft ®a ra .NET Framework, nÒn t¶ng lµm thay ®æi tËn gèc kiÓu lËp tr×nh truyÒn thèng, lµm cho tÇm nh×n trªn hoµn toµn cã thÓ ®¹t tíi. Cïng víi ASP.NET c«ng viÖc lËp tr×nh m¸y chñ giê ®©y dÔ dµng h¬n bao giê hÕt vµ kh«ng ph¶i häc thªm ng«n ng÷ míi
Trong khu«n khæ cña mét ®å ¸n tèt nghiÖp, ®å ¸n sÏ tËp trung vµo viÖc cung cÊp mét c¸i nh×n tæng qu¸t vÒ .NET Framework vµ ASP.NET mµ kh«ng ®i s©u vµo t×m hiÓu thñ thuËt lËp tr×nh.
Víi mét øng dông nhá víi ASP.NET vµ c¬ së d÷ liÖu Oracle chØ ®Ó gióp hiÓu s©u h¬n vÒ ASP.NET cha thùc sù lµ mét øng dông kinh doanh hoµn chØnh.
PhÇn I: C¸c kÜ thuËt t¹o trang tµi liÖu
1.1 Trang tµi liÖu Internet HTML.
Sù ra ®êi cña Internet ®· t¹o mét m«i trêng th«ng tin tuyÖt vêi nhÊt tõ tríc tíi nay cho nhu cÇu häc hái vµ trao ®æi th«ng tin cña con ngêi. Internet ho¹t ®éng dùa trªn sù liªn kÕt cña hµng ngµn m¸y chñ vµ hÖ thèng m¹ng trªn kh¾p thÕ giíi. Ban ®Çu ngêi ta chØ cã nhu cÇu lÊy c¸c tµi liÖu vµ ®äc chóng b»ng mét ch¬ng tr×nh øng dông mµ ta hay goÞ lµ browser. Tµi liÖu ®îc lu trªn m¸y chñ nµo ®ã, m¸y kh¸ch kÕt nèi vµo vµ lÊy vÒ theo mét giao thøc m¹ng.
Tµi liÖu ë ®©y ®îc nãi ®Õn tÊt c¶ nh÷ng g× chøa ®ùng th«ng tin mµ con ngêi cã thÓ hiÓu ®îc bao gåm c¸c ®o¹n v¨n b¶n, h×nh ¶nh, ©m thanh, video.. Vµ c¸c trang tµi liÖu ®Çu tiªn trªn Internet ®· dïng ng«n ng÷ ®Þnh d¹ng HTML (Hyper Text Markup Language- Ng«n ng÷ ®¸nh dÊu siªu v¨n b¶n).
HTML xoay quanh kh¸i niÖm chñ yÕu gäi lµ tiªu thøc (tag) lµm nÒn t¶ng. §Ó t¹o ra mét siªu v¨n b¶n ta cã thÓ dïng bÊt cø mét tr×nh so¹n th¶o nµo nh NC, EDIT.. cña DOS ,NotePad cña Windows.. Vµ chØ cÇn n¾m v÷ng c¸c tiªu thøc cña HTML vµ chó ý khi ghi lªn ®Üa th× ghi díi d¹ng *.html hay *.htm.
Toµn bé c¸c tag cña HTML ®îc chia ra thµnh 7 nhãm thµnh phÇn nh sau:
Tõ kho¸ x¸c lËp cÊu tróc tµi liÖu.
Tõ kho¸ t¹o ®iÓm mãc nèi.
Tõ kho¸ ®Þnh d¹ng khèi.
Tõ kho¸ khai b¸o danh s¸ch.
Tõ kho¸ khai b¸o lo¹i th«ng tin vµ ®Þnh d¹ng mÉu ch÷.
Tõ kho¸ ®a h×nh ¶nh vµo tµi liÖu.
Tõ kho¸ lËp mÉu biÓu b¶ng.
§Ó hiÓu ®îc c¸c trang tµi liÖu HTML ta cÇn cã mét ch¬ng tr×nh øng dông cã thÓ hiÓu ®îc quy íc cña c¸c tag ®ã. øng dông nµy chÝnh lµ tr×nh duyÖt. Tr×nh duyÖt sau khi nhËn ®îc trang tµi liÖu HTML nã sÏ ph©n tÝch c¸c thÎ vµ hiÓn thÞ néi dung cu¶ c¸c thÎ nµy theo quy íc. Tõ khi HTML ra ®êi cho ®Õn nay ®· cã rÊt nhiÒu tr×nh duyÖt phôc vô viÖc hiÓn thÞ tµi liÖu.
1.2.C¸c kh¸i niÖm c¬ b¶n:
1.2.1 Web browser:
Web browser lµ c«ng cô truy xuÊt d÷ liÖu trªn m¹ng, lµ phÇn mÒm giao diÖn trùc tiÕp víi ngêi sö dông. Nã cã kh¶ n¨ng yªu cÇu th«ng tin tõ Web server vµ c¸c dÞch vô kh¸c theo nhu cÇu cña ngêi sö dông.
+ Netsape Navigator
+ Microsof Internet Explorer
+ Lynx ( Unix )
PhÇn lín c¸c Web browser ®Òu hç trî mét danh s¸ch c¸c ®Æc trng víi kh¶ n¨ng xö lý víi c¸c file*.HTML, *.GIF, JPG... NhiÒu Web browser cã kh¶ n¨ng xö lý víi Java vµ JavaScvipt...
1.2.2 Web server:
Bíc ®Çu cña c«ng nghÖ Web, Web server chØ ®¬n gi¶n lµ lÊy toµn bé néi dung cña file d÷ liÖu trªn m¸y chñ ®Ó tr¶ vÒ cho tr×nh kh¸ch. Tuy nhiªn, xuÊt ph¸t tõ nhu cÇu xö lý ®éng, tr×nh chñ Web server cho phÐp cµi ®Æt c¸c øng dông CGI (Common Gateway Interface) tiÕp nhËn nh÷ng yªu cÇu cña tr×nh kh¸ch, thùc hiÖn c¸c thao t¸c biÕn ®æi tríc khi ®a tíi Web browser.
1.2.3 Ph©n lo¹i Web
Theo quan ®iÓm cña Martin Rennhackkawp (T¹p chÝ DBMS 5/97) cho r»ng cã thÓ ph©n lo¹i Web thµnh 3 lo¹i: Trang web tÜnh (static), Form pages vµ web ®éng (dynamic).
+ Trang Web tÜnh.
Tµi liÖu ®îc ph©n t¸n rÊt ®¬n gi¶n tõ hÖ thèng file cña Server. Web Server sÏ tiÕn hµnh t×m kiÕm vµ x¸c ®Þnh ®óng vÞ trÝ cña c¸c file ®ã vµ göi tr¶ l¹i kÕt qu¶ cho Client. ViÖc sö dông trang Web tÜnh cã u, nhîc ®iÓm râ rµng.
¦u ®iÓm: Khi c¬ së d÷ liÖu nhá th× viÖc ph©n ph¸t d÷ liÖu cã hiÖu qu¶. C¸c yªu cÇu tõ Client ®îc ®¸p øng nhanh chãng.
Nhîc ®iÓm: Kh«ng n¨ng ®éng, kh«ng ®¸p øng nhu cÇu th«ng tin, v× vËy kh«ng ®¸p øng ®îc nh÷ng yªu cÇu phøc t¹p cña ngêi sö dông.
+ Form pages.
VÒ b¶n chÊt form pages lµ trêng hîp ®Æc biÖt cña trang web tÜnh. Nã cho phÐp nhËn ®îc ph¶n håi tõ phÝa ngêi sö dông th«ng qua form.
+ Web ®éng.
Trang web nµy cã thÓ thao t¸c víi c¬ së d÷ liÖu ®Ó ®¸p øng nhu cÇu phøc t¹p cña ngêi dïng. VD: ngêi dïng cÇn cã nh÷ng th«ng tin thay ®æi hµng ngµy th× viÖc thao t¸c víi c¬ së d÷ liÖu bªn ngoµi lµ cÇn thiÕt. Cã nhiÒu c¸ch cã thÓ truy cËp ®Õn c¬ së d÷ liÖu bªn ngoµi. ISAPI ( Internet Server Aplication Programming Intefaces), ASP ( Active Server Pages) hay Java, CGI ( Common Gateway Interface).
MICROSOFT cung cÊp tr×nh chñ web server (IIS: Internet Information Servce) cho phÐp sö dông c¸ch thøc t¹o web ®éng b»ng CGI, ISAPI vµ ASP.
1.3 C¸c tr×nh CGI (Common Gateway Interface).
C¸c tr×nh CGI thêng ®îc viÕt b»ng visual C++ ,Delphi ,Visual basic.
(c¸c tr×nh biªn dÞch file thùc thi trªn m«i trêng windows) chóng ®îc dÞch ra file thùc thi .exe vµ ®Æt trong th môc /cgi-bin cña tr×nh chñ IIS . Mçi khi nhËn ®îc yªu cÇu cña kh¸ch hµng web server IIS sÏ gäi ®Õn ch¬ng tr×nh CGI ,chuyÓn giao c¸c cÇu tõ tr×nh kh¸c cho CGI xö lý. Hoµn tÊt qu¸ tr×nh xö lý CGI sÏ tr¶ hÕt l¹i hÕt cho web server vµ web server l¹i tr¶ cho kh¸ch díi d¹ng thÓ hiÖn HTML. Qu¸ tr×nh gäi vµ xö lý CGI lµ hoµn toµn trong suèt (transparent) ®èi víi kh¸ch hµng do c¸c tr×nh CGI lµ chêng tr×nh thùc thi nhÞ ph©n ®ßi hái c¸c ng«n ng÷ biªn dÞch . Tr×nh CGI sau khi x©y dùng muèn n©ng cÊp ®ßi hái ph¶i biªn dÞch l¹i . Mét sè tr×nh CGI cho phÐp ngêi sö dông thªm vµo mét sè lÖnh ®iÒu khiÓn , c¸c lÖnh ®iÒu khiÓn nµy ®îc ®Æt ngay trong tµi liÖu (chóng ®îc gäi lµ c¸c lÖnh Script) CGI sÏ ®äc vµ biªn dÞch thùc thi trôc tiÕp c¸c script nµy . MÆc dï vËy c¬ chÕ CGI tá ra ch©m ch¹m vµ kÐm hiÖu qu¶ .
Mçi lÇn nhËn ®îc yªu cÇu cña tr×nh kh¸ch , web server, ph¶i n¹p l¹i tr×nh CGI vµo bé nhí, xö lý nã sau ®ã gi¶i phãng vµ thÓ hiÖn (instance) cña cïng tr×nh CGI cho mçi yªu cÇu riªng biÖt trong khi m· lÖnh xö lý cña chóng nh nhau.
1.4 Giao diÖn cña lËp tr×nh øng dông Internet ISAPI
ISAPI (Internet Server Application Programing Interface) g¾n liÒn víi tr×nh chñ IIS . Thay v× viÕt CGI xö lý trang ®éng c¸c nhµ ph¸t triÓn cã thÓ xö dông ISAPI ®Ó x©y ®ông nh÷ng ®¬n thÓ tån t¹i cïng víi c¸c web server trong suèt qu¸ tr×nh chê yªu cÇu cña tr×nh kh¸ch c¸c ®¬n thÓ ISAPI ®îc viÕt ë d¹ng file .dll. m· lÖnh cña chóng ho¹t ®éng trao ®æi d÷ liÖu trong cïng kh«ng gian ®Þa chØ cña ch×nh chñ web IIS . Tèc ®é xö lý cña ISAPI do ®ã rÊt nhanh tiÕt kiÖm tµi ngyªn h¬n h¼n CGI .
1.5. ASP
Mét trë ng¹i cña ®¬n thÓ ISAPI còng nh tr×nh CGI ®ã lµ ph¶i sö dông c¸c ng«n ng÷ biªn dÞch . kh¶ n¨ng vµ b¶o tr× vµ thiÕt kÕ mét øng dông lµ rÊt thÊp. NÕu CGI hç chî kÞch b¶n th«ng dÞch ë d¹ng script lµm ®¬n gi¶n ho¸ vµ lo¹i bá qu¸ tr×nh viÕt m· cña c¸c ng«n ng÷ biªn dÞch thÊp, kü thuËt ISAPI còng cho phÐp ta sö dông c¸c trang cha script c¸c trang nµy chÝnh lµ ASP (Ative Server Page)
Trang ASP ®¬n thuÇn lµ file v¨n b¶n chøa m· HTML kÕt hîp th«ng dÞch VB scrÞpt hay jscript. §¬n thÓ asp.dll (mét ®¬n thÓ cña ISAPI) ®îc tÝch hîp vµo web sever IIS . Khi nhËn ®îc yªu cÇu cña tr×nh kh¸ch cÇn hiÓn thÞ .asp th× tr×nh chñ sÏ triÖu gäi ®¬n thÓ xö lý trang asp.dll trang ®îc ®äc vµ thùc thi c¸c lÖnh cña kÞch b¶n. KÕt qu¶ sau ®ã ®îc asp.dll göi l¹i tr×nh chñ göi l¹i theo yªu cÇu cña kh¸ch.
M« h×nh xö lý trang ASP thay cho CGI.
Microsoft Active Server Pages (ASP) kh«ng h¼n lµ mét ng«n ng÷ lËp tr×nh, Microsoft gäi nã lµ m«i trêng server-side scripting, m«i trêng nµy cho phÐp t¹o vµ ch¹y c¸c c¸c øng dông Web server ®éng, t¬ng t¸c vµ cã hiÖu qu¶ cao. §Ó lµm viÖc trong m«i trêng nµy, c¸c ASP coder thêng sö dông VBScript hoÆc JavaScript, c¶ hai lo¹i nµy ®Òu tù ®éng hç trî ASP.
Trong c¸c HTML, mçi tag ®îc b¾t ®Çu vµ kÕt thóc bëi cÆp "" , ASP còng t¬ng tù nh vËy. §Ó ®¸nh dÊu n¬i nµo ASP script b¾t ®Çu vµ kÕt thóc dïng cÆp lÖnh "".
C¸c ®o¹n ASP script cã thÓ xuÊt hiÖn ë mäi n¬i trong trang HTML, ASP & HTML cã sù g¾n bã chÆt chÏ víi nhau. Víi ASP ta cã thÓ chÌn c¸c script thùc thi ®îc vµo trùc tiÕp c¸c file HTML. Khi ®ã viÖc t¹o ra trang HTML vµ xö lý script trë nªn ®ång thêi, ®iÒu nµy cho phÐp t¹o ra c¸c t¬ng t¸c cña Website mét c¸ch linh ho¹t uyÓn chuyÓn, cã thÓ chÌn c¸c thµnh phÇn HTML ®éng vµo trang Web tuú vµo tõng trêng hîp cô thÓ.
C¸c ®èi tîng vµ thµnh phÇn cña ASP kh«ng kh¸c g× so víi c¸c thµnh phÇn ActiveX th«ng thêng, c¸c ActiveX dll ®îc sö dông trong Vb, VC++ hay Java. Sù kh¸c biÖt lµ ë chç chóng ®· ®îc kÕt hîp víi VbScipt. §èi tîng cña ASP (ASP Objects) lµ nh÷ng phÇn tö ActiveX cã s½n vµ ®îc g¾n víi VbScript ASP cung cÊp 4 ®èi tîng sau: Application, Session, Request, Response, Server Object. C¸c thµnh phÇn cña ASP (ASP Components) lµ nh÷ng th viÖn dll tån t¹i ngoµi bé khung ASP. Nh÷ng thµnh phÇn nµy cã thÓ ®îc t¹o b»ng bÊt k× ng«n ng÷ nµo nhng Microsoft ®· kÕt hîp mét sè component h÷u Ých víi Visual InterDev. ASP cung cÊp nh÷ng component sau: Data Access, File Access, Browser Cappabilities, AdRotator
C¸c h¹n chÕ cña ASP
ASP chØ ch¹y vµ tîng thÝch trªn m«i trêng Windows ®iÒu nµy lµm ASP bÞ h¹n chÕ rÊt nhiÒu.
Dïng ASP sÏ gÆp ph¶i khã kh¨n khi muèn can thiÖp s©u vµo hÖ thèng nh c¸c øng dông CGI.
ASP kh«ng ®îc hç trî nhiÒu tõ h·ng thø ba.
C¸c øng dông ASP tá ra chËm h¬n so víi Java.
TÝnh b¶o mËt kh«ng cao. Kh«ng gi«ng nh c¸c øng dông CGI hay Java servlet, c¸c m· ASP ®Òu cã thÓ ®äc ®îc nÕu ngêi dïng cã quyÒn truy cËp vµo Web server. Cã lÏ ®©y lµ lý do quan träng nhÊt ®Ó ngêi dïng kh«ng chän c«ng nghÖ ASP.
PhÇn II : ASP.NET
2.1. Bé Khung DÞch Vô Web ThÕ HÖ KÕ TiÕp(NGWSF)
HÖ ®iÒu hµnh ®îc Microsoft xem lµ mét tËp hîp bao gåm nhiÒu ®èi tîng ho¹t ®éng t¬ng t¸c lÉn nhau. Ch¬ng tr×nh cña ta còng lµ mét ®èi tîng. Microsoft gäi m« hÞnh nµy víi c¸i tªn kh¸ phæ biÕn lµ COM (Compontent Objoct Model). TÊt c¶ mäi thø ®Òu quy vÒ ®èi tîng víi ph¬ng thøc, thuéc tÝnh vµ c¸c dÞch vô mµ ®èi tîng cã thÓ cung cÊp. Ph¸t triÓn h¬n n÷a Microsoft më réng COM thanh kiÕn tróc COM+ cho phÐp c¸c ®èi tîng COM më réng giao tiÕp víi nhau trªn mäi nÒn Windows, tõ 98, NT/2000, m¸y chñ (Server), m¸y kh¸c (client) ®©u ®©u còng lµ c¸c thµnh phÇn ®èi tîng cã thÓ giao tiÕp vµ triÖu gäi nhau xuyªn suèt
Víi sù bïng næ cña Internet, Microsoft mét lÇn n÷a l¹i ®a kiÕn tróc COM+ thanh m« h×ng ®èi tîng cao h¬n ¶nh hëng ®Õt toµn bé hÖ ®iÒu hµnh. KiÕn tróc míi nµy mang tªn khung dÞch vô Web thÕ hÖ kÕ tiÕp - Next Generation Web service Framework hay NGWSG. Tuy mang tªn Web nhng thùc tÕ kiÕn tróc nµy ®· ¨n s©u vµo hÖ ®iÒu hµnh. NGWSG bæ sung c¸c dÞch vô míi cho c¸c ®èi tîng øng dông ph©n t¸n COM+ bao gåm:
* Mét tËp c¸c th viÖn lËp tr×nh phong phó vµ thèng nhÊt.
* Bé thùc thi ch¬ng tr×nh ®a ng«n ng÷ (multi-language runtime engine)vµ b¶o vÖ an toµn m· thùc thi.
* §¬n gi¶n ho¸ qu¸ tr×nh t¹o lËp, ph©n phèi vµ b¶o tr× øng dông.
* T¨ng tÝnh mÒm dÎo vµ kh¶ chuyÓn cho c¸c óng dông ph©n t¸n.
* B¶o vÖ c¸c phÇn mÒm hiÖn cã vµ gi¶m ®Çu t vÒ ®µo t¹o.
2.1.2 T×m HiÓu VÒ Khung NÒn NGWSF
ViÖc tÝch hîp ASP vµo hÖ ®iÒu hµnh ë phiªn b¶n ASP.NET lµ ®iÓm kh¸c biÖt rÊt quan träng so víi c¸c phiªn b¶n kh¸c cña ASP tríc ®ã. C¸c phiªn b¶n ASP tríc ®©y(2.0 hoÆc3.0) chØ ®îc dïng vµ g¾n vµo hÖ thèng nh thµnh phÇn hç trî(add-on). KÓ c¶ phiªn b¶n míi nhÊt lµ 3.0 còng vÉn tån t¹i kh¸i niÖm kÕt g¾n ASP theo kh¸i niÖm add-on dùa vµo kü thuËt ISAPI DLL. ASP 3.0 sö dông file th viÖn asp.dll cïng mét vµi file phô kh¸c t¹o thµnh phiªn b¶n ASP 3.0 ®Ó n©ng cÊp phiªn b¶n 2.0
Tuy nhiªn, bé khung trong kiÕn tróc NGWSF ®· thay ®æi hoµn toµn khai niÖm vÒ øng dông c«ng nghÖ th«ng tin trªn nÒn t¶ng Internet. Víi NGWSF ta cÇn ph¶i thay ®æi l¹i toµn bé c¸ch nh×n nhËn so víi c¸c øng dông trong m«i trêng Windows cò. KiÕn tróc NGWSF cho phÐp ta hoµn chØnh mäi kiÓu øng dông tõ ®ãng gãi, ph¸t triÓn b¶o tr×, kiÓm tra c¸c øng dông trªn tr×nh kh¸ch (client) cho ®Õn c¸c øng dông ph©n t¸n phøc t¹p trªn tr×nh chñ (server).Toµn bé kh¸i niÖm cña NGWSF lµ mét phÇn dùa trªn ý tëng vµ nÒn t¶ng cña kiÕn tróc “øng dông Internet ph©n t¸n” (DNA-Distributed Internet Application).
Tuy nhiªn,®iÒu quan träng ta cÇn nªn nhí ®ã lµ bé khung NGWSF kh«ng ®¬n thuÇn chØ dµnh riªng cho ASP.NET. Khung NGWSF nµy ¶nh hëng ®Õn toµn bé c¸c ch¬ng tr×nh øng dông sÏ ch¹y trªn Windows trong t¬ng lai.
H¹t nh©n hÖ ®iÒu hµnh
Bé khung .NET Framework
Trang ASP.NET
ASP.NET Webservice
Thµnh phÇn hç trî.NET
øng dông Windows truyÒn thèng
Windows vµ c¸c dÞch vô hÖ ®iÒu hµnh.
2.1.3 M« h×nh .NET Framework.
Khung lµm viÖc NGWSF cung cÊp bé m¸y thùc thi m· lÖnh (execute engine) cïng víi tËp hîp c¸c líp hay thanh phÇn híng ®èi tîng cã thÓ sö dông ®Ó t¹o nªn øng dông. Bé khung nµy lµm viÖc nh lµ líp giao tiÕp gi÷a øng dông vµ h¹t nh©n cña hÖ ®iÒu hµnh. Ta cã thÓ hái t¹i sao chóng ta l¹i cÇn ®Õn mét líp trung gian nh thÕ, trong khi øng dông theo truyÒn thèng cã thÓ dÔ dµng nãi chuyÖn trùc tiÕp víi h¹t nh©n vµ c¸c dÞch vô cña hÖ ®iÒu hµnh. Nguyªn do lµ tÇng trung gian nµy sÏ cho phÐp c¸c øng dông nµy sö dông tèt h¬n c¸c u diÓm cña hÖ ®iÒu hµnh, ®¬n gi¶n ho¸ qu¸ tr×nh ph¸t triÓn vµ ph©n phèi øng dông trong m«i trêng th¬ng m¹i ®Çy c¹nh tranh.
§Ó ®¹t ®îc môch ®Ých nµy, bé khung thùc thi runtime cña NGWSF ®· cµi ®Æt rÊt nhiÒu ®Æc ®iÓm mµ lËp tr×nh viªn hay mét m«i trêng ng«n ng÷ lËp tr×nh cô thÓ nµo ®ã ph¶i tù cµi ®Æt tríc ®©y. Bé khung nµy cung cÊp c¸c c¬ chÕ nh tù ®éng thu gom r¸c vµo bé nhí (garbage collector), tËp c¸c ®èi tîng ®Çy ®ñ nh÷ng chøc n¨ng phôc vô cho nh÷ng c«ng viÖc lËp tr×nh th«ng thêng nhÊt. T¨ng kh¶ n¨ng b¶o mËt vµ an toµn cho øng dông. Chøc n¨ng b¶o mËt sau cïng rÊt quan träng,nhÊt lµ ®èi víi c¸c ch¬ng tr×nh më réng triÖu gäi th«ng qua m¹ng Internet nh ngµy nay
Microsoft ®ang híng ®Õn m« h×nh m¸y ¶o tëng tîng t¬ng tù nh Virtual machine cña Java ë kiÕn tróc NGWSF nµy.
2.1.4 Ng«n Ng÷ Trung Gian Phæ Dông
Tuy nhiªn mét trong nh÷ng u ®iÓm næi bËt nhÊt cña bé khung thùc thi cung cÊp cho ta ®ã lµ m«i trêng thùc thi trung lËp vÒ ng«n ng÷. TÊt c¶ m· lÖnh bÊt kÓ viÕt b»ng ng«n ng÷ nµo ®Òu ®îc tù ®éng biªn dich thanh ng«n ng÷ trung gian gäi lµ IL(Intermediate Language). Bé khung thùc thi sÏ t¹o ra m· nhÞ ph©n cuèi cung h×nh thanh lªn øng dông vµ ®iÒu khiÓn m·. §èi víi c¸c trang ASP.NET, m· nguån sÏ ®îc dÞch ra vµ chØ cã m· IL vµ chØ cã m· IL ®îc gäi thùc thi. Khi m· nguån thay ®æi th× m· IL cña trang ASP.NET sÏ ®îc thay ®æi l¹i.C¸c trang ASP.NET cßn gi÷ trong vïng ®Öm cache sÏ bÞ huû bá thay b»ng c¸c trang biªn dÞch ASP.NETvíi m· IL míi.
Mét u ®iÓm n÷a lµ ta gäi m· lÖnh cña mét ng«n ng÷ lËp tr×nh hoµn toµn kh¸c víi ng«n ng÷ ®ang ®îc dïng ®Ó viÕt øng dông. NghÜa lµ ta cã thÓ t¹o ra ®èi tîng tõ mét ng«n ng÷, sau ®ã triÖu gäi hoÆc thay ®æi néi dung ®èi tîng tõ mét ng«n ng÷ kh¸c.VÝ dô, nh ta cã thÓ t¹o ra mét ®èi tîng tõ ng«n ng÷ C# sau ®ã kÕ thõa vµ t¹o ra mét ®èi tîng tõ ng«n ng÷ Visual Basic (VB) nh thªm vµo ph¬ng thøc, thuéc tÝnh, thay ®æi hoÆc ®Ì chång lªn c¸c ph¬ng thøc tríc ®ã.. Thùc tÕ, mét phÇn cña bé khung NGWSF vµ toµn bé m« h×nh ASP.NET ®îc cµi ®Æt bªn trong b»ng C# thay v× C++.
Râ rµng bé khung thùc thi ®· vµ ®ang híng chóng ta ®Õn m«i trêng lËp tr×nh ®a ng«n ng÷ thuÇn nhÊt. Ta cã thÓ cïng mét øng dông tõ bÊt kú ng«n ng÷ lËp tr×nh nµo. KÕt qu¶ m· nhÞ ph©n cña chóng lµ nh nhau. §©y qu¶ lµ mét ®iÒu tuyÖt vêi ®èi víi c¸c nhµ ph¸t triÓn ph©n phèi øng dông trªn m«i trêng Internet ®a nÒn nh hiÖn nay.
2.1.5 Cë Së H¹ TÇng Cña øng Dông Web
H¹ tÇng cña c¸c øng dông Web n»m trong mét phÇn cña kiÕn tróc .NET NGWSF.Chung bao gåm c¸c dÞch vô Web vµ trang ASP.NET.Cïng víi bé khung míi cña m«i trêng thùc thi øng dông . NET,c¸c øng dông vµ dÞch vô Web ®a ra nh÷ng ®Æc ®iÓm næi bËt sau:
+ Hç Trî Giao DiÖn Ngêi Dïng
C¸c thanh phÇn ®iÒu khiÓn ®a n¨ng (Rich control) lµ mét phÇn trong cµi ®Æt cña th viÖn ASP.NET. Nh÷ng ®iÒu khiÓn nµy gióp ta t¹o ra giao diÖn Web nhanh chãng vµ ®¬n gi¶n. Thµnh phÇn rich control ch¹y trªn Server vµ cã kh¶ n¨ng t¹o ra m· HTML 3.2 t¬ng thÝch víi hÇu hÕt c¸c tr×nh duyÖt cò. §ång thêi ta cã thÓ sinh m· tËn dông c¸c tÝnh n¨ng n©ng cao hç trî bëi tr×nh duyÖt phÝa m¸y kh¸ch nh HTML 4.0. C¸c dÞch vô hç trî bëi Internet Explorer 4,5,6…Ta cã thÓ më réng, kÕ thõa vµ t¹o ra c¸c thµnh phÇn ®iÒu khiÓn ®a n¨ng kh¸c dùa trªn c¸c thµnh phÇn chuÈn cña th viÖn s½n cã.
+ Hç Trî Truy XuÊt D÷ LiÖu
M«i trêng NGWSF cung cÊp phiªn b¶n míi cña ADO goi lµ ADO+. Phiªn b¶n ADO+cho phÐp truy xuÊt d÷ liÖu bÊt kÓ khu«n d¹ng vµ vÞ trÝ cña d÷ liÖu. ADO+ thiÕt kÕ theo m« h×nh híng ®èi tîng trªn d÷ liÖu quan hÖ, chóng cho phÐp c¸c nhµ ph¸t triÓn cã kh¶ n¨ng trÝch rót d÷ liÖu tõ c¸c nguån ph©n t¸n kh¸c nhau.
ADO+ còng t¨ng cêng kh¶ n¨ng hç trî d÷ liÖu XML(cßn gäi lµ dataset trong XML) lu tr÷, ®ãng gãi vµ truyÒn ®i trong m¹ng. D÷ liÖu XML cã thÓ ®äc vµ hiÓu ®îc bëi rÊt nhiÒu øng dông trªn Internet.
+ Kh¶ N¨ng Më Réng Dµnh Cho C¸c øng Dông ph©n t¸n
Hai yÕu cÇn thiÕt ®èi víi tÊt c¶ c¸c øng dông dùa trªn nÒn Web ®ã lµ hÖ ®iÒu hµnh nÒn (platform) ph¶i v÷ng ch¾c vµ kh¶ n¨ng më réng trªn m«i trêng truy xuÊt lín cho phÐp ®ång thêi xö lý nhiÒu kÕt nèi. M«i trêng thùc thi NGWSF cung cÊp c¸c chøc n¨ng tù ®éng kiÓm tra lçi vµ c¸c trêng hîp qu¸ t¶i. NGWSF sÏ t×m c¸ch khëi ®éng vµ t¸i t¹o c¸c øng dông còng nh thµnh phÇn ®èi tîng ®Ó kh¶ n¨ng phôc vô cña chóng cho c¸c kÕt nèi tèt h¬n. §iÒu nµy sÏ gi¶m thiÓu nh÷ng lçi nh tµi nguyªn hÖ thèng c¹n kiÖt,kÕt nèi t¾c nghÏn….
HÖ ®iÒu hµnh còng ®îc cËp nhËt víi nh÷ng dÞch vô h¹ tÇng míi nh dÞch vô cho phÐp tù qu¶n lý vµ dän dÑp r¸c trong bé nhí (garbage collector), dÞch vô ®iÒu phèi vµ lµ trung gian trong c¸c lêi gäi ®èi tîng ph©n t¸n tõ xa, dÞch vô b¶o mËt vµ an toµn trong c¸c truy xuÊt tµi nguyªn m¹ng. TÊt c¶ c¸c dÞch vô ®îc tÝch hîp trong mét tæng thÓ thèng nhÊt sö dông còng nh ph©n bè tµi nguyªn mét c¸ch hîp lý.
+ T¬ng ThÝch Víi PhÇn MÒm HiÖn Cã Vµ Gi¶m Chi PhÝ §Çu T
MÆc dï cã thay ®æi lín trong hÖ ®iÒu hµnh vµ m«i trêng thùc thi nhng Windows vÉn chó träng ®Õn tÝnh t¬ng thÝch víi c¸c phiªn b¶n cña COM,DCOM vµ ASP.Trong hÇu hÕt c¸c trêng hîp nh÷ng øng dông COM, DCOM, trang ASP, nh÷ng kÞch b¶n hoÆc file thùc thi ®Òu ho¹t ®éng tr¬n tru trong m«i trêng NGWSF míi.
2.2 Giíi thiÖu ASP.NET
2.2.1 Tại sao ta lại quan tâm và phát triển mạng với ASP.NET
Ta phải công nhận một điều là .NET Framework và các ứng dụng của nó đã và đang tạo một cuộc cách mạng kỹ thuật trong công nghệ Tin Học (Information Technology), thay đổi tận gốc rễ các kiểu mẫu lập trình hay phát triển và triển khai mạng trên thế giới và do đó tạo một vận hội mới đáp ứng mọi yêu cầu khẩn thiết cho các ngành nghề kỹ thuật và thương mại hiện nay cũng như vạch một hướng đi vững chắc và dài lâu cho tương lai Tin Học. ASP.NET chính là một trong những ứng dụng quan trọng nhất để phát triển và triển khai mạng một cách dễ dàng chưa từng thấy từ xưa đến nay. Thật vậy, hãy lắng nghe thử chính Microsoft đã nói về ASP.NET như thế nào:
“ASP.NET is a revolutionary programming framework that enables the rapid development of powerful web applications and services. Part of the Microsoft .NET Platform, it provides the easiest and most scalable way to develop, deploy and run distributed web applications that can target any browser or any application.” ( trÝch MSDN)
Asp.NET h¬n h¼n phiªn b¶n tríc cña nã lµ Active Server Page(ASP); nã lµ mét ph¸t triÓn Web thèng nhÊt cung cÊp c¸c dÞch vô cÇn thiÕt cho c¸c nhµ ph¸t triÓn ®Ó x©y dùng c¸c øng dông ë møc kinh doanh (enterprise). ASP.NET cung cÊp mét sè lîng lín c¸c có ph¸p t¬ng thÝch víi ASP, mÆt kh¸c ASP.NET cßn cung cÊp mét kiÓu lËp tr×nh vµ mét c¬ së h¹ tÇng míi cho phÐp ta t¹o c¸c líp øng dông míi ®Çy søc m¹nh. Ta cã thÓ tù do thªm vµo c¸c chøc n¨ng cña ASP ®· tån t¹i.
ASP.NET lµ mét m«i trêng biªn dÞch trªn nÒn .NET; Ta cã thÓ t¹o c¸c øng dông b»ng bÊt k× ng«n ng÷ nµo t¬ng thÝch víi .NET, Visual Basic, C#, Jscript.NET thªm vµo ®ã toµn bé nÒn t¶ng .NET framework s½n sµng ®Ó sö dông cho bÊt k× mét øng dông Asp.NET nµo. C¸c nhµ ph¸t triÓn cã thÓ dÔ dµng tiÕp cËn ®Õn c¸c lîi Ých tõ c«ng nghÖ nµy bao gåm mét m«i trêng CLR ®îc qu¶n lý, kiÓu an toµn, tÝnh thõa kÕ..
ASP.NET ®îc thiÕt kÕ ®Ó lµm viÖc mét c¸ch liÒn mét khèi víi c¸c tr×nh biªn tËp HTML kiÓu WYSIWYG vµ c¸c c«ng cô lËp tr×nh kh¸c bao gåm bé Mircrosoft Visual Studio .NET kh«ng chØ lµm cho viÖc ph¸t triÓn Web dÔ dµng h¬n, nã cßn cung cÊp tÊt c¶ c¸c lîi Ých mµ nh÷ng c«ng cô nµy ®a ra, bao gåm mét GUI mµ c¸c nhµ ph¸t triÓn cã thÓ dïng ®Ó kÐo th¶ c¸c server controls lªn trang Web vµ cung cÊp c¸c tiÖn Ých gì rèi vµ lÇn vÕt ®Çy ®ñ, chi tiÕt.
2.2.2 Tãm t¾t c¸c ®Æc ®iÓm chÝnh trong ASP.NET
+ M« h×nh lËp tr×nh ®¬n gi¶n:
ASP.NET giúp ta phát triển và triển khai các ứng dụng về mạng trong một thời gian kỷ lục vì nó cung cấp cho ta một kiểu mẫu lập trình dễ dàng và gọn gàng nhất. Các trang ASP.NET có thể làm việc với mọi browsers hiện nay như Internet Explorer (IE), Netscape, Opera, AOL, ... mà không cần phải đổi l¹i các nguồn mã rất vất vả như trước.
+ Hç trî ®a ng«n ng÷:
Không như ASP kiểu cổ điển chỉ giới hạn với VBScripts and JScripts, ASP.NET hỗ trợ trên 25 .NET ngôn ngữ lập trình (dĩ nhiên ngoài các ngôn ngữ mới thiết lập đã cài sẵn trong .NET framework như là VB.NET, C# và JScript.NET còn có MC++.NET, Smalltalk.NET, COBOL.NET, Eiffel.NET, Perl.NET, Component Pascal.NET, Mercury.NET, Oberon.NET, Python.NET, ..).
+ Hç trî nhiÒu c«ng cô
Mặc dù ta có thể chỉ cần dùng tới Notepad để triển khai các trang ASP.NET nhưng Visual Studio.NET giúp năng suất triển khai mạng thêm phần hiệu quả ví ta có thể quan sát các dù ¸n của ta dễ dàng hơn khi phát họa (design) các thành phần của ASP.NET bằng hình ảnh với ASP.NET Web Forms hay Services theo phương pháp 'drag-drop-doubleclick' quen thuộc của nền Windows. Thêm nữa, lại còn hç trî ta trong việc phát hiện và loại bỏ những lỗi sai một cách rất thuận lợi trong khi phát triển các ứng dụng về mạng (support for debugging and deploying ASP.NET Web applications).
+ Thµnh phÇn ®iÒu khiÓn phÝa server
ASP.NET cung cÊp mét vµi ®iÒu khiÓn phÝa server ®Ó ®¬n gi¶n ho¸ viÖc t¹o trang. C¸c thµnh phÇn ®iÒu khiÓn nµy gãi gän mét sè t¸c vô th«ng thêng nh hiÓn thÞ lÞch, kiÓm tra d÷ liÖu nhËp (Validate). C¸c thµnh phÇn ®iÒu khiÓn nµy cho phÐp ta rµng buéc d÷ liÖu t¬ng tù nh ta ®ang viÕt mét øng dông víi desktop thËt sù, xo¸ ®i ®îc biªn giíi client/server.
+ Namespace vµ Class Framework phong phó:
Nhờ nền tảng vững vàng và tài nguyên phong phú của .NET Framework với hơn 5000 classes bao gồm như XML, data access, file upload, regular expressions, transactions, message queuing, SMTP mail, ... Nên việc thiết kế các đặc tính trong một ứng dụng trở nên nhẹ nhàng và thoải mái hơn xưa rất nhiều.
Namespace ®îc sö dông nh lµ mét hÖ thèng tæ chøc - mét c¸ch ®Ó thÓ hiÖn c¸c thµnh phÇn (Component) ®îc më réng cho c¸c ch¬ng tr×nh vµ øng dông kh¸c. Namespace bao gåm c¶ Class.
Namespace gièng nh c¸c th viÖn Class vµ cã thÓ lµm viÖc viÕt c¸c øng dông dÔ dµng h¬n.
+ T¨ng tèc ®é thùc hiÖn
ASP.NET không những chạy nhanh hơn ASP cổ điển gấp 5 lần mà còn có thể duy trì kiểu mẫu cập nhật gọi là kiểu mẫu 'just hit save', nghĩa là ASP.NET tự động dò tìm mọi sự thay đổi và compile files khi cần thiết cũng như lưu trữ kết quả compile đó để cung ứng dịch vụ cho những yêu cầu tiếp theo sau, nhờ vậy ứng dụng của ta luôn luôn cập nhật hóa và chạy nhanh hơn rÊt nhiÒu.
+ Output caching:
ASP.NET có khả năng lưu trữ một kết quả chung trong phân bộ memory của trang để gởi giải đáp cho cùng một yêu cầu từ nhiều khách hàng khác nhau và nhờ đó không những tiết kiệm được sự lÆp đi lÆp lại công tác thi hành của một trang web mà còn gia tăng hiệu xuất một cách ngoạn mục do giới hạn tối đa việc chất vấn các cơ sở dữ liệu (eliminating the need to query the database on every request) rất tốn nhiều thời gian.
+ .NET so s¸nh víi J2EE:
Trong việc đối đầu với nhau về hiệu xuất (performance) và scalability với cùng một ứng dụng phát triển giữa Sun's Java Pet Store J2EE và ASP.NET thì ASP.NET không những nhanh vượt trội hơn J2EE đến 28 lần (khoảng 2700%), nguồn mã lại ít hơn nhiều (khoãng 1/4 nguồn mã của J2EE) mà còn dùng bộ xử lý (processor) chỉ khoãng 1/6 lần so với việc sử dụng processor của J2EE.
+ Khai triÓn dÔ dµng
ASP.NET đơn giản hóa việc triển khai ứng dụng mạng, do đó biến việc triển khai toàn bộ ứng dụng trở nên dễ dàng và thuận lợi hơn hẳn trước kia vì bây giờ ta chỉ cần sao (với XCOPY) và lưu trữ ở Server chứ không cần phải chạy chương trình 'regsrv32' để đăng ký bất cứ thành phần nào cả, và thêm nữa, khi cần lưu trữ những yếu tố phụ cần thiết cho việc thiết lập hay bố trí các ứng dụng, ta chỉ cần lưu giữ nó vào trong một hồ sơ dưới dạng XML là đủ.
+ Truy xuÊt d÷ liÖu
Tõ ASP.NET truy xuÊt d÷ liÖu lµ mét kü thuËt thêng xuyªn sö dông ®Ó biÓu diÔn d÷ liÖu cho ngêi dïng. Giê ®©y ASP.NET khiÕn cho viÖc lµm víi môc ®Ých nµy dÔ dµng h¬n bao giê hÕt h¬n n÷a nã cßn cung cÊp viÖc qu¶n lý d÷ liÖu trong c¬ së d÷ liÖu.
+ T¨ng kh¶ n¨ng b¶o mËt
Trong ASP chØ cã duy nhÊt mét kiÓu x¸c thùc ®ã lµ ta sö dông kiÓu x¸c thùc cña Windows, trong khi ®ã ASP.NET cho phÐp nhiÒu lo¹i ®¨ng nhËp vµ x¸c thùc ngêi dïng: Windows, Pasport vµ Forms.
+ Më réng
Trong ASP.NET, tr¹ng th¸i sesion b©y giê ®îc duy tr× trong mét qu¸ tr×nh xö lý riªng rÏ trªn mét m¸y riªng rÏ hay CSDL, cho phÐp c¸c sesion qua server. ®iÒu nµy cho phÐp ta thªm nhiÒu Web server khi muèn më réng øng dông.
+ DÔ dµng thiÕt lËp cÊu h×nh cho øng dông web
C¸c thiÕt lËp cÊu h×nh cho mét øng dông ASP.NET ®îc lu trong mét file d¹ng XML ngêi lËp tr×nh cã thÓ dÔ dµng ®äc vµ thay ®æi l¹i ®îc. Mçi mét øng dông ®Òu cã mét file cÊu h×nh riªng vµ viÖc më réng c¸c scheme tuú thuéc vµo yªu cÇu cña ngêi lËp tr×nh. C¸c file dll b©y giê kh«ng cÇn ph¶i ®¨ng ký, ta chØ cÇn ®Æt nã vµo trong th môc /bin cña øng dông
+ CËp nhËt vµ ch¹y tù ®éng.
ASP.NET cho phép ta tự động cập nhật hóa (update) các thành phần đã compiled (compiled components) mà không cần phải khởi động lại (re-start) các Web Server.
+ DÔ dµng ph¸t triÓn c¸c thµnh phÇn cò:
Ta không cần phải du nhập những ứng dụng được phát triển và triển khai bằng ASP cổ điển hiện có của ta vào ASP.NET vì ASP.NET có thể chạy song song với ASP ở cùng một Internet Information Server (IIS) trong nền Windows 2000 hay nền Windows XP. Các ứng dụng cũ vẫn tiếp tục chạy hết sức thoải mái với ASP.DLL trong khi ASP.NET engine sẽ xử lý các ứng dụng mới. Ngoài ra, ASP.NET còn cho phép ta dùng lại những thành phần thương mại hiện nay kiểu COM cổ điển trong các ứng dụng của nó.
+ XML Web Services:
Dịch vụ míi về mạng với XML cũng cho phép ta truyền đạt (communicate) và chia xÎ (share) các dữ kiện (data) xuyên qua mạng Internet dễ dàng tới các SOAP client mà không hề phân biệt đối xö các hệ điều hành hay các ngôn ngữ lập trình khác nhau (regardless of OS or programming language). Nhờ đó, ta không cần phải học thêm hay đào sâu các kiến thức về Networking, XML hay SOAP, ...
+ Mobile Web Service Support:
Thêm nữa, ASP.NET Mobile Controls còn giúp ta phát triển và triển khai mạng nhắm vào thị trường những cell phone hay PDA với gần hơn 80 Mobile Web Services đuợc cung cấp trong .NET framework. Ta chỉ cần lập trình cho ứng dụng của ta như thường lệ rồi phó mặc cho Mobile Controls đó tự động phát sinh ra những nguồn mã như WAP/WML, HTML hay iMode thích hợp với từng loại thiết bị (device) riêng biệt.
M« h×nh ho¹t ®éng cña ASP.NET
2.3 Nh÷ng ®iÓm kh¸c biÖt cña ASP so víi ASP.NET
Chóng ta ®· xem s¬ qua vÒ vai trß cña ASP.NET trong m«i trêng tÝch hîp víi hÖ ®iÒu hµnh. Chóng ta cÇn nh×n ASP.NET ë mét khÝa c¹nh kh¸c .ASP.NET khac g× so víi ASP vµ t¹i sao l¹i cã sù kh¸c biÖt nµy? NÕu ta ch¹y l¹i nh÷ng øng dông ASP cò trªn nÒn ASP.NET ta cã thÓ kh«ng nhËn ra ®îc sù kh¸c biÖt gi÷a ASP vµ ASP.NET. MÆc dï vËy nÕu më tµi liÖu híng dÉn SDK cña ASP.NET vµ chän ®Ò môc “What’s new”ta sÏ thÊy Windows ®a ra rÊt nhiÒu kh¸i niÖm míi thËm chÝ ta cha tõng thÊy tríc ®ã trong ASP. Chóng ta sÏ t×m hiÓu vÒ sù kh¸c biÖt quan träng gi÷a ASP.NET vµ ASP ngay trong phÇn nµy.
Tríc hÕt, t¹i sao Microsoft l¹i quyÕt ®Þnh thay ®æi vµ t¹o mét phiªn b¶n kh¸c cña ASP vµ ASP.NET sÏ gióp ta nh thÕ nµo trong viÖc ph¸t triÓn c¸c øng dông Web t¬ng lai ?.
ASP ®· cho thÊy sù thµnh c«ng cña nã trong c¸c øng dông Web, vËy t¹i sao MS l¹i quyÕt ®Þnh thay ®æi c«ng nghÖ vµ cho ra ®êi ASP.NET lµ mét phiªn b¶n hoµn toµn míi so víi ASP. Cã 4 nguyªn nh©n chÝnh sau ®©y:
* HiÖn t¹i,ASP chØ lµ mét ng«n ng÷ kÞch b¶n phi ®Þnh kiÓu (none-type) dùa trªn VBScript hoÆc Jscript. ASP kh«ng tËn dông ®îc c¸c ng«n ng÷ r»ng buéc kiÓu m¹nh nh C++ hay Visual Basic. ASP.NET cho phÐp sö dông ng«n ng÷ trung lËp.Trang ASP.NET cã thÓ viÕt b»ng rÊt nhiÒu ng«n ng÷ nh: VBScript, Jscript, Visual Basic,C++,C#,Perl….
* Mét bÊt tiÖn cña c¸c trang ASP ®ã lµ m· lÖnh giao diÖn (®Þnh d¹ng b»ng c¸c thµnh phÇn HTML) trén lÉn víi nhau. Khi ph¸t triÓn nh÷ng øng dông Web lín thêng c¸c dù ¸n cÇn t¸ch ra lµm hai nhãm. Mét nhãm thiÕt kÕ giao diÖn(Web designer)vµ mét nhãm viÕt lÖnh lËp tr×nh (programmer). KÕt qu¶ cuèi cïng thêng lµ sù trén lÉn gi÷a phÇn thiÕt kÕ giao diÖn vµ m· lÖnh ASP ®Ó t¹o ra mét file ch¬ng tr×nh duy nhÊt. C¸c trang ASP cña øng dông do ®ã rÊt khã b¶o tr× khi ta muèn thªm vµo c¸c m· lËp tr×nh míi hay thay ®æi l¹i giao diÖn. ASP.NET cho phÐp t¸ch rêi gi÷a m· lËp tr×nh vµ néi dung tµi liÖu.
* Trong phiªn b¶n ASP tríc, ta hÇu nh ph¶i viÕt m· ch¬ng tr×nh ®Ó qu¶n lý mäi chuyÖn. Ta muèn qu¶n lý tr¹ng th¸i cña c¸c trêng nhËp liÖu trong FORM cÇn ph¶i viÕt m·. Muèn kiÓm tra tÝnh hîp lÖ cña d÷ liÖu (validate) do ngêi dïng nhËp vµo, cÇn ph¶i viÕt m·. §Ó trang ASP t¨ng tèc b»ng c¸ch dïng vïng ®Öm cache, cÇn ph¶i viÕt m·. ASP.NET thùc sù lµ m« h×nh ®èi tîng thµnh phÇn lo¹i bá rÊt nhiÒu c«ng ®o¹n viÕt m· mµ lËp tr×nh viªn Web thêng ph¶i lµm.ASP.NET cung cÊp c¸c thµnh phÇn ®iÒu khiÓn ho¹t ®éng phÝa chÝnh chñ (server side control) ho¹t ®éng theo híng sö lý sù kiÖn (t¬ng tù c¸c ®iÒu kiÓn ta sö dông trªn Form cña ch¬ng tr×nh Visual Basic). Ta chØ cÇn khai b¸o thµnh phÇn ®iÒu kiÓn sö dông vµ trong hÇu hÕt c¸c trêng hîp, ta kh«ng cÇn._. ph¶i viÕt thªm m· lÖnh. Mäi viÖc kiÓm so¸t tr¹ng th¸i vµ t¬ng t¸c víi thµnh phÇn ®iÒu kiÓn ®Òu ®îc tr×nh chñ Web Server víi kiÕn tróc ASP.NET lo liÖu.
* Ngµy nay, thÕ giíi ®· thay ®æi nhanh trãng víi c¸c thiÕt bÞ cÇm tay nh ®iÖn tho¹i di ®éng,may Palm, TV cã thÓ kÕt nèi víi Internet…Nh÷ng thiÕt bÞ míi nµy ®Òu chuÈn bÞ kh¶ n¨ng kÕt nèi víi Internet vµ m¸y chñ phôc vô Web. C«ng viÖc ph¶i xö lý trªn m¸y chñ rÊt nhiÒu. Ch¼ng h¹n ngoµi viÖc xö lý trang HTML ta cßn ph¶i cã kh¶ n¨ng t¹o c¸c trang WML phôc vô cho ®iÖn tho¹i di ®éng, xö lý vµ trao dæi d÷ liÖu XML… Nh÷ng c«ng viÖc nµy ta cã thÓ sö lý b»ng ASP nh÷ng cÇn ph¶i thªm c¸c th viÖn phôc vµ ®ßi hái qu¸ tr×nh viÕt m· rÊt c«ng phu. ASP.NET cã s½n c¸c dÞch vô nµy ®Ó ta sö dông.
Bªn c¹nh ®ã, chóng ta cßn ph¶i cã kh¶ n¨ng x©y dùng c¸c ®èi tîng ph©n t¸n cã thÓ triÖu gäi tõ xa vµ sö dông l¹i trªn nhiÒu hÖ ®iÒu hµnh kh¸c nhau. C¸c ®èi tîng ph¶i dÔ thiÕt kÕ vµ cµi ®Æt khi ®a vµo sö dông. ASP.NET cung cÊp kiÕn tróc h¹ tÇng ®Ó x©y dùng c¸c øng dông ph©n t¸n trªn Web theo giao thøc triÖu gäi SOAP (Simple Oject Access Protocol-giao thøc truy xuÊt ®èi tîng gi¶n ®¬n), cho phÐp thùc hiÖn chuyÓn ®æi d÷ liÖu XML phôc vô cho m«i trêng th¬ng m¹i ®iÖn tö B2B(Business to Business). ASP.NET cung cÊp ®Çy ®ñ mäi dÞch vô tõ b¶o mËt ®Õn cÊp ph¸t bé nhí, thu gom r¸c, theo dâi sù qu¸ t¶i cña c¸c thµnh phÇn ®èi tîng, c©n b»ng t¶i (load balance) gi¶m thiÓu tèi ®a c¸c kÕt nèi tiªu tèn tµi nguyªn.
§Ó ®¹t ®îc nh÷ng môc tiªu nµy, ASP ®· thay ®æi toµn bé ®Ó trë thµnh m«i trêng lËp tr×nh míi. Visual Studio.NET (hay phiªn b¶n Visual Studio 7.0) cña Microsofl lµ c«ng cô tuyÖt vêi nhÊt ®Ó ta x©y dùng c¸c øng dông Web, ®Æc biÖt lµ ASP.NET. M«i trêng lËp tr×nh míi cña Microsofl trªn nÒn Windows kh«ng ph©n biÖt ng«n ng÷. ASP.NET cã thÓ viÕt b»ng bÊt kú ng«n ng÷ nµo cã trong Visual Studio .NET nh C#, VB, C++. Ta cã thÓ sö dông c¸c c«ng cô ph¸t triÓn øng dông kh¸c nhng ch¾c r»ng chóng sÏ kh«ng vît qua ®îc c¸c c«ng cô ph¸t triÓn cña Microsofl.
2.3.1 ¦u ®iÓm lín nhÊt cña ASP.NET
VÊn ®Ò th¸ch thøc lín nhÊt ®èi víi c¸c øng dông Web ngµy nay lµ sù t¬ng thÝch trªn c¸c tr×nh duyÖt cïng víi ®é phøc t¹p cña trang tµi liÖu do øng dông t¹o ra. §Ó t¹o mét trang tµi liÖu Web hÊp dÉn tËn dông ®îc nh÷ng tÝnh n¨ng míi nhÊt cña tr×nh duyÖt nhng ®ång thêi vÉn hiÓn thÞ ®óng ®¾n trªn c¸c tr×nh duyÖt cò qu¶ lµ ¸c méng ®èi víi lËp tr×nh viªn vµ c¸c nhµ thiÕt kÕ Web.
Vµ sù viÖc cµng trë lªn tåi tÖ h¬n khi c¸c thiÕt bÞ cÇm tay nh ®iÖn tho¹i di ®éng vµ ®ßi hái nhu cÇu sö dung Internet. C¸c trang tµi liÖu thiÕt kÕ cho nh÷ng thiÕt bÞ nµy yªu cÇu ph¶i nhá gän vµ kh«ng thÓ sö dông c¸ch ®Þnh d¹ng cho tµi liÖu nh trªn c¸c trinh duyÖt hiÖn ®¹i
Mét trong nh÷ng c¸ch gi¶i quyÕt vÊn ®Ò trªn ®ã lµ híng ®Õn trong m«i trêng cña øng dông, ®Ó thiÕt kÕ c¸c trang tµi liÖu kh¸c nhau.VÝ dô cã thÓ t¹o 100 trang HTML ®Ó hç trî cho c¸c tr×nh duyÖt trªn m¸y PC, 100 trang WML kh¸c hç trî cho kÕt nèi ®iÖn tho¹i di ®éng. Nãi chung chóng ta x©y dùng 2 site riªng biÖt ®Ó híng ®Õn hai môc ®Ých sö dông kh¸c nhau. §©y lµ c¸ch mµ c¸c øng dông Web hiÖn t¹i ®ang sö dông. Tuy nhiªn, mét lùa chän kh¸c lµ tr×nh chñ cã thÓ tuú vµo yªu cÇu cña tr×nh kh¸ch ®Ó lùa chän vµ sinh ra c¸c trang tµi liÖu phï hîp víi môc ®Ých sö dông mµ tr×nh kh¸ch ®ang cÇn. C¸ch nµy tuy linh ®éng nhng ®ßi hái ph¶i x©y dùng vµ viÕt m· lÖnh c«ng phu. MÆc dï vËy víi ASP.NET ta kh«ng cÇn ph¶i viÕt m· lÖnh, c¸c thµnh phÇn ®iÓu khiÓn ho¹t ®éng trÓn tr×nh chñ cã kh¶ n¨ng nhËn d¹ng vµ sinh m· tuú theo môc ®Ých vµ yªu cÇu sö dông cuèi cïng cña tr×nh kh¸ch.
2.4 ASP.NET Web form
2.4.1. giíi thiÖu vÒ ASP.NET Web form
Web form lµ mét c«ng nghÖ lËp tr×nh trong ASP.NET cho phÐp ta t¹o ra c¸c trang web cã thÓ lËp tr×nh ®îc. Chóng biÓu diÔn th«ng tin b»ng viÖc sö dông bÊt kú ng«n ng÷ ®¸nh dÊu nµo vµ sö dông c¸c m· lÖnh phÝa server ®Ó thùc hiÖn c¸c thµnh phÇn phÝa server.Web form:
. Cã thÓ ch¹y trªn bÊt cø browser nµo vµ tù ®éng dÞch mét c¸ch chÝnh x¸c, browser – tu©n thñ theo m· HTML cho mét sè chøc n¨ng nh styles, layout..
. Cã thÓ lËp tr×nh b»ng bÊt cø ng«n ng÷ thùc thi (CLR) nµo, bao gåm Visual Basic, C# vµ Jscript .NET.
. Do x©y dùng trªn CLR vµ ®îc cung cÊp tÊt c¶ c¸c lîi Ých tõ c«ng nghÖ nµy, bao gåm mét m«i trêng thi hµnh ®îc qu¶n lý, kiÓu an toµn, tÝnh thõa kÕ vµ sù biªn dÞch ®éng.
. Hç trî c¸c c«ng cô biªn tËp kiÓu WYSIWYG vµ c¸c c«ng cô ph¸t triÓn RAD m¹nh mÏ nh Microsoft Visual Studio .NET, cho viÖc thiÕt kÕ vµ lËp tr×nh c¸c form.
. Cung cÊp mét bé c«ng cô ®a n¨ng cho phÐp c¸c nhµ ph¸t triÓn gãi gän logic trang vµo trong c¸c thµnh phÇn cã thÓ sö dông l¹i vµ n¾m b¾t c¸c sù kiÖn trong trang mét c¸ch râ rµng.
Cho phÐp ph©n c¸ch gi÷a m· vµ néi dung trong mét trang, lo¹i trõ c¸c m· “spaghetti-code” thêng gÆp trong c¸c trang ASP.
. Cung cÊp mét bé c¸c chøc n¨ng qu¶n lý tr¹ng th¸i ®Ó b¶o vÖ tr¹ng th¸i nh×n thÊy ®îc trong trang gi÷a c¸c lÇn truy vÊn.
. Cã thÓ më réng víi c¸c control mµ ngêi dïng tù t¹o hay do c¸c nhµ cung cÊp thø ba.
2.4.2 C¸c thµnh phÇn cña Web form.
Web form ph©n chia giao diÖn ngêi dïng cña c¸c øng dông web thµnh hai phÇn: thµnh phÇn trùc quan vµ giao diÖn logic ngêi dïng. NÕu tríc ®©y ta ®· tõng sö dông víi c¸c c«ng cô ph¸t triÓn nhanh nh Microsoft Visual Basic. Microsoft C++, ta sÏ nhËn thÊy sù kh¸c biÖt gi÷a c¸c thµnh phÇn cña form vµ phÇn m· lÖnh t¬ng t¸c víi form.
Giao diÖn ngêi dïng cho c¸c trang Web Form bao gåm mét file chøa c¸c thµnh phÇn ®¸nh dÊu vµ c¸c thµnh phÇn Web form ®Æc biÖt. File nµy thêng ®îc hiÓu nh lµ “trang”.Trang nµy lµm viÖc nh lµ mét líp chøa v¨n b¶n vµ c¸c control mµ ta muèn hiÓn thÞ. Ta cã thÓ sö dông bÊt kú tr×nh biªn tËp HTML nµo cã thªm c¸c Web form server control ®Ó ®Æt lªn form. Trang lµ mét file cã phÇn më réng “.aspx”.
Giao diÖn logic ngêi dïng cho Web form bao gåm m· lÖnh mµ ta t¹o ®Ó t¬ng t¸c víi form. Ta cã thÓ lùa chän logic lËp tr×nh ®îc chøa bªn trong file .aspx, hoÆc trong mét file riªng biÖt ( thêng ®îc gäi lµ file m· Èn- code behind), ®îc viÕt b»ng VB, C#. khi ta ch¹y form, file líp m· Èn sÏ ch¹y kÕt qu¶ ®a ra trang mét c¸ch ®éng.
ViÖc lËp tr×nh c¸c øng dông Web ®èi mÆt víi nhiÒu thö th¸ch n¶y sinh kh«ng gièng nh khi lËp víi c¸c øng dông client truyÒn thèng. Trong sè c¸c thö th¸ch nµy lµ:
. Giao diÖn ngêi dïng phong phó. Mét giao diÖn ngêi dïng víi mét sè lîng lín néi dung, mét c¸ch bµi trÝ phøc t¹p, sù t¬ng t¸c ngêi dïng ®Ñp m¾t cã thÓ g©y khã kh¨n vµ nhµm ch¸n khi t¹o vµ lËp tr×nh nÕu sö dông c¸c tiÖn Ých HTML. Vµ trë nªn ®Æc biÖt khã khi t¹o mét giao diÖn ngêi dïng cho c¸c øng dông cã thÓ ch¹y trªn nhiÒu tr×nh duyÖt kh¸c nhau.
.Sù ph©n chia gi÷a client vµ server. Trong mét øng dông web, client (Browser) vµ server lµ c¸c ch¬ng tr×nh kh¸c nhau thêng ch¹y trªn c¸c m¸y tÝnh kh¸c nhau (thËm chÝ hÖ ®iÒu hµnh kh¸c nhau). Do ®ã hai phÇn cña mét øng dông chia xÎ rÊt th«ng tin; chóng cã thÓ giao tiÕp, nhng th«ng thêng chØ trao ®æi c¸c th«ng tin ®¬n gi¶n.
. Sù thi hµnh phi tr¹ng th¸i. Khi mét Web server nhËn mét truy vÊn cho mét trang, nã t×m trang, xö lý chóng, göi nã tíi browser vµ sau ®ã kh«ng cßn lu tr÷ th«ng tin g× vÒ trang ®ã. NÕu ngêi dïng truy vÊn ®Õn cïng mét ®ã, server lÆp l¹i toµn qu¸ tr×nh xö lý tõ ®Çu, hay nãi mét c¸ch kh¸c c¸c server kh«ng nhí g× vÒ trang mµ chóng ®· xö lý. Do ®ã, nÕu mét øng dông cÇn duy tr× th«ng tin vÒ mét trang, viÖc nµy trë thµnh mét vÊn ®Ò ph¶i ®îc xö lý trªn m· øng dông.
. Kh«ng biÕt g× vÒ kh¶ n¨ng cña client. Trong mét sè trêng hîp c¸c øng dông web ®îc tiÕp cËn bëi nhiÒu ngêi dïng víi nhiÒu tr×nh duyÖt kh¸c nhau, lµm khã kh¨n khi h¬n khi t¹o ra mét øng dông mét c¸ch b×nh thêng víi tÊt c¶ chóng.
. Truy xuÊt d÷ liÖu. §äc vµ ghi vµo nguån d÷ liÖu trong c¸c øng dông web truyÒn thèng thêng rÊt phøc t¹p vµ tËp trung nhiÒu c«ng søc.
§èi mÆt víi c¸c thö th¸ch nµy mét øng dông web cÇn nhiÒu thêi gian vµ nç lùc. Web form lµ gi¶i ph¸p ®Ó gi¶i quyÕt c¸c vÊn ®Ò nµy.
. §éc lËp víi mäi tr×nh duyÖt. T¹o m· râ rµng cho c¸c tr×nh duyÖt kh¸c nhau. Tuy nhiªn, nã vÉn cho phÐp cã ®îc c¸c lîi Ých cña c¸c chøc n¨ng ®Æc biÖt trong tr×nh duyÖt mét c¸ch tù ®éng ®Ó c¶i thiÖn viÖc tr×nh bµy.
. M« h×nh lËp tr×nh sù kiÖn. Web form mang ®Õn c¸c øng dông Web mét m« h×nh ®Ó viÕt c¸c ph¬ng thøc cho c¸c sù kiÖn x¶y ra ë phÝa server cung nh ë client, chuyÓn giao nã tíi server, vµ viÖc gäi hander thÝch ®¸ng lµ hoµn toµn tù ®éng vµ trong suèt. KÕt qu¶ lµ cÊu tróc m· lÖnh thËt ®¬n gi¶n vµ râ rµng.
. M« h×nh ®èi tîng nhÊt qu¸n, trõu tîng, trùc quan. Bé khung web form ®a ra mét m« h×nh ®èi tîng cho phÐp ta nghÜ ®Õn nh÷ng form nh lµ mét ®¬n vÞ, kh«ng lµ c¸c phÇn riªng biÖt gi÷a client vµ server. Trong m« h×nh Web form ta cã thÓ lËp tr×nh mét c¸ch trùc quan h¬n c¸c øng dông web truyÒn thèng, bao gåm kh¶ n¨ng thiÕt lËp thuéc tÝnh cho c¸c thµnh phÇn cña form vµ ®¸p tr¶ c¸c sù kiÖn. Thªm vµo ®ã, Web Form control lµ mét c¸ch nh×n trõu tîng vÒ néi dung vËt lý cña mét trang HTML vµ cña sù t¬ng t¸c gi÷a browser víi server. Tãm l¹i, ta cã thÓ sö dông Web Form control theo kiÓu ta dïng nh c¸c control trong c¸c øng dông client th«ng thêng vµ kh«ng ph¶i nghÜ vÒ viÖc sinh m· HTML®Ó hiÓn thÞ vµ xö lý c¸c control vµ néi dông cña chóng.
. Qu¶n lý tr¹ng th¸i. Bé khung Web Form n¾m b¾t c¸c t¸c vô trong viÖc duy tr× tr¹ng th¸i cña form hay c¸c control trong nã mét c¸ch tù ®éng vµ cung cÊp nhiÒu c¸ch rã rµng ®Ó duy tr× th«ng tin øng dông ®Æc biÖt.
. N©ng cÊp server. Bé khung Web Form cho phÐp ta n©ng cÊp øng dông tõ mét m¸y tÝnh víi bé xö lý ®¬n ®Õn mét tÇng m¸y tÝnh mµ kh«ng cÇn c¸c thay ®æi phc t¹p trong logic øng dông.
2.4.3 M« h×nh Web Form
Mét Web Form bao gåm hai phÇn, c¸c thµnh phÇn nh×n thÊy ®îc vµ m· lÖnh. C¸c thµnh phÇn cã thÓ ®îc chøa trong cïng mét trang; Tuy nhiªn, ta cã thÓ c¸c thµnh phÇn nµy thµnh hai trang riªng biÖt. C¸c thµnh phÇn nh×nh thÊy ®îc cã thÓ ®îc t¹o trong c¸c file .aspx vµ ho¹t ®éng nh mét líp chøa c¸c thµnh phÇn HTML vµ c¸c control Web Form. M· lÖnh th× ®îc chøa ë mét líp file riªng biÖt hay ngay trong file .aspx. Trong hÇu hÕt c¸c trêng hîp ta sÏ sö dông chóng theo c¸ch thø hai.
2.4.4 Bé khung Web Form lµ mét m« h×nh ®èi tîng
MÆc dï ta t¹o c¸c Web Form tõ c¸c thµnh phÇn riªng rÏ, chóng t¹o nªn mét khèi thèng nhÊt. Khi Web form ®îc biªn dÞch, ASP .NET ph©n tÝch trang vµ m· cña chóng, t¹o ra mét líp míi, vµ sau ®ã biªn dÞch míi líp nµy. Líp t¹o ra ®îc b¾t nguån tõ líp ASP.NET Page, nhng cã thªm c¸c thµnh phÇn më réng víi c¸c control, m· lÖnh, v¨n b¶n HTML tÜnh trong file .aspx.
Líp trang míi nµy trë thµnh mét file cã thÓ thi hµnh vµ ®îc thi hµnh ë phÝa server mçi khi trang Web Form ®îc yªu cÇu. Trong khi thùc thi, líp Page xö lý c¸c yªu cÇu göi ®Õn vµ ph¶n håi b»ng c¸ch t¹o ra m· HTML mét c¸ch ®éng vµ göi nã tíi browser. NÕu trang cã chøa c¸c control (th«ng thêng lµ nh vËy) th× líp Page ho¹t ®éng nh mét líp chøa c¸c control vµ ¸nh x¹ c¸c c¸c control ®îc t¹o t¹i thêi ®iÓm thùc thi, còng nh vËy sinh ra c¸c m· HTML. §iÒu nµy hoµn toµn kh¸c víi ASP. Trong ASP, trang bao gåm m· HTML tÜnh ®Æt r¶i r¸c víi m· thùc thi. Bé xö lý cña ASP ®äc trang rót ra vµ ch¹y c¸c m· lÖnh (th«ng dÞch h¬n lµ biªn dÞch) sau ®ã ®Æt kÕt qu¶ trë l¹i m· HTML tÜnh tríc khi göi tíi tr×nh duyÖt.
Tãm l¹i toµn bé Web form, theo hiÖu qu¶ nµo ®Êy, lµ mét ch¬ng tr×nh ®a ra m· HTML. M« h×nh xö lý gièng nh bÊt kú c¸c thµnh phÇn cã thÓ gäi nµo trong trang ®îc thi hµnh khi cã triÖu gäi.
Bëi v× file .aspx kh«ng ph¶i lµ c¸c module theo kiÓu truyÒn thèng, mèi quan hÖ cña nã víi file líp ®îc thµnh lËp víi c¸c chØ thÞ ë ë ®Çu trang. §Æc biÖt lµ thuéc tÝnh thõa kÕ trong chØ thÞ @Page ®îc sö dông ®Ó chØ ®Þnh líp file mµ file .aspx cã nguån gèc.
2.4.5 Qu¸ tr×nh xö lý cña trang Web form
Bé khung Web form thùc hiÖn rÊt nhiÒu dÞch vô cho øng dông Web cña ta. vÝ dô bé khung Web Form cã thÓ n¾m b¾t c¸c th«ng tin cã liªn quan vµ lµ cho nã cã gi¸ trÞ trong thuéc tÝnh cña c¸c ®èi tîng.
§Ó lËp tr×nh Web Form mét c¸ch cã hiÖu qu¶ ta cÇn biÕt vÒ c¸c sù kiÖn tuÇn tù x¶y ra khi trang Web Form ®îc xö lý.
Vßng ®êi cña mét trang Web Form
Round trip
Mét trong nh÷ng ®iÒu quan träng ®Ó hiÓu ®îc qu¸ tr×nh xö lý trong trang Web Form lµ vÒ sô ph©n chia ho¹t ®éng trong Web Form. Browser hiÓn thÞ Form tíi ng¬õi dïng vµ ngêi dïng t¬ng t¸c víi form. Tuy nhiªn tÊt c¶ qu¸ tr×nh xö lý mµ cã sù t¬ng t¸c víi c¸c thµnh phÇn phÝa server ph¶i x¶y ra trªn server. §iÒu nµy cã nghÜa lµ form ph¶i ®îc post lªn server, xö lý vµ tr¶ vÒ tr×nh duyÖt. Sù tuÇn tù nµy ®îc gäi lµ round trip.
MÆc dï ta cã thÓ t¹o m«t sè script h÷u Ých ë phÝa client trong trang Web Form nh ®Ó kiÓm tra d÷ liÖu nhËp vµo cho mét sè UI, nhng c¸c script nµy kh«ng thÓ t¬ng t¸c víi c¸c thµnh phÇn ë phi¸ server.
Trong Web form, hÇu hÕt c¸c hµnh ®éng cña ngêi dïng nh lµ click mét button kÕt qu¶ tr¶ vÒ trong mét round trip. V× lý do nµy c¸c sù kiÖn cã s½n trong server control ®Òu cã giíi h¹n. HÇu hÕt c¸c server control chØ lé ra sù kiÖn click, chóng kh«ng ®a ra c¸c sù kiÖn x¶y ra thêng xuyªn nh mouseonover v× mçi lÇn sù kiÖn x¶y ra nã cÇn mét round trip ®Ó xö lý. Chóng kh«ng ®a ra c¸c sù kiÖn x¶y ra thêng xuyªn nh mouseonover, v× mçi lÇn sù kiÖn x¶y ra nã cÇn mét round trip kh¸c tíi server, nã chiÕm mét thêi gian ®¸ng kÓ.
Sù t¹o l¹i trang
Trong bÊt kú kiÓu xö lý Web nµo, c¸c trang ®îc t¹o tõ ®Çu trong mçi round trip. Khi sevver kÕt thóc qu¸ tr×nh xö lý trang nã göi tíi browser vµ bá ®i c¸c th«ng tin vÒ trang ®ã. LÇn kÕ tiÕp khi trang ®îc post lªn server, server b¾t ®Çu l¹i toµn bé trang vµ xö lý.V× vËy, Web pages thêng ®îc nãi lµ sù phi tr¹ng th¸i, gi¸ trÞ c¸c biÕn trong trang vµ control kh«ng ®îc b¶o qu¶n trªn server.
Trong c¸c øng dông truyÒn thèng, th«ng tin mµ server cã ®îc lµ nh÷ng th«ng tin mµ ngêi dïng ®iÒn vµo c¸c control, bëi v× th«ng tin ®îc göi tíi server khi post c¸c form. C¸c th«ng tin kh¸c, nh gi¸ trÞ cña biÕn hay c¸c thuéc tÝnh thiÕt lËp ®Òu bÞ bá qua.
Bé khung Web Form gi¶i quyÕt c¸c giíi h¹n nµy theo mét vµi c¸ch. ®Çu tiªn nã ghi l¹i trang th¸i vµ c¸c thuéc tÝnh cña control gi÷a c¸c round trip. Sau ®ã nã cung cÊp c¸c tiÖn Ých qu¶n lý tr¹ng th¸i ®Ó tr¶ l¹i c¸c th«ng tin cô thÓ trong øng dông (kh«ng chØ lµ gi¸ trÞ cña c¸c control) gi÷a c¸c round trip hay khi qua l¹i gi÷a c¸c trang.
2.4.6 C¸c chÆng trong qu¸ tr×nh xö lý Web Form
Trong qu¸ tr×nh xö lý,Web form qua mçi sè chÆng kh¸c nhau.Mçi chÆng bé xö lý Web form gäi trang cã liªn quan xö lý c¸c ph¬ng thøc vµ ch¹y m· lÖnh trong ph¬ng thøc ®ã.
Page_Init
Sau sù kiÖn nµy , trang ®îc khëi t¹o. Sù kiÖn nµy chÞu tr¸ch nhiÖm cho tÊt c¶ c¸c ho¹t ®éng khëi t¹o. NÕu ta muèn khëi t¹o c¸c gi¸ trÞ mét vµi biÕn .. tríc khi n¹p trang, ta khai b¸o nã trong sù kiÖn Page_Init.
Page_load
Sù kiªn tù ®éng ch¹y mçi khi trang ®îc n¹p. nã x¶y ra tríc tiªn trong mét yªu cÇu trang sau khi c¸c control ®· ®îc khëi t¹o.
Change events
Sau sù kiÖn Page_Load, lµ c¸c sù kiÖn cña c¸c control ®Æc biÖt. VÝ dô nh c¸c control cã sù kiÖn Change hay thËm chÝ sù kiÖn click.
MÆc ®Þnh, chØ sù kiÖn click míi submit mét form lªn server. Sù kiÖn Change ®îc lu l¹i trong hµng ®îi chØ ®îc xö lý sau khi form ®îc post lªn server b»ng mét sù kiÖn click.
Click event.
T¹o ra viÖc post form lªn server ®îc xö lý sau khi tÊt c¶ sù kiÖn Change ®· ®îc xö lý.
Page_Unload
Lµ sù kiÖn cuèi cïng tríc khi trang bÞ huû bá, sù kÖn s¶y ra khi ngêi dung yªu cÇu tíi mét trang kh¸c. Ta kh«ng thÓ ®äc c¸c gi¸ trÞ cña control trong ph¬ng thøc cña sù kiÖn nµy v× c¸c control kh«ng cßn tån t¹i l©u n÷a. Page_Unload rÊt h÷u dông cho c¸c ho¹t ®éng lµm s¹ch nh ®ãng l¹i c¸c file, ®¨ng nhËp, ®ãng l¹i CSDL, vµ huû c¸c ®èi tîng.
2.4.7 M« h×nh sù kiÖn cña Web Form
Sù kiÖn trong Web Form thêng kh¸c víi c¸c sù kiÖn trong form client truyÒn thèng hay c¸c øng dông web thuÇn client.
Trong c¸c øng dông thuÇn client, c¸c sù kiÖn ph¸t sinh vµ ®îc n¾m b¾t bëi clien. Trong Web Form hÇu hÕt c¸c sù kiÖn ph¸t sinh ë phÝa client vµ ®îc n¾m b¾t ë phÝa server. Trong c¸c sù kiÖn ph¸t sinh ë phÝa client, m« h×nh sù kiÖn Web Form cÇn th«ng tin ®îc n¾m b¾t ë phÝa client vµ th«ng ®iÖp vÒ sù kiÖn ®îc chuyÓn tíi server. V× c¸ch lµm viÖc cña Web, th«ng ®iÖp nµy ph¶i ®îc post qua HTTP. Bé khung Web Form ph¶i th«ng dÞch th«ng tin nµy ®Ó x¸c ®Þnh sù kiÖn nµo ®· ph¸t sinh, vµ sau ®ã gäi ph¬ng thøc t¬ng øng trong m· lÖnh ®Ó n¾m b¾t sù kiÖn.
Sù kiÖn Postback vµ Non_Postback
Trong c¸c control cña Asp (kh«ng ph¶i cña HTML) mÆc ®Þnh chØ sù kiÖn button_click() trong form x¶y ra th× post th«ng tin tíi server. Sù kiÖn change trong control cña ASP.NET ®îc n¾m b¾t nhng kh«ng post ngay lËp tøc. Thay vµo ®ã chóng ®îc cache cho tíi khi post x¶y ra. Sau khi trang ®îc xö lý trªn server tÊt c¶ c¸c sù kiÖn ®îc xö lý lÇn lît.
Trong khi trang ®îc xö lý trªn server, tÊt c¶ c¸c sù kiÖn change ®îc xö lý tríc, sau ®ã sù kiÖn click g©y ra viÖc post form ®îc thùc hiÖn.
Ta cã thÓ ®Æt sù kiÖn change ®Ó cã thÓ post form ngay lËp tøc b»ng thuéc tÝnh Autopostback=”True” mµ kh«ng cÇn ®îi sù kiÖn click.
Ph¶n håi sù kiÖn tíi c¶ Client vµ server trong HTML server control.
C¸c server control trong ASP.NET chØ cung cÊp c¸c sù kiÖn ë phÝa client. Tuy nhiªn c¸c sù kiÖn trong bé HTML server control ( button vµ textbox) cho phÐp ta t¹o c¸c sù kiÖn cã thÓ ®îc n¾m b¾t ë c¶ hai phÝa client vµ server. Gièng nh c¸c sù kiÖn trong control cña Asp.NET, sù kiÖn phÝa server cña c¸c control HTML thêng bÞ giíi h¹n trong sù kiÖn ®¬n nh click hay change. C¸c sù cßn l¹i thêng cho ta dïng trong client script.
2.4.8 C¸c sù kiÖn Application vµ Session
Ngoµi c¸c sù kiÖn trong trang vµ c¸c sù kiÖn trong c¸c control, bé khung ASP.NET cßn cung cÊp c¸c sù kiÖn ë møc ®é cao h¬n:
Application. Sù kiÖn ApplicationStart() x¶y ra khi øng dông Web cña ta lÇn ®Çu tiªn ®îc b¾t ®Çu. §iÒu nµy cho phÐp ta khëi t¹o c¸c nguån tµi nguyªn
®îc sö dông trong suèt thêi gian ho¹t ®éng cña øng dông. Mét sù kiÖn t¬ng ®¬ng víi nã, ApplicationEnd() h÷u Ých ®Ó ta ®ãng l¹i c¸c tµi nguyªn ®· sö dông.
Session. C¸c sù kiÖn Session còng gièng nh Application (SessionStart vµ SesstionEnd) nhng ph¸t sinh víi mçi session duy nhÊt trong øng dông. (Mét session b¾t ®Çu khi mét ngêi dïng yªu cÇu ®Õn mét trang lÇn ®Çu tiªn trong øng dông cña ta vµ kÕt thóc khi øng dông cña ta ®ãng phiªn kÕt nèi hay khi c¸c phiªn kÕt nèi hÕt thêi h¹n).
§Ó t¹o ph¬ng thøc sù kiÖn theo có ph¸p ASP.NETTrong c¸c thµnh phÇn server control, chØ cÇn g¾n mét ph¬ng thøc cho tªn mét sù kiÖn:
Sau ®ã t¹o ph¬ng thøc ®Ó n¾m b¾t sù kiÖn ®ã trong m· lÖnh cña ta. Ph¬ng thøc cã d¹ng nh sau:
[Visual Basic]
Private Sub methodname(ByVal sender As Object, ByVal e as EventArgs)
VÝ dô:
[C]
protected void Button1_Click(object Source, EventArgs e){
Label1.Text="You clicked the button";
}
<asp:Button id=Button1 runat="server"
Text="Button1"
onclick="Button1_Click" />
C¸c ®iÒu khiÓn phÝa Server
Giíi thiÖu vÒ Server control.
Khi t¹o mét Web Form, ta cã thÓ sö dông c¸c lo¹i ®iÒu khiÓn sau:
HTML server control C¸c thµnh phÇn HTML ®îc më réng cho phÝa server do ®ã ta cã thÓ lËp tr×nh víi chóng, HTML server control nµy thÊt sù lµ c¸c ®èi tîng rÊt gÇn gòi víi c¸c thµnh phÇn HTML m· chóng ®aÞ diÖn.
ASP.NET server control. C¸c control nµy cã nhiÒu c¸c chøc n¨ng néi t¹i h¬n HTML server control. ASP server contrl kh«ng chØ gåm c¸c lo¹i control trong form nh button textbox chóng cßn cã nh÷ng control cã môc ®Ých ®Æc niÖt nh Calendar..
Control kiÓm tra vµ nhËp d÷ liÖu. Control nµy lµ mét kiÓu logic chÆt chÏ cho phÐp ta kiÓm tra d÷ liÖu nhËp vµo. Ban cã thÓ g¾n nã víi mét control nhËp d÷ liÖu ®Ó kiÓm tra tÝnh hîp lÖ cña d÷ liÖu nhËp.
User control. C¸c control mµ ta tù t¹o nh c¸c trang Web form. Ta cã thÓ nhóng c¸c user control trong c¸c trang Web Form kh¸c, thËt dÔ dµng ®Ó t¹o menu, thanh c«ng cô, hay c¸c thµnh phÇn cã thÓ sö dông l¹i kh¸c.
Ta cã thÓ sö dông tÊt c¶ c¸c control nµy trong cïng mét form.
2.4.9 HTML server control
HTML server control lµ c¸c thµnh phÇn HTML cã chøa c¸c thuéc tÝnh cã thÓ hiÓn thÞ vµ lËp tr×nh ®îc trªn server. Theo mÆc ®Þnh c¸c thµnh phÇn HTML trong trang Web Form thêng bÞ bá qua vµ ®îc coi nh c¸c ®o¹n v¨n b¶n b×nh thêng trªn server. Tuy nhiªn khi chuyÓn HTML sang HTML serverr control, ta cã thÓ më réng chóng nh lµ c¸c thµnh phÇn cã thÓ lËp tr×nh ®îc trªn server.
M« h×nh ®èi tîng cña HTML server control gÇn gièng nh c¸c thµnh phÇn HTML mµ chóng ®¹i diÖn. VÝ dô c¸c ®Æc trng cña HTML ®îc më réng nh lµ c¸c thuéc tÝnh trong HTML server control.
BÊt kú thµnh phÇn HTML nµo trong trang còng cã thÓ ®îc chuyÓn thµnh HTML server control. Sù chuyÓn ®æi nµy lµ mét qu¸ tr×nh ®¬n gi¶n ta chØ cÇn thªm thuéc tÝnh RUNAT=SERVER th«ng b¸o nµy sÏ cho server biÕt cÇn ph¶i t¹o mét ®èi tîng cho thµnh phÇn nµy khi xö lý.
NÕu ta muèn tham chiÕu mét control trong m· lÖnh ta cÇn ph¶i g¸n thuéc tÝnh ID cho control ®ã.
C¸c ®Æc diÓm cña HTML server control
. Lµ mét m« h×nh ®èi tîng mµ ta cã thÓ lËp tr×nh víi nã trªn server theo c«ng nghÖ lËp tr×nh híng ®èi tîng. Mçi server control më réng c¸c thuéc tÝnh cho phÐp ta thao t¸c víi c¸c ®Æc trng cña HTML theo kiÓu lËp tr×nh.
. Mét bé c¸c sù kiÖn mµ ta cã thÓ viÕt c¸c ph¬ng thøc theo c¸ch mµ ta thêng lµm víi c¸c control trong Window form chØ kh¸c lµ c¸c sù kiÖn nµy ®îc n¾m b¾t ë phÝa server.
. Kh¶ n¨ng n¾m b¾t sù kiÖn ë phÝa client
. Tù ®éng qu¶n lý trang th¸i cho c¸c gi¸ trÞ cña control trong form. NÕu cã mét round trip x¶y ra tíi server mµ gi¸ trÞ ngêi dïng nhËp vµo trong HTML server control th× chóng ®îc lu l¹i mét c¸ch tù ®éng khi trang ®îc göu trë l¹i tr×nh duyÖt.
T¬ng t¸c víi c¸c control kiÓm tra d÷ liªu nhËp (validation controls) do ®ã dÔ dµng buéc ngêi dïng diÒn c¸c th«ng tin hîp lÖ vµo trong form.
. Rµng buéc d÷ liÖu víi thuéc tÝnh trong c¸c control kh¸c .
. Hç trî kiÓu HTML 4.0.
2.4.10 ASP.NET server control
ASP.NET server control lµ bé control thø hai ®îc thiÕt kÕ víi rÊt nhiÒu kh¸c biÖt. Chóng kh«ng thÓ hiÖn gièng hÖt nh c¸c HTML server control. Thay vµo ®ã chóng ®îc ®Þnh nghÜa nh lµ c¸c control trõu tîng mµ ®¹i diÖn cho c¸c thµnh phÇn HTML v× c¸c control nµy thËt sù kh¸c víi m« h×nh ®Ó lËp tr×nh. VÝ dô RadioButtonList trong ASP.NET lµ mét control nhng nã l¹i gåm c¸c table trong m· HTML.
ASP.NET server control bao gåm c¸c control trong form truyÒn thèng nh button vµ textbox c¸c control phøc t¹p nh table. Chóng còng gåm cã c¸c control cung cÊp c¸c chøc n¨ng thíng xuyªn sö dông nh lµ hiÓn thÞ d÷ liÖu trong líi, chän ngµy th¸ng..
VÝ dô sau miªu t¶ lµm thÕ nµo ®Ó ®a vµo trong trang .aspx mét thµnh phÇn ®iÒu khiÓn:
Declaring Server Controls
This sample demonstrates how to declare the <asp:label> server control and
manipulate its properties within a page.
This is Message One
This is Message Two
This is Message Three
vµ sù thÓ hiÖn cña nã trªn tr×nh duyÖt:
Sau ®©y lµ c¸c ®Æc ®iÓm thªm vµo trong c¸c control ASP.NET:
M« h×nh ®èi tîng phong phó cung cÊp nhiÒu kh¶ n¨ng lËp tr×nh.
Tù ®éng x¸c ®Þnh tr×nh duyÖt. C¸c control cã thÓ x¸c ®Þnh tr×nh duyÖt vµ t¹o m· t¬ng øng cho tr×nh duyÖt ®ã.
Mét sè control cã kh¶ n¨ng ®Þnh d¹ng theo c¸ch ta muèn thÓ hiÖn b»ng c¸ch sö dông templates.
Mét sè control cã kh¶ n¨ng x¸c ®Þnh c¸c sù kiÖn vµ ngay lËp tøc post lªn server hoÆc lµ ®îc cache vµ ph¸t sinh khi form ®îc ®Ö tr×nh.
Trong lóc thiÕt kÕ ë d¹ng HTML, c¸c control xuÊt hiÖn trong trang cã d¹ng:
C¸c thuéc tÝnh trong trêng hîp nµy kh«ng gièng nh c¸c trong c¸c thµnh phÇn HTML, thay vµo ®ã chóng lµ c¸c thuéc tÝnh cña Web control.
Khi trang Web form ch¹y, c¸c web server control trong trang thêng ®îc thÓ hiÖn nh c¸c thµnh phÇn HTML. VÝ dô mét textbox control th× gièng nh kiÓu thÎ hay .
§Ó thªm c¸c Control vµo trang Web Form.
ViÖc thªm c¸c server control vµo trang Web Form ®¬n gi¶n nh thªm c¸c thµnh phÇn HTML. Có ph¸p chÝnh x¸c mµ ta sö dông phô thuéc vµo control mµ ta thªm vµo, nhng thêng thiÕt lËp theo c¸ch sau ®©y.
C¸c control ph¶i cã thuéc tÝnh runat=”server”.
§Æt thuéc tÝnh ID cho c¸c control trõ khi c¸c control ®ã lµ mét phÇn cña mét control phøc t¹p vµ sÏ ®îc lÆp l¹i( nh c¸c control Repeater, DataList vµ DataGrid).
Web server control ®îc khai b¸o víi mét thÎ XML mµ tham chiÕu ®Õn asp namespace. C¸c thÎ ph¶i ®îc ®ãng l¹i, ta cã thÓ sö dông thÎ ®ãng cô thÓ hay nÕu c¸c control kh«ng cã c¸c thµnh phÇn con ta cã thÓ dïng thÎ tù ®ãng.
TiÕp ®Çu ng÷ asp: cho biÕt ®iÒu kgiÓn ®îc t¹o ra tõ th viÖn lµ mét thµnh phÇn cña ASP.NET. Sö dông tiÕp ®Çu ng÷ lµm ph©n vïng tªn namespace cho phÐp ta t¹o ra nhiÒu phÇn tö hay thµnh phÇn ®iÒu khiÓn cïng tªn nhng ®îc ®Æt trong c¸c th viÖn kh¸c nhau.
ASP.NET cho phÐp c¸c nhµ ph¸t triÓn thø 3 cung cÊp th viÖn riªng cña hä, nh÷ng thµnh phÇn ®iÒu khiÓn thªm vµo sÏ ho¹t ®éng chung víi c¸c thµnh phÇn ®iÒu khiÓn ASP.NET s½n cã th«ng qua namespace riªng biÖt.
ThËt sù lµ m« h×nh ®èi tîng
C¸c Web server control thËt sù lµ m« h×nh ®èi tîng. Cã thÓ t¬ng t¸c víi nã th«ng qua c¸c ph¬ng thøc, thuéc tÝnh vµ sù kiÖn (t¬ng tù m« h×nh híng ®èi tîng trong Visual Basic ).
C¸c thuéc tÝnh vµ ph¬ng thøc
Khi mét ®iÒu khiÓn trong ASP.NET ®îc sö dông, ta hoµn toµn cã thÓ ®Æt thuéc tÝnh vµ triÖu gäi ph¬ng thøc trong nã.
C¸c sù kiÖn
C¸c ®iÒu khiÓn cña ASP.NET cho phÐp ®¸p øng mét sè sù kiÖn ph¸t sinh tõ m¸y kh¸ch ngay trªn tr×nh chñ
Sub button1_onclick (Object Sender, EventArgs E)
§iÒu khiÓn server control néi t¹i
C¸c server control néi t¹i thiÕt kÕ ®Ó thay thÕ cho c¸c ®iÒu khiÓn HTML. Lý do viÖc thay thÕ nµy lµ do tÝnh thuÇn nhÊt vµ t¬ng thÝch. Mét trong nh÷ng vÊn ®Ò yÕu kÐm cña HTML ®ã lµ kh«ng thuÇn nhÊt vµ t¬ng thÝch trong c¸ch ®Æt tªn cho c¸c thµnh phÇn c¸c chøc n¨ng t¬ng tù nhau. VÝ dô: B»ng thÎ ta cã thÓ t¹o ra rÊt nhiÒu ®iÒu khiÓn kh¸c nhau “radio”, ”checkbox”, “button”,.. Chóng kh«ng râ rµng b»ng viÖc ®Þnh nghÜa c¸c ®iÒu khiÓn néi t¹i do ASP.NET cung cÊp.
KÕt qu¶ cuèi cïng mµ ®iÒu khiÓn néi t¹i sinh ra ®Ó hiÓn thÞ trªn tr×nh duyÖt còng chØ lµ m· HTML ®¬n gi¶n.
Giíi thiÖu mét sè Web Server Control
Label Web Server control: cung cÊp cho ta c¸ch ®Ó ®a mét ®o¹n text ra trang Web Form. Thêng th× ta chØ nªn sö dông control nµy khi muè ®o¹n text ®ã cña ta thay ®æi trong lóc thùc thi. Sö dông label control th× ®¬n gi¶n h¬n viÖc dïng textbox hay c¸c control kh¸c, v× kÕt qu¶ cña nã lµ tÜnh trªn trang Web, ngêi dïng kh«ng thÓ thay ®æi.
Button: t¬ng tù nh c¸c Submit trong HTML. Sö dông c¸c thµnh phÇn ®iÒu khiÓn nót nhÊn nµy khi ta muèn postback d÷ liÖu lªn tr×nh chñ.
Linkbutton (nót liªn kÕt):cho phÐp ta thùc hiÖn mét sè thao t¸c tríc khi post lªn tr×nh chñ.
Imagebutton: t¬ng tù nh button nhng cho phÐp ta g¾n mét h×nh ¶nh vµo ®ã.
Hyperlink chøc n¨ng nh thÎ trong HTML.
§iÒu khiÓn textbox: thµnh phÇn nµy cho phÐp ta nhËp d÷ liÖu vµo tõ bµn phÝm kh¸ t¬ng tù víi hép text trong Visual Basic.
§iÒu khiÓn lùa chän
checkbox: cho phÐp chän nhiÒu ®Ò môc cïng mét lóc.
Radio button: Cho phÐp chän duy nhÊt mét ®Ò môc trong c¸c ®Ò môc ®a ra.
Litstbox: hiÓn thÞ danh s¸ch c¸c môc ®Ó lùa chän cho phÐp chän mçi lÇn mét ®Ò môc.
Thuéc tÝnh Autopostback
C¸c ®iÒu khiÓn trªn ®Òu cã mét thuéc tÝnh qu¶n lý tr¹ng th¸i lµ Autopostback. Th«ng thêng d÷ liÖu vµ kÕt qu¶ t¬ng t¸c cña ngêi dïng chØ ®îc göi lªn server xö lý sau khi ®· nhÊn nót submi. Tuy nhiªn, nÕu ta muèn thao t¸c postback thùc hiÖn ngay khi nót radio, checkbox hay danh s¸ch ®îc chän ta cã thÓ ®Æt thuéc tÝnh autopostback cña mçi nót chän cã gi¸ trÞ lµ true víi chØ ®Þnh thñ tôc xö lý sù kiÖn trªn server.
C¸c ®iÒu khiÓn ®a n¨ng (Rich control)
§iÒu khiÓn Adrotator
Chän ngÉu nhiªn c¸c th«ng tin qu¶ng c¸o ®îc ®Þnh d¹ng s½n vµo trang tµi liÖu mçi khi hiÓn thÞ.
§iÒu khiÓn lÞch Calendar
Lµ ®iÒu khiÓn ®¬n gi¶n nhng mang l¹i nhiÒu t¸c dông. HiÓn thÞ lÞch vµo trang tµi liÖu theo c¸c kiÓu mµ ta ®Þnh mÉu. Ngoµi ra ngêi dïng cã thÓ t¬ng t¸c víi ®iÒu khiÓn lÞch nµy VÝ dô sau hiÓn thÞ mét calendar ®· ®îc ®Þnh d¹ng l¹i mÉu.
2.4.11 C¸c ®iÒu khiÓn ®a n¨ng kh¸c
HiÖn Microsoft ®ang x©y dùng mét tËp gåm rÊt nhiÒu ®iÒu khiÓn ®a n¨ng nh treeview, listview, Menu.. nh÷ng thµnh phÇn ®iÒu khiÓn nµy ho¹t ®éng t¬ng tù nh trong m«i trêng ph¸t triÓn desktop. Thµnh phÇn ®iÒu khiÓn ®a n¨ng thËt sù ®em l¹icho c¸c nhµ ph¸t triÓn Web kh¶ n¨ng x©y dùng øng dông nhanh chãng vµ hiÖu qu¶. Lo¹i bá c«ng viÖc ph¶i x©y dùng lÆp ®i lÆp l¹i c¸c ®iÒu khiÓn th«ng dông.
Web server control dïng ®Ó kiÓm tra d÷ liÖu nhËp vµo (validate control)
Mét trong nh÷ng lîi Ých cña viÖc t¹o c¸c trang Web Form cho viÖc nhËp d÷ liÖu lµ cã thÓ kiÓm tra tÝnh hîp lÖ th«ng tin nhËp vµo cña ngêi dïng. ASP.NET cung cÊp mét bé control ®Ó thùc hiÖn viÖc nµy, chóng rÊt dÔ sö dông cã thÓ kiÓm tra lçi nÕu cÇn thiÕt th«ng b¸o lçi.
2.4.12 Sö dông Validation Control
§Ó kiÓm tra d÷ liÖu nhËp vµo cña ngêi dïng, ta cÇn ph¶i thªm vµo trong trang Web Form c¸c validation control cho mçi control. Cã nhiÒu c¸c validation control cho mçi kiÓu kiÓm tra kh¸c nhau:
Lo¹i kiÓm tra
Control ®îc sö dông
ý nghÜa
B¾t buéc ph¶i nhËp
RequiredFieldValidator
Ngêi dïng kh«ng thÓ bá qua
so s¸nh gi¸ trÞ
CompareValidator
So s¸nh gi¸ trÞ nhËp vµo víi mét h»ng sè, hay gi¸ trÞ cña c¸c control sö dông c¸c phÐp so s¸nh.
KiÓm tra giíi h¹n
RangeValidator
KiÓm tra gi¸ trÞ nhËp vµo trong mét kho¶ng x¸c ®Þnh, giíi h¹n víi c¸c ch÷ sè,ch÷ c¸i..
Ngêi dïng thiÕt lËp
CustomValidator
KiÓm tra b»ng c¸ch sö dông c¸c quy ®Þnh cña ta.
Mçi input server control cã thÓ ®îc g¾n víi nhiÒu Validator ®Ó thùc hiÖn nhiÒu t¸c vô. VÝ dô, ta cã thÓ g¾n vµo mét input ®Ó kiÓm tra ®iÒu kiÖn b¾t buéc ph¶i nhËp kÕt hîp víi kiÓm tra giíi h¹n nhËp vµo.
Tuy nhiªn c¸c control kiÓm tra d÷ liÖu nhËp lµm viÖc giíi h¹n ®èi víi c¸c thµnh phÇn sau:
Control
Thuéc tÝnh kiÓm tra
HtmlInputText
Value
HtmlTextArea
Value
HtmlSelect
Value
HtmlInputFile
Value
TextBox
Text
ListBox
SelectedItem.Value
DropDownList
SelectedItem.Value
RadioButtonList
SelectedItem.Value
2.4.13 ASP.NET User Web control
C¸c ®iÒu khiÓn trong ASP .NET ®· cung cÊp nhiÒu chøc n¨ng rÊt cã Ých, nhng chóng vÉn kh«ng thÓ ®¸p øng ®îc hÕt c¸c yªu cÇu trong nhiÒu hoµn c¶nh kh¸c nhau. Web user contr._.ice)
Dim parameterProductIMAGEURL As OleDbParameter = New OleDbParameter("iIMAGEURL", OleDbType.LongVarChar, ParameterDirection.Input)
parameterProductIMAGEURL.Value = IMAGEURL
myCommand.Parameters.Add(parameterProductIMAGEURL)
Dim parameterProductDescription As OleDbParameter = New OleDbParameter("Description", OleDbType.LongVarChar, ParameterDirection.Input)
parameterProductDescription.Value = DESCRIPTION
myCommand.Parameters.Add(parameterProductDescription)
Dim parameterQuality As OleDbParameter = New OleDbParameter("iQuality", OleDbType.Numeric, ParameterDirection.Input)
parameterQuality.Value = QUALITY
myCommand.Parameters.Add(parameterQuality)
Dim parameterAmount As OleDbParameter = New OleDbParameter("iAmount", OleDbType.Numeric, ParameterDirection.Input)
parameterAmount.Value = AMOUNT
myCommand.Parameters.Add(parameterAmount)
Dim parameterTotalview As OleDbParameter = New OleDbParameter("iTotalview", OleDbType.Numeric, ParameterDirection.Input)
parameterTotalview.Value = TOTALVIEW
Dim parameterDate As OleDbParameter = New OleDbParameter("iDate", OleDbType.Date, ParameterDirection.Input)
parameterDate.Value = DATECREATED
myCommand.Parameters.Add(parameterDate)
myCommand.Parameters.Add(parameterTotalview)
Dim parameterIsforsale As OleDbParameter = New OleDbParameter("iIsforsale", OleDbType.LongVarChar, ParameterDirection.Input)
parameterIsforsale.Value = ISFORSALE
myCommand.Parameters.Add(parameterIsforsale)
' Execute the command
myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
End Sub
Public Sub AddNewCategory(ByVal CategoryName As String)
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call packcategory.AddCat(?)}", myConnection)
Dim parameterCategoryName As OleDbParameter = New OleDbParameter("CategoryName", OleDbType.LongVarChar, ParameterDirection.Input)
parameterCategoryName.Value = CategoryName
myCommand.Parameters.Add(parameterCategoryName)
myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
End Sub
Public Sub Updateview(ByVal Productid As Integer)
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call PackProduct.UpdateView(?)}", myConnection)
Dim parameterView As OleDbParameter = New OleDbParameter("CategoryName", OleDbType.LongVarChar, ParameterDirection.Input)
parameterView.Value = Productid
myCommand.Parameters.Add(parameterView)
myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
End Sub
End Class
End Namespace
C¸c ph¬ng thøc cã trong ®èi tîng nµy lµ lÊy c¸c th«ng tin vÒ category, subcategory, lÊy th«ng tin vÒ mÆt hµng theo category vµ subcategory, th«ng tin chi tiÕt vÒ mÆt hµng, thªm vµo thuéc tÝnh cña mÆt hµng sè lît ngêi xem.
§èi t¬ng Customers
Imports System
Imports System.Web
Imports System.Data
Imports System.Data.OleDb
Namespace Cybermarket
Public Class Customers
Public Sub AddUser(ByVal Username As String, ByVal Tel As String, ByVal address As String, ByVal emailadd As String, ByVal password As String)
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call PackUser.AddUser(?,?,?,?,?)}", myConnection)
Dim parameterUserName As OleDbParameter = New OleDbParameter("UserName", OleDbType.LongVarChar, ParameterDirection.Input)
parameterUserName.Value = Username
myCommand.Parameters.Add(parameterUserName)
Dim parameterUserTel As OleDbParameter = New OleDbParameter("Tel", OleDbType.LongVarChar, ParameterDirection.Input)
parameterUserTel.Value = Tel
myCommand.Parameters.Add(parameterUserTel)
Dim parameterUseraddress As OleDbParameter = New OleDbParameter("Address", OleDbType.LongVarChar, ParameterDirection.Input)
parameterUseraddress.Value = address
myCommand.Parameters.Add(parameterUseraddress)
Dim parameterEmailaddress As OleDbParameter = New OleDbParameter("Email", OleDbType.LongVarChar, ParameterDirection.Input)
parameterEmailaddress.Value = emailadd
myCommand.Parameters.Add(parameterEmailaddress)
Dim parameterpassword As OleDbParameter = New OleDbParameter("Password", OleDbType.LongVarChar, ParameterDirection.Input)
parameterpassword.Value = password
myCommand.Parameters.Add(parameterpassword)
myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
End Sub
Public Function CheckLogin(ByVal emailadd As String, ByVal password As String) As OleDbDataReader
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call PackUser.CheckLogin(?,?)}", myConnection)
Dim parameterEmailaddress As OleDbParameter = New OleDbParameter("iEmailadd", OleDbType.LongVarChar, ParameterDirection.Input)
parameterEmailaddress.Value = emailadd
myCommand.Parameters.Add(parameterEmailaddress)
Dim parameterpassword As OleDbParameter = New OleDbParameter("iPassword", OleDbType.LongVarChar, ParameterDirection.Input)
parameterpassword.Value = password
myCommand.Parameters.Add(parameterpassword)
myConnection.Open()
Dim result As OleDbDataReader
result = myCommand.ExecuteReader()
Return result
myConnection.Close()
End Function
Public Function checkEmail(ByVal emailadd As String) As Boolean
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=MSDAORA.1;Password=tiger;User ID=scott;Data Source=test02")
Dim myCommand As OleDbCommand = New OleDbCommand("{call PACKUSER.CHECKEMAIL(?)}", myConnection)
Dim parameterEmailaddress As OleDbParameter = New OleDbParameter("IEmailadd", OleDbType.VarChar, 50, ParameterDirection.Input)
parameterEmailaddress.Value = emailadd
myCommand.Parameters.Add(parameterEmailaddress)
myConnection.Open()
Dim result As OleDbDataReader
result = myCommand.ExecuteReader()
If result.Read Then
Return True
Else
Return False
End If
myConnection.Close()
End Function
Public Function GetUserdetails(ByVal UserID As Integer) As OleDbDataReader
' Create Instance of Connection and Command Object
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call packuser.GetUserDetails(?)}", myConnection)
' Mark the Command as a SPROC
' myCommand.CommandType = CommandType.StoredProcedure
' Add Parameters to SPROC
Dim parameterUser As OleDbParameter = New OleDbParameter("iuserid", OleDbType.Numeric, 10)
parameterUser.Value = UserID
myCommand.Parameters.Add(parameterUser)
' Execute the command
myConnection.Open()
Dim result As OleDbDataReader
result = myCommand.ExecuteReader()
' Return the datareader result
Return result
myConnection.Close()
End Function
End Class
End Namespace
§èi tîng nµy cung cÊp c¸c ph¬ng thøc ®Ó kiÓm tra qu¸ tr×nh ®¨ng nhËp cña ngêi dïng, kiÓm ta tÝnh hîp lÖ cña ®Þa chØ Email khi ®¨ng ký míi, thªm mét kh¸ch hµng vµo c¬ së d÷ liÖu vµ lÊy th«ng tin chi tiÕt vÒ kh¸ch hµng ®ã.
§èi tîng Email
Imports System.Web.Mail
Imports System
Imports System.Data
Imports System.Data.OleDb
Namespace Cybermarket
Public Class Email
Public Function Getmailtemplate(ByVal mailtype As Integer) As OleDbDataReader
' Create Instance of Connection and Command Object
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call packmails.Getmailtype(?)}", myConnection)
' Mark the Command as a SPROC
' myCommand.CommandType = CommandType.StoredProcedure
' Add Parameters to SPROC
Dim parametermailtype As OleDbParameter = New OleDbParameter("imailtype", OleDbType.Numeric, 10)
parametermailtype.Value = mailtype
myCommand.Parameters.Add(parametermailtype)
' Execute the command
myConnection.Open()
Dim result As OleDbDataReader
result = myCommand.ExecuteReader()
' Return the datareader result
Return result
myConnection.Close()
End Function
Public Function sent(ByVal from As String, ByVal sender As String, ByVal mailto As String, ByVal RCPT As String, ByVal subject As String, ByVal Body As String) As Boolean
Dim msg As New MailMessage()
msg.From = from
msg.Subject = subject 'Formatmail(result("subject"), mailto, productmodel)
msg.Body = Body 'Formatmail(result("body"), mailto, productmodel)
msg.To = RCPT
SmtpMail.SmtpServer = "localhost"
Try
SmtpMail.Send(msg)
Catch
Return False
End Try
Return True
End Function
Public Function Formatmail(ByVal msgtoformat As String, ByVal Username As String, ByVal Productmodel As String) As String
msgtoformat = msgtoformat.Replace("", Username)
msgtoformat = msgtoformat.Replace("", Productmodel)
Return msgtoformat.ToString
End Function
Public Sub Addmail(ByVal productid As String, ByVal sender As String, ByVal RCPT As String, ByVal subject As String, ByVal body As String)
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call Packmails.Addmail(?,?,?,?,?)}", myConnection)
Dim parameterproduct As OleDbParameter = New OleDbParameter("iproduct", OleDbType.Numeric, ParameterDirection.Input)
parameterproduct.Value = productid
myCommand.Parameters.Add(parameterproduct)
Dim parametersender As OleDbParameter = New OleDbParameter("isender", OleDbType.LongVarChar, ParameterDirection.Input)
parametersender.Value = sender
myCommand.Parameters.Add(parametersender)
Dim parameterRCPT As OleDbParameter = New OleDbParameter("iRCPT", OleDbType.LongVarChar, ParameterDirection.Input)
parameterRCPT.Value = sender
myCommand.Parameters.Add(parameterRCPT)
Dim parametersubject As OleDbParameter = New OleDbParameter("isubject", OleDbType.LongVarChar, ParameterDirection.Input)
parametersubject.Value = subject
myCommand.Parameters.Add(parametersubject)
Dim parameterbody As OleDbParameter = New OleDbParameter("ibody", OleDbType.LongVarChar, ParameterDirection.Input)
parameterbody.Value = body
myCommand.Parameters.Add(parameterbody)
myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
End Sub
Public Function Getmailbyproduct(ByVal productid As Integer) As OleDbDataReader
' Create Instance of Connection and Command Object
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call packmail.getmailbyproduct(?)}", myConnection)
' Mark the Command as a SPROC
' myCommand.CommandType = CommandType.StoredProcedure
' Add Parameters to SPROC
Dim parameterProduct As OleDbParameter = New OleDbParameter("iuserid", OleDbType.Numeric, 10)
parameterProduct.Value = productid
myCommand.Parameters.Add(parameterProduct)
' Execute the command
myConnection.Open()
Dim result As OleDbDataReader
result = myCommand.ExecuteReader()
' Return the datareader result
Return result
myConnection.Close()
End Function
Public Function Getmailbycustomer(ByVal Userid As Integer) As OleDbDataReader
' Create Instance of Connection and Command Object
Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''")
Dim myCommand As OleDbCommand = New OleDbCommand("{call Packmail.Getmailbyuser(?)}", myConnection)
' Mark the Command as a SPROC
' myCommand.CommandType = CommandType.StoredProcedure
' Add Parameters to SPROC
Dim parameterUser As OleDbParameter = New OleDbParameter("iuserid", OleDbType.Numeric, 10)
parameterUser.Value = Userid
myCommand.Parameters.Add(parameterUser)
' Execute the command
myConnection.Open()
Dim result As OleDbDataReader
result = myCommand.ExecuteReader()
' Return the datareader result
Return result
myConnection.Close()
End Function
End Class
End Namespace
Cung cÊp c¸c ph¬ng thøc dïng ®Ó thªm míi mét email khi cã mét kh¸ch hµng sö dông chøc n¨ng göi th trong Web site, lÊy c¸c email theo s¶n phÈm hay theo id cña kh¸ch hµng ®ã. Trong ®èi tîng nµy cßn cã ph¬ng thøc ®Ó ®Þnh d¹ng l¹i bøc th theo tõng chñ ®Ó cã trong b¶ng Emailtemplate cña CSDL vµ ph¬ng thøc ®Ó göi ®i mét bøc th.
C¸c ®èi tîng kh¸c
§èi tîng cmenu
Trong øng dông cã sö dông mét menu ®Ó t¹o giao diÖn khi lùa chän c¸c category viÖc x©y dùng menu nµy ®Ó cã thÓ ®äc d÷ liÖu tõ nguån d÷ liÖu XML t¬ng ®èi phøc t¹p vµ dµi dßng nªn kh«ng ®îc tr×nh bµy ë ®©y. cmenu lµ ®èi tîng ®· ®îc biªn dÞch vµ ®Æt trong th môc /BIN cña øng dông.
§èi tîng menuDb
Imports System
Imports System.Text
Imports System.Configuration
Imports System.Data
Imports System.Data.OleDb
Imports Cyber_market.Cybermarket
Namespace Cybermarket
Public Class MenuDb
Public Function CreatMenu() As StringBuilder
Dim ProductCategory As ProductsDB = New Cybermarket.ProductsDB()
Dim Categories As OleDbDataReader
Categories = ProductCategory.GetProductCategories()
Dim strXml As StringBuilder = New StringBuilder()
strXml.Append(" ")
strXml.Append("")
strXml.Append("")
'Dim i As string=0
Dim PRoductCatelo As Cybermarket.ProductsDB = New Cybermarket.ProductsDB()
Dim ProductList As OleDbDataReader
'Dim categoryId As Integer
While Categories.Read()
strXml.Append("")
strXml.Append("")
ProductList = PRoductCatelo.GetsubCategoryProducts(Categories("CategoryID"))
While ProductList.Read()
strXml.Append("")
End While
strXml.Append("")
strXml.Append("")
End While
strXml.Append("")
strXml.Append("")
Return strXml
End Function
End Class
End Namespace
Ph¬ng thøc createmenu trong ®èi tîng nµy chØ ®Ó t¹o mét chuçi d÷ liÖu XML ®Ó ®Þnh d¹ng menu cho ®èi tîng cmenu.
§èi tîng uploadpro lµ ®èi t¬ng thªm vµo ®Ó thùc hiÖn viÖc upload file ¶nh lªn server.
3.3.2 Cµi ®Æt trang ASP.NET
Mét sè trang chÝnh trong øng dông
Trang default
Gåm cã phÇn tiªu ®Ò cña trang lµ mét web user control “_header.ascx” ®îc da vµo trang b»ng chØ thÞ , phÇn menu hiÓn thÞ danh môc mÆt hµng còng lµ mét User control. PhÇn ®Þnh d¹ng nµy xuyªn suèt trong toµn bé Web site
Default
<td style="HEIGHT: 324px" vAlign=top width=120 colSpan=1 height=324
>
<td vAlign=top align=middle width=335 height=336 rowSpan=2
style="HEIGHT: 336px">
<DIV style="DISPLAY: inline; WIDTH: 325px; HEIGHT: 55px"
ms_positioning="FlowLayout">This is hottest
Products in Week
<td vAlign=top align=middle width=120 colSpan=1 height=12
style="HEIGHT: 12px">
Type something
<img
height=19 src="file:///C:/CTK_CU~1.GIF" width=10 border=0
><img style="HEIGHT: 19px" height=19
width=470 border=0
>
M· Èn trong trang default thùc hiÖn viÖc request cookies ®Ó kiÓm tra xem ngêi dïng ®ã cã save l¹i th«ng tin cña hä trªn tr×nh kh¸ch kh«ng.
Trang login
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Web.Security
Public Class Login
Inherits System.Web.UI.Page
Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents TextBox3 As System.Web.UI.WebControls.TextBox
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Customer As Cybermarket.Customers = New Cybermarket.Customers()
Dim drcustomer As OleDbDataReader
drcustomer = Customer.CheckLogin(TextBox1.Text, TextBox2.Text)
If Not drcustomer.Read Then
Label2.Text = "Invalid Password"
Else
Label2.Text = "Login successful!"
' Store the user's fullname in a cookie for personalization purposes
Response.Cookies("Cybermarket_customerid").Value = drcustomer("UserId").ToString()
Response.Cookies("Cybermarket_fullname").Value = drcustomer("UserName").ToString()
' Make the cookie persistent only if the user selects "persistent" login checkbox
If CheckBox1.Checked = True Then
Response.Cookies("Cybermarket_customerid").Expires = DateTime.Now.AddMonths(1)
Response.Cookies("Cybermarket_fullname").Expires = DateTime.Now.AddMonths(1)
End If
End If
End Sub
End Class
KiÓm tra vµ ghi l¹i th«ng tin cña ngêi dïng trong mçi lÇn ®¨ng nhËp
Néi dung trang Productlist.aspx
Trang nµy ®îc goi tõ trang default.aspx qua c¸c link trong menu. Trang nµy ®îc gäi víi mét hoÆc hai gi¸ trÞ g¸n vµo ®i¹ chØ URL, c¸c gi¸ trÞ nµy lµ category vµ subcategory. Ta sÏ lÊy c¸c th«ng tin nµy ®Ó hiÓn thÞ mÆt hµng theo chñng lo¹i.
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class ProductsList
Inherits System.Web.UI.Page
Protected WithEvents LinkButton1 As System.Web.UI.WebControls.LinkButton
Protected WithEvents LinkButton2 As System.Web.UI.WebControls.LinkButton
Protected WithEvents LinkButton3 As System.Web.UI.WebControls.LinkButton
Protected WithEvents LinkButton4 As System.Web.UI.WebControls.LinkButton
Protected WithEvents LinkButton5 As System.Web.UI.WebControls.LinkButton
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents MyList As System.Web.UI.WebControls.DataList
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Dim PageDS As PagedDataSource
Dim seltab As String
Dim i As Integer
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub pagestart(ByVal pageindex As Integer)
' i = CInt(Label1.Text)
Dim ds As DataSet
PageDS = New PagedDataSource()
Dim dv As DataView
If Request.Params("subCategoryId") Is Nothing Then
seltab = Label2.Text
Dim categoryId As Integer = CInt(Request.Params("CategoryID"))
Dim productCatalogue As Cybermarket.ProductsDB = New Cybermarket.ProductsDB()
If seltab = "For sale only" Then
ds = productCatalogue.GetProductsbyCat(categoryId, "sale")
Else
If seltab = "Wanted" Then
ds = productCatalogue.GetProductsbyCat(categoryId, "wanted")
Else
'Get Products by Categories
ds = productCatalogue.GetProductsbyCat(categoryId, "both")
End If
End If
dv = ds.Tables("Products").DefaultView
PageDS.DataSource = dv
PageDS.AllowPaging = True
PageDS.PageSize = 2
PageDS.CurrentPageIndex = pageindex
MyList.DataSource = PageDS
MyList.DataBind()
Else
Dim subcategoryId As Integer = CInt(Request.Params("SubCategoryID"))
'Get Products by subCategories
Dim productsubCatalogue As Cybermarket.ProductsDB = New Cybermarket.ProductsDB()
'ds = productsubCatalogue.GetProductsbySubCat(subcategoryId, i, 2)
'MyList.DataSource = ds
'MyList.DataBind()
End If
End Sub
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not Page.IsPostBack Then
pagestart(0)
End If
End Sub
Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
Label2.Text = "For sale only"
Label1.Text = 0
pagestart(0)
End Sub
Private Sub LinkButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton3.Click
Label2.Text = "Both"
pagestart(0)
End Sub
Private Sub LinkButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton2.Click
Label2.Text = "Wanted"
pagestart(0)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Response.Redirect("search.aspx?query=" & TextBox1.Text)
End Sub
Private Sub LinkButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton4.Click
Label1.Text = CInt(Label1.Text) + 1
pagestart(CInt(Label1.Text))
End Sub
Private Sub LinkButton5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton5.Click
Label1.Text = CInt(Label1.Text) - 1
pagestart(CInt(Label1.Text))
End Sub
Private Sub MyList_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
End Class
Trang ProductList
Trang nµy ®îc yªu cÇu khi ngêi dïng chän ¶nh cña mÆt hµng trong ProductList th«ng tin vÒ mÆt hµng ®îc lÊy tõ URL khi gäi trang víi id cña mÆt hµng
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class Productdetails
Inherits System.Web.UI.Page
Protected WithEvents Image1 As System.Web.UI.WebControls.Image
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Protected WithEvents Label4 As System.Web.UI.WebControls.Label
Protected WithEvents Label5 As System.Web.UI.WebControls.Label
Protected WithEvents Label6 As System.Web.UI.WebControls.Label
Protected WithEvents Label7 As System.Web.UI.WebControls.Label
Protected WithEvents Label8 As System.Web.UI.WebControls.Label
Protected WithEvents HyperLink1 As System.Web.UI.WebControls.HyperLink
Protected WithEvents Label10 As System.Web.UI.WebControls.Label
Protected WithEvents Label9 As System.Web.UI.WebControls.Label
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Dim ProductId As Integer = CInt(Request.Params("ProductID"))
Dim productdetail As Cybermarket.ProductsDB = New Cybermarket.ProductsDB()
Dim dr As OleDbDataReader
dr = productdetail.GetProductdetails(ProductId)
dr.Read()
Label1.Text += dr("ProductModel").ToString()
Label2.Text += dr("Production").ToString()
Label3.Text += dr("Country").ToString()
Label4.Text += dr("Price").ToString()
Label5.Text += dr("quality").ToString
Label6.Text += dr("amount").ToString()
Label7.Text += dr("totalview").ToString()
Label8.Text += dr("datecreated").ToString()
Label9.Text += dr("description").ToString()
Dim userdetails As Cybermarket.Customers = New Cybermarket.Customers()
Dim druser As OleDbDataReader
druser = userdetails.GetUserdetails(CInt(dr("userid").ToString))
druser.Read()
HyperLink1.Text = druser("Email").ToString
Label10.Text = druser("UserName").ToString & vbCrLf & _
druser("Tel").ToString & vbCrLf & _
druser("Address").ToString
Image1.ImageUrl = "Images\ProductImages\" & dr("ImageUrl").ToString
dr.Close()
productdetail.Updateview(ProductId)
End Sub
End Class
Trang sendmail
Imports System.Data
Imports System.Data.OleDb
Public Class sendmail
Inherits System.Web.UI.Page
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox3 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox4 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox5 As System.Web.UI.WebControls.TextBox
Protected WithEvents Button2 As System.Web.UI.WebControls.Button
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents search As System.Web.UI.HtmlControls.HtmlForm
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not Page.IsPostBack Then
If Request.Params("productid") "" Then
Dim ProductId As Integer = CInt(Request.Params("ProductID"))
Dim UserId As Integer = CInt(Request.Params("UserID"))
'Ok! now get some information about product and user
Dim Getinfouser As New Cybermarket.Customers()
Dim dr As OleDbDataReader
dr = Getinfouser.GetUserdetails(UserId)
dr.Read()
TextBox3.Text = dr("Email").ToString
Dim drp As OleDbDataReader
Dim Getinfopro As New Cybermarket.ProductsDB()
drp = Getinfopro.GetProductdetails(ProductId)
drp.Read()
Label2.Text += " You can contact to " & dr("UserName") & vbCrLf & _
"at" & dr("Tel") & vbCrLf & dr("address")
Dim drm As OleDbDataReader
Dim Gettmp As New Cybermarket.Email()
drm = Gettmp.Getmailtemplate(1)
drm.Read()
TextBox4.Text = Gettmp.Formatmail(drm("Subject").ToString, dr("UserName").ToString, drp("ProductModel").ToString)
TextBox5.Text = Gettmp.Formatmail(drm("Body").ToString, dr("UserName").ToString, drp("ProductModel").ToString)
dr.Close()
drp.Close()
drm.Close()
End If
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim sendmail As New Cybermarket.Email()
Dim result As Boolean
result = sendmail.sent(TextBox2.Text, "Hatung", TextBox3.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text)
If result Then
Label1.Text = "Successful"
Else
Label1.Text = "Fail"
End If
End Sub
End Class
Trªn ®©y chóng ta ®· xem qua mét c¸ch ng¾n gän néi dung cña vµ cïng mét phÇn cña m· nguån ë phÝa ngêi dïng, cßn ®¬n thÓ ®Ó qu¶n trÞ m¹ng cha ®îc thiÕt kÕ do thêi gian h¹n hÑp. PhÇn ®¬n thÓ qu¶n trÞ nµy sÏ cã néi dung nh sau:
LiÖt kª toµn bé mÆt hµng cã trong b¶ng POST cho ngêi qu¶n trÞ,söa ®æi hay xãa khi th«ng tin kh«ng hîp lÖ, hay chÌn thªm vµo b¶ng PRODUCTS ®Ó th«ng tin ®îc ®a ®Õn mäi ngêi.
LiÖt kª c¸c category ®Ó söa ®æi hay më réng chñng lo¹i mÆt hµng.
Danh môc tµi liÖu tham kh¶o
[1] Introduction to Microsoft ASP.NET. (Course Number: 2063C).
[2] ASP 3.0 ASP.NET – Nhµ xuÊt b¶n gi¸o dôc.
[3] Microsoft .NET Framework SDK Documentation.
[4] Gi¸o tr×nh lý thuyÕt vµ thùc hµnh Oracle 8i.
[5] PL/SQL Fundamental.
KÕt luËn
Víi sù ph¸t triÓn nhanh chãng cña Internet vµ th¬ng m¹i ®iÖn tö nh hiÖn nay. ViÖc lùa ASP.NET ®îc coi nh lµ gi¶i ph¸p h÷u hiÖu nhÊt. Víi ASP.NET thiÕt kÕ Web giê ®©y trë nªn dÔ dµng h¬n bao giê hÕt do ®îc hç trî nhiÒu thµnh phÇn phong phó, cã kh¶ n¨ng vît qua mäi tr×nh duyÖt, thiÕt bÞ mµ ta kh«ng cÇn quan t©m ®Õn viÖc ®Þnh d¹ng c¸c trang tµi liÖu cho mçi tr×nh duyÖt, mçi thiÕt bÞ, ASP.NET kÕt thóc nh÷ng tranh luËn vÒ ng«n ng÷ lËp tr×nh khi hç trî trªn 25 ng«n ng÷ kh¸c nhau.
Khi kÕt hîp víi ADO+ víi ASP.NET ta dÔ dµng triÓn khai ®îc c¸c øng dông víi m« h×nh N-tier, t¹o ra ®îc nguån d÷ liÖu kh«ng kÕt nèi tõ nhiÒu nguån d÷ liÖu kh¸c nhau
H¬n n÷a, ASP.NET më ra nhiÒu c¬ héi cho c¸c nhµ ph¸t triÓn víi c¸c øng dông ph©n t¸n cung cÊp d÷ liÖu cho kh¸ch hµng th«ng qua Internet cho phÐp hä t¹o ra mét dßng phÇn mÒm míi víi d÷ liÖu XML.
Em ®· cè g¾ng khi x©y dùng mét øng dông víi ASP.NET sö dông c¬ së d÷ liÖu Oracle, kÕt hîp hai c«ng cô søc m¹nh nhÊt trªn Internet. Nhng do thêi gian t×m hiÓu vÒ hai c«ng cô nµy qu¸ Ýt nªn cha ph¸t huy ®îc nhiÒu lîi Ých do chóng ®em l¹i.
Cuèi cïng, em xin c¶m ¬n TS. Cao Kim ¸nh lµ ngêi trùc tiÕp híng dÉn em hoµn thµnh ®å ¸n nµy, anh TuÊn gi¸m ®èc Trung t©m vµ c¸c anh, chÞ ë phßng nghiªn cøu vµ ph¸t triÓn Trung t©m CNTT – Ng©n hµng c«ng th¬ng ViÖt Nam (ITC-ICB) ®· khuyÕn khÝch vµ t¹o ®iÒu kiÖn thuËn lîi cho em hoµn thµnh ®å ¸n ®óng thêi h¹n.
._.
Các file đính kèm theo tài liệu này:
- P0029.doc