Tải bản đầy đủ (.pdf) (80 trang)

Tài liệu Tự học ASP.Net bằng tiếng việt ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.26 MB, 80 trang )

T Hc
Microsoft ASP.NET

Bn quyn ca:
www.vovisoft.com


Rào Trc
Hành trang vào Khóa Hc ASP.NET
Ta nên chun b sn mt s kin thc cn bn v lp trình hay phát trin mng khi bc vào khóa hc này thì tt hn, vì tuy
bn không cn phi bit v ASP c đin (classic ASP) nhng, nh chúng tôi đã trình bày trong phn FAQ  trang Chào Mng
đu khóa hc, bn cn:
• tham kho các bài vit trong khóa
Hc Microsoft .NET ca thy Lê Ðc Hng đ làm quen vi .NET framework,
Visual Basic.NET, Visual Studio.NET. VB.NET s đc dùng làm ngôn ng mc đnh (default) trong các thí d, các
bài tp hay các d án ca khoá.
• bit tng quát v HTML (HyperText Markup Language) khi ta cn trình bày các trang web trên browser. Browser
đc dùng trong khoá này là IE6 (Internet Explorer Version 6).
• quen thuc vi các h điu hành mi hin nay (Operating System) nh Windows 2000 (Professional hay Server) hay
Windows XP (Home hay Professional), cng nh quen thuc cách qun lý các ng dng liên h nh Web Server
(Personal Web Server hay Internet Information Server - IIS) và các c s d liu (database) MS SQL Server 2000 -
xin tham kho các bài vit v
MCSE ca thy V Hu Tín, thy Tng Vinh Tài và lp MCSE.
• vài kin thc cn bn v XML liên quan đn vic chuyn thông tin t ch này qua ch khác. V XML, bn nên tham
kho các bài vit XML, K Thut Nng Ct trong Tng Lai ca thy Lê Ðc Hng và các bài t hc XML ca cô
Bch Trí
cng trên mng Vovisoft này).
Tht ra, ta đâu làm khó nhau chi nhng phi rào trc đón sau nh vy là vì con đng ta đi tìm hiu v ASP.NET hi lt lo
gp ghnh. Mt khi ta phát trin mng vi ASP.NET, ta phi vn dng tt c các ng dng liên h và kt hp mi th vào
nhau. Ðó cng là lý do ti sao khoá hc này ch nhm vào các lp trình viên đã có kinh nghim phát trin mng. Tuy vy,
chúng tôi s c gng trình bày mt cách đn s, ngn và gn khi đ cp đn các ng dng k trên trong các bài hc có liên


quan đn đ bn (nht là bn nào thích thú trong vic phát trin mng và mi làm quen vi ASP.NET) d dàng theo di và
tìm hiu v ASP.NET.
Nhu Liu (Software)
Nhu liu (phn mn hay software) ti thiu phi có đ hc khoá ASP.NET thành công:
• V h điu hành (Operating System): ta nên dùng Windows 2000 (Professional hay Server) hay Windows XP
(Home hay Professional). Lý do chính là các versions ca Windows này h tr Unicode và có th cài t do Internet
Information Server (IIS Version 5) h tr ASPX đ ta dùng cho ASP.NET vì IIS đc cung cp min phí trong các
h điu hành k trên.
• Ngoài ra, bn cn phi có .NET framework SDK (Software Development Kit) ti xung t mng Microsoft. Chúng
tôi s trình bày vic at3i xung  đâu và công cuc b trí nh th nào  bài hc s 1. Nu nh bn đã có và cài đt
Microsoft Visual Studio.Net (VS.NET) theo s hng dn các bài hc ca khóa Hc Microsoft .NET thì càng tt
na. Vì rãi rác trong các bài hc v ASP.NET, chúng tôi cng trình bày mt s thí d dùng VS.NET cho ASP.NET
mc dù tht ra ch cn có Notepad thôi đã cng d xài sut nm.
• Cui cùng, bn cn phi có và cài đt thành công mt c s d liu (Database) vng mnh tng ng vi OLE DB-
compliant database system nh SQL Server 2000 đ dùng lu tr nhng thông tin cn thit. Tuy nhiên, ta cng có
th dùng MS Access 2000 đ tm thi thay th SQL Server 2000 cho các thí d trong khoá phn nhiu trình bày các
ni và các kiu thu thp d liu hay thông tin xuyên qua SQL Server 2000.
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, không phi là
chúng tôi khoái n đâu, hãy lng nghe th chính Microsoft đã nói v ASP.NET nh th nào:
'ASP.NET is a revolutionary programming frramework 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.'

Có y chang nh vy hay không? hay là ch qung cáo theo kiu 'cao đn hn tán' mà thôi? Chúng ta hãy 'ngi xung
đây, hãy ngi xung đây' và ngi gn li vi nhau đ nhìn cho rõ nhng đc tính không tm thng ca ASP.NET nh sau:

Developer Productivity
Easy Programming Model:
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. Ngoài ra còn bãnh hn na, các trang ASP.NET 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 ti đi lui các ngun mã rt vt vã nh trc.
Flexible Language Options:
Không nh ASP kiu c đin ch gii hn vi VBScripts and JScripts, ASP.NET ym 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 ym tr .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, vân vân và vân vân không k xit).
Great Tool Support:
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 k hoch 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 ym 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).
Ðây là trang đu tiên khi dùng Visual Studio.NET:


Rich Class Framework:
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 đ th mi chuyn
trên tri di đt nh XML, data access, file upload, regular expressions, transactions, message queuing, SMTP mail, vân vân
và vân vân 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.
Improved Performance and Scalability
Compile execution:
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 bn luôn luôn cp nht hóa và chy nhanh
hn c nga Nhâm Ng 2002.
Rich 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 Outperforms 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. Nu mun tìm hiu thêm, bn có th truy tìm d dàng nhng trang so sánh nh vy khi ni vào Internet
đ 'search' v hiu xut ca c hai sn phm.
Enhanced Reliability
Memory Leak, DeadLock và Crash protection:
ASP.NET cng có kh nng t đng dò tìm và phc hi (detects and recovers) nhng tr ngi nghiêm trng nh deadlocks
hay b nh (memory) b r đ bo đm ng dng ca bn luôn luôn sn sàng khi dùng mà không làm cn tr vic cung ng
dch v cn thit thng l.
Easy Deployment
Simple application deployment:
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à đ.
Dynamic update of running application:
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.
Easy Migration Path:
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 bn vào ASP.NET vì
ASP.NET có th chy song song vi cu chin binh 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 bn 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 tân k v mng vi XML cng cho phép bn 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. Bn ch cn lp trình cho ng dng ca
bn 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.
Thôi, đn đây ta tm ngng 'đánh bóng' nhng gì đã sáng chói đó mà hít mt hi tht dài, bc mt bc khi đu cho
cuc hành trình tìm hiu và thc hành v ASP.NET. Vy xin mi bn hãy sang sông, à không, sang trang vi bài s 1
'Làm Quen vi ASP.NET'

Bài 01
Làm Quen vi ASP.NET
Hãy ngi xung đây, hãy ngi xung đây, xa cn bun phin.
Du bit chia phôi, nhng trong cuc đi, vn có đôi ta.
Hãy ngi xung đây - Lê Uyên Phng

Trong trang này, ta s tham kho mt s vn đ nh sau:
• ASP.NET là gì?
• Phng pháp làm vic trong mng
• S lc v .NET Framework
• B trí và cài đt ASP.NET
• To trang ASP.NET đu tiên
Chc hn ta có dp đc nghe Nguyn Ngc Ngn k vi K Duyên rng ông đã b công gn 2, 3 nm tri đng đng đ
nghiên cu rt là cc kh mi khám phá ra mt chân lý nh sau: 'Thà là ly v va tr va đp còn hn là ly v va già
va xu'. Ta thì không cn phi tn nhiu nm tháng đn th đ bit đc ASP.NET va tr va đp hn là ASP hoc nhng
phng pháp phát trin mng c đin khác nhng dù có bit rõ ASP.NET va tr va đp (Microsoft chính thc khai trng

sn phm .NET Framework và MS Visual studio.NET vào ngày 13 tháng Hai nm 2002, tuy nhiên rt nhiu phiên bn Beta2
đã đc ph bin khp th gii gia nm 2001) nhng my ai bit đc ASP.NET là gì và dung nhan mùa h ra làm sao?
Vy ta 'hãy ngi xung đây' đ bt đu làm quen vi ASP.NET.

ASP.NET - EM LÀ AI?
Trc ht, h tên ca ASP.NET là Active Server Pages .NET (.NET  đây là .NET framework). Nói đn gin, ngn và gn thì
ASP.NET là mt công ngh có tính cách mng dùng đ phát trin các ng dng v mng hin nay cng nh trong tng lai
(ASP.NET is a revolutionary technology for developing web applications). Bn lu ý  ch ASP.NET là mt phng pháp t
chc hay khung t chc (framework) đ thit lp các ng dng ht sc hùng mnh cho mng da trên CLR (Common
Language Runtime) ch không phi là mt ngôn ng lp trình. Ngôn ng lp trình đc dùng đ din đt ASP.NET trong
khóa này là VB.NET (Visual Basic .NET) và VB.NET ch là mt trong 25 ngôn ng .NET hin nay đc dùng đ phát trin
các trang ASP.NET mà thôi.
Tuy mang h tên gn ging nh ASP c đin nhng ASP.NET không phi là ASP. Ta s lc  đây vài khác bit gia
ASP.NET và ASP đ bn có khái nim tng quát và s trình bày thêm chi tit khi đào sâu vào tng đim đc trng (features)
ca ASP.NET  tng bài hc mt.
KHÁC BIT GIA ASP.NET VÀ ASP
ASP.NET đc phác tho (re-design) li t s không, nó đc thay đi tn gc r và phát trin (develop) phù hp vi yêu cu
hin nay cng nh vch mt hng đi vng chc cho tng lai Tin Hc. Lý do chính là Microsoft đã quá chán nãn trong vic
thêm tht và kt hp các công dng mi vào các kiu mu lp trình hay thit k mng theo kiu c đin nên Microsoft ngh
rng tt nht là làm li mt kiu mu hoàn toàn mi thay vì vá víu ch này ch n vào ASP. Ðó là cha k đn nhiu phát
minh mi ra đi sau này da trên các khái nim mi m theo xu hng phát trin hin nay ca công ngh Tin Hc
(Information Technology) cn đc đa vào kiu mu phát trin mi đó. Nh vy, ta mi có th nói khi khi ASP.NET
không phi là ASP. Tht vy , ASP.NET cung cp mt phng pháp hoàn toàn khác bit vi phng pháp ca ASP.
Lu ý, mc dù ASP.NET và ASP khác bit nhau nhng chúng có th hot đng vui v hài hoà vi nhau trong Web Server ca
bn (operate side-by-side). Do đó, khi bn cài ASP.NET engine, bn không cn lp trình li các ng dng hin có di dng
ASP ca bn tuy rng, nu mun, bn có th làm điu đó rt d dàng.
S THAY ÐI C BN
ASP đã và đang thi hành s mng đc giao cho nó đ phát trin mng mt cách tt đp nh vy thì ti sao ta cn phi đi mi hoàn
toàn? Lý do đn gin là ASP không còn đáp ng đ nhu cu hin nay trong lãnh vc phát trin mng ca công ngh Tin Hc. ASP
đc thit k riêng bit và nm  tng phiá trên h điu hành Windows và Internet Information Server, do đó các công dng

ca nó ht sc ri rt và gii hn.
Trong khi đó, ASP.NET là mt c cu trong các c cu ca h điu hành Windows di dng nn hay khung .NET (.NET
framework), nh vy ASP.NET không nhng có th dùng các object ca các ng dng c mà còn có th x dng tt c mi
tài nguyên mà Windows có, d dàng nh n cm tm bì sn ch vy.
Ta có th tóm tc đi khái s thay đi nh sau:
• Tp tin ca ASP.NET (ASP.NET file) có extension là .ASPX, còn tp tin ca ASP là .ASP.
• Tp tin ca ASP.NET (ASP.NET file) đc phân tích ng pháp (parsed) bi XSPISAPI.DLL, còn tp tin ca ASP
đc phân tích bi ASP.DLL.
• ASP.NET là kiu mu lp trình phát đng bng s kin (event driven), còn các trang ASP đc thi hành theo th t
tun t t trên xung di.
• ASP.NET x dng trình biên dch (compiled code) nên rt nhanh, còn ASP dùng trình thông dch (interpreted code)
do đó hiu sut và tc đ phát trin cng thua sút hn.
• ASP.NET ym tr gn 25 ngôn ng lp trình mi vi .NET và chy trong môi trng biên dch (compiled
environment), còn ASP ch chp nhn VBScript và JavaScript nên ASP ch là mt scripted language trong môi
trng thông dch(in the interpreter environment). Không nhng vy, ASP.NET còn kt hp nhun nhuyn vi XML
(Extensible Markup Language) đ chuyn vn các thông tin (information) qua mng.
• ASP.NET ym tr tt c các browser và quan trng hn na là ym tr các thit b lu đng (mobile devices). Chính
các thit b lu đng, mà mi ngày càng ph bin, đã khin vic dùng ASP trong vic phát trin mng nhm vn ti
th trng mi đó tr nên vô cùng khó khn.

PHNG PHÁP LÀM VIC TRONG MNG
Internet đã và đang đem li nhiu điu k diu cho đi sng ca ta. Tht vy, nó có kh nng 'ni vòng tay ln' mi ngi trên
th gii tng chng nh cách bit xa xôi ngàn dm bng dng li gn trong gang tt, k thut này đã mang li bit bao nhiêu
điu mi m đn cho ta t nh e-mail, instant messaging hay World Wide Web (hay gi tc là WWW hay Web hay mng)
làm vic thông tin liên lc tr nên d dàng, do đó con ngi cùng đi sng cng thay đi nhanh chóng nh 'cun theo chiu
gió'.
T khi đu, vic phát trin 1 mng ht sc là đn gin, ch cn mt hay vài trang trong đó ta mun chia s bt c thông tin gì
ta thích là chc chn cng có ngi ghé qua thm ving. Tuy vy, các trang trong thi k khi nguyên ca mng rt th đng,
nó không cho phép khách vãng lai trao đi thông tin mt cách h tng (interact) vi ta, ngha là thm thì có thm nhng
không hi hay chia s đc gì vi nhau.

Dn dà, mng phát trin thêm nhiu công dng khác nhau gn thêm vào nào là hình nh, nào là tables, forms và cui cùng có
th trao đi thông tin hay tâm tình vi khách vãng lai qua các ng dng nh guestbook, thm dò ý kin (user, customer hoc
là client poll) hay các din đàn vi mi tit mc trên tri di đt. Sau đó, các chuyên gia phát trin mng li thêm tht và
trang đim cho mng ca mình càng lúc càng đc sc hn, cùng muôn mu muôn v.
Tt c nhng c gng đó đã đem tác đng h tng đn gia Web Master (hay nhóm qun lý mng) và khách vãng lai nh ta
đc chng kin hin nay, tuy vy vn còn thiu hn 1 phn quan trng nht là phn ni dung c đng tu bin (dynamic
content). Do đó vai trò ca phng pháp dch v (server processing) đc phát trin đ có th trình bày ni dung đc lu tr
trong các c s d liu (database) tu theo yêu cu riêng bit cho tng cá nhân.
KIU MU RESQUEST/RESPONSE
Kiu mu này chính là toàn b phng pháp làm vic theo kiu Client /Server hin dùng vi ASP.
Client/Server - Mt trng hp đn gin nht là s trao đi thông tin gia 2 máy vi tính đ hoàn thành 1 công vic đc đnh
trc, trong đó máy Server cung cp dch v theo yêu cu ca 1 máy khách hành (Client PC).
Thng thng, Server là máy vi tính lu tr thông tin v mng trong đó có hình nh, video, nhng trang HTML hay ASP. Client là
máy vi tính đc dùng đ lt mng. Mt cách tng quát phng pháp này gm có 4 bc c bn sau:
1. Client (thông qua Internet Browser) xác đnh v trí ca Web Server qua 1 ni URL (Universal Resource Locator) t nh
www.vovisoft.com
2. Client s yêu cu đc tham kho 1 trang trong mng đó và thng là trang ch (home page) t nh index.htm hay
default.htm
3. Server đáp ng bng cách hoàn tr h s mà Client đã yêu cu.
4. Client nhn đc h s gi v và hin th (display) trong browser ca mình.
Lu ý, mt khi Client đã nhn đc h s ri, quá trình trao đi qua li đó kt thúc ngay tc khc. Sau đó, Server và Client tr thành
'ngòi xa l', coi nh là cha tng bao gi gp nhau (stateless model), ta gi là kiu 'làm ng'.
KIU MU EVENT-DRIVEN
Kiu mu event-driven này dùng vi ASP.NET cng tng t nh là kiu mu event-driven mà ta vn thng dùng trong khi
lp trình các ng dng vi Visual Basic 6.
Trong kiu mu này, Server s không 'ngi chi xi nc' ch Client yêu cu tham kho 1 trang nào đó trong mng mà
Server đã b trí và k hoch sn trc tt c mi tình hung đ có th hành đng kp thi mi khi Client quyt đnh làm 1 điu
gì đó. Ta gi đó là 'response to your action', còn trong kiu mu trc là 'response to your request', nh vy ASP.NET có th
phát hin ra các hành đng ca Client đ phn ng cho thích hp.
Ðc ti đây chc bn s hi li ngay rng: 'a, nhng mà làm sao mt Server nào đó, có th  tn đâu đâu bên kia đa cu, li

bit đc là ta đang gõ vài mu t trong mt hp ch hay là đang nhp mi chut (click) vào button trong phn Guestbook
hay Forum ca Vovisoft đ gi đi mt thông đip làm quen vi Vovisoft?'.
À, s d Server có th làm đc 'chuyn khó tin nhng có thit đó' là da vào tin trình x lý linh đng  Client (gi là
clever client-side processing) đ thc hin kiu mu event-driven này ca mình. Tin trình x lý  Client xãy ra khi ta b trí
ngun mã thích hp mà Client có th hiu đc trong các trang ta gi v cho Client. Lu ý là mc dù các trang mng (web
page) ta đu cha  Server nhng ngun mã li có th đc thc hin và x lý, hoc  Server hoc  Client (Server-Side
processing và Client-Side processing) tu theo cách ta b trí. Tht vy, ASP.NET không th nào bit đc chuyn gì s xãy ra
 máy vi tính ca bn (Client PC) nhng nh vào tin trình x lý linh đng  Client mà Server có th tin hành kiu mu phát
trin mng mi theo phng pháp event-driven.
Nh là ta có th chy ngun mã  2 ch khác nhau: hoc là chy  Server (gi là Server-side) hoc là chy  Client (Client-
side) và các ngun mã  2 ch này hoàn toàn khác bit, không có tác đng h tng vi nhau (no interact with each other).
Ðiu đó có ngha là máy Client s chu trách nhim thi hành các ngun mã đc lp trình dành cho mình cng nh máy
Server ch chy các ngun mã dành cho Server. Thông tin hay ni dung cn thit  Server s đc chuyn sang dng HTML
đn gin (plain HTML) trc khi gi đn cho Client, thng thì ngun mã dành cho Client cng đc chuyn đi di dng
'plain text command' đ thc hin các hiu ng nng đng (dynamic effect)  máy Client, t nh thay đi hình nh (image
rollover) hay hin th mt thông đip (message box).
ASP.NET s dùng các ngôn ng mi có trình biên dch (compiled languages) nh C# hay VB.NET đ son các ngun mã
trong các trang Web  Server.

S LC V .NET FRAMEWORK
Mi chc nng ASP.NET có đc hoàn toàn da vào .NET framework, do đó có ch .NET trong ASP.NET. Ta cn phi hiu
thu đáo kin trúc h tng ca .NET framework đ dùng ASP.NET mt cách hiu qu, trong đó quan trng nht là
CLR và
.NET Framework Class.
CLR (COMMON LANGUAGE RUNTIME)
CLR là môi trng đc dùng đ qun lý s thi hành các ngun mã (manage the execution of code) mà ta đã son ra và biên
dch (write and compile code) trong các ng dng. Tuy nhiên khi biên dch ngun mã, ta li biên dch chúng ra thành mt
ngôn ng trung gian gi là
Microsoft Intermediate Language (MSIL). Chính MSIL trung gian này là ngôn ng chung cho
tt c các ngôn ng .NET hin có, do đó chc bn cng đoán ra là ASP.NET cng đc biên dch (compile) ra MSIL nh mi

ai khác. Trong khi biên dch nh vy, các ng dng cng sn xut ra nhng thông tin cn thit đ t qung cáo chính mình,
ta gi nhng thông tin này là metadata. Ðn khi ta chy mt ng dng, CLR s tip qun (take-over) và li biên dch
(compile) ngun mã mt ln na ra thành ngôn ng gc (native language) ca máy vi tính trc khi thi hành nhng công tác
đã đc b trí trong ngun mã đó. Ta có th cm thy nhng vic bn rn sau hu trng đó khi phi ch đi 1 khoãng thi
gian cn thit đ CLR chm dt nhim v ca nó khi ln đu phi biên dch (compile) và hin th 1 trang Web, nhng ri mi
chuyn s xuôi chèo mát mái, cui cùng là ta có mt trình biên dch (compiled code) đ x dng rt hiu qu.
.NET FRAMEWORK CLASSES
Ðiu quan trng nht mà ta cn phi nh là mi th trong .NET đu là object, t nh các trang ASP.NET, các hp thông đip
(message box) hay là nút bm (button), tt c đu là object c. Các object đó đc t chc li thành tng nhóm riêng bit nh
trong mt th vin đ ta d dàng x dng. Ta gi các nhóm nh vy là
namespaces, và ta s dùng nhng namespace này đ
gi hay nhp (import) các class cn thit cho ng dng ca mình.
 đây, ta ch s lc mt chút v .NET framework mà thôi, bn có th tham kho đy đ chi tit v .NET framework  các
bài vit ca
thy Lê Ðc Hng trong khóa Hc .NET Framework và VB.NET

CÀI ÐT ASP.NET
Ð chy trang ASP.NET, trc ht ta cn phi cài đt thành công:
• Internet Information Server (IIS) và b trí Virtual Directory dùng trong khóa T Hc ASP.NET ca Vovisoft.
• MS Visual Studio.NET - trong trng hp này thì MS Visual Studio.NET đã cài sn .NET Framework SDK cho ta dùng
vi ASP.NET hoc là Microsoft ASP.NET Web Matrix (chi tit đc trình bày  bài Gii Thiu V Web Matrix).
• .NET Framework Software Development Kit (SDK) - nu ta không có MS Visual Studio.NET, ta có th ti .NET
Framework Software Development Kit (SDK) xung t do t mng
www.microsoft.com/NET , vi SDK, ta ch có th
dùng Notepad hoc mt Text Editor nào ta thích đ phát trin trang ASP.NET mà thôi.
Nh là ASP.NET là k thut phát trin mng  phiá Server, do đó ta phi cn có Internet Information Server (hay thng đc gi
đn gin hn là Web Server) đ son (phát trin hay lp trình) các trang v mng cho khách vãng lai ghé thm cng nh tham kho
các thông tin liên h. Nhng khác vi các trang ASP c đin, Web Server s không hiu các trang ASP.NET nu nh ta quên hay b
sót không cài .NET Framework SDK hoc không cài MS Visual Studio.NET, chính nh  .NET Framework SDK mà ta có đy đ
các công dng và các object hay classes cn thit cho các trang ASP.NET ca ta.

CÀI INTERNET INFORMATION SERVER (IIS)
Internet Information Server (IIS) Version 5.0 là mt sn phm 'cho không biu không' ca Microsoft khi ta mua MS Windows
2000 Professional hay MS Windows XP Professional. IIS chuyên tr v Web Server, qua đó ta có th cung cp các dch v nói chung
v mng cho khách vãng lai, mà dch v v mng thì thiên hình vn trng, nh xíu nh t cây kim si ch cho đn v đi nh phi
thuyn, gii Ngân Hà hay v tr, đu có th đc b trí đy đ thông tin hay các ng dng liên h cn thit đ đáp ng nhu cu ca
khách vãng lai.
1. Ð cài IIS Version 5.0 trong MS Windows XP Professional, ta bt đu chn:
• Start, Settings, Control Panel, Add/Remove Programs và nhp đn (click) Add/Remove Windows Components, xong chn
Internet Information Server nh sau:

2. Nu ta nhp đn nút <Details>, ta có th t do la chn thêm hay bt các thành phn trong IIS, t nh ta có th b trí thêm File
Transfer Protocol Service (FTP Server) đ qun lý mt cách hiu qu hn vic ti lên (upload) hay ti xung (download) các h s
(documents) hay tp tin (files).
3. Nhp nút <Next>, Windows XP Professional s thu thp các thông tin liên h và bt đu tin trình cài đt IIS. Ch trong vòng vài
phút là ta đã có mt Web Server ngon lành trong máy vi tính. Gi đây, bn đã tr thành mt Web Master 'bt đc d'. Xin chúc
mng tân Web Master, ít ra ta cng tr thành Web Master chính máy vi tính ca ta (Web Master ca local host).
4. Ð xác đnh vic cài thành công Web Server, ta có th th nh sau:
• M Browser ca bn, t nh Microsoft Internet Explorer và gõ hàng ch nh sau vào hp đa ch (Uniform Resource
Locator)
http://localhost hay http://cantho
cantho (Cn Th) trong trng hp này chính là tên máy vi tính ca tôi đó (Computer Name). Ta có th gi
localhost hay cantho tu ý.
• Sau khi ta nhp nút <Enter>, trang mc đnh (default page) ca IIS s hin th nh sau:


B TRÍ VIRTUAL DIRECTORY DÙNG TRONG KHÓA T HC ASP.NET CA
VOVISOFT

Trc khi ta có th to ra và b trí mt
virtual directory tên là VovisoftASPNET (hoc bt c tên nào bn thích) dùng trong khóa

T Hc ASP.NET này, ta phi làm mt s vic nh sau:
• To ra 1 sub folder Vovisoft ASPNET cho các bài tp (Exercises).
• Vào (access) bên trong Web Server đ kim tra hay qun lý các tài nguyên trong mng.
• B trí virtual directory VovisoftASPNET.
Chi tit các bc theo th t nh sau:
1. To ra mt sub directory có tên là Vovisoft ASPNET cu trúc  drive D nh sau: D:\Net\Vovisoft ASPNET, đ ý là có mt ch
trng gia 2 ch Vovisoft và ASPNET. Tuy vy, nu bn nhuyn v IIS, bn có th đt tên tùy thích và không nht thit phi theo y
chang kiu mu này, nhng bn phi hiu vic bn làm đ b trí mt virtual directory thích hp dùng thc hành các bài tp trong
khóa sao cho thành công.

2. Có nhiu phng pháp vào (access) bên trong Web Server trc khi b trí virtual directory, ta có th dùng
MMC (Microsoft
Management Console)
đ cng thêm IIS snap-in vào console hoc ta có th chy IIS bng cách chn: Start, Programs,
Administartive Tools, Internet Information Service
.
Phng pháp dùng MMC là phng pháp đc các
MCP (Microsoft Certified Professional) hay MCSE (Microsoft Certified
System Engineer)
a thích hn vì tính cách linh đng mm do thích hp cho vic qun lý các ngun tài nguyên khác nhau trong
mng.
Di đây là hình đc trng cho vic dùng MMC:

Tuy nhiên, ta s không đào sâu vào chi tit vic x dng MMC đ b trí virtual directory cho khóa hc  đây mà ta s dùng kiu vào
IIS trc tip qua vic chn:
Start, Programs, Administrative Tools, Internet Information Service nh đã trình bày  trên. IIS s
hin th nh sau:

3. B trí mt virtual directory VovisoftASPNET:
• Nhp phi (right click) vào Default Web Site, chn New, Virtual Directory:


• Virtual Directory Creation Wizard s bt đu tin trình b trí:

• Nhp vào nút <Next> và gõ
VovisoftASPNET  hp Alias:

• Nhp vào nút <Next> và dùng <Browse > đ chn sub folder 'D:\Net\Vovisoft ASPNET' mà ta đã chun b trc đây cho
các bài tp ca khóa.

• Chp nhn các b trí mc đnh (default settings) cho virtual directory VovisoftASPNET. Nu thích, ta có th thêm vào đó
quyn Browse (mc đích là sau này ta d truy cp và chy các trang ASP.NET phát trin cho ng dng ca mình).
• Nhp <Next> và sau đó <Finish> đ kt thúc tin trình b trí.


Th là ta đã có mt virtual directory đ chy các trang ASP.NET sau này.
Bn thy đó! Vic to ra 1 virtual direcotry còn d dàng hn là n 'tô tái nm'.
CÀI MS VISUAL STUDIO.NET
Xin tham kho
bài hc s 1 ca thy Lê Ðc Hng  khóa Hc Microsoft .NET Framework v vic làm sao đ cài đt MS Visual
Studio.NET thành công.
Lu ý: Khi cài MS Visual Studio.NET là ta cng đã cài .NET Framework SDK, do đó ta không cn phi theo nhng ch dn v vic
cài đt .NET Framework SDK nh trình bày  bc k tip.
CÀI .NET FRAMEWORK SOFTWARE DEVELOPMENT KIT (SDK)
Tuy ta có th ti xung min phí .NET Framework SDK  mng
www.microsoft.com/NET nhng lu ý là SDK này gm tng cng
gn hn 130 MBytes nên ta s mt rt nhiu thi gian (khoãng 6, 7 gi) đ ti thành công trong trng hp dùng 56 Kbps modem.
Ngoài ra, thay vì ti qua mng, ta cng có th đt mua SDK cha trong CD-ROM hay truy cp SDK trong các CD-ROM biu kèm
vi các tp chí Tin Hc.
Mt khi đã có .NET Framework SDK ri, ta ch cn chy chng trình
setup là xong. Tin trình này cng s rt lâu vì Windows s

khai m tng tp tin mt cng nh thu thp các thông tin cn thit cho vic b trí .NET Framework  máy ca ta, do đó tt hn ht
là ta tà tà t pha cho mình mt ly cà phê ri va nhâm nhi va thng thc bài hc s 1 ca thy Lê Ðc Hng nh đã nêu
trong phn 'Cài MS Vusial Studio.NET' đ tìm hiu thêm v .NET Framework.
TO TRANG ASP.NET ÐU TIÊN
Mc du trang ASP.NET thun túy ch cha đng ch và ch (pure text) nh trang v HTML nhng đâu ai cm ta dùng MS
Visual Studio.NET đ son các trang ASP.NET và qua đó x dng giao din bng hình (
Graphic User Interface - GUI) đ vic b
trí hay phát trin thêm phn d dàng và linh đng.
Lu ý là phn ni thêm (extension)  trang ASP.NET s mang tên
.aspx đ phân bit vi .asp trong ASP c đin. Ta s to trang
ASP.NET đu tiên bng 2 phng pháp nh sau:
• Dùng MS Visual Studio.NET đ to trang ASP.NET đu tiên.
• Dùng Notepad đ to trang ASP.NET đu tiên.
Bài tp 1: Dùng MS Visual Studio.NET đ to trang ASP.NET đu tiên.
Mc đích:
Hin th hàng ch "Welcome to Khóa T Hc ASP.NET" trong trang ASP.NET đu tiên đ chào mng các bn đn vi khóa hc
này ca Vovisoft.
Các bc th t nh sau:
1. Chy MS Visual Studio.NET và chn d án mi (New Project) nh sau:
Project Types: Visual Basic Projects
Templates: ASP.NET Web Application
N
ame: vs-welcome
Location: http://cantho/DevASPNET/Bai01/
Ta nên nh kim tra hàng ch phía di hp Location đ coi li xem d án đc to ra  đúng ch mà ta mun cha hay là không?
Chính hàng này cng là URL (Uniform Resource Locator) ta cn phi đin vào  hp đa ch (Address) trong Internet Explorer đ
hin th trang ASP.NET vi phn ni thêm (extension) là .aspx

MS VS.NET s to các sub-folders nh sau: DevASPNET\Bai01\vs-welcome  bên di Default Web Sit, trong trng hp này -
Default Web Site chính là

C:\Inetpub\wwwroot. Nu dùng IIS đ kim tra đc tính ca DevASPNET, ta thy Local Path là
DevASPNET.

Bn có th chn Location nào tùy ý theo s t chc lu tr các d án ca bn, nhng nh đng trùng vi tên ca các Virtual
Directory đã có sn. T nh ta đã to trc 1 virtual directory tên là VovisoftASPNET, sau đó dùng MS VS.NET đ to 1 ASP.NET
Web Application  Location
http://cantho/VovisoftASPNET/Bai01/vs-welcome, ta s gp li sau đây khi Web Server không cho
phép ta 'overwrite' virtual directory đó:

Lu ý:
Nh đã trình bày, chúng ta s không đào sâu chi tit v cách x dng MS VS.NET  đây, xin tham kho  các bài Hc .NET
Framework do thy Lê Ðc Hng son.

2. Nhp vào nút <OK> đ MS VS.NET to ra 1 d án mi. Nu đ ý, ta s thy mt trang ASP.NET đc to ra mt cách mc đnh
(default) vi tên là WebForm1.aspx nm trong Solution Explorer Windows v mé tay phi, bên trái ta có 1 hp dng c (Toolbox)
và  gia là View Designer.

3. M hp dng c (Toolbox) và nhp đôi vào công c Label, mt cách thông dng khác là ta có th kéo lê (drag) công c Label vào
trong View Designer.

4. B trí các đc tính ca công c Label đó nh sau:

Lu ý  đây là ta s dùng ng dng
VPSKEY Version 4.0 (or up) vi bng mã Unicode đ gõ ting Vit cho đc tính Text ca
Label tên lblWelcome nh hình trên. Ta có th dùng bt c ng dng gõ ting Vit nào cho phép encoding vi Unicode, nu dùng
VPSKeys Version 4.0 thì bn cn phi b trí nh sau:

5. Chn File, Save WebForm1.aspx As đ lu tr vào đa cng, nh chn Save with Encoding (hay ta có th dùng Advanced Save
Options) vi Encoding là
Unicode (UTF-8 with signature) - Codepage 65001 đ lu tr (save) ting Vit chính xác.


6. Cui cùng ta s dùng IE Client Browser đ hin th trang WebForm1.aspx (nu ta không đi tên, trang mc đnh là trang
WebForm1.aspx khi dùng MS VS.NET đ to 1 ASP.NET Web Application).
Trong hp đa ch (Address), lu ý là:

http://cantho/DevASPNET/Bai01/vs-welcome đc MS VS.NET to ra trong Server cantho (hay co th dùng localhost)

webform1.aspx là trang web mà ta va phát trin


Bài tp 2: Dùng Notepad đ to trang ASP.NET đu tiên.
Mc đích:
 bài tp 2, ta cng hin th hàng ch "Welcome to Khóa T Hc ASP.NET" trong trang ASP.NET đ chào mng các bn đn vi
khóa hc này ca Vovisoft. Tuy nhiên,  bài tp này, ta ch dùng Notepad đ to ra 1 trang ASP.NET y chang nh trang  trên.
1. Chy ng dng Notepad và gõ nhng hàng ch lp trình y chang nh trong hình di đây. Trong bài hc 1, ta tm thi chp nhn
các mnh lnh và cú pháp trong trang ASP.NET đu tiên này và s tham kho chi tit cng nh phân tích và gii thích v phng
pháp xây dng trang ASP.NET  bài hc k tip. Nh khi gõ ting Vit ta s dùng VPSKeys Version 4.0 nh trong bài tp 1.

2. Ðt tên tp tin (file) này là np-welcome.aspx và lu tr (save as) vi encoding UTF-8 (UTF-8 là ch vit tc ca Universal
Transform Format-8) di subdirectory D:\Net\Vovisoft ASPNET\Bai01\np-welcome\
Khi lu tr np-welcome.apsx di 1 subdirectory nh trên, ta c tình mun dùng virtual directory
VovisoftASPNET đã to ra
trong IIS đ hin th trang web này.

3. Hin th trang ASP.NET đu tiên này vi IE Client Browser và gõ hàng ch di đây vào hp đa ch (Address):
http://cantho/
VovisoftASPNET/Bai01/np-welcome/np-welcome.aspx ri nhp vào nút <Enter>. Ta s có 1 trang ASP.NET vi
hàng ch Welcome to Khóa T Hc ASP.NET - Vovisoft nh sau:



Tóm tt
Trong bài hc này, ta tht s làm quen vi ASP.NET qua vic tìm hiu các phng pháp làm vic ca mng trong phm vi
ASP.NET. Thêm na, ta cng bit s lc v s thay đi c bn trong vic phát trin mng do nh có .NET Framework và bt tay
vào vic cài đt ASP.NET đ thc hin đc trang ASP.NET đu tiên.
Tht vy, qua 2 bài tp, ta đã x dng thành công 2 phng pháp vi 2 ng dng khác nhau đ to ra trang Web 'Chào Mng Bn
Ðn Vi Khóa T Hc ASP.NET ca Vovisoft', và nh ta đã thy, mi cách đu có cái hay riêng, thích dùng cách này hay cách
kia tùy thuc vào thói quen, s thích cng nh môi trng làm vic hay hot đng xung quanh. Còn 1 phng pháp na mà tôi rt
thích vì tính cách cng đng ca nó là MS ASP.NET Web Matrix. Phng pháp này s trình bày  bài s 3.
Trong Bài s 2 '
Xây Dng Trang ASP.NET', ta s tham kho chi tit vic xây dng mt trang ASP.NET nh th nào cng nh đào
sâu v vic phân tích cú pháp và các mnh lnh (commands hoc keywords) dùng trong các trang ASP.NET

Download Source Code
Ngun mã bài tp 1
Ngun mã bài tp 2

Bài làm  nhà
Câu Hi 1: CLR là gì?
Câu Hi 2: Virtual Directory là gì? Và làm sao đ b trí thành công Virtual Directory?
Bài Làm 1: Phát trin 1 trang ASP.NET dùng MS Visual Studio.NET hay Notepad đ hin th (display) 1 bài th hoc các câu Ca
Dao (bng ting Vit) mà bn su tm.
Bài 02
Xây Dng Trang ASP.NET
V đây nghe em
V đây, mc áo the, đi guc mc - K chuyn tình - bng li ca dao
K chuyn tình - bng ni ngô khoai - K chuyn tình - bng ht lúa mi
Và v đây, nghe gi ting xa - Ð nh trong ting v b.
(V Ðây Nghe Em - Th A Khuê - Nhc Trn Quang Lc)

Trong Bài 'Làm Quen Vi ASP.NET', ta nhn thc đc ASP.NET gii thiu mt phng pháp mi v lp trình đ phát trin

trang web theo kiu mu event-driven ging nh dùng ngôn ng lp trình Visual Basic. Nhng ai tng làm quen và ch lp
trình vi ngôn ng script (script language) t nh VBScript hay JavaScript s b ng đôi chút vì mã trong các trang ASP.NET
không còn trn ln vi HTML na, nhm mc đích cung cp kiu phát trin mi đn gin hn, cp tin hn và cu trúc cht
ch hn (more advantages and more structure code).
Hôm nay, ta li 'v đây' trong bài tham kho v phng pháp xây dng trang ASP.NET (hay gi là Web Form) và mt s vn
đ liên h nh sau:
• Phân tích mã  trang ASP.NET đu tiên
• Xây dng mt trang ASP.NET đn gin
• Vài nhn xét khi dùng ASP.NET và HTML

PHÂN TÍCH MÃ  TRANG ASP.NET ÐU TIÊN
Ta th xem li ngun mã Bài tp 2 ca trang ASP.NET đu tiên trong Bài 01 'Làm Quen Vi ASP.NET':
<%@ Page Language="VB" %>
<script runat="server">
sub Page_Load(obj as object, e as eventargs)
lblWelcome.Text = "Welcome to Khóa T Hc ASP.NET - Vovisoft"
end sub
</script>

<html>
<body>
<asp:Label id="lblWelcome" runat="server"/>
</body>
</html>
Ta nhn thy mã ca trang này đc chia ra làm 3 phn riênng bit:
Phn 1: <%@ Page Language="VB" %> đc gi là Page Directives: phn này cung cp cho ASP.NET nhng thông tin
đc bit đ ASP.NET bit cách mà đi x cng nh nhng thông tin dùng trong tin trình biên dch (during the compiling
process), trong đó, ta mun ASP.NET dùng VB.NET làm ngôn ng lp trình mc đnh (default programming language) cho
trang web,  các đ tài sau, ta s tham kho thêm v import directive.
Phn 2: <script runat="server"> </script> : phn này còn gi là

Code Declaration Block ging nh mã  Client Side
nhng khác mt chút là có kèm theo runat="server" ch th cho ASP.NET bit thi hành trang này  Server Side, phn này
cng là đt ta 'dng võ', kim soát mi công dng cn thit và mã
đc biên dch (compiled) thành MSIL. Tht ra, ta có
th đt đ phn này  bt c ni nào trong trang web nhng nu sp xp  phn đu tiên ca trang cng là mt thói quen tt
đ phân bit mã ca ASP.NET vi mã ca HTML.
sub Page_Load(obj as object, e as eventargs)
lblWelcome.Text = "Welcome to Khóa T Hc ASP.NET - Vovisoft"
end sub
Phn mã này to ra mt Procedure có tên là Page_Load mc đnh (default) cho các trang ASP.NET ging nh Form_Load
trong vic lp trình dùng ngôn ng Visual Basic vi s c (event) Load, khi trang đu tiên này đc đa ra trình bày,
ASP.NET s gn hàng ch "Welcome to Khóa T Hc ASP.NET - Vovisoft" vào hp ch có nhãn hiu (label)
lblWelcome.
Phn 3: <html> <html> : đây là ni ta bt đu phn mã ca HTML. Phn này chính là hình thc trình bày ni dung ca
trang đc ch bin bi mã ASP.NET trc khi gi v và hin th trong browser ca Client. Ngoài ra, ASP.NET cng cho
phép ta kèm theo nhng ch th (instructions) trong
Code Render Block bt đu vi <% và chm dt vi %> t nh:
<% Response.Wite ("My first page <P>") %>
đ đa ra nhng gì ta mun làm vào bên trong lòng ngun mã ca phn HTML. Thí d  đây, ta ch đn gin hin th hàng
ch "My First Page" khi gi trang này v browser ca Client.
Phân đnh Mã và Ni Dung
Tin đây, ta s tìm hiu thêm v s phân đnh gia
Mã (Code) và Ni Dung (Content) gi là Code and Content Separation.
Nh ta đã bit, phn đông các K S Tin Hc khi hình thành mt web site đã xây dng mi chuyn t A ti Z cho mng ca mình
k c vic hoch đnh các đ án thit k cng nh trang trí, sp xp và trình bày các thông tin trong các trang web. Tóm li, các K
S Tin Hc đó không nhng phi chun b và vit các ngun mã cn thit cho các trang ca mình mà có th còn 'thu' hoc 'bao'
luôn công vic ca mt Thit K Gia (Designer), mt Trang Trí Viên (Decorator), mt Kin Trúc S (Architect), mt Ha S
(Painter), mt Giáo S (Instructor or Tutor), mt Web Master, mt Thông Tn Viên và rt nhiu vai trò khác không th nào k
xit tùy theo mc đích và tôn ch ca web site.
Ðiu này thì cng tt thôi, nhng ta thit ngh, không phi K S Tin Hc nào cng đc trang b 'thp bát ban võ ngh' nh

vy và thng tình, mt K S Tin Hc chuyên nghip li d (unskillful) v trang trí thit k, lý do đn gin là h đã tp trung kh
nng, thi gian có đc vào vic lp trình và xem nh vic trang trí thit k cho web site ca mình. Nht là trong phm vi các đi
công ty hay các b s chính ph, vic xây dng web site cha nhiu thông tin là vic ca mt nhóm ch không phi ca mt cá
nhân, mi ngi ph trách mt vic, t nh ngi lo v mã (code), ngi lo v cách thc trình bày (with HTML, ) do đó vic phân
đnh rõ ràng gia mã (code) và ni dung (content) tr nên rt cn thit trong vic phát trin các trang web.
ASP.NET gii quyt vn đ bng 2 hng nh sau:
• Kiu mu Code Inline (Code Inline Model)
• Kiu mu Code Behind (Code Behind Model)
Code Inline Model:
Trong kiu mu này, mã vn đc vit và gi (code section) trong các trang ASP.NET nhng không trn ln vi HTML dành cho
phn ni dung (content section) nh mã ta đc thy trong bài tp 2 trong Bài 01 'Làm Quen Vi ASP.NET' vi 2 phn mã và ni
dung nm riêng bit nhau:
<% This is the code section (ASP.NET Code) %>
<script runat="server">
sub Page_Load(obj as object, e as eventargs)
lblWelcome.Text = "Welcome to Khóa T Hc ASP.NET - Vovisoft"
end sub
</script>
<% This is the content section (HTML Code) %>
<html>
<body>
<asp:Label id="lblWelcome" runat="server"/>
</body>
</html>
Code Behind Model:
Mt kiu mu khác đc áp dng đ phân đnh mã và ni dung là phn mã đc sp xp trong mt tp tin khác riêng bit  mt ch
lu tr khác hn ch cha các trang ASP.NET, d nhiên khi ta phân chia nh vy, ta phi sp xp li đ 2 tp tin riêng bit đó có th
làm vic vi nhau và đc biên dch cng ging nh kiu mu Code Inline. Ta s đi sâu vào chi tit kiu mu này  nhng bài k khi
bàn v cách 'Import' các mã t ngun tài nguyên  bên ngoài.
Tin Trình X Lý

Bây gi, ta s tìm hiu v tin trình x lý trang web nh th nào khi có khách vãng lai ving thm (hoc lt mng) trang
ASP.NET ca ta.
Khi có ngi yêu cu tham kho trang web ca ta, trc ht ASP.NET s
biên dch (compile) mã  phn Code Decalration
Block trong trang ASP.NET. Nu đ ý mt chút, ta nhn thy có mt s trì hoãn mc du nh nhàng hay không đáng k trc
khi browser hin th trang web đó, nhng nu cng chính trang đó đc ving thm ln th nhì hoc nhng ln sau đó thì s
trì hoãn ta nhn thy trc kia s bin mt, lý do là vì trang đó đã đc biên dch ri, ASP.NET ch có vic dùng mà thôi ch
không cn phi biên dch ln na, do đó hiu sut gia tng ht sc ngon mc. Nh là mã đc ASP.NET biên dch thành
MSIL, CLR qun lý và sau đó biên dch thành
ngôn ng gc ca máy (native machine language) trc khi trang đc gi
v browser ca Client. Ngun mã (code) mà ta lp trình trong trang web đc lu tr mt ni riêng bit, CLR s thm chng
luôn luôn, phòng trng hp ta thay đi ngun mã thì lp tc CLR s biên dch li 1 cách t đng trang web đó mà không cn
ta phi làm gì c.
Sau khi trang web đc biên dch, ASP.NET bt đu tin trình x lý tt c ngun mã k c các s c (events) t nh ta gõ vài
ch trong hp ch (text box) hoc nhp (click) mt nút nào đó thì b máy ASP.NET (ASP.NET engine) s nghiên cu, kho
sát bin c đó đ quyt đnh cách phn ng và thi hành đ đáp ng li bin c theo k hoch lp trình đã quy đnh trc.
Tip theo, ASP.NET bin đi tt c các Server Controls trong trang web ra thành nhng yu t HTML tng đng (HTML
elements) t nh bin đi <asp:Label> control ra thành HTML <span> </span> đ hin th hàng ch "Welcome to Khóa T
Hc ASP.NET - Vovisoft" nh thí d đang phân tích  trên (ta s thy HTML element này khi quan sát ngun mã bng cách
chn View, Source lúc trang ASP.NET ca Bài 01 - Bài Tp 2) hin th trong Client Browser. ASP.NET cng đnh giá nhng
ngun mã ca Code Render Block (nu có) và cng sn xut ra nhng yu t HTML tng đng.
Cui cùng, ASP.NET s gi kt qu chung cuc di dng HTML ti Client Browser, Client Browser ch nhn đc trang
web di dng phù hp vi tiêu chun ca HTML, trong đó ASP.NET du bin đi các ngun mã hoc các control thuc phm
vi Server (Server Side Code and Controls).
Nh vy, ta có th dùng bt c mt Web Browser nào (không nht thit là MSIE) cng có th hin th các trang ASP.NET,
tht vy đi vi Client Browser thì trang ASP.NET cng ch là mt trang HTML đn gin nhng có phn đuôi ni thêm
(.aspx) hi l mà thôi.
Lu ý, đây là mt khái nim ht sc quan trng, ta cn hiu cho thu đáo, b qua có th s 'n nn hi hn sut đi'.
Browser chng qua ch là mt ng dng ht sc th đng (dump application) vi nhim v din dch các yu t HTML mà
thôi. ASP.NET nm vng điu đó, cho nên mi ln ASP.NET mun gi ti Brower nhng gì, nó đu dch ra hay bin đi ra

dng HTML. Không nhng vy, ASP.NET còn khéo léo vn dng đ HTML ngây th (nhng d thng) đó còn thi hành
nhng tin trình x lý đc bit (mà ta s tham kho  nhng bài hc k) cho ASP.NET  phía Server mà hoàn toàn không hay,
không bit gì ht.

XÂY DNG MT TRANG ASP.NET ÐN GIN
Bài Tp 1:
Mc đích:
Trong bài tp này, ta s xây dng mt trang ASP.NET dùng mt hp ch đ tip nhn tên ca khách vãng lai và in ra (hay
hin th) li chào ngi khách đó.
Các bc th t nh sau:
1. Chy ng dng Notepad và gõ nhng hàng ch lp trình y chang nh mã di đây và lu tr (Save As) trong folder
D:\Net\Vovisoft ASPNET\Bai02\baitap01\simple.aspx vi encoding UTF-8 (hay bt c đâu tùy theo cách xp đt Virual Directory
mà ta b trí vi IIS). Nu mun gõ ting Vit, ta dùng VPSKeys Version 4.0 nh đã trình bày  Bài Hc 01. Trong bài hc này, ta
tm thi chp nhn các mnh lnh và cú pháp trong trang ASP.NET và s tham kho chi tit các Server Controls  bài hc k.
<%@ Page Language="VB" %>

<script runat="server">
Sub tbMessage_Change (Sender AS Object, E As EventArgs)
lblmessage.Text = "Chào bn " + tbMessage.Text
End Sub
</script>

<html>
<body>
<font size="5">Simple Application</font><hr><p>

<form runat="server">
Please enter your name:
<asp:textbox id="tbMessage"
OnTextChanged="tbMessage_Change"

runat=server/>
<asp:button id="btSubmit" Text="Submit"
runat=server/><p>
<asp:label id="lblMessage" font-size="20pt"
runat=server/>
</form>

</body>
</html>
2. Hin th trang ASP.NET này vi IE Client Browser và gõ hàng ch di đây vào hp đa ch (Address):
http://cantho/VovisoftASPNET/Bai02/baitap01/simple.aspx ri nhn nút <Enter>. Ta có th gõ tên ca mình vào hp ch k bên
hàng danh hiu (label) "Please enter your name:" và nhp vào nút Submit, ta s có 1 trang ASP.NET chào mng khách vãng lai nh
sau:


Phn Chú Thích:
<%@ Page Language="VB" %>
Ðc dùng đ ch th cho ASP.NET ta dùng VB.NET làm ngôn ng lp trình mc đnh.
<script runat="server">
Sub tbMessage_Change (Sender AS Object, E As EventArgs)
lblmessage.Text = "Chào bn " + tbMessage.Text
End Sub
</script>
Khi s c tbMessage_Change khi đng, ta dùng lblmessage.Text đ hin th hàng ch "Chào bn " + tbMessage.Text 
trang ASP.NET.
<form runat="server">
Please enter your name:
<asp:textbox id="tbMessage"
OnTextChanged="tbMessage_Change"
runat=server/>

<asp:button id="btSubmit" Text="Submit"
runat=server/><p>
<asp:label id="lblMessage" font-size="20pt"
runat=server/>
</form>
Phn HTML này dùng đ trình bày các Server Controls trong trang ASP.NET theo th t t trên xung di, các thay đi
khác (t nh thay đi do vic khi đng 1 s c nào đó) s do phn Script chm nom và thi hành.
Mi Server Control đu mang 1 ID quy c và duy nht, thí d:
<asp:textbox có ID duy nht là tbMessage trong đó quy c tb đc ph bin và chp nhn riêng bit cho công c textbox,
s c OnTextChanged có tên gi là 'tbMessage_Change' và Server Control này <asp:textbox đc thi hành  Server Side.
Các Server Control k gm có <asp:button (ID btSubmit) và <asp:label (ID lblMessage) dùng cho nút bm (ta cng có th
dùng quy c btn hay bt cho nút bm) và nhãn hiu vi quy c lbl.

Bài Tp 2:
Mc đích:
Trong bài tp này, ta s xây dng mt trang kim tra vài phép toán đn gin t nh phép cng, phép tr, phép nhân và phép
chia vi 2 con s nguyên. Ngòi dùng s gõ vào 2 con s nguyên và sau đó chn phép tính bng cách nhn nút bm có du +,
-, * hay / đ hin th kt qu.
1. Chy ng dng Notepad và gõ nhng hàng ch lp trình y chang nh di đây và lu tr (Save As) trong folder D:\Net\Vovisoft
ASPNET\Bai02\baitap02\math.aspx vi encoding UTF-8:
<HTML>
<HEAD>

<script language="VB" runat="server">
Sub btAdd_Click(Sender As Object, E As EventArgs)
lblMessage.Text = "Addition Result: " & Cint(tbNumber1.Text) + Cint(tbNumber2.Text)
End Sub

Sub btSubtract_Click(Sender As Object, E As EventArgs)
lblMessage.Text = "Substraction Result: " & Cint(tbNumber1.Text) - Cint(tbNumber2.Text)

End Sub

Sub btMultiply_Click(Sender As Object, E As EventArgs)
lblMessage.Text = "Multiplication Result: " & Cint(tbNumber1.Text) * Cint(tbNumber2.Text)
End Sub

Sub btDivide_Click(Sender As Object, E As EventArgs)
lblMessage.Text = "Division Result: " & Cint(tbNumber1.Text) / Cint(tbNumber2.Text)
End Sub
</script>

</HEAD>

<BODY>

<font size="5">Simple Mathematics</font><hr><p>
<form runat="server">

Number 1: <asp:textbox id="tbNumber1" runat=server/><br>
Number 2: <asp:textbox id="tbNumber2" runat=server/><p>
<asp:button id="btAdd" Text=" + " OnClick="btAdd_Click" runat=server/>
<asp:button id="btSubtract" Text=" - " OnClick="btSubtract_Click" runat=server/>

×