3lop&MVC

Embed Size (px)

Citation preview

  • 8/2/2019 3lop&MVC

    1/12

    Link bi vit:http://congdongso.com/diendan/threads/2782-kien-truc-3-lop-va-mvc-pattern.html

    Bn s nghe ni n thut ng kin trc a tng/nhiu lp, mi lp s thc hin mt chc nngno , trong m hnh 3 lp l ph bin nht. 3 lp ny l: Presentation, Business Logic, vData Access. Cc lp ny s giao tip vi nhau thng qua cc dch v(services) m mi lp cungcp to nn ng dng, lp ny cng khng cn bit bn trong lp kia lm g m ch cn bit lpkia cung cp dch v g cho mnh v s dng n m thi.

    Presentation Layer (PL)

    Lp ny lm nhim v giao tip vi ngi dng u cui (n gin l ngi s dng phn mm) thu thp d liu v hin th kt qu hoc d liu thng qua cc thnh phn giao din ngi sdng nh Jtable trong Swing Lp ny s dng cc dch v do lp Business Logic Layer cung

    cp.

    Trong lp ny c 2 thnh phn chnh l User Interface Components v User Interface ProcessComponents.UI Components l nhng phn t chu trch nhim thu thp v hin th thng tin cho ngi dngcui.

    UI Process Components: l thnh phn chu trch nhim qun l cc qui trnh chuyn i gia ccUI Components. V d chu trch nhim qun l cc mn hnh nhp d liu trong mt lot cc thaotc nh trc nh cc bc trong mt Wizard

    Business Logic Layer (BLL)Lp ny thc hin cc nghip v chnh ca h thng, s dng cc dch v do lp Data Access cungcp, v cung cp cc dch v cho lp Presentation. Lp ny cng c th s dng cc dch v cacc nh cung cp th 3 (3rd parties) thc hin cng vic ca mnh(v d nh s dng dch vca cc cng thanh tan trc tuyn nh VeriSign, Paypal).

    Trong lp ny c cc thnh phn chnh l Business Components, Business Entities v ServiceInterface.Service Interface l giao din lp trnh m lp ny cung cp cho lp Presentation s dng. LpPresentation ch cn bit cc dch v thng qua giao din ny m khng cn phi quan tm n bntrong lp ny c hin thc nh th no.

    Business Entities l nhng thc th m t nhng i tng thng tin m h thng x l. Trong ngdng chng ta cc i tng ny l cc chuyn mc(Category) v bn tin(News) lm nhim vcung cp cc dch v qun l chuyn mc v cc bn tin (thm, xa, sa, xem chi tit, ly danhsch). Cc business entities ny cng c dng trao i thng tin gia lp Presentation vlp Data Access.

    http://congdongso.com/diendan/threads/2782-kien-truc-3-lop-va-mvc-pattern.htmlhttp://congdongso.com/diendan/threads/2782-kien-truc-3-lop-va-mvc-pattern.htmlhttp://congdongso.com/diendan/threads/2782-kien-truc-3-lop-va-mvc-pattern.htmlhttp://congdongso.com/diendan/threads/2782-kien-truc-3-lop-va-mvc-pattern.htmlhttp://congdongso.com/diendan/threads/2782-kien-truc-3-lop-va-mvc-pattern.html
  • 8/2/2019 3lop&MVC

    2/12

    Business Components l nhng thnh phn chnh thc hin cc dch v m Service Interface cungcp, chu trch nhim kim tra cc rng buc logic(constraints), cc qui tc nghip v(businessrules), s dng cc dch v bn ngoi khc thc hin cc yu cu ca ng dng.

    Data Access Layer (DAL)

    Lp ny thc hin cc nghip v lin quan n lu tr v truy xut d liu ca ng dng. Thnglp ny s s dng cc dch v ca cc h qun tr c s d liu nh SQL Server, Oracle, thc hin nhim v ca mnh. Trong lp ny c cc thnh phn chnh l Data Access Logic, DataSources, Servive Agents).

    Data Access Logic components (DALC) l thnh phn chnh chu trch nhim lu tr vo v truyxut d liu t cc ngun d liu (JDBC trong Java)Data Sources nh RDMBS, XML, File systemsService Agents l nhng thnh phn tr gip vic truy xut cc dch v bn ngai mt cch ddng v n gin nh truy xut cc dch v ni ti.

    http://congdongso.com/diendan/link.php?url=http%3A%2F%2Fwww.box.net%2Frssdownload%2F15084541%2FKien%2520truc%25203%2520lop.rar
  • 8/2/2019 3lop&MVC

    3/12

    Vic tch lp ny c li khi sau ny, bn mun thay i database t MySql sang MSSql hocOracle, bn ch vic thay i lp DAL m khng lm nh hng cc lp khc.

    Theo hnh v, quy trnh s i theo ngc chiu kim ng h theo cc bc sau:1. Presentation layer yu cu BLL ly dm vi object, v d thng tin 1 person.2. BLL c th thc hin cc kim tra (validation) (v d, ngi dng hin ti c c php gihm ny hay khng?) v chuyn yu cu n DAL.3. DAL kt ni vi database v yu cu ly v record.4. Khi tm thy record, database s tr n v DAL.5. DAL gi (wrap/ map) database data vo mt custom object ( v d ny l object person) v trn v BLL.6. Cui cng, BLL s tr v object cho Presentation layer, v t hin th ln web page.M HNH NG DNG Client/Server 3 lp(business logic 3-Tier)Nhc im ca m hnh 2 lp:- Tnh ton tp trung pha Client (Fat client Thin Server):+ Kh nng cp v phi cp nht li phn mm ton b cc client.+ Do mi thao tc trn CSDL u thng qua mng gia client v server nn tc ca h thng schm i.- Tnh ton tp trung pha Server (Fat Server Thin Client):+ Vic sa i hoc m rng sever tr nn khng kh thi v tn km v m lnh b trn gianghip v v c s d liu.+ Server d b qu ti do phi p ng qu nhiu nhim v (c bussiness logic v database). Nu

    http://congdongso.com/diendan/link.php?url=http%3A%2F%2Fimar.spaanjaars.com%2FImages%2FArticles%2FN-LayerDesign%2FLayersOverview.jpg
  • 8/2/2019 3lop&MVC

    4/12

  • 8/2/2019 3lop&MVC

    5/12

    MVC

    Phng php thit k MVC bt ngun t vic pht trin giao din ngi dng

    trong ngn ng lp trnh Smalltalk, y l mt trong nhng phng php thit kthnh cng nht trong cc phng php thit k hng i tng. Hin nay,MVC c dng rng ri trong nhiu h thng phn mm. [/QUOTE]

    - Model: Model c giao nhim v cung cp d liu cho c s d liu v lu d liuvo cc kho cha d liu. Tt c cc nghip v logic c thc thi Model. D liuvo t ngi dng s thng qua View n Controller v c kim tra Model trckhi lu vo c s d liu. Vic truy xut, xc nhn, v lu d liu l mt phn caModel. Do c 2 vai tr tng i tch bit cho nn mt Model thng c tch thnhcc lp c cc domain x l khc bit:+ Business logic thng l x l rule hay policy ca nghip v cng nh business

    workflows.+ Domain data: Cung cp/lu tr d liu v vic chuyn i d liu thnh cc dngkhc nhau theo yu cu- View: View hin th cc thng tin cho ngi dng ca ng dng v c giao nhimv cho vic nhn cc d liu vo t ngi dng, gi i cc yu cu n controller, sau l nhn li cc phn hi t controller v hin kt qu cho ngi dng. Cc trangHTML, JSP, cc th vin th v cc file ngun l mt phn ca thnh phn View.Trong cc web framework, n gm 2 phn chnh:+ Template file nh ngha cu trc v cch thc trnh by d liu cho user. V d nhlayout, color, windows + Logic x l cch p dng d liu vo cu trc trnh by. Logic ny c th bao gm

    vic kim tra nh dng d liu, chuyn i nh dng d liu sang mt sng d liutrung gian, la chn mt cu trc hin th ph hp.- Controller: controller m nhim vic cp nht b phn hin th (View) khi cn thit. B iukhin ny nhn d liu nhp t ngi dng, truy xut cc thng tin cn thit t m hnh trong(Model), v cp nht thch hp phn hin th (View). Giao din vi ngi s dng phn mm cthit lp nh s tng tc qua li gia View vController: hai b phn ny chnh l phn trnh by bn ngoi ca i tng biu din bn trong.Martin Fowler chia MVC thnh hai phin bn l Passive View v Supervising Controller.

  • 8/2/2019 3lop&MVC

    6/12

    Trong mu Passive View, thnh phn View c loi b hon ton cc x l logic vtng tc n Model. Thay v vy, n chuyn giao cc x l cho Controller m trch.Controller m nhn tng tc n Model v cp nht View khi c thay i t Model.Controller l thnh phn trung gian lin lc gia View v Model.

    Trong mu Supervising Controller, View u tin bt ly cc s kin v sau chuyngiao cho Controller x l. cp nht thay i t Model, View dng data-binding vObserver Pattern cho cc x l n gin cn i vi cc x l phc tp s nh nController

    So snh MVC v 3-layer/tier:

    Ging nhau:- C hai u tch ri programming core/business logic ra khi nhng ph thuc vti nguyn v mi trng.- Trong mt ng dng nh, MVC th hin th no? Presentation th hin ging nhchc nng ca View v Controller. Business v Database th hin ging nh chcnng ca Model. Nh th nhn gc ny, th MVC tng ng vi 3-layer(ttnhin c chng cho nh hnh v)

    Khc nhau:Trong 3-layers, qu trnh i theo chiu dc, bt u t Presentation, sang BL, ri tiData, v t Data, chy ngc li BL ri quay ra li Presentation.

    http://adf.ly/1345350/http:/c.uploadanh.com/upload/0/1011/0.888882001253204632.pnghttp://congdongso.com/diendan/link.php?url=http%3A%2F%2Fwww.pcworld.com.vn%2Fpcworld%2Finfo%2Fmisc%2F2009%2F8%2FA0908_119a.jpg
  • 8/2/2019 3lop&MVC

    7/12

    Cn trong mu Supervising Controller, d liu c nhn bi View, View s chuyncho Controller cp nht vo Model, ri sau d liu trong Model s c a li choView m khng thng qua Controller, do vy lung x l ny c hnh tam gic.

    Gi bi MSDNUser Interface Process ComponentsComplex user interfaces often require many highly complex forms. To increase reusability,maintainability, and extensibility, you can create a separate user interface process (UIP)component to encapsulate dependencies between forms and the logic associated with navigatingbetween them. You can apply the same concept to the dependencies, validation, and navigationbetween components of a single form. These UIP components are typically custom componentsthat are based on design patterns such as Front Controller, Application Controller, and Mediator.The interaction between UI and UIP components often follows the Model-View-Controller orPresentation-Abstraction-Controller pattern.

    http://congdongso.com/diendan/link.php?url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png%3Fw%3D411%26h%3D250http://congdongso.com/diendan/link.php?url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png%3Fw%3D169%26h%3D339
  • 8/2/2019 3lop&MVC

    8/12

    "Nh vy theo hng dn ca MSDN th MVC thuc UI Process Components trongPresentation Layer, ch khng phi l cch chia ton b mt application ra thnh 3 layer lModel View Controller."

    congdongcviet

    Thng thng khi p dng th ngi ta kt hp c 2: MVC c p dng bn phaClient. Sau 3 tiers c p dng nh bnh thng trn h thng client-server. Vicc s dng hay l c bc ln nhau gia MVC v 3-tierl khng hon ton bt buc,ta c th s dng MVC m khng cn n 3-tier (vi nhng ng dng nh)

    http://congdongso.com/diendan/link.php?url=http%3A%2F%2Fforums.congdongcviet.com%2Fshowthread.php%3Fp%3D69352http://congdongso.com/diendan/link.php?url=http%3A%2F%2Fforums.congdongcviet.com%2Fshowthread.php%3Fp%3D69352
  • 8/2/2019 3lop&MVC

    9/12

    Bi vit sau y gii thiu tng quan v phng php thit k MVC, v minh hacch s dng MVC trong thit k hng i tng bng vic xy dng chngtrnh Java Web Mail, s dng JSP, Servlet v Java Mail API:

    Java l mt ngn ng lp trnh hng i tng thun ty nn vic p dng MVC vo cc phnmm vit bng Java rt d dng v hin nhin. C hai hnh mu chnh ca phng php thit kMVC trong Java l MVC Model 1 v MVC Model 2.Di y l s ca MVC model 1:

    Trong MVC model 1, cc trang JSP ng vai tr Hin th (View) v iu khin (Controller). Cth c nhiu trang JSP khc nhau ng cc vai tr khc nhau.

    * Khi ngi s dng dng cc nt bm, menu hoc link trn trnh duyt Web (Web browser) thc hin mt thao tc, mt lnh (c th km theo cc tham s) c gi ti mt trang JSP tngng.* Trang JSP ny s khi to mt hoc nhiu Java Bean (nu cn thit), truyn cc lnh cn thihnh ti Java Bean. Ch rng y l cc Java Bean thng thng, ch khng phi EnterpriseJava Bean (EJB)* Sau khi Java Bean thc hin xong vic truy xut hoc cp nht d liu, trang JSP ban u c thhin th d liu ly t Bean (JSP ban u ng lun vai tr View), hoc chn mt trang JSP khc hin d liu t Bean (JSP ban u ng lun vai tr Controller). Trong mt thit k tt, bom vic tch ri phn trnh by v logic ca chng trnh, trang JSP nhn request ch ng vai triu khin (Controller).

    MVC model 1 c mt nhc im l phn logic iu khin c vit trong trang JSP, nh vyphn chng trnh Java phc tp dng iu khin s b ln vo trong m HTML dng trnhby. phc tp ca chng trnh cng cao, th trang JSP cng kh bo tr. Hn na trong cc dn phn mm phc tp, th phn hin th ca trang JSP thng c lm bi ngi thit k Web,gii v HTML v ha, cn phn chng trnh Java c vit bi lp trnh vin chuyn v lptrnh. Trong cc d n phc tp, dng JSP lm phn iu khin s lm ln ln vic phn chia ranhgii trch nhim gia nhm thit k ha v nhm lp trnh, i khi dn n vic bo tr v phttrin tr nn rt kh khn, gn nh khng th lm c.

    khc phc nhc im ny, MVC model 2 ra i. Di y l s ca MVC model 2:

    Trong MVC model 2, mt hoc nhiu servlet (thng l mt) ng vai tr iu khin, cc JavaBean ng vai tr M hnh v cc trang JSP ng vai tr hin th.

    Trong model 2, cc logic phc tp ca chng trnh c vit hon ton trong cc servlet, l ccchng trnh Java. Phn hin th ch gm cc trang JSP vi mt vi m n gin ly d liu csn, khng c logic phc tp, v th hon ton c th c to ra bng nhng ngi thit k Web.

  • 8/2/2019 3lop&MVC

    10/12

    Cc yu cu ca ngi dng c gi t trnh duyt Web ti servlet. Servlet s khi to Java Bean(nu cn thit), ra lnh thu thp, cp nht thng tin. Khi Java Bean hon thnh cng vic, servlet schn trang JSP thch hp hin thng tin trong Java Bean cho ngi dng.

    y l mt cch s dng MVC rt hiu qu trong Java. Tt nhin, s dng MVC model 2 mtcch hon ton cng nhc, phn iu khin ch dng servlet, phn Hin th ch dng JSP sdn n mt vi trng hp km hiu qu, nht l khi cc yu cu t trnh duyt web ch i hivic hin th thng tin.

    V d: mt trang Web ang hin cc mail trong mail box t mail th 20 n mail th 40. Danhsch cc mail ny c sn phn M hnh khi ngi dng login v phn iu khin ra lnh chophn M hnh ly danh sch cc mail c trong mail box trong POP server. T trang Web ny,ngi dng pht ra mt yu cu Next xem tip danh sch cc mail t mail th 40 n mailth 60. y n thun ch l i hi thng tin hin th, do , nu gi qua servlet iu khin ,servlet s khng lm g c, m ch gi yu cu hin th ti trang JSP hin th danh sch mail. Trong

    trng hp ny, gi thng yu cu hin th t trnh duyt Web ti trang JSP s hiu qu hn.S cho cch p dng MVC ni trn nh sau:

    Trong cch p dng MVC ny, cc yu cu c lin quan n logic chng trnh hoc truy cp dliu s c gi ti servlet controller, cn cc yu cu ch lin quan ti hin th s c gi tiJSP controller.

    y chnh l cch ti chn ci t chng trnh Java Web Mail.

    Chng trnh Java Web Mail bao gm cc thnh phn sau :

    * Mt servlet controller MailUtilServlet, dng nhn cc yu cu: login, logout, gi mail, hinattachment. Nhng yu cu ny s c x l v mt logic ri gi ti Java Bean thc s lmcng vic truy cp mail server. Sau khi Java Bean thc hin vic truy cp di liu xong,MailUtilServlet s chn trang JSP thch hp hin d liu.* Mt Java Bean MailUserBean dng truy cp mail server, ly danh sch v mi dung mailtrong mail box, xa mail trong server.* Trang JSP index.jsp ng vai tr JSP controller, dng nhn cc yu cu: hin danh sch ccmail trong mail box, hin ni dung ca mt mail c chn trong danh sch, hin trang son thomail ngi dng son tho v gi mail. Nhng thng tin cn hin th c sn trongMailUserBean, v MailUserBean ly nhng thng tin ny khi nhn c yu cu login t

    MailUtilServlet. V th, nhng loi yu cu ny thuc v loi yu cu hin th, khng c logicphc tp, nn khng cn phi gi qua MailUtilServlet.* Mt tp hp cc trang JSP:o menu.jsp dng hin menu lnh bao gm Log in, Inbox, Compose v Exito first.jsp l trang nhp username, password, mailserver cho vic logino messageheaders.jsp l trang hin danh sch cc mail c trong mail box ngi dng chnxem v xa mail trong mail box.o messagecontent.jsp l trang hin ni dung ca mt mail c chn t danh sch.

  • 8/2/2019 3lop&MVC

    11/12

    o compose.jsp l trang son tho mail cn gi.o status.jsp l trang dng bo v li khi log in, log out khng thnh cng, v thng bo v ktqu gi mail thnh cng hay khng.o errordetails.jsp l trang dng cung cp thng tin chi tit mi khi c li log in, log out, gi mailkhng thnh cng. Thng tin trong trang ny bao gm c Stack Trace ca exception khi sinh ra li,

    ch yu dnh cho lp trnh vin dng xem chi tit v vn xy ra.o logout.jsp l trang hin ra khi ngi dng login ra khi h thng mail.Mt vi trang JSP v text file khc dng trang tr.o Mt CSS (Cascade Style Sheet) tn l styleSheet.txt, dng nh dng v font v mu sc chott c cc file JSP.

    Trong h thng ny, khng c database sever. MailUserBean ly v cp nht d liu t POP mailserver, gi mail t SMTP server, s dng Java Mail API.

    Chng trnh gm c cc chc nng sau:

    - S dng HTTP c v gi mail t bt k mt mail server no dng POP3 Protocol trnInternet hoc trong Intranet.- C th truy cp mail qua bt k mt proxy server no c chc nng HTTP proxy. Chc nng nyrt c ch khi ngi dng kt ni vo Internet t mt mng Intranet pha sau mt firewall, vfirewall ny ngn chn cc my tnh trong Intranet truy cp POP server bn ngoi, trong khi ,ngi s dng mun gi v nhn mail t mt POP server trn Internet.- S dng kh nng x l cc loi d liu (content handling) ca trnh duyt Web hinAttachment.

  • 8/2/2019 3lop&MVC

    12/12

    Tip theo l v d s dng m hnh MVC to 1 gi hng:Gm cc file sau Eshop.jsp, Cart.jsp, Checkout.jsp,CD.java,ShoppingServlet.javaNh da trn cch nh ngha trn th ta phn cc file cc phn trong m hinh MVC nh sau

    ModelCD.java (m phng i tng chnh t th gii thc)Cart.jsp(trong ny c x l cp nht gi hng)Checkout.jsp(Da trn gi hng x l thanh ton tin) Eshop.jspViewEshop.jsp (Hin th gi hng)ControllerShoppingServlet.java (Phn lung, iu tit )Tc l ng vi yu cu ca trang View no th n s gi thng Model tng ng vi nThng th phn ny l cc file servletNhn xt v d:

    Theo ng nh ngha ca SUN, nh ngha v mt hnh thc (tch bch r rang gia cc file) thtrong Model ch c cc file BEAN thi (tc l y ch c cc file CD.java)Nhng nh ngha theo khi nim th model nhn yu cu t view thng qua thng Controller sau x l th Model lc ny s c them Cart.jsp v Checkout.jspCho nn i khi chng ta phi ph l, mm do t c hiu qu nh mong mun. Tc lModel khng nht thit phi l cc class java, n c th c cc file jsp nhm x l 1 khu nh no. Ty theo ng cn

    http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html?page=1

    http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html?page=1http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html?page=1