You are on page 1of 29

PHN I: TM HIU DOTNETNUKE

1. Gii thiu v DotNetNuke Khi nim Portal: DotNetNuke s dng thut ng Portal m t cc website ri nhau cha trong mt cng duy nht. Webster nh ngha mt ng dng protal nh sau: mt website c xem nh u vo ca cc website khc, thng n cung cp cc kh nng nh mt my tm kim. nh ngha ny hon ton ng vi DotNetNuke, nhng DotNetNuke cn cung cp nhiu kh nng khc rng ln hn l mt cng thng qua c th tm kim v cc ng dng thng thng. Tt nhin l DotNetNuke c th lin kt, tng hp thng tin bn trong Portal hin th cho ngi dng xem. V mc ch ny m chng ta c th nh ngha Portal nh l cc d liu quan h n mt Website bn trong mt ng dng DotNetNuke c ci t. Mt ng dng mang tnh t nhin cung cp kh nng cho nhiu Website c th c cc code ging nhau, da ln nhau, chng ch khc thng tin v vic trnh by n ngi dng ti thi im chy da trn URL m ngi dng truy cp vo code. Chng ta tip tc bn n hai kiu Portal l Portal cha v Portal con. Khi ta qun tr mt Portal vi quyn Admin ta c th thit lp hng trm, thm ch hng ngn Website trn cng mt Portal. thc hin c, chng i hi phi c s kt hp gia cc quan h cha-con bn trong cu trc ca chng. V ti thi im chy, ng dng s xc nh mt cch ng n ni dung hin th n ngi dng da vo PortalID ca ci Portal m n ang c truy cp n. y l mt trong s cc c im ni bt nht ca ng dng dng Portal v tt nhin cc ti khon ng k trn Portal cng s pht trin v s lng mt cch nhanh chng do n cha kh nhiu Website bn trong. Ta hon ton c th nh ngha cc mi quan h cha-con ngay ti thi im ta to ra cc Portal khc da trn Portal c sn. Cc thnh phn t chc ca Portal: Portal cha v Portal con: Chng ta hy xem xt im khc nhau khi xt n nh dng URL ca hai kiu Portal sau: Portal cha c nh dng l http://www.YourDomain.com v Portal con c nh dng l http://www.YourDomain.com/YourChildPortal. R rng, chng n bao hm quan h cha-con trn a ch URL, ng dng Portal c th cha bt c cc nh dng no (hoc cha hoc con). Thc s, chng ch khc nhau gia cch chng ta thit lp cc kiu Portal v nh th no ta nh ngha ra Portal m thi. Di y l hnh nh minh ha cho module qun tr Portal:

-1-

Module ca Portal ny cho php chng ta thit lp rt nhiu ty chn khi to mi mt Portal. Ch n ty chn cho php thit lp Portal l cha hoc con. Vic to ra mt Portal con khng i hi qu nhiu cc thit lp bn ngoi. Nhng nu chng ta mun thit lp mt Portal cha th c rt nhiu vn ta cn phi quan tm. Vic u tin l ta cn thit lp mt ng dng qun tr IIS (Internet Information Service) vi tiu host l tn min ca Website chng ta v to ra mt bn ghi DNS tr n a ch IP ca Webserver. V cc kin thc ny lin quan nhiu n phn mng my tnh nn s khng c bn k y. Trang (Page): Trang l mt khi nim tng i mi m trong DotNetNuke. Cc phin bn t 3.x tr v trc dng khi nim c l Tab. Vic thay i ny gip cho nhng ngi mi lm quen vi DotNetNuke s cm thy thn thin hn do n gn gi vi cc khi nim trong lp trnh truyn thng. Ta c th ngh mt trang nh cch m chng ta ngh v trang web tnh cha cc m HTML truyn thng. im khc nhau l trang trong DotNetNuke s np da trn cc tham s truyn vo n ti thi im chy. Thc t, ng dng ch c ng mt trang hin th tt c cc ni dung cn thit n ngi dng. Chnh xc v cch thc trang lm vic s c gii thch k hn khi chng ta bn n kin trc bn trong v cc API ca DotNetNuke cc chng sau. Hnh di y ch ra cc ty chn khi qun tr cc trang trong Portal ca chng ta:
-2-

Trn gc tri, chng ta lu n thc n chc nng ca trang. Thc n ny cho php chng ta qun tr cc trang. Cc trang ny chng ta c th qun tr trn chng da trn tn ca trang m chng ta t. Chng ta c bng cc chc nng ca trang nh sau: Chc nng M t Add Thm mt trang mi vo Portal. Sau khi chn Add s hin ra trang qun tr ni m ta c th nh ngha cc thuc tnh nh tn, tiu , t kha, bo mt, Settings Thc n Settings cho php chng ta thay i cc thit lp trang mt cch d dng. Ta c th chnh sa trang hin hnh v c th thay i cc thuc tnh ca trang . Delete Cho php xa trang hin hnh Copy Cho php ta copy tt c cc module trn trang hin hnh. N cng c ty chn cho php nhn bn ni dung trang hin hnh. iu ny gip ta tit kim kh nhiu thi gian khi to cc Website con. Preview Cho php ta xem trc trang sau khi thit lp thuc tnh ging y nh khi ngi dng xem trang . iu ny m bo rng ngi dng s xem ng ni dung m ta thit lp cho h

-3-

Mt cu trc chi tit v vic thit lp cu hnh trang c minh ha di y:

Khi chng ta tm hiu cc chng sau, chng ta s thy cch tip cn hng i tng ca DotNetNuke trong cc chc nng ca n. iu ny cho php vic dng li cc thnh phn ca ng dng, to ra cc giao tip c giao din tng t nhau (nhng chc nng li khc nhau). Chng ta cng c th thy c rng trn trang qun tr c nhiu chc nng dnh cho Administrator. ng dng ca chng ta cng tn dng nhiu User Control ging nhau trn nhiu vng khc nhau, vic ny c hai tc dng chnh l m bo tm nhn ng nht v s lng code khi dng li cc User Control ny s t hn. T phin bn 3.x tr i DotNetNuke h tr vng help, cho php nhng ngi qun tr t phi b ng trc cc iu khin mi ca DotNetNuke. Panes: Pane l mt vng trn giao din trang nm gi cc module vi cc ni dung khc nhau khi ta nm th n vo mi trang. iu ny cho php ta t chc ni dung trn ng dng ca ta theo ngha l lm cho vic s dng trang theo cch tt nht c th. S lng pane c trn trang ph thuc rt nhiu vo vic thit k giao din ca chng ta. Cc pane c thc thi mt cch ng trong thi gian thc thi sau khi b

-4-

sung cc module vo trang. Kiu module ta c th dng th c bn rt k trong phn module cc phn sau. Mt thc th ta c th nhn bit c l khi ta thay i giao din ca Portal th tn ca Pane phi trng vi tn ca tn giao din trong giao din hin hnh. Mt khc, chng ta cng cn di chuyn cc module vo mt Pane ng n v khi giao din thay i c th lm cho tt c cc module khng cn c xc nh ng trong ContentPane. Vng ContentPane l mt phn yu cu phi c trong giao din v giao din s chng c tc dng g nu khng c Pane ny. DotNetNuke xy dng sn rt nhiu giao din nh km ta c th nhanh chng xy dng mt ng dng Website m ta cn. Container: Container cho php ta tng mc cm quan n Portal m khng cn phi lm bt c thay i no n thit k giao din trn Website ca mnh. Mc ch chnh ca Container l n bao quanh phn ni dung ca Module vi mt s thnh phn cho php thit k, iu ny cho php ta c nhiu quan tm hn vo phn ni dung trn module y. Ta c hai ty chn cp nht Container cho Portal l cp nht ton b Portal bng Container mc nh hoc l cp nht dn dn Container cho tng module. By gi l hnh nh trc quan khi ta thay i Container trn module Link chuyn n sang Container mc nh. u tin chn phn Setting t thc n c sn nh hnh di y:

Vic chn setting s mang ta sang trang Module Settings ca module Link. Ta s phi ch l trn trang ny cha rt nhiu ty chn nh trang Portal Setting vy.
-5-

y l mt v d ca vic m bo tnh ng nht ca ng dng theo t tng hng i tng c dng trong DotNetNuke. Vi cc thit lp sn c ta hon ton c th thay i sang cc Container khc. V sau khi chn Container DNN Blue Text Header White Background ta s c giao din nh sau:

Module: Module l phn quan trng nht ca ng dng DotNetNuke. Module l cc thnh phn cho php DotNetNuke tp trung hon ton vo mc ch hin th v d dng cp nht cc ni dung n ngi duyt Web. T phin bn 3.x tr i, tt c cc module c chia thnh cc d n ri, iu ny cho php ta ch chn v ci t cc module cn thit cho Website m thi. V vy nu ta d nh xy dng mt Website theo hng kinh doanh th thng l khng cn n module RSS, ta hon ton c th khng ci t module ny trong qu trnh ci t ng dng DotNetNuke. iu ny lm gia tng trin vng kinh doanh ca cng ty v n cho php ta d dng chuyn i ng dng cho ph hp vi lut kinh doanh m ta cn.

Acount Login: Module Account Login cung cp giao din ng nhp cho trang. iu ny c th hu ch theo hai hng nh sau: Kch bn u tin l khi ta mun hp thoi ng nhp xut hin ngay trn trang ch (m khng mun ngi dng phi Click vo mt trang mi chuyn sang trang ng nhp) Kch bn th hai thng l vic dng trang ng nhp, li ch ca vic dng trang ng nhp l ta c th b sung thm nhiu Module vo trang ny. Ngoi ra, ta
-6-

cng c th ch nh bt c trang ng nhp no m ta mun t n thnh trang ng nhp mc nh. Tm theo ch dn sau: ng nhp vi ti khon qun tr tm n AdminSite SettingsAdvanced SettingPage Management. Announcement: Cng ging vi tn ca n, Module Announcement thng dng trnh by danh sch cc thng bo. Mi thng bo bao gm tiu , vn bn v mt lin kt read more. Bn cnh , n cho php ta t ngy ht hn cho thng bo m ta a ra.

Banner: DotNetNuke cung cp nhiu cng c qun tr cho ngi bn hng. Mt trong s l Module Banner. Module ny dng hin th mt bng qung co ca ngi bn hnh trn Portal, qun tr cc Banner ny (dng AdminVendor). Bn thn Module ny cng cung cp kh nng thun li hin th kiu Banner.

Contact: Module Contact dng p li cc thng tin tip xc ca nhm ngi dng Web; v d nh nhm qun l d n, nhm th thao hoc l mt c nhn no trn Website ca bn. Module ny cung cp mt trang chnh sa m ch nhng ngi dng c quyn mi c php b sung v thay i cc ni dung y.

Discussion: Module Discussion l mt bng tho lun tri di; n cung cp nhm cc thng ip chia theo cc lung trn mt ch n. Mi thng ip thng bao gm mt trang Read/ Reply thng ip cho php ngi dng c quyn c th phn hi trn mt thng ip tn ti v b sung thm thng ip mi. Mc d y khng phi l mt module forum hon chnh nhng n cng c sn cc chc nng m mt forum cn.

Document: Module Document tr v mt danh sch cc ti liu, bao gm mt lin kt cho php duyt hoc ti ti liu t site. Module ny cng c mt trang chnh sa cho php nhng ngi dng c quyn c th chnh sa v b sung thng tin v ti liu.

Event: Module Event tr v danh sch cc s kin sp din ra., bao gm lun thi gian v a im. Cc s kin c th t cho n mt khong thi gian ht s kin v n s t ng ng s kin sau ngy c s kin . Cng nh cc Module khc, n c mt trang chnh sa cho php ngi dng c quyn c th chnh sa v b sung cc s kin khi cn.

-7-

FAQ: Module FAQ cho php ngi dng c quyn qun tr danh sch cc cu hi c ngh thng xuyn (Frequently Asked Questions) v cc cu tr li ca nhng cu hi ny. y l mt module c ngha ln v n lm gim vic khch hng gi n trung tm dch v khch hng (Customer Service Center) thng xuyn, v ta c th din gii v a ra cc cu hi thng hay gp trnh by n ngi dng Web.

Feedback: Module Feedback cho php ngi duyt Web gi thng ip n ngi qun tr Portal. Vi phin bn 3.x tr i thm ch ta cn c kh nng ty bin module ny gi email n cc c nhn khc nhau trong t chc ca cng ty da trn ni dung thng ip h gi.

Iframe: Module Iframe mang c im ca mt trnh duyt Internet Explorer cho php hin th ni dung t Website khc trn Portal ca mnh.

Image: Module Image tr v mt hnh nh s dng tag HTML IMG. Module ny bao gm mt trang chnh sa cho php nhng ngi dng c quyn c th ch nh v tr ca hnh nh c th nm bn trong hoc bn ngoi ca Portal. Bn cnh , ngi dng cn c quyn thay i chiu rng, chiu cao ca hnh nh cho ph hp.

Link: Module Link tr v danh sch cc siu lin kt. Module ny bao gm mt trang chnh sa cho php ngi dng c quyn c th chnh sa v thm lin kt mi. Mi lin kt c th ty bin np trong bn thn trang hin hnh hoc trong mt ca s mi. V c chc nng bt s ln m ngi dng Click ln siu lin kt.

News Feeds (RSS): Module News Feeds cho php ngi dng ly cc thng tin mi ca mt t chc da trn chun Rich Site Sumary (RSS). Module ny bao gm mt trang chnh sa cho php ta ch nh ni cn ly thng tin v XSL cn dng chuyn i thng tin.

Search Intput: Module Search Input cung cp kh nng trnh mt cng vic tm kim n Module Search Result ( ly kt qu tr v).

Search Result: Module Search Result cung cp kh nng hin th cc kt qu tm kim. Text/ HTML:

-8-

Module Text/ HTML tr v mt on code HTML hoc text nh. Module ny bao gm mt trang chnh sa thng tin ngi dng c thm quyn c th trc tip sa v b sung cc on HTML hoc text (dng cu hnh rich text editor).

User Account: Module User Account cho php ngi dng ng k v qun l cc account.

User Defined Table: Module User Defined Table cho php ta to cc bng d liu ty bin cho vic qun tr cc thng tin dng bng. XML/ XSL: Module XML/ XSL tr v tp cc kt qu ca vic chuyn i XML/ XSL. Module ny bao gm mt trang chnh sa, cho php ngi dng c quyn ch nh v tr ca ti liu XML v kiu XSL dng chuyn i.

Cc module b sung: DotNetNuke cng c cc module sn c nhng khng ci t cho ng dng ca bn nh: Users Online: Module ny cho php hin th thng tin v ngi dng v ang duyt Portal ca bn, cng vi cc im thi gian truy cp ca h. Survey: Module ny cho php iu khin cc im chung nht trn Portal ca bn. Ngoi ra cn rt nhiu Module khc m bt u t bn 4.x tr i sn c nhng khng ci t vo ng dng ca bn. Mun c th ta phi tin hnh cc bc ci b sung thm.

User Role: DotNetNuke mang n phng php mnh m gii quyt vn quyn hn v iu tc nhng ngi dng c th vo cc tc v no . Vi Module bo mt trn cc Role, ni m mi trang u cho php gn cc quyn hn hoc Role trn , ta hon ton c th gii quyt vn bo mt mt cch trit . Chng ta c cc mc bo mt trn cc thit lp mc Portal. Ngi dng c th c cho php truy cp, chnh sa trn mt s module no , hoc l trn hon ton cc module nu ngi qun tr cm thy l cn thit. Nu c quyn chnh sa th ngi dng s c mt tm nhn rng hn trn cc trang ch nh. Tm li, ci m ta cn l to ra mt Role v gn cc quyn ch inh trn cc trang hoc cc module. Mt khi c Role ny ta ch vic gn cc ngi dng cn thit phn cho cc quyn trong cng mt nhm quyn.

2.

Kin trc DotNetNuke Cng ngh c s dng:

-9-

DotNetNuke c pht trin t gii php Portal IBuySpy vit trn ngn ng VB.NET trong b Studio DotNet v n cng a ra thm mt vi khi nim mi kh th v. Mc d hin nay cc thnh phn ca DotNetNuke khc i rt nhiu so vi IBuySpy gc, nhng s tht c ch nu chng ta bit c cch thit k mu v tiu chun m ca IBuySpy. DotNetNuke 3.0 s dng rt nhiu cng ngh bn trong kin trc ca n: Windows 2000 Server, Windows 2003 Server ASP.NET VisualBasic .NET Web Forms Microsoft Internet Information Services ADO.NET Microsoft SQL Server 2000 (SQL Server 2005 cho phin bn 4.x tr i) Bn cnh , DotNetNuke cng a ra rt nhiu mu v cc khi nim thit k then cht khc nhau da trn cc kiu Portal khc nhau. Nhng mu thit k v nhng khi nim ny cung cp cc nn tng v cc ng dng tt cho lp trnh. Mt s cc mu v khi nim nh sau: Provider Model Custom Business Objects and Controllers Centralized Custom Business Object Hydration Membership/Roles/Profile Provider using ASP.NET 2.0 API Localization framework that mirrors the ASP.NET 2.0 implementation DotNetNuke li cun ngi pht trin kh nng thit k cc mu then cht. Ngi pht trin cng c th hc c rt nhiu v kh nng m rng ca m hnh Provider xy dng cc ng dng ca mnh tt hn. M hnh Provider M hnh Provider l mt mu thit k dng kin trc DotNetNuke, cho php cc chc nng chnh c thay th m khng phi thay i m gc. Microsoft gii thiu m hnh ny v m hnh ny cn cc API n gin v d m rng trong .NET. M hnh Provider sau ny c tng qut ha v thng dng ASP.NET 2.0 thc hnh thit kt mu. Mc ch chnh ca m hnh ny l cung cp mt phng php d hiu v cc API ng khun dng em li cc hiu qu nht nh v y sc mnh. cung cp kh nng n gin ha v kh nng d m rng th cc API l mt phn ri ring bit vi cc thc thi ca chng (cung cp cc lp tru trng v thc thi ring bit cc hm tru tng). Provider l trung gian gia cc API v phn Business
- 10 -

logic (dng thit lp cc chc nng cn thit, tc l thc thi cc hm tru tng m API nh ngha). Khi mt phng thc ca API c gi, n s thc thi chc nng ca API hon ton bng cc yu cu. n gin m ni th API khng cn quan tm l cng vic c lm nh th no?, n ch quan tm l cng vic c lm xong hay khng thi?. Tm li ta c th a ra ngha chung nht ca m hnh Provider nh sau: Xy dng mi th cc th y khng ph thuc vo chi tit ca cc th khc. Khi nim thit k nn tng ny c nhn ra t sm, trc khi c m hnh Provider, nhng ch khi m hnh Provider c a ra th khi nim y mi thc s n vi nhng ngi pht trin. Cc API trong m hnh Provider khng ph thuc vo chi tit thc thi ca cc API y. Nu c s thay i xy ra th cng khng nh hng n ngha tru tng tht s ca API ny. Rt nhiu phn trong DotNetNuke dng m hnh Provider nh: Data Provider Scheduling Provider Logging Provider HTML Editor Provider Search Provider Friendly URL Provider Vic thc thi u tin trong DotNetNuke l m hnh Data Provider. DotNetNuke ban u ch h tr Microsoft SQL Server. Phn li bn trong ca Portal c ghp chung vi lp d liu. V vy nn c rt nhiu yu cu gi n cng ng pht trin DotNetNuke. H cho rng nn m rng kh nng h tr cc ngun d liu khc nhau, v th chng ta cn mt cch no h tr vic lu tr cc mng d liu khc nhau trong khi vn m bo vic bo tr n gin cho lp truy xut d liu v tnh d m rng. V v th m m hnh Provider ln u tin c a vo DotNetNuke. Hnh di y minh ha kh nng khng ph thuc vo ngun d liu ca cc API ca Data Provider. Thm ch ta thy y l cc API ca Data Provider cn khng bit n ngun d liu no c s dng cho n khi ta cu hnh cho tp tin web.config cc thit lp XML v ngun d liu cho n. Vic thit lp cu hnh cho tp tin web.config ch l mt yu cu khc ca cc API ca Data Provider n hon ton tr thnh trung gian cho vic cung cp cc chc nng hon chnh cho cc lp c s. Cho v d, tt c cc phng thc c nh du l MustOverride trong cc API ca Data Provider v v th cc phng thc ny bt buc phi c thc thi override trong cc th hin ca n.

- 11 -

Cu hnh Provider: Cc API ca Provider phi c cu hnh c th thc thi cc API ca mnh. API phi hiu c kiu v assembly c th thc thi ni dung ca n. Nh cp phn trn, nhng cu hnh ny u nm trong tp tin web.config. Cc thit lp cu hnh u dng XML trong tp tin web.config. Ni chung th cng khng c quy c t tn no trong cu trc ca tp tin cu hnh ny ca m hnh Provider. Tuy nhin, DotNetNuke c cc c ch ng nht mu trong cc API ca m hnh Provider v cc thit lp cu hnh thch hp. Mi API c th c cc yu cu khc nhau cho thit lp cu hnh. Chng hn nh cc API ca Data Provider cn mt Connection String c nh ngha sn trong thit lp cu hnh ca n. XML Logging Provider cn thit lp cu hnh a ch ni t tp tin log c th m tp tin ny v ghi log. V th, mi API thng cn mt thit lp cu hnh ring ca mnh c th thc thi cc nhim v c th. B cung ng li ca DotNetNuke lu tr cc thit lp cu hnh cc API ca m hnh Provider trong tp tin web.config pha di ng dn /configuration/dotnetnuke. Khi cc API ca m hnh Provider ln u tin c khi to, n tp hp tt c cc thit lp m cho php n thc thi cc API ca mnh. Cc thit lp cu hnh sau c lu li sau ny cc phn bn trong n c th truy xut cc cu hnh nhanh hn (do khng phi np li). Hnh di y m t mt on cu hnh cho cc API ca Data Provider trong tp tin web.config:
<data defaultProvider=SqlDataProvider> <providers> <clear /> <add name=SqlDataProvider type=DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider

- 12 -

connectionStringName=SiteSqlServer upgradeConnectionString= providerPath=~\Providers\DataProviders\SqlDataProvider\ objectQualifier= databaseOwner=dbo /> </providers> </data>

M hnh Provider mang n ngha v cng ln lao n DotNetNuke theo cch m n cho php thay i m nhng khng lm nh hng n n m ngun gc. Trong DotNetNuke, cng nh cc ng dng ngun m khc, m gc thng khng nn b thay i bi nhng ngi ng dng n cho d iu l c th. M hnh Provider gip tun theo nn tng ca vic pht trin mt ng dng m ngun m. N cng cung cp nhiu mc tru tng gia lp truy xut d liu v lp lu tr d liu. Cc i tng nghip v ty bin (Custom Business Objects) Custom Busness Object (gi tt l CBO) l mt bn v cn thit (trc quan), ca cc i tng tht s quan trng vi ng dng ca chng ta. Trong DotNetNuke, mt v d ca CBO l cc thc th ca lp DotNetNuke.Services.FileSystem.FileInfo c th tm thy trong /components/FileSystem/FileInfo.vb. Mt thc th ca lp ny cha cc thng tin trong mt tp tin n nh sau:
<XmlRoot(file, IsNullable:=False)> Public Class FileInfo Private _FileId As Integer Private _PortalId As Integer Private _FileName As String Private _Extension As String Private _Size As Integer Private _Width As Integer Private _Height As Integer Private _ContentType As String Private _Folder As String <XmlIgnore()> Public Property FileId() As Integer Get Return _FileId End Get Set(ByVal Value As Integer) _FileId = Value End Set End Property <XmlIgnore()> Public Property PortalId() As Integer Get Return _PortalId End Get Set(ByVal Value As Integer) _PortalId = Value End Set End Property <XmlElement(filename)> Public Property FileName() As String Get Return _FileName End Get Set(ByVal Value As String)

- 13 -

_FileName = Value End Set End Property <XmlElement(extension)> Public Property Extension() As String Get Return _Extension End Get Set(ByVal Value As String) _Extension = Value End Set End Property <XmlElement(size)> Public Property Size() As Integer Get Return _Size End Get Set(ByVal Value As Integer) _Size = Value End Set End Property <XmlElement(width)> Public Property Width() As Integer Get Return _Width End Get Set(ByVal Value As Integer) _Width = Value End Set End Property <XmlElement(height)> Public Property Height() As Integer Get Return _Height End Get Set(ByVal Value As Integer) _Height = Value End Set End Property <XmlElement(contenttype)> Public Property ContentType() As String Get Return _ContentType End Get Set(ByVal Value As String) _ContentType = Value End Set End Property <XmlElement(folder)> Public Property Folder() As String Get Return _Folder End Get Set(ByVal Value As String) _Folder = Value End Set End Property End Class

Lp FileInfo khng c phng thc m ch c cc thuc tnh. y l c im nhn dng ca CBO, CBO ch c cc thuc tnh cn phng thc th khng. Nhng phng thc qun l CBO nm trong lp CBO Controller (lp ny ch n CBO). Chng hn, ta thy c mt lp FileController tm thy trong /components/FileSystem/FileController.vb cha ng cc quy tc nghip v cho
- 14 -

CBO FileInfo. Nu xem xt k module FileManager th d liu ca lp FileInfo cha trong c s d liu. Do , ta cn n FileController iu tc cc dng d liu t c s d liu vo FileInfo (FileInfo c th l mt i tng d liu hay c khi li l mt mng cc i tng d liu). CBO Hydrator Mt dch v y sc mnh khc l CBO Hydrator. Ta c th tm thy n theo ng dn /components/Shared/CBO.vb. CBO Hydrator l tp hp cc phng thc cung cp kh nng nh x vo mt CBO hay mt tp cc CBO. Hnh di y minh ha cch m lp CBO Controller thc hin mt cuc gi n CBO Hydrator bng cch gi n mt DataReader ang m v kiu i tng cn lp y d liu. Da vo phng thc c gi bn trong CBO Hydrator, n s tr v mt i tng nh x trn mt CBO hay l mt tp cc nh x trn nhiu CBO. Khi CBO Hydrator tin hnh lp y d liu cho cc thuc tnh ca CBO, n s tin hnh nhn dng cc thuc tnh bn trong ca i tng dng reflection (phn x). Tip , n lu li cc thuc tnh m n nhn dng c ln tip theo nu cng mt i tng CBO th n khng phi mt cng i nhn dng li CBO , m ch n gin l ly kt qu lu trc s dng.

nh x ton b cc d liu vo mt tp cc CBO, ta dng phng thc DotNetNuke.Common.Utilities.CBO.FillCollection. Phng thc ny chp nhn mt IDataReader v kiu ca n c xem nh tham s nhp. N tr v mt ArrayList cc i tng c kiu ch nh theo tham s objType. Cho v d, m bn trong ca Module Portal ($AppRoot/ admin/ Portal/ Portals.ascx.vb) cn mt tp cc i tng PortalInfo n c th hin th ra danh sch cc Portal u ra ca Module Portal. M pha sau Module ny gi n DotNetNuke.Entities.Portals.PortalController.GetPortals() ly mt ArrayList cc i tng PortalInfo hin c. V ArrayList s c lp y d liu vi phng thc DotNetNuke.Common.Utilities.CBO.FillCollection, phng thc ny chuyn i mt i tng IDataReader (truy vn t c s d liu) thnh mt mt tp cc nh x vo cc i tng PortalInfo. Signature ca phng thc FillCollection nh sau:
Public Shared Function FillCollection(ByVal dr As IDataReader, ByVal objType As _

- 15 -

Type) As ArrayList

nh x ch mt i tng CBO thay v c tp hp, ta dng phng thc CBO.FillObject. Phng thc ny nhn vo tham s tng t nh phng thc FillCollection, ch khc ch l gi tr tr v l mt i tng. Cho v d, nu ta ch cn ly mt Portal c ID no th ta khng cn dng FillCollection m ch xi FillObject thi. V sau y l signature ca n:
Public Shared Function FillObject(ByVal dr As IDataReader, ByVal objType As Type) As Object

Hnh di y minh ha cu trc m ca tp tin FileController (mt v d ca CBO Controller tn dng k thut CBO Hydrator):
Public Class FolderController Public Function GetFoldersByPortal(ByVal PortalID As Integer) As ArrayList Return _ CBO.FillCollection(DataProvider.Instance().GetFoldersByPortal(PortalID), _ GetType(Services.FileSystem.FolderInfo)) End Function Public Function GetFolder(ByVal PortalID As Integer, ByVal FolderPath As _ String) As FolderInfo Return CType(CBO.FillObject(DataProvider.Instance().GetFolder(PortalID, _ FolderPath), GetType(Services.FileSystem.FolderInfo)), FolderInfo) End Function Public Function GetFolder(ByVal PortalID As Integer, ByVal FolderID As Integer) As ArrayList Return CBO.FillCollection(DataProvider.Instance().GetFolder(PortalID, _ FolderID), GetType(Services.FileSystem.FolderInfo)) End Function Public Function AddFolder(ByVal objFolderInfo As FolderInfo) As Integer Return DataProvider.Instance().AddFolder(objFolderInfo.PortalID, _ objFolderInfo.FolderPath) End Function Public Sub UpdateFolder(ByVal objFolderInfo As FolderInfo) DataProvider.Instance().UpdateFolder(objFolderInfo.PortalID, _ objFolderInfo.FolderID, objFolderInfo.FolderPath) End Sub Public Sub DeleteFolder(ByVal PortalID As Integer, ByVal FolderPath As String) DataProvider.Instance().DeleteFolder(PortalID, FolderPath) End Sub End Class

Vic s dng CBO Hydrator c ngha l gim thiu s lng m cn thit lp y mt i tng hay mt tp cc i tng. Nu khng dng CBO Hydrator th bn s c ti thiu mt dng m trn mt thuc tnh CBO lp y chng vi ni dung trong DataReader. V d di y minh ha vic lp y mt i tng FileInfo m khng dng CBO Hydrator:
Dim dr As IDataReader Try dr = DataProvider.Instance().GetFolder(PortalID, FolderPath) Dim f As New FileInfo f.ContentType = Convert.ToString(dr(ContentType)) f.Extension = Convert.ToString(dr(Extension)) f.FileId = Convert.ToInt32(dr(FileId)) f.FileName = Convert.ToString(dr(FileName)) f.Folder = Convert.ToString(dr(Folder)) f.Height = Convert.ToInt32(dr(Height))

- 16 -

Finally

f.PortalId = Convert.ToInt32(dr(PortalId)) f.Size = Convert.ToInt32(dr(Size)) f.Width = Convert.ToInt32(dr(Width)) Return f

If Not dr Is Nothing Then dr.Close() End If End Try

Thay v phi vit nhiu m nh vy, ta s dng CBO Hydrator theo cch n gin hn nh sau:
Return CType(CBO.FillObject(DataProvider.Instance().GetFolder(PortalID, _ FolderPath), GetType(Services.FileSystem.FolderInfo)), FolderInfo)

Phn ny kho st cc vic s dng Custom Business Object trong DotNetNuke theo mt hng i tng rt r nt. Nhng i tng ny cung cp mt cch thc truy cp an ton v gia tng ng k hot ng ca h thng, cho php vic ngt kt ni vi c s d liu, dng cc i tng n gin (thay v thao tc trn cc i tng phc tp nh DataReader, DataTable hay DataSet,). Dng CBO Hydrator gip gim lng m, vic ny ng ngha vi hot ng ca h thng s tng ln. i cng v kin trc ca DotNetNuke Kin trc ca DotNetNuke cho php cc lp ng dng c th c b tr phn tn trn hai server: web server v database server. Web server chu trch nhim trnh by cc i tng trc quan, cc lp x l nghip v v lp truy xut c s d liu. Trong khi , database server ch chu trch nhim duy nht l to nn mt kho lu tr d liu m thi.

Lp Presentation: Lp Presentation cung cp mt giao tip ngi dng truy xut n ng dng Portal. Lp ny bao gm cc thnh phn di y:

- 17 -

Web Form: web form c bn nht l l Default.aspx. Trang ny l u vo cho cc trang khc trn Portal ca chng ta. N chu trch nhim np cc thnh phn khc bn trong tng Presentation. Trang Default.aspx c t ti th mc gc ca ng dng. Skin (giao din): Trang Default.aspx np giao din cho cc trang khc da trn cc thit lp m ta thc hin trn cc trang hay Portal. Giao din c bn nht ca DotNetNuke c t ti /admin/Skins/Skin.vb Container: Trang Default np cc container cho cc module da trn cc thit lp ca ta cho mi module, mi trang hay mi Portal. Lp Container gc c t ti /admin/Containers/Container.vb Module User Control: Mi module phi c t nht l mt user control n lm interface cho module. User control ny c np bi trang Default.aspx v c nhng vo bn trong lp Container v Skin. Cc UserControl ny thng c t ti /DesktopModules/[Tn module] v n c phn m rng l .ascx. Client-side Script: rt nhiu tp tin JavaScript thng c dng bi framework ca DotNetNuke cho vic trnh by giao din. V d: tp tin kch bn /DotNetNuke/controls/SolpartMenu/spmenu.js c dng bi iu khin SolPartMenu. Cc module ty bin khc cng c th s dng v tham kho n cc tp tin vit trn kch bn JavaScript. Ta hon ton c th tm thy cc tp tin JavaScript c dng bi DotNetNuke ti th mc /js. Mt vi Skin cng s dng JavaScript ti vng Client v trong trng hp ny ta thng tm thy trong th mc ci t giao din ca n. Bt c kch bn ti vng Client no c dng bi cc module cng u c nh v pha di th mc ci t module . Kt xut ca lp Presentation: Khi truy cp vo portal ca DotNetNuke, trang web np u tin l trang Default.aspx. M pha sau ca trang ny ($AppRoot/Default.aspx.vb) np Skin c chn cho trang ang hot ng. Skin l mt User Control k tha t lp c s DotNetNuke.UI.Skins.Skin. Lp Skin cha ng hu ht cc hot ng cn thit din ra trn tng Presentation. u tin lp Skin duyt qua hu ht cc module tng thch vi trang Portal. Mi module lc ny u c mt Container gn cho n. Vng bin ca mt module lun tch ri vi vng bin ca cc module khc. Mt Container c th c gn mt ln cho tt c cc module bn trong mt Portal, mt trang ch nh hay ch trn mt module no . Lp Skin np Container ca module ny v a module control vo Container .

- 18 -

Tip theo, lp Skin xc nh mt module bng cch implement giao tip DotNetNuke.Entities.Modules.IActionable. Nu iu ny din ra sun s, lp Skin s khm ph ra cc Action m module c v b sung chng vo Container. Tip , lp Skin b sung mt tham kho n Style Sheet ca module kt xut chng ra mn hnh Client. Tp tin ny thng c phn m rng l .css, c t bn trong th mc ci t module. Nu thc s tp tin ny tn ti, lp Skin s mt HTMLGenericControl n trang tham kho dng Style Sheet cho module ny. Tt c nhng s kin din ra bn trong trang Default.aspx khi n khi to c trnh ny trong hnh di. Kt qu kt xut cui cng ca mt module th c qun l theo s kin gi l chu k sng ca module

Cui cng, m pha sau ca trang Default.aspx lin kt kiu Style Sheet thch hp cho module da trn cu hnh c bn ca Portal v cc cu hnh trn Skin ca n. Lp Businnes Logic: Lp x l nghip v logic cung cp cc thao tc nghip v hp l cho cc hot ng bn trong li ca Portal. Lp ny c rt nhiu dch v lin quan n phn li bn trong ca Portal v cha cc module ca cc hng th ba. Nhng dch v ny bao gm: Localization Caching
- 19 -

Exception Management Event Logging Personalization Search Installation & Upgrades Security Lp x l nghip v cng c lin quan nhiu n Custom Busness Object (CBO) trnh by hu ht cc thc th bn trong mt Portal. V nh chng ta bit th CBO n gin dng lu tr thng tin v mt i tng no . Lp Data Access: Lp truy xut d liu cung cp cc dch v v d liu cho lp x l nghip v. Lp ny cho php d liu lu thng t ni lu tr sang lp x l nghip v. Lp truy xut d liu th dng m hnh Provider cho php DotNetNuke h tr trn nhiu h qun tr c s d liu. Lp truy xut d liu bao gm hai thnh phn chnh l: Lp Data Provider API: y l cc phng thc trong lp tru tng thit lp trch nhim cc API phi implement n. Implement cc API ca Data Provider: lp ny k tha t lp Data Provider API v c ngha v phi override cc phng thc trong lp tru tng. Phn li bn trong ca DotNetNuke cung cp mt ngun d liu Microsoft SQL Server thc thi Data Provider API. Bt u vi lp CBO Controller, on m di y ch ra nh th no lp Data Provider API lm vic. Mt IDataReader c gi vo trong phng thc CBO.FillObject v n gi n DataProvider.Instance().GetFolder(PortalID, FolderPath).

Phng thc FolderController.GetFolder Public Function GetFolder(ByVal PortalID As Integer, ByVal FolderPath As String) As FolderInfo Return CType(CBO.FillObject(DataProvider.Instance().GetFolder(PortalID, _ FolderPath), GetType(Services.FileSystem.FolderInfo)), FolderInfo) End Function

V y l Prototype ca hm GetFolder:

- 20 -

Phng thc Instance() trn tr v mt thc th thc thi lp Data Provider API, v chnh v iu ny m n s chy trn chnh n. Phng thc tru tng GetFolder c prototype nh sau:
Phng thc tru tng DataProvider.GetFolder Public MustOverride Function GetFolder(ByVal PortalID As Integer, ByVal FolderPath As String) As IDataReader

Phng thc ny l mt phn trung gian gia hai lp API v thc thi API. V n c override bn trong lp thc thi API nh sau:
Phng thc SQLDataProvider.GetFolder Public Overloads Overrides Function GetFolder(ByVal PortalID As Integer, ByVal _ FolderPath As String) As IDataReader Return CType(SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner & _ ObjectQualifier & GetFolders, GetNull(PortalID), -1, FolderPath), _ IDataReader) End Function

Microsoft Data Access Application Block Lp SqlHelper trong v d ca phng thc GetFolder pha trn l mt phn ca Microsoft Data Access Application Block. DotNetNuke dng Data Access Application Block ti u ha hot ng v gim s lng m ty bin yu cu cho lp truy xut d liu. Data Access Application Block l mt phn trong .NET framework lm vic vi m hnh ADO.NET gi cc Store Procedure v thc thi cc lnh SQL trn Microsoft SQL Server. Lp d liu: Lp d liu cung cp d liu cho lp x l nghip v. D liu dng cho lp d liu phi c h tr bi cc thc thi ca lp Data Provider API c th hon thnh cc yu cu n ngun d liu. Bi v m hnh cung ng d liu ca DotNetNuke th qu rng, n c th h tr nhiu b cung ng d liu sn c hin nay, bao gm c cc b cung ng pht hnh bi cc hng ln; ng thi cng h tr lun cho cc b cung ng ca nhng hng th ba. Cc b cung ng thng dng bao gm: Microsoft SQL Server, Microsoft Access, mySQL v Oracle. Phn li bn trong ca DotNetNuke th h tr rt tt cho vic thc thi cc API trong lp Data Provider s dng Microsoft SQL Server. Cc Script dng ci t: c km theo cng vi tp cc trin khai ca API , n c tc dng to ra c s d liu cn thit cho lp Data Access c th truy xut n ngun d liu. Ni cch khc, n to ra cc cu trc bng, cc Store Procedure ph hp vi m hnh Provider cc lp pha trn c th ly d liu. Cc Script ny ch chy khi bn ci t mi mt ng dng DotNetNuke hoc l khi ta tin hnh nng cp mt phin bn DotNetNuke c (ng dn n phng thc dng nng cp l DotNetNuke.Services.Upgrade.Upgrade.InstallDNN). Di y l cng dng ca mt s Script ph bin trong DotNetNuke:

- 21 -

DotNetNuke.SetUp.SqlDataProvider: Script ny dng chun b cho mi trng ci t bng cch tin hnh xa i cc kha ca bng c lin quan n qu trnh ci t. DotNetNuke.Schema.SqlDataProvider: Script ny dng to ra cc bng v cc Store Procedure. DotNetNuke.Data.SqlDataProvider: Script ny dng lp y d liu cho cc bng. Cc Script dng nng cp: Script ny l mt tp con ca Script ci t. Sau khi ci xong mt phin bn ca DotNetNuke c, ta mun nng cp ln mt phin bn mi hn, ta thng dng cc Script ny lm. Tc dng ca n l tin hnh thay i cc lc , cc cu trc ca cc bng, cc Procedure cc lp trn ly c cc ngun d liu ph hp. Phng thc dng nng cp c ti ng dn DotNetNuke.Services.Upgrade.Upgrade.UpgradeDNN. y l mt on Script da trn phin bn baseline ca DotNetNuke. Phin bn baseline lm vic trn phin bn ca DotNetNuke, trnh by ch nhng phn quan trng bn trong ca kin trc. V d: Sau khi nhm lm vic ca DotNetNuke tch hp mt c im mi, chng hn nh b cung ng Member Role th cc on m c kim tra, dch, ng gi phn pht n nhm pht trin khc. iu ny khng cn thit phi pht hnh mt Script cho phin bn ca DotNetNuke bi v sau mt phin bn chnh thc thng c rt nhiu phin bn baseline ca ng dng. Ni mt cch d hiu th phin bn baseline l phin bn dnh cho ni b cc nhm pht trin trong mt d n. Quy c t tn cho Script l phn m rng SqlDataProvider ng sau con s ch phin bn. Phn m rng ny phi c tn trng vi tn ca node DefaultProvider bn trong thit lp Data Provider ca tp tin web.config. Cho v d: tn tp tin dng nng cp ng dng t phin bn 3.0.11 ln 3.0.12 l 03.00.12.SqlDataProvider. Khi ng dng DotNetNuke c nng cp t mt phin bn khc, nhng Script ny c thc thi theo mt trt t hp l da trn cc con s i trc phn m rng. Ch nhng Script c s nh hn hay bng gi tr ca hng s DotNetNuke.Common.Globals.glbAppVersion mi c thc thi. Cc hng s ny thng cha trong tp tin /components/Shared/Globals.vb. C php ca Script: Nhng Script ny c vit theo c php ca SQL, tuy nhin c hai tag khc khng c trong SQL m ta phi hiu l {databaseOwner} v {objectQualifier}. C hai tag ny s c DotNetNuke thay th bng cc gi tr hp l khi ta thc thi trn nn ca n. DotNetNuke s ly gi tr ca hai node databaseOwner v objectQualifierd trong cu trc ca tp tin cu hnh web.config thay th cho hai tag ny. Thuc tnh databaseOwner xc nh ngi ch qun ca Database c th b sung cc cu trc v
- 22 -

d liu cho Database. Thuc tnh objectQualifier xc nh chui tin t ca cc i tng d liu bn trong Script. Di y l mt Script mu c t tn l 03.00.04SqlDataProvider:
CREATE PROCEDURE {databaseOwner}{objectQualifier}GetSearchSettings @ModuleID int AS SELECT tm.ModuleID, settings.SettingName, settings.SettingValue FROM {objectQualifier}Tabs searchTabs INNER JOIN {objectQualifier}TabModules searchTabModules ON searchTabs.TabID = searchTabModules.TabID INNER JOIN {objectQualifier}Portals p ON searchTabs.PortalID = p.PortalID INNER JOIN {objectQualifier}Tabs t ON p.PortalID = t.PortalID INNER JOIN {objectQualifier}TabModules tm ON t.TabID = tm.TabID INNER JOIN {objectQualifier}ModuleSettings settings ON searchTabModules.ModuleID = settings.ModuleID WHERE searchTabs.TabName = NSearch Admin AND tm.ModuleID = @ModuleID GO

Cc lnh th tng t nh SQL chun ch khc l c b sung thm hai tag databaseOwner v objectQualifier. Dng u tin l ch th cho bit s to ra mt Store Procedure
CREATE PROCEDURE {databaseOwner}{objectQualifier}GetSearchSettings

Gi s rng gi tr ca hai node databaseOwner l dbo v objectQualifier l DNN khi chui trn s c thay th thnh
CREATE PROCEDURE dbo.DNN_GetSearchSettings

Thuc tnh objectQualifier s thc s c ch khi ta mun bo tr nhiu thc th d liu trong cng mt ng dng c tn l DotNetNuke (ci li d thy l do c cng tip u ng DNN nn vic tm kim cc thc th lin quan s d dng hn rt nhiu). M hnh bo mt: T cc phin bn DotNetNuke 3.x tr v trc, Portal ch mang n mt gii php bo mt n, bo mt da trn form thng i cng vi phn li bn trong ca DotNetNuke. Bo mt da trn form th lm vic tng i tt, nhng n gii hn mt phn kh nng thc thi ca DotNetNuke v n c tch hp vo cc gii php bo mt khc (nn ta khng th ty bin cc mc bo mt). Mc d vic xc thc ca Windows th chng bao gi c h tr cho phn li bn trong ca DotNetNuke, nhng nhng ngi pht trin ca cc hng th ba gia tng kh nng ny cho php tch hp vic xc thc ca Windows vo cc phin bn t 3.x tr xung. Trc khi i su tm hiu gii php bo mt ca DotNetNuke trong cc phin bn hin nay, chng ta cn phi hiu c ASP.NET c bo mt nh th no. iu ny s gip ta thy c nhng th thch m chng ta phi i mt khi thc thi cc API.
- 23 -

M hnh bo mt trong ASP.NET 2.0: Trong ASP.NET 1.x, cc dch v xc thc v phn quyn u da nhiu vo ngun d liu bn ngoi v tp tin web.config. V d: trong ASP.NET 1.1, mt ng dng c th cung cp vic xc thc da trn form. iu ny i hi ngi pht trin phi to ra mt form ng nhp v cc iu khin thch hp, cc c ch validate v qun tr ngi dng. Mt khi ngi dng xc thc v m bo quyn th cc thit lp ny c ghi vo tp tin web.config. Trong ASP.NET 2.0, Microsoft gia tng rt nhiu cc c im bo mt bng cch m rng cc dch v theo ba cch c bn nh sau: iu khin Login & User: Mt iu khin Login & User mi cung cp rt nhiu chc nng cho ngi pht trin, gip h gim bt cng sc vit form ng nhp. V d: Dng ASP.NET 2.0 s tht d dng nu ta mun to ra nhiu trang ng k cho nhng ngi dng mi, vic cho php mt ngi dng ng k ng nhp vo v thm ch c th x l lun trng hp ngi dng qun mt khu ng nhp thm ch vi vic t vo mt iu khin thch hp v thit lp mt vi thuc tnh cho n. Qun tr User: Trong ASP.NET 2.0 cung cp mt giao tip cu hnh ng dng mi cho php vic qun tr d dng ng dng . Mt c im ca giao tip cu hnh l kh nng qun tr bo mt cho ng dng. V d, ta c th to ra mt User mi v mt Role mi, v sau ta b sung User ny vo Role va to; vic lm ny hon ton h tr trong giao tip cu hnh ca ASP.NET 2.0. Mt cch thay i giao tip ny l ta c th vit mt cng c qun tr lm cc chc nng tng t nh giao tip sn c ca ASP.NET 2.0 B cung ng Membership/ Role: y l mt b cung ng mi to thnh ng dn gia lp Presentation (tiu biu l iu khin Login & User v giao tip cu hnh) v k thut ng nht. N s che du ton b m truy xut d liu cho vic qun l User v Role. Nu ta tp hp ba c im trn li, n s mang li cho chng ta kh nng gim s lng m cng nh cng sc trong vic xc thc ngi dng v kh nng ng nht vic truy cp d liu. DotNetNuke v ASP.NET 2.0: xy dng hon ton mt ng dng h tr cho vic xc thc cng nh m bo quyn hn ca ngi dng trong ASP.NET 2.0, b cung ng Membership/ Role nn c tch hp vo ng dng. Ta s thy c rt nhiu thun li khi tch hp b cung ng ny vo ng dng. u tin, n lm gim lng m cn thit hin thc dch v xc thc. iu ny l ng nu cc quy tc nghip v ca chng ta ph hp vi cc c im m b cung ng Membership/ Role cung cp. Th hai, vic trin khai b cung ng Membership/ Role c th cho php cc ng dng khc dng chung

- 24 -

cc User v cc thng tin v Role vi ng dng ca chng ta. Vi gc nhn ny, ta thy dng nh c s tch hp gia nhiu loi ng dng vi nhau. Bi v ASP.NET 2.0 pht hnh ti thi im DotNetNuke 3.0 ang trong giai on pht trin. Vic ny to n by rt ln cho vic xem xt m hnh Membership/ Role ca Microsoft. Vic m phng li cc c im ny dn c xy dng cho cc API ca DotNetNuke. iu ny lm cho ng dng ca DotNetNuke vn c cc c im ca ASP.NET 2.0 mc d n ang chy trn ASP.NET 1.x. Thm ch , cc c im ny c trong DotNetNuke trc khi ASP.NET 2.0 c pht hnh chnh thc. Bo mt trong DotNetNuke 3.0: Vic bo mt trong DotNetNuke 3.0 c trin khai hi ging vi cch ta ni pha trn. Chng kt hp nhng c im tt nht ca DotNetNuke cc phin bn trc vi cc c im ca b cung ng Membership/ Role ca ASP.NET 2.0. V kt qu l khi thc thi mt ng dng DotNetNuke cng ging nh ta ang s dng cc m hnh mi ca ASP.NET 2.0.

ng dng v Portal: DotNetNuke h tr chy nhiu Portal trn mt bn ci t n ca n. Mi Portal th c ring cc User v cc Role, chng khng dng chung vi bt c Portal no khc. Mi Portal c duy nht mt kha, gi l PortalID. Bi v mc nh Membership/ Role trin khai trong mt gii php chung nht, n khng h tr khi nim c nhiu Portal, v mi ci Portal li c thm cc User v Role ring bit. Membership/ Role c thit k theo cch ch h tr cho mt Portal n trn mt bn ci t ca DotNetNuke. B cung ng Membership/ Role tham kho n bn ci t DotNetNuke v xem n nh l mt ng dng, v n khng cho php ty bin, do n ch h tr mt tp cc User v Role m thi. c th vt qua c tr ngi ny, mt gi cn thit phi dng b cung ng d liu SQL cung cp cc kh nng ca b cung ng Membership/ Role. Vic ty bin ny cho php chng ta h tr cho ng dng thc thi nhng ci chng ta cn. Kt qu cui cng l vi b cung ng Membership/Role ca ring mnh, ta hon ton c th to ra mt cu trc a ngi dng, a Role.Chng ta nh x PortalID ca DotNetNuke vo ApplicationName trong b ng Membership/ Role ca ASP.NET 2.0. Khi c mt li gi n b cung ng Membership/ Role, tn ca ng dng c chuyn sang so khp vi PortalID ca thc th Portal. Cc lp ty bin b cung ng d liu SQL cho b ung ng Membership/ Role c th tm thy ti: $AppRoot\Providers\MembershipProviders\CoreProvider\DataProvider s\DNNSQLMembershipProvider. $AppRoot\Providers\ProfileProviders\CoreProvider\DataProviders\DN NSQLProfileProvider.
- 25 -

$AppRoot\Providers\RoleProviders\CoreProvider\DataProviders\DNN SQLRoleProvider. M hnh d liu cho User v Role: c th dng hon ton sc mnh v thun li ca b cung ng Membership/ Role, ta cn nhn dng c cc thng tin ca User v Role c th c trong DotNetNuke v vic lu tr d liu bn trong ngun d liu, m ngun ny th c lp vi ni lu tr chnh. Chng hn, DotNetNuke c th dng Microsoft SQL Server nh l ni lu tr ni dung v cc thit lp h thng, nhng b cung ng Membership/ Role c th dng vic xc thc ca Windows, LDAP, hoc nhng k thut khc cho vic xc thc v cp quyn hn. Bi v bo mt c th s dng m hnh Provider, nn iu ny s m bo rng vic thc thi b cung ng Membership/ Role s khng ty bin cc on m v cc bng d liu . Nhng bng d liu thng dng b cung ng thot khi s ph thuc vo cc bng khc bn trong li ca DotNetNuke. Chng ta khng th p vic rng buc tham chiu ton vn d liu gia d liu ca DotNetNuke v d liu ca b cung ng Membership/ Role, v th chng ta hoc l s dng cascade delete hoc dng cc phng thc bt ng b mc d liu. Tt c iu k diu u nm ti tng x l nghip v. Mt th thch khc chng ta phi i mt l vic trin khai b cung ng Membership/ Role c gii quyt vi cc vng d liu trong DotNetNuke nhng trong b cung ng Membership/ Role th li khng. V th, tng ca chng ta y l khng hon ton thay th cc bng c lin quan n xc thc trong DotNetNuke bng cc bng trong b cung ng Membership/ Role. Chng ta s khng thc hin mc ch ny v nhng bng lin quan n xc thc sn c trong DotNetNuke, cng vi cc c im cn thit khc cho ng dng. Chng hn nh bng User trong DotNetNuke c mt ct tn l UserID, xc nh s duy nht cho User. UserID ny thng c dng trong tt c cc ng dng ca cc hng th ba. Mt ct c ngha nh UserID li khng thc s c trong b cung ng Membership/ Role. Thay vo , b cung ng Membership/ Role dng username cho vic xc nh tnh duy nht ca ngi dng ng dng. Vi th thch ny, chng ta cn mt cch no bo m UserID c dng DotNetNuke v bt buc cc ng dng ca DotNetNuke ph thuc vo n. V d trn cho thy khng phi thuc tnh no cng c h tr bi Microsoft. Cui cng, chng ta quyt nh rng cn phi bo m c mt s cc bng h tr cho DotNetNuke thc thi nhim v ca mnh. Mc ch chnh l m bo cc thuc tnh cho DotNetNuke thc hin trn tru m khng mt i mt s chc nng ca mnh. Chng ta s nh x m hnh ca chng ta vo m hnh cung ng Membership/ Role ca ASP.NET 2.0 nh sau:

- 26 -

Bi v d liu cho Portal, Profile, User, v cc Role c lu tr trong rt nhiu bng khng c quan h g vi nhau, nn lp x l nghip v s chu trch nhim gom cc thng tin ca chng li vi nhau. Chng hn, ta s khng th ly y thng tin cho mt User nu khng tp hp d liu t bng aspnet_Users (trong b cung ng Membership/ Role) v bng User ca DotNetNuke. Do d, lp x l nghip v s chu trch nhim kt hp cc thng tin ca hai cu trc li vi nhau. Bn cnh vic tp hp d liu, ta cng cn mt c ch ng b ha mt cch t ng cc d liu gia cc bng ca m hnh cung ng Membership/ Role v cc bng ca DotNetNuke. M hnh cung ng Membership th h tr cc mng lu tr d liu v trong ASP.NET 2.0 th d liu trong dng lu tr ny c th c qun l thng qua tin ch cu hnh ng dng thng thng. Nu ngi dng s dng tin ch ny th thng tin ca h s khng c b sung vo cc bng ca DotNetNuke. Cng v th, nu b cung ng Membership/ Role ca bn s dng vic thc thi LDAP th thng tin cng khng a vo cc bng ca DotNetNuke. Chng hn, ngi dng c th c b sung vo LDAP, nhng li khng c thng tin g trong

- 27 -

cc bng ca DotNetNuke. Nu gp trng hp ny, chng ta cn mt dch v t ng ng b ha d liu gia hai cu trc trn. Trong DotNetNuke 3.0, vic gii thiu nhiu API h tr cho Membership/ Role mang n s m rng ln cho bo mt b khung ca n. V DotNetNuke trin khai kh nhiu c im ca ASP.NET 2.0 nn khi chuyn t ASP.NET 1.x sang ASP.NET 2.0 s d dng hn, nhanh hn. Khi nim v Namespace: Trc DotNetNuke 3, khi nim v namespace kh l sc tch, ta xem tt c cc lp u nm pha di namespace gc DotNetNuke. Trong DotNetNuke 3.0, chng mang n mt cu trc phn nhnh, c sp xp li t cu trc trc. Di y l hnh ca mt namespace hai mc pha di namespace gc DotNetNuke:

DotNetNuke.Common: Namespace ny thng c dng trong ton b cc lp trong ng dng DotNetNuke. V d: cc hng ton cc thng c dng trong ng dng c tm thy trong lp DotNetNuke.Common.Globals. DotNetNuke.Data: Namespace ny thng dng cho bt c lp no c lin quan n lp truy xut d liu. V d: lp c s DataProvider cho lp Data Provider API bn trong namespace DotNetNuke.Data. DotNetNuke.Entities: Namespace ny thng dng cho nhng lp trnh by v qun l nm thc th lm nn Portal l Host, Portal, Tab, User, Module. Lu l namespace Module nm di namespace DotNetNuke.Entities v cha cc chc nng qun l module pha trong m. Tht s th c n hai mc module cho cng namespace Module, mt ci nm ti DotNetNuke.Modules. DotNetNuke.Framework: Namespace ny dng cho nhiu lp c s v cc tin ch khc bn trong ng dng ca DotNetNuke (AJAX c h tr v c th tm thy trong namespace ny). DotNetNuke.Modules: Namespace ny dng t chc cc module trong portal. y ta c th tm thy mt namespace con DotNetNuke.Modules.Admin, ni m cc lp li ca phn admin c t. Chng hn, module thit lp Host th c tm thy trong lp DotNetNuke.Modules.Admin.Host.HostSettingsModule.
- 28 -

DotNetNuke.Security: Namespace ny thng c dng cho cc lp lin quan n xc thc, chng thc, quyn hn. Mt trong s l quyn hn cho cc tab, quyn hn cho cc module, quyn hn trn cc th mc, role v cc lp bo mt trn portal khc. DotNetNuke.Services: Namespace ny thng dng cho bt c dch v no cung cp phn li cho cc module. Trong module ny, ta c cc namespace con qun l li, localization, personalization, search v cn nhiu th khc na. DotNetNuke.UI: Namespace ny dng cho bt c lp no c lin quan n giao tip vi ngi dng. Cho v d: cc lp Skin v Container thng tm thy trong DotNetNuke.UI.Skins. v DotNetNuke.UI.Containers.Container.

- 29 -

You might also like