You are on page 1of 31

CNG TY TNHH PHN MM VIN NAM

H CH MINH THNG 7 NM 2011

Mc lc I. Tng quan v m hnh MVC ......................................................................................... 3 II. Gii thiu v ASP.NET MVC ....................................................................................... 4 1. Khuyt dim ca ASP.NET Web Forms .................................................................... 4 2. Kin trc MVC ........................................................................................................... 5 3. Li ch ca ng dng web da trn m hnh MVC.................................................... 8 4. S ra i ca ASP.NET MVC .................................................................................... 8 5. ASP.NET MVC Framework....................................................................................... 8 6. So snh vi ASP.NET Web Form. ............................................................................. 9 III. Tnh nng trong ASP.NET MVC 3 ......................................................................... 10 1. Cng c xem Razor (The Razor View Engine) ........................................................ 10 2. JavaScript v Ajax .................................................................................................... 14 3. Authentication........................................................................................................... 14 4. Unit Test ................................................................................................................... 16 IV. Ph lc ...................................................................................................................... 22 1. Ci t ....................................................................................................................... 22 2. To project ................................................................................................................ 25 3. Cc thnh phn chnh ca mt project MVC 3 ........................................................ 28

I.

Tng quan v m hnh MVC Models-Views-Controller (MVC) l mt kin trc phn mm , hin ang c xem nh l m hnh kin trc dng trong cng ngh phn mm . MVC c chia thnh 3 phn tng ng : Models trong cc ng dng da trn MVC l nhng thnh phn c nhim v lu tr thng tin, trng thi ca cc i tng, thng thng n l mt lp c nh x t mt bng trong CSDL. Ly v d, chng ta c lp Product c s dng m t d liu t bng Products trong SQL, bao gm ProductID, OrderDate.. Views chnh l cc thnh phn chu trch nhim hin th cc thng tin ln cho ngi dng thng qua giao din. Thng thng, cc thng tin cn hin th c ly t thnh phn Models. Controllers trong cc ng dng kiu MVC chu trch nhim x l cc tc ng v mt giao din, cc thao tc i vi models, v cui cng l chn mt view thch hp hin th ra mn hnh. Trong kin trc MVC, view ch c tc dng hin th giao din m thi, cn iu kin dng nhp xut ca ngi dng vn do Controllers m trch.

Hnh 1.1 : Khi nim Models-Views-Controller ng nt m i din cho s lin kt trc tip
3

Li ch ca vic dng m hnh MVC l s phn on r rng gia models, views, controllers bn trong ng dng. Cu trc sch s gip cho vic kim tra li ng dng tr nn d dng hn. Rt nhiu web programming framework ph bin nht hin nay k tha cc nguyn tc ca MVC nh Django, Ruby on Rails, CakePHP, Struts, S thnh cng ca m hnh khin Microsoft quyt nh a cc nguyn tc vo s dng trong .NET Framework v ri hnh thnh nn ASP.NET MVC u nm 2007 phin bn 1.0 . Hin nay , phin bn ASP.NET MVC mi nht l 3.0. II. Gii thiu v ASP.NET MVC

1. Khuyt dim ca ASP.NET Web Forms ASP.NET Web Forms truyn thng l mt tng tuyt vi ,nhng thc t li tr nn rc ri. Theo thi gian , vic s dng web form trong cc project nu bt mt vi thiu st : ViewState : K thut lu gi trng thi qua cc request (ViewState) thng mang li kt qu l nhng khi d liu ln c chuyn qua li gia client v server. N c th t hng trm kilobytes trong nhiu d liu thc, v n i qua i li vi mi ln request, lm nhng ngi truy cp vo trang web phi ch 1 thi gian di khi h click 1 button hoc c gng di chuyn n trang k tip. ASP.NET b tnh trng ny rt ti t, Ajax l 1 trong cc gii php c a ra gii quyt vn ny. Page life cycle : K thut kt ni s kin pha client vi m x l s kin pha server l 1 phn ca page life cycle, c th cc k rc ri v mng manh. Ch c 1 s t lp trnh vin thnh cng trong vic x l h thng control trong thi gian thc m khng b li ViewState hoc hiu c rng 1 s trnh x l s kin khng c kch hat 1 cch b him. Limited control over HTML : Server control t to ra n nh l m HTML, nhng ko phi l m HTML m bn mun. Ngai vic m HTML ca chng thng ko tun theo tiu chun web hoc khng s dng tt CSS m h thng cc server control cn to ra cc gi tr ID phc tp v ko an trc dc, lm kh khn trong vic s dng JavaScript. thc sai v s tch bit cc thnh phn : M hnh code-behind ca ASP.NET cung cp 1 gii php cho php ng dng a m ra khi cc dng HTML vo thnh 1 lp codebehind ring bit. iu ny dc ca ngi l lm tch bit gia giao din vi m x l, nhng thc t ngi lp trnh c khuyn khch pha trn m x l giao din (x l cy control pha server) vi m x l chng trnh (x l CSDL) trong cng nhng lp code behind khng l. Nu khng c s tch bit r rng gia cc thnh phn, kt qu cui cng thng l mng manh v kh hiu. Untestable : Khi nhng ngi thit k ca ASP.NET ln u tin gii thiu nn tng ny, h c th khng lng trc c l vic test t ng s tr thnh 1
4

cng an chnh ca vic pht trin phn mm ngy nay. Khng qu ngc nhin, cu trc m h thit k han tan khng thch hp vi vic test t ng. ASP.NET tip tc b sung thm cc tnh nng.Phin bn 2.0 thm nhiu component chun c th gim kh nhiu code m bn cn phi t vit. AJAX release nm 2007 l phn hi ca Microsoft vi phong tro Web 2.0/Ajax hi , h tr tng tc pha client trong khi lm cho cng vic ca developers n gin. Phin bn gn y ASP.NET 4 a ra HTML tun th cc tiu chun nhiu hn , nhng nhiu hn ch ni ti vn cn . 2. Kin trc MVC Bt u vo nhng nm 70 ca th k 20, ti phng th nghim Xerox PARC Palo Alto. S ra i ca giao din ha (Graphical User Interface) v lp trnh hng i tng (Object Oriented Programming) cho php lp trnh vin lm vic vi nhng thnh phn ha nh nhng i tng ha c thuc tnh v phng thc ring ca n. Khng dng li , nhng nh nghin cu Xerox PARC cn i xa hn khi cho ra i ci gi l kin trc MVC (vit tt ca Model View Controller). Trong kin trc MVC, mt i tng ha (GUI Component) bao gm 3 thnh phn c bn: Model, View, v Controller. Model c trch nhim i vi ton b d liu cng nh trng thi ca i tng ha. View chnh l th hin trc quan ca Model, hay ni cch khc chnh l giao din ca i tng ha. V Controller iu khin vic tng tc gia i tng ha vi ngi s dng cng nh nhng i tng khc. Khi ngi s dng hoc nhng i tng khc cn thay i trng thi ca i tng ha, n s tng tc thng qua Controller ca i tng ha. Controller s thc hin vic thay i trn Model. Khi c bt k s thay i no xy ra Model, n s pht thng ip (broadcast message) thng bo cho View v Controller bit. Nhn c thng ip t Model, View s cp nht li th hin ca mnh, m bo rng n lun l th hin trc quan chnh xc ca Model. Cn Controller, khi nhn c thng ip t Model, s c nhng tng tc cn thit phn hi li ngi s dng hoc cc i tng khc Ly v d mt GUI Component n gin l Checkbox. Checkbox c thnh phn Model qun l trng thi ca n l check hay uncheck, thnh phn View th hin n vi trng thi tng ng ln mn hnh, v thnh phn Controller x l nhng s kin khi c s tng tc ca ngi s dng hoc cc i tng khc ln Checkbox. Khi ngi s dng nhn chut vo Checkbox, thnh phn Controller ca Checkbox s x l s kin ny, yu cu thnh phn Model thay i d liu trng thi. Sau khi thay i trng thi, thnh phn Model pht thng ip n thnh phn View v Controller. Thnh phn View ca Checkbox nhn c thng ip s cp nht li th hin ca Checkbox, phn nh
5

chnh xc trng thi Checkbox do Model lu gi. Thnh phn Controller nhn c thng ip do Model gi ti s c nhng tng tc phn hi vi ngi s dng nu cn thit. Kin trc MVC tch bit (decoupling) s ph thuc gia cc thnh phn trong mt i tng ha, lm tng tnh linh ng (flexibility) v tnh ti s dng (reusebility) ca i tng ha . Mt i tng ha by gi c th d dng thay i giao din bng cch thay i thnh phn View ca n trong khi cch thc lu tr (Model) cng nh x l (Controller) khng h thay i. Tng t, ta c th thay i cch thc lu tr (Model) hoc x l (Controller) ca i tng ha m nhng thnh phn cn li vn gi nguyn. Kin trc MVC c ng dng xy dng rt nhiu framework v th vin ha khc nhau. Tiu biu l b th vin ha ca ngn ng lp trnh hng i tng SmallTalk (cng do Xerox PARC nghin cu v pht trin vo thp nin 70 ca th k 20). Cc Swing Components ca Java cng c xy dng da trn kin trc MVC. V d i cng vi JButton l ButtonUI (thnh phn View) v ButtonModel (thnh phn Model). Ta hon ton c th vit MyButtonUI hoc YourButtonUI thay i giao din ca JButton theo mnh (tng t cho ButtonModel). Mt im kh th v i vi Swing Components l n cho php ta ch thay i giao din mt phn no ca component. V d ta c th thay i th hin ca list item trong JList thng qua ListCellRenderer. Khi ci t kin trc MVC ta cn lu nhng im sau: - Thnh phn Model khng cn thit phi bit n cc View v Controller c th gn kt vi n. Khi c thay i, Model ch vic pht thng ip cho nhng ai ng k vi n. iu ny c th c thc hin thng qua Observer Pattern. - Nn p dng Facade Pattern kt hp Model, View, v Controller li vi nhau thnh 3 trong 1 cho d qun l v thao tc i vi ngi s dng. - Kin trc MVC khng phi l kin trc 3 tng (3-Tiers Architecture). Mc d gia 2 kin trc ny c nhiu im tng ng nhng chng ni v 2 kha cnh khc nhau.

Sau y l mt vi m hnh MVC n gin:

Hnh 2.1: M hnh 1

Hnh 2.2 : M hnh 2

Hnh 2.3 : M hnh 3

3. Li ch ca ng dng web da trn m hnh MVC C tnh m rng do c th thay th tng thnh phn 1 cch d dng Khng s dng viewstate, iu ny lm cc nh pht trin d dng iu khin ng dng ca mnh. H thng nh tuyn mi mnh m H tr tt hn cho test-driven development (TDD) ci t cc unit tests t ng, xc nh v kim tra li cc yu cu trc khi bt tay vo vit code. H tr kt hp rt tt gia ngi lp trnh v ngi thit k giao din S dng cc tnh nng tt nht c ca ASP.NET. 4. S ra i ca ASP.NET MVC Vo thng 11 nm 2007, hi tho ALT.NET ti Austine, Texas, gim c iu hnh Scott Guthrie ca Microsoft cng b v m t v nn tng pht trin web MVC mi, xy dng trn ASP.NET, r rng c thit k nh l 1 li hi p thng vo cc li ch trch trc y. ASP.NET MVC cung cp s tch bit r rng gia cc thnh phn bt chp vic s dng li m hnh MVC mc d n khng c g mi MVC ln u c cng b vo nm 1978 trong d n Smalltalk ca Xerox PARC - nhng ngy nay n ph bin nh l 1 kin trc cho cc ng dng web bi v cc l do sau : Ngi dng tng tc vi ng dng MVC t nhin s theo 1 chu trnh : user thc hin 1 hnh ng, v hi p li, ng dng thay i m hnh d liu ca n v chuyn 1 trang c cp nht cho ngi dng, v sau vng xoay lp li. iu ny l thch hp cho 1 ng dng web phi lun chuyn hng lat cc li yu cu cng nh hi p. Nhng ng dng web lun cn phi kt hp 1 s cng ngh (v c s d liu, HTML v m x l), lun chia thnh nhiu lp, v nhng mu ra ny sinh thnh cc khi nim trong MVC. ASP.NET MVC thc thi 1 bin th hin i trn MVC m c bit thch hp vi cc ng dng web. 5. ASP.NET MVC Framework ASP.NET MVC Framework l mt Model-View-Controller framework c Microsoft thm vo b ASP.NET. N cho php ngi lm phn mm xy dng nhng Web application theo tng ca MVC, gm 3 thnh phn Model, View v Controller. Mt Model tng trng cho mt trng thi ca ng dng. Thng thng, mt model s maps
8

vi mt table trong c s d liu, nhng record trong table s tng trng cho trng thi ca table . Cn mt Controller s handle nhng tng tc ca ngi dng vi ng dng v cp nht gi tr cho Model. Mt View s ly nhng d liu cn thit ca Model v hin th ra giao din.

Hnh 2.4 : ASP.NET MVC Framework ASP.NET MVC Framework tch ri cc models, cc views v cc controllers ca MVC bng cch dng cc Interface (trong ngn ng lp trnh), bng cch gip cho cc thnh phn ny c th test c lp vi nhau. View engine trong ASP.NET MVC framework chnh l cc trang aspx, ascx hin th giao din. Tuy nhin, nhng tng tc ca ngi dng ln trang web s c truyn thng cho controller m khng thng qua c ch postback truyn thng. Vi ASP.NET MVC framework, chng ta cn c th lm c 1 trang web vi Friendly-URL m khng phi mt cng code nhng implement phc tp nh trc y. ASP.NET MVC Preview 3 Release va mi c cng b hi thng 5/2008 vi nhiu feature mi ha hn nhiu iu hp dn tm hiu cho nhng lp trnh vin 6. So snh vi ASP.NET Web Form. Bn c nghe qua v im yu v gii hn ca ASP.NET WebForm truyn thng, v lm th no m ASP.NET MVC vt qua nhng vn ny. iu khng c ngha l WebForm cht m ch l : Microsoft mun mi ngi hiu rng c 2 nn tng song song nhau, h tr cho nhau, v c 2 u l i tng cho vic pht trin hin ti. Ni chung, vic bn chn la gia 2 m hnh cn ty vo han cnh.
9

WebForm mang ti 1 trang web m giao din c th lu gi trng thi, v cui cng thm vo 1 lp tru tng tinh vi nm trn HTTP v HTML, s dng ViewState v postback to ra hiu ng ca vic c trng thi . iu ny thch hp vi phong cch pht trin ko v th ca Window Form, tc l bn t cc i tng c giao din ln trang v m x l vo trnh x l s kin ca chng. MVC ha vo bn cht ko trng thi ca HTTP, lm vic chung vi n hn l chng li. iu ny yu cu bn phi hiu tht s cch lm vic ca 1 ng dng web, t c iu , MVC cung cp 1 cch tip cn n gin, mnh m v hin i cho vic vit cc ng dng web vi m c trt t m d dng test v bo tr sau ny, gii phng nhng phc tp kh chu v cc gii hn ko ng c. C nhng tnh hung m WebForm kh tt thm ch cn tt hn MVC. V d nh cc ng dng nh, ni b m trc tip kt ni thng vo cc bng CSDL hoc dn ngi s dng thng qua cc wizard. V th s khng cn phi lo lng v bng thng do ViewState, khng dnh dng ti vn ti u ha h thng tm kim, v khng b lm phin v vic test v bo tr lu di. S tin li ca cch pht trin kiu ko th ca WebForm lm m i cc im yu ca n. Nhng mt khc, nu bn vit 1 ng dng trn Internet, hoc cc ng dng ni b ln hn, bn s hng ti tc download nhanh v tng thch trnh duyt cho, c xy dng vi cht lng cao hn, m kin trc tt thch hp cho vic test t ng, trong trng hp MVC s mang li nhng u im quan trng. III. Tnh nng trong ASP.NET MVC 3

ASP.Net MVC 3 l mt phin bn kh hp dn, c thm nhiu tnh nng v ci tin mi rt tuyt vi, gip n gin ha m (code) ca bn. ASP.Net MVC 3 cng tng thch ngc vi ASP.Net MVC 1 v ASP.Net MVC 2, khin vic nng cp cc ng dng hin c rt d dng. Bi vit ny s trnh by v nhng tnh nng mi nh: Razor, multi view engine, nhng ci tin trong: controller, JavaScript v Ajax, Model Validation, Dependency Injection, v cc tnh nng mi khc. 1. Cng c xem Razor (The Razor View Engine) ASP.net MVC 3 i km vi mt cng c xem mi c tn l Razor vi nhng li ch sau: C php Razor l sch s v xc tch, i hi mt s lng ti thiu cc t hp phm. Vic tm hiu Razor tng i d dng v n da trn ngn ng C# v Visual Basic.
10

Visual Studio bao gm IntelliSense v m c php Razor c mu ha. Razor views c th kim tra tng n v m khng i hi bn phi chy cc ng dng hoc phi chy web server. Mt s tnh nng mi ca Razor: C php @model xc nh cc loi s c truyn vo view. @**@ l c php comment. Kh nng nh r mc nh (nh layoutpage) mt ln cho ton b trang web. Phng thc Html.Raw hin th cc vn bn m khng cn m ha Html cho n. H tr chia s m gia nhiu views (_viewstart.cshtml hay _viewstart.vbhtml). Razor cng bao gm nhng cng c h tr HTML mi, chng hn nh:

Chart biu din mt biu , cung cp cc tnh nng nh control chart trong P.NET 4. WebGrid biu din mt li d liu (data grid), hon chnh vi chc nng phn trang v phn loi. Crypto S dng cc thut ton bm (hashing algorithms) to thuc tnh thng tho v bm cc mt khu. WebImage biu din mt hnh nh. WebMail gi tin nhn email.

S la chn v tnh linh hot: View Engine m ASP.NET MVC mc nh s dng l ASP.NET Web Forms View Engines. Web Forms ngay t ban u khng c thit k mc nh cho m hnh MVC. Web Form c thit k mc nh cho m hnh lp trnh hng s kin ca ASP.NET Web Form, v nu v tnh ta vn c th s dng cc tnh nng ca ASP.NET Web Form (khng c khuyn khch vi m hnh MVC) nh ViewState, Web Form Controlsv.v

11

Hnh 3.1 : View s dng Web Forms View Engine ASP.NET MVC c th s dng cc view engine khc render d liu tr v cho ngi dng nh Spark View Engine, NHaml .. Cc view engine ny c nhiu u im, trong phi k n lng k t phi dng g cho mt View s gn v nh hn nhiu so vi vic s Web Form, mt khc s gip cho ngi lp trnh c s dng mt View Engine c lp vi ASP.NET. Tuy nhin cc view engine ny li khng c h tr chnh thc bi Microsoft. iu cng c ngha l chng s khng c u tin s dng trong mi trng doanh nghip.

Hnh 3.2 : View s dng pack View Engine S ra i ca Razor View Engine i km vi ASP.NET MVC 3 gii ta cn kht cn phi c mt View Engine ph hp hn cho ASP.NET MVC v chnh thc c Microsoft hu thun. Razor View Engine c cc mc tiu thit k chnh l
12

D s dng v d hc: m s dng trong Razor l s phi hp gia ngn ng lp trnh C# hoc VB.NET vi m HTML. S phi hp ny rt t nhin v d vit. Razor khng l thuc vo ASP.NET runtime Thng minh

Di y l m ca mt View n gin s dng Razor

Razor rt thng mnh, c th phn bit c d dng u l code C#, u l m HTML, n ch cn k t @ cho bit im khi u ca mt on code C# v thm ch chng ta cn c th trn ln m HTML v C# vi nhau mt cch phc tp hn m Razor vn nhn ra c

Hnh 3.4 : trn ln m HTML vi C# ASP.NET MVC 3 c xy dng trn nn tng .NET Framework 4.0, v n tn dng c cc tnh nng mi ca .NET 4.0, trong c kiu d liu dynamic.Trc y bn s s dng thuc tnh ViewData chuyn d liu (model) cho View render trang html.
13

By gi bn s c them thuc tnh ViewBag (kiu dynamic). V ng ngc nhin l ViewBag v ViewData ch l mt. ViewData[Employees] cng chnh l ViewBag.Employees v ngc li. tm hiu thm v kiu dynamic ta c th xem thm link: http://msdn.microsoft.com/en-us/library/dd264736.aspx#Y684 Vi razor, ta c th dng t kha model nh ngha mt strongly typed view, v s dng t kha using khai bo namespace cn s dng

Hnh 3.5: T kha model & using 2. JavaScript v Ajax Theo mc nh, Ajax v cc cng c h tr hp l trong MVC 3 s dng mt cch tip cn unobtrusive JavaScript. Unobtrusive JavaScript ni tuyn trnh tim tn hiu t JavaScript vo HTML. iu ny lm cho HTML ca bn nh hn v t ln xn hn, v lm cho n chuyn i ra ngoi d dng hn hay ty chnh cc th vin JavaScript. Validation helpers trong MVC 3 cng s dng plugin jQueryValidate theo mc nh. Nu bn mun MVC 2 thc hin, bn c th v hiu ha unobtrusive JavaScript bng cch thit lp li file web.config.

3. Authentication Cc phng php xc thc ngi dng trong ng dng ASP.NET MVC 3: - Forms Authentication - Windows Authentication

Windows Authentication: - Trong file Web.config ca project s dng on khai bo sau:


14

<authentication mode=Windows> </authentication> - Trong file applicationHost.config nm trong th mc ci t IIS ca windows, chnh sa dng khai bo authentication: <windowsAuthentication enable=true> </windowsAuthentication>

- Trn trang web cn xc thc ngi dng (VD: Index.cshtml) cn c dng code sau: @User.Identity.Name - Trong file HomeController.cs (controller iu khin cc hnh ng trong trang web Index.cshtml) , thm attribute [Authorize] vo trc khi xem trang Index.cshtml

15

Sau khi deploy project vo trang Index.cshtml s c xc thc ngi dng:

Forms Authentication Trong file Web.config ca project, s dng dng khai bo sau: <authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880"/> </authentication> Cch to form authentication tng t nh trong MVC 2 - To membership bng cch setup aspnet_regsql.exe - To cc roles - To form register v login

XSS (Cross-site scripting) ASP.NET MVC c xy dng trong qu trnh xc nhn yu cu t ng gip bo v chng li cc cuc tn cng XSS v HTML injection. Tuy nhin, i khi bn mun v hiu ha yu cu xc nhn r rng, chng hn nh nu bn mun cho php mt ngi post ni dung HTML (V d, trong c mc blog hoc ni dung CMS). Bn c th thm mt thuc tnh AllowHtml cho cc model hay view models v hiu ha cc yu cu xc nhn trn mi mt thuc tnh c bn trong m hnh lin kt. 4. Unit Test Unit Test l k thut kim nghim cc hot ng ca mi chi tit m (code) vi mt quy trnh tch bit vi quy trnh pht trin PM, gip pht hin sai st kp thi. UT cn c th gip pht hin cc vn tim n v cc li thi gian thc ngay c trc khi chuyn vin
16

kim nh cht lng (QA Quality Assurance) tm ra, thm ch c th sa li ngay t tng thit k. UT l cc on m c cu trc ging nh cc i tng c xy dng kim tra tng b phn trong h thng. Mi UT s gi i mt thng ip v kim tra cu tr li nhn c ng hay khng, bao gm: Cc kt qu tr v mong mun Cc li ngoi l mong mun Cc on m UT hot ng lin tc hoc nh k thm d v pht hin cc li k thut trong sut qu trnh pht trin, do UT cn c gi l k thut kim nghim t ng. XY DNG UT VI M HNH I TNG O (MOCK OBJECT) Trong UT, mi mt i tng hay mt phng thc ring l c kim tra ti mt thi im v chng ta ch quan tm n cc trch nhim ca chng c c thc hin ng hay khng. Tuy nhin trong cc d n PM phc tp th UT khng cn l quy trnh ring l, nhiu i tng (n v chng trnh) khng lm vic c lp m tng tc vi cc i tng khc nh kt ni mng, c s d liu hay dch v web. Nh vy cng vic kim nghim c th b tr hon gy tc ng xu n quy trnh pht trin chung. gii quyt cc vn ny ngi ta a ra m hnh Mock Object hay i tng o (hoc i tng gi). nh ngha Mock object (MO) l mt i tng o m phng cc tnh cht v hnh vi ging ht nh i tng thc c truyn vo bn trong khi m ang vn hnh nhm kim tra tnh ng n ca cc hot ng bn trong. c im n gin hn i tng thc nhng vn gi c s tng tc vi cc i tng khc. Khng lp li ni dung i tng thc. Cho php thit lp cc trng thi ring tr gip kim tra. Li ch m bo cng vic kim nghim khng b gin on bi cc yu t bn ngoi, gip cc chuyn vin tp trung vo mt chc nng nghip v c th, t to ra UT vn hnh nhanh hn. Gip tip cn hng i tng tt hn. Nh MO chng ta c th pht hin interface cn tch mt s lp. D dng cho vic kim nghim. Thay v gi cc i tng thc vn hnh nng n, chng ta c th gi cc MO n gin hn kim tra nhanh lin kt gia cc th tc, cng vic kim nghim c th tin hnh nhanh hn. Phm vi s dng MO c s dng trong cc trng hp sau:
17

Cn lp trng thi gi ca mt i tng thc trc khi cc UT c lin quan c a vo vn hnh (th d kt ni c s d liu, gi nh trng thi li server) Cn lp trng thi cn thit cho mt s tnh cht no ca i tng b kho quyn truy cp (cc bin, th tc, hm, thuc tnh ring c khai bo private). Khng phi lc no cc tnh cht ca mt i tng cng c th c m rng phm vi truy cp ra bn ngoi v iu ny c th trc tip ph v lin kt gia cc phng thc theo mt trnh t sp t trc, t dn n kt qu c th b x l sai. Tuy nhin, MO c th thit lp cc trng thi gi m vn m bo cc yu cu rng buc, cc nguyn tc ng n v cc quan h ca i tng thc. Cn kim tra mt s th tc hoc cc bin ca thnh vin b hn ch truy cp. Bng cch k tha MO t i tng thc chng ta c th kim tra cc thnh vin c bo v (khai bo protected). Cn loi b cc hiu ng ph ca mt i tng no khng lin quan n UT. Cn kim nghim m vn hnh c tng tc vi h thng bn ngoi. Cc dng i tng c m phng MO m phng cc loi i tng sau y: Cc i tng thc mi ch c m t trn bn thit k nhng cha tn ti di dng m, hoc cc module cha sn sng cung cp cc d liu cn thit vn hnh UT. Cc i tng thc c cc th tc cha xc nh r rng v mt ni dung (mi ch m t trong interface) nhng c i hi s dng gp trong cc UT. Cc i tng thc rt kh ci t (th d i tng x l cc trng thi ca server) Cc i tng thc x l mt tnh hung kh xy ra. Th d li kt ni mng, li cng Cc i tng c cc tnh cht v hnh vi phc tp, cc trng thi lun thay i v cc quan h cht ch vi nhiu i tng khc Cc i tng vn hnh chm chp. Cng vic kim tra hin hnh khng lin quan n thao tc x l i tng ny. i tng thc lin quan n giao din tng tc ngi dng. Khng ngi dng no c th ngi kim nghim cc chc nng h bn ht ngy ny qua ngy khc. Tuy nhin bn c th dng MO m phng thao tc ca ngi dng, nh cng vic c th c din bin lp li v hon ton t ng. Thit k MO Thng thng, nu s lng MO khng nhiu, chng ta c th t thit k. Nu khng mun mt nhiu thi gian t thit k mt s lng ln MO, bn c th ti v cc cng c c sn thng dng hin nay nh EasyMock, jMock, Nmock Cc phn mm ny cung cp nhiu API cho php xy dng MO v cc kho d liu gi d dng hn, cng nh kim tra t ng cc s liu trong UT. Ni chung, vic thit k MO gm 3 bc chnh sau y:

18

o a ra interface m t i tng. Tt c cc tnh cht v th tc quan trng cn kim tra phi c m t trong interface. o Vit ni dung cho i tng thc da trn interface nh thng thng. o Trch interface t i tng thc v trin khai MO da trn interface . Lu MO phi c a vo quy trnh kim nghim tch bit. Cch ny c th sinh ra nhiu interface khng thc s cn thit, c th lm cho thit k ng dng tr nn phc tp. Mt cch lm khc l k tha mt i tng ang tn ti v c gng m phng cc hnh vi cng n gin cng tt, nh tr v mt d liu gi chng hn. c bit trnh to ra nhng lin kt mt xch gia cc MO v chng c th lm cho thit k UT tr nn phc tp. TEST-DRIVEN DEVELOPMENT Trong nhng nm gn y, khi nim TDD c a ra da trn m hnh pht trin PM kh ni ting XP (Extreme Programming). TDD l mt chin lc pht trin s dng k thut UT theo nguyn tc to ra cc cng on kim nghim trc khi xy dng m. tng chnh ca TDD: Trc khi bn bt tay vit m, hy ngh v nhng g phi lm trc. Khng ging nh lp trnh truyn thng, trong TDD chng ta vit m kim tra trc khi vit m chnh, ch c vit sau khi t s lng UT cn thit cho cc tnh hung c th xy ra. C th hiu TDD l mt quy trnh vng trn bt u bi cc UT vi trng thi u tin l fail, tip theo cn vit m cc UT chuyn trng thi pass, v cui cng hiu chnh m cho n gin hn. Quy trnh ny c ti din lin tc i vi mi n v chng trnh cho n khi kt thc hon ton d n. c im L quy trnh pht trin tng dn theo kch bn v gn cht vi cc cng on kim nghim trc khi a ng dng vo vn hnh thc s. L phng php pht trin PM p dng k thut UT tin hnh kim tra tt c cc interface, to ra cc MO cn thit m phng s vn hnh ca ng dng mt ni ring bit. To ra b khung vn hnh t ng cho tt c cc thao tc kim nghim b phn trong h thng mi khi xy dng mt phin bn mi. Li ch TDD l mt k thut gip nh hnh tng thit k hn l kim nghim m chng trnh. Thc hin theo TDD s lm sng t thm cc yu cu bi ton, gii ta s b tc trong khi i tm gii php, pht hin sm cc vn v thit k v trnh c nhng cng vic phi lm li.
19

TDD l mt phn b tr khng th thiu trong cc cng vic lp trnh theo nhm nh, thng l hai ngi cng pht trin mt module. Trong m hnh ny, lun phin mt ngi c nhim v ngh v tnh hung kim tra tip theo, vit UT cho tnh hung v cc MO cn thit. Ngi cn li tp trung vit m cc UT chuyn sang trng thi pass; gip gim thiu li so vi khi lm vic c lp. TDD nh hng cho nhm thit k vn dng tt cc phng php hng i tng (cc i tng cn kim tra phi thc thi mt interface l mt th d), c bit c th thu c thit k tt theo hai nguyn tc: - Loosely-Coupled: Bt k s thay i no cng u khng nh hng n cc i tng khc. - Highly-Cohesive: C tnh cht khp kn theo ngha ch thc hin nhng chc nng gn vi nhau v mt nghip v v thit k, ng thi loi ra nhng chc nng t c lin quan n cc chc nng chnh. Li ch quan trng cui cng ca TDD l xy dng cc on m cht lng v an ton, tp trung hn, gim phn mnh m v gim ri ro xy ra ngoi d kin. Trong TDD, cng nhiu UT c to ra th cng c nhiu kh nng khng ch nhanh chng cc li nghim trng xy ra. Cc UT cng mn theo ngha khng th chia nh hoc khng th b sung c na th kh nng p ng yu cu kim nghim cng cao. Khi thit k cc UT c kh nng pht hin chnh xc bt k mt li k thut no, chng ta c th yn tm chuyn giao module cho chuyn vin QA kim nh chc nng (functional testing). Tuy nhin trong sut giai on pht trin sau cn kim tra nh k cc trng thi ca UT m bo vic cp nht khng ph v tnh ng n ca cc on m c. Quy trnh thc hin Trnh t thc hin trong TDD nh sau: i vi mt module, ngh v cc cng vic s lm v cch kim tra cng vic nh th no. To test suite ng vi module . Bt tay thit k s b tt c cc UT c th ngh ra. Bc ny thc cht l thu thp cc tnh hung c th pht hin li vo mt danh sch cng vic cn kim nghim. Vit m m bo cc UT c bin dch. Thc thi cc UT, v m chnh ca module cha tn ti nn trng thi l fail. Vit m cho module thay i trng thi UT, c th b sung UT nu cn thit. Chy li ton b test suite v quan st cc UT li, lp li bc 6-7 cho n khi tt c UT u t trng thi pass. Hiu chnh m loi b cc phn lp li, cc khi m v cc phn nhnh, lin kt thiu hp l hoc cc khi m khng cn hot ng ng thi vit ch gii cc
20

phn quan trng. Hy thc hin cng vic ny thng xuyn v chng ta s khng c thi gian quay li cho cng vic hiu chnh. Bc cui cng c ngha rt ln trong vic gim s ph thuc vo cc module khc v gia tng s c lp v mt nghip v ca module hin hnh. Cn lu kim tra li trng thi tt c cc UT sau mi ln hiu chnh v rt c th cng vic ny s gy ra li u . Chin lc pht trin vi TDD Mi cng ty PM u c cch iu hnh qun l pht trin PM khc nhau, nhng tt c u c chung mt mc ch l gim s li xung mc nh nht c th v khng ch li pht sinh tr li. Tuy nhin nhn chung mt quy trnh pht trin PM l tng khng th thiu cc bc quan trng sau y: Thit k mt d n th nghim ring, c lp, tch bit vi khu vc pht trin. Khng gn d n th nghim vo phin bn sn phm c giao cho khch hng, v iu ny c th lm tng kch thc sn phm. Xy dng mt c s d liu cc test suite cho mi module phc v vic kim nghim c hai kha cnh pht trin v chc nng. Chia nh d n ra nhiu quy trnh nh hn da trn ng cnh, gip vic vit UT c d dng hn. kim tra hiu qu ca ton b ng dng, tt nht l kim tra hiu qu ca mi n v m nh nht. C th thit lp cc c s d liu ring cho d n th nghim lu tr tt c cc gi tr u vo v cc kt qu tr v mong mun XML s l cch tip cn tt nht cho nhng c s d liu loi ny. Tch hp cng vic kim nghim thnh mt phn trong quy trnh t ng ho qun l m ngun nh tch hp ton b cng vic, bin dch vo cui ngy lm vic Mi mt cng vic nh vy c gi l mt build. V quy trnh ny c th tham kho ng dng ngun m Ant trong Java (hoc NAnt cho .NET), hay cc cng c thng mi nh CruiseControl hoc Anthill. Cui cng thay v kim nghim bng tay, hy my tnh thc hin t ng v gi bo co cho bn. Cc thng bo email t ng hng ngy v tnh trng ca cc UT s lun m bo cho d n thng sut. Tt c cc cng vic ny c th c tin hnh trn mt my tnh ring c kh nng kim sot cc thay i m ngun.

21

IV.

Ph lc
1. Ci t

Trong bi vit ny ch hng dn s dng ci t MVC 3 vi Microsoft visual web developer 2010 cng vi ASP.NET MVC 3 Bc 1 : Ta download chng trnh wen platform installer 3.0 ti a ch http://www.microsoft.com/web/downloads/platform.aspx

Bc 2: Sau khi download cc bn ci Microsoft Web Platform Installer 3.0 vo my. Vo Start/All Programs/Microsoft Web Installer

22

Sau nhp express vo textbox v nhn enter

23

Sau ta chn visual web developer 2010 Express v nhn install

Theo sau ta tip tc chn Visual 2010 SP1 Beta Core , SQL 2008 express, ASP.NET MVC 3 . V y l kt qu ca cc thnh phn khi hon tt qu trnh ci t

24

2. To project Hng dn ny bt u to mi 1 project ASP.NET MVC 3 bng Visual Web Developer 2010 Express (chng trnh min ph) Ta chn new project menu File , n s xut hin 1 hp thoi mi

Ta chn Visual Basic hoc C#, y ti dng C#. By gi ta chn ASP.NET MVC 3 Web Application, t tn project v cui cng l click OK.

25

Trong ca s New ASP.NET MVC 3 Project mc Select a Template bn chn Internet Application, mc View engine chn Razor, nu mun s dng HTML 5 bn cn check vo mc Use HTML 5 semantic markup cui cng chn OK

By gi bn to c mt project ASP.NET MVC 3

26

y l cu trc folder c bn

ASP.NET MVC s dng mt s quy c c bn t tn cho tn th mc Folder Mc ch /Controllers Cc Controller quyt nh lm ci g khi c yu cu bn browser v tr v
27

/Views /Models /Content /Scripts

kt qu cho browser Cc View cha UI templates Cc Model cha d liu thao tc Folder ny cha hnh nh , css , v cc thnh phn tnh khc Folder ny cha cc file javascript

3. Cc thnh phn chnh ca mt project MVC 3

28

AssemblyInfo.cs: File ny lu tr li cc thng tin ca project nh tiu , m t project, cng ty, version, ... Cc file CSS trong folder base: cc file ny c tc dng gn theme cho cc phn t trong trang web, ni m bn s dng n Ajax,

V d: cc tabs trn c trnh bi (nn tabs mu xm, tabs c chn c nn trng, ...) nh vy l nh vo cc file css hnh bn, c th l file jquery.ui.tabs.css, ng nhin l cc bn c th ty chnh cc file ny theo thm m ca ring mnh. Folder Controllers: Cha cc controllers dng iu khin hot ng ca website, d liu t client (Request) gi n hoc t server (Response) tr v u phi thng qua cc controller trong folder ny. Ni thm, sau khi nhn cc request th controller s s l, kt xut d liu tng ng v gi mt Razor View tng ng tr v cho client. Folder Model: Cha cc class nh x ca ng dng v database, cc class trong folder ny tham gia vo nghip v s l business cho ng dng, ng thi c cc properties to nn cho cc Razor Viewhin th d liu V d: c mt model tn l Product nh sau

29

Mt Razor View nh sau

V kt qu khi in chy ra trnh duyt


ID: 4398 Name: citizen watch at0361-06e Description: This mens Citizen Largo Eco-Drive watch has a contemporary sporty look, complete with black multi-dial clock face, date feature, chronograph and chunky side buttons. Materials include black Ion-plated steel and rubber. Price: $176.00

Cc file js: cc file ny mi file c tc dng khc nhau, nhn vo tn file cc bn cng c th on bit c cng dng ca n ri phi khng, chng dng validator d liu, cc file jquery l cc framework dng trnh bi layout website, dng vit ajax
30

Folder View: Folder ny cha ci file Razor View *.cshtml hoc *.vbhtml dng hin th ti trnh duyt ca client _Layout.cshtml: Trong ASP.NET MVC 3, th file layout ny c tc dng ging nh MasterPage trong ng dng ASP.NET bnh thng, n l mt layout chung cho ton b website. Error.cshtml: File ny dng website redirect ti nu c li. _ViewStart.cshtml: _ViewStart.cshtml l file quy nh layout cho website, ni dung file ny nh sau:
1. 2. 3. @{

Layout
}

= "~/Views/Shared/_Layout.cshtml";

Theo ni dung ny th layout (master page) l file _Layout.cshtml, cc bn c th ty chnh file layout theo mun ca mnh 2 file web.config: Nu tng lm ng dng ASP.NET th chc hn cc bn bit tc dng ca 2 file ny. N l tri tim ton b ng dng hot ng. Global.asax: (File nm gia s 9 v 10) File ny cng c tc dng iu khin hoc ng ca website, tuy nhin tc dng ln nht ca n trong ASP.NET MVC 3 l iu khin Routing (URL Address)

31

You might also like