Sie sind auf Seite 1von 8

Xy dng cc Component Componet cho php bn s dng li mt cch logic ng dng trn nhiu trang hoc thm ch trn

nhiu ng dng. V d nh, bn vit mt phng thc c tn l GetProducts() mt ln v bn s dng phng thc trong ton b cc trang trong website ca bn. Bng cch s dng cc tnh nng ca cc components, bn c th lm cho cc ng dng ca bn d duy tr v m rng. i vi nhng ng dng n gin, ta khng cn phi s dng n cc tnh nng ca components. Nhng khi cc ng dng ca bn cha hn mt vi trang, bn s nhn ra rng bn ang lp li cng mt cng vic mt cch lin tc. Khi bn nhn ra rng cng mt phng thc nhng bn vit li nhiu ln, ngay tc khc bn nn a phng thc ra khi trang v thm vo mt componet. Trong chng ny, bn s hc cch to cc component trong .NET Framework. u tin, bn s c c ci nhn tng quan v vic vit cc component: Bn s hc cch to mt component n gin v s dng chng trong cc trang trong cc ng dng ca bn. Mt khc, bn s hc cch nh ngha cc phng thc ca cc component, cc thuc tnh, v cc khi to. V bn c th hc cch s dng np chng phng thc,s k tha, v cc giao din. Tip theo, bn s hc cch to cc th vin component c th chia s qua nhiu ng dng. Cc cch thc bin dch mt b component s c kho st. V bn s hc cch thm th vin component vo Global Asembly Cache. Cui cng, cc vn lin quan n kin trc ca vic s dng component s c tho lun. Phn cui cng ca chng ny s hng dn bn xy dng ng dng 3 lp c phn chia thnh cc thnh phn ring bit: User Interface, Business Logic, v Data Access layers. Lu : khi nim component s dng trong chng ny c hiu nh l mt class. V mt k thut mt component nh l mt class th hin giao din ca System.ComponentModel.Icomponent. Xy dng cc Components n gin Bt u bng cch to mt component cc k n gin. l HelloWord component trong 15.1 15.1 HelloWorld.cs public class HelloWorld { public string SayMessage() { return Hello World!; } }

HelloWorld component ch cha mt phng thc n gin l SayMessage() v tr v chui Hello World

Hy chc rng bn lu file HelloWorld.cs vo th mc App_Code. Nu bn khng lu component vo th mc , bn s ko th s dng component trong trang ca bn. Tip theo, bn cn to mt trang s dng component mi to. Xem 15.2 15.2 ShowHelloWorld..aspx <%@ Page Language=C# %> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.1//EN http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd> <script runat=server> void Page_Load() { HelloWorld objHelloWorld = new HelloWorld(); lblMessage.Text = objHelloWorld.SayMessage(); } </script> <html xmlns=http://www.w3.org/1999/xhtml >

<head id=Head1 runat=server> <title>Show Hello World</title> </head> <body> <form id=form1 runat=server> <div> <asp:Label id=lblMessage Runat=server /> </div> </form> </body> </html> Trong s kin Page_Load(), mt th hin ca component Helloworld c to. Tip theo, kt qu tr v do vic gi phng thc SayMessage() c gn cho iu khin Label. Khi bn m trang web trn trnh duyt ca bn, bn s thy thng ip Hello World. Ch l s n gin ca qu trnh to ra component. Bn khng cn thc hin bt k s ng k c bit no, v ko cn bin dch mi th mt cch r rng. Tt c u c t ng. Components v Bin dch ng Bn khng cn thit phi bin dch component mt cch r rng bi v ASP.NET Framework t ng lm vic cho bn. Bt k component no m bn trong th mc App_Code u c bin dch t ng theo cng mt cch nh l mt trang ASP.NET. Nu bn thm mt component mi vo th mc App_Code v yu cu bt k trang no trong website ca bn, th cc thnh phn bn trong App_Code u c bin dch v lu ti th mc: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\[application name] Bt k khi no bn thay i component, th file tm ASP.NET trc s b xa. Th mc App_Code c bin dch li ln na khi c s yu cu mi v mt trang. Bn c th thm nhiu th mc con trong th mc App_Code t chc li cc component trong . Mt im hn ch ca qu trnh bin dch ng l nu xy ra bt k mt li no bt k component trong App_Code th qu trnh thc thi trang web khng thnh cng. Thm ch l trang khng s dng mt

phn ca component , bt k mt li c php no trong component s lm pht sinh li ngoi l, khi bn yu cu trang web. S dng nhiu ngn ng trong th mc App_Code Bn khng cn lm bt c diu g c bit, ch n gin l tt c cc component trong th mc App_Code c hiu nh vit cng mt ngn ng. V d, nu bn s dng Visual Basic.NET to tt c cc component, sau ASP.NET Framework t ng tm ngn ng ph hp vi components ca bn v mi th lm vic mt cch bnh thng. Tuy nhin, nu bn s dng hn mt ngn ng trong th mc App_Code v d, Visual Basic.NET and C# - th bn bn phi thc hin thm mt s bc sau: u tin, bn cn cc component khc ngn ng cc th mc con khc nhau. Bn c th t tn bt k cho th mc con . Ngoi ra, bn cn thay i file cu hnh web chp nhn cc th mc con khc nhau. V d nh, nu bn mun to 2 th mc con trong th mc App_Code tn l VBCode v CSCode, th bn sa li file web.config s dng c VB.NET v C#.

15.3 Web.Config <configuration> <system.web> <compilation> <codeSubDirectories> <add directoryName=VBCode /> <add directoryName=CSCode /> </codeSubDirectories> </compilation> </system.web> </configuration> Khi ni dung ca App_Code c bin dch, 2 assemblies c to ra: mt l th mc VBCode cn li l th mc CSCode. Ch l bn khng cn ch ra ngn ng s dng trong mi th mc ASP.NET Framework t ng tm cho bn. Khng c g sai khi gp chung cc component c vit bi cc ngn ng khc nhau trong cng mt trang web. Sau khi mt component c bin dch .NET Framework lm vic vi VB.NET v C# component nh nhau.

Khai bo Phng thc Component HelloWorld trong Listing 15.1 cha mt phng thc tn l SayMesssage(), tr v mt chui. Khi vit cc component vi Visual Basic.NET, bn to ra phng thc bng cch to ra chng trnh con hoc hm. S dng chng trnh con khi phng thc khng c gi tr tr v, v s dng hm khi c tr tr v. Phng thc SayMessage() trong Listing 15.1 l s th hin ca phng thc. Ni theo cch khc, bn phi to mi mt s th hin ca lp HelloWorld trc khi gi phng thc SayMessage() nh sau: HelloWorld objHelloWorld = new HelloWorld(); lblMessage.Text = objHelloWorld.SayMessage(); Trong dng u tin, mt s th hin mi ca Component HelloWorld c to. Phng thc Saymessage() c gi t s th hin . Chnh v vy, phng thc Saymessage() l mt s th hin ca phng thc. Mt cch khc to s th hin ca phng thc, bn c th to phng thc tnh. Hiu qu ca vic to phng thc tnh l bn khng cn to mt s th hin ca component trc khi gi n. V d, phng thc SayMessage() trong component HelloWorld c chnh sa trong Listing 15.4 l mt phng thc tnh. LISTING 15.4 StaticHelloWorld.cs public class StaticHelloWorld { public static string SayMessage() { return Hello World!; } } Component StaticHelloWorld nh ngha trong Listing 15.3 chnh l component HelloWorld c to trong Listing 15.1 vi mt thay i: Phng thc SayMessage() bao gm m s thay i tnh. 15.5 ShowStaticHelloWorld.aspx <%@ Page Language=C# %> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.1//EN http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd>

<script runat=server> void Page_Load() { lblMessage.Text = StaticHelloWorld.SayMessage(); } </script> <html xmlns=http://www.w3.org/1999/xhtml > <head id=Head1 runat=server> <title>Show Shared Hello World</title> </head> <body> <form id=form1 runat=server> <div> <asp:Label id=lblMessage Runat=server /> </div> </form> </body> </html> Ch l trang trong 15.1 khng to s th hin ca component StaticHelloWorld. Phng thc SayMessage() c gi thc tip t lp StaticHelloWorld. u im ca vic s dng phng thc tnh l gip bn phi g nhiu lnh. Bn khng cn phi khai bo trc khi gi phng thc. Nhiu lp trong .NET framework cha phng thc tnh. V d nh, phng thc String.Format(), phng thc Int32.Parse(), v phng thc DateTime.DayInMonth() tt c l phng thc tnh. Khng c g l sai khi s dng phng thc tnh v phng thc th hin trong cng mt component. V d, bn c th to component Product cha phng thc tnh GetProducts() v phng thc th hin SaveProduct().

Khai bo Fields v Thuc tnh Bn c th nh ngha thuc tnh cho component bng 2 cch:cch ngn gn v cch y . Cch ngn gn to thuc tnh l to public field. Nu bn khai bo bt k field vi thuc tnh truy xut l Public th field c th truy cp bn ngoi component. V d, component trong Listing 15.6 cha public field tn l Message. LISTING 15.6 FieldHelloWorld.cs public class FieldHelloWorld { public string Message; public string SayMessage() { return Message; } } Message Field c khai bo gn ph trn ca nh ngha lp FieldHelloWorld. Lu l Message Field c tr v bi phng thc SayMessage(). LISTING 15.7 ShowFieldHelloWorld.aspx <%@ Page Language=C# %> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.1//EN http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd> <script runat=server> void Page_Load() { FieldHelloWorld objFieldHelloWorld = new FieldHelloWorld(); objFieldHelloWorld.Message = Good Day!; lblMessage.Text = objFieldHelloWorld.SayMessage(); }

</script> <html xmlns=http://www.w3.org/1999/xhtml > <head id=Head1 runat=server> <title>Show Field Hello World</title> </head> <body> <form id=form1 runat=server> <div> <asp:Label id=lblMessage Runat=server /> </div> </form> </body> </html> Trong s kin Page_Load() Listing 15.7, mt s th hin ca lp FieldHelloWorld c to, mt gi tr c gn cho Message field

Das könnte Ihnen auch gefallen