Sprog :
SWEWE Medlem :Logon |Registrering
Søg
Encyclopedia samfund |Encyclopedia Svar |Indsend spørgsmål |Ordforråd Viden |Upload viden
Forrige 1 Næste Vælg sider

Aspect-Oriented Programming

Aspect-orienteret programmering aspekt-orienteret programmering (AOP) i lang tid, men først for nylig begyndt at vinde Microsoft. NET udvikling begunstiget af samfundet. Enhver vedtagelsen af ​​en ny teknologi vil ofte misforstår teknologien og dens anvendelse, AOP er ingen undtagelse. For at tydeliggøre den misforståelse af AOP, papir og de følgende kode eksempler vil illustrere kan løses den praktiske anvendelse af et fælles problem, og nogle AOP AOP. Hvis du vil bruge programmet webtjeneste, for eksempel, vil vi udvide funktionaliteten af ​​webtjenesten returnerer et objekt, metoden er en AOP rammer gennem anvendelse af objektet returneres nye aspekter. Disse aspekter vil fungere selvstændigt genereret objekt model, som fra WSDL.Kort introduktion

I betragtning af objekter og objekt relationer til andre objekter, vi normalt tænker på ordet arv. For eksempel definition af en abstrakt klasse - Dog klasse. Men når nogle klasser har deres egen unikke for hver klasse identificere lignende adfærd, bruger ofte arv til at udvide funktionaliteten. For eksempel, hvis identitet pudlen, kan du sige den ene er en puddel hund, Poodle der arvede hund. Hidtil alt synes godt, men hvis du definerer en anden senere identificeret som lydig hund unikke adfærd vil ske? Selvfølgelig er ikke alle hunde er meget tamme, så hund lydighed klasser kan ikke indeholde adfærd. Desuden, hvis du vil oprette arver fra Hund lydig hund klasse, Poodle placeret i denne position i hierarkiet, som er bedre? Poodle er en hund, puddel, men ikke nødvendigvis lydig, så Poodle Dog er nedarvet eller lydig hund på det? Nej, vi kan tæmme som en side, anvendes på enhver form for tamme Dog, er vi imod uhensigtsmæssig adfærd på vej til at tvinge hund i hierarkiet.

I software vilkår, kan aspekt-orienteret programmering være uafhængig af eventuelle ændringer i de nedarvningshierarki og anvendelse aspekter af opførslen af ​​en klasse eller objekt. Derefter anvendelsen af ​​disse aspekter på runtime eller kompilere tid. Som et eksempel på AOP, og derefter beskrive, forklare det lettere. Først definerer fire nøgle AOP terminologi, er det meget vigtigt, fordi jeg vil bruge dem igen og igen:

Junction (Joinpoint) - code-definerede identificerbare punkt.

Cut-off punkt (Pointcut) - en metode, specificeret af punktbinding konfiguration eller kodning.

Anmeldelse (rådgivning) - angiver en metode behov for at udføre tværgående indsats

Blandet (Mixin) - en instans af en klasse af forekomster af målet klasse blandet med indførelse af ny adfærd.

For bedre at forstå disse betingelser, kan betragtes som knudepunktet defineret i programmet flow. Beskrivelse vejkryds er et godt eksempel: Når kode kalder en metode opkald sker dette punkt betragtes som et knudepunkt. Cut-off punkt bruges til at angive eller definere håb i programmet flow opfanget krydset. Yderligere omfatter en skæringspunktet meddelelse, der opstår, når den når krydset. Derfor, hvis du definerer en cut-off punkt på en bestemt metode opkald, så kalder metoden eller vejkryds vil AOP rammer opsnappe cut-off punkt, vil påbudet også skære punkt. Der findes flere typer af anmeldelsen, men den mest almindelige situation, er at se det som en anden metode til at påberåbe sig. Når du kalder en metode med en cut-off punkt, vil anmeldelsen blive henrettet er en anden metode til at påberåbe sig. Anmeldelsen metode eller det objekt til at påberåbe sig den metode kan opsnappes, det kan blandes med et andet objekt i metoden. Vi vil blive yderligere forklaret senere blandet.

Fordele og ulemper

En almindelig misforståelse er, at AOP opfanges, er det ikke. Men det bruger aflytninger til at anvende en kombination af meddelelser og adfærd. Der er nogle. NET kode eksempel ContextBoundObject replica i en stil, der er beskrevet AOP aflytning. Men for at illustrere opfanget af ContextBoundObject ikke hensigtsmæssigt, fordi præcedens betingelserne for anvendelse af denne metode er, at alle skal opfanget klasser skal arve fra ContextBoundObject. Metoder såsom ContextBoundObject AOP med forudsætninger vil have en negativ indvirkning på efterspørgslen genereret, så ses AOP tilgang så vigtig, og bør undgås. Et stort "fodaftryk" tung legacy-systemer tilgang vil potentielt påvirke hver klasse og hindre fremtidige ændring eller ændre funktionen af ​​systemet.

Jeg har oprettet et program kaldet Encase letvægts stel. Med et "letvægts" betydning af ordet er ingen indvirkning på hele systemet. Forskellige dele af systemet er fortsat påvirket af AOP, men valget af letvægts ramme og anvende god programmering praksis kan afbøde de fleste af de negative spørgsmål. Encase rammerne er at forenkle brugen af ​​cut-off punkt, og aspekter af blandede kombinationer. Udviklere kan kode i Encase af programmet, for at erstatte de fleste andre letvægts AOP rammer bruger en konfigurationsfil (fx XML).

Vægtbaseret AOP rammer hindrer ansøgningen, men synderen hindre AOP AOP er alment tilgængelig i næsten alle eksempler omfatter følgende: ". Method indtastet", før udførelse af metoden første aflytning og anvendelse udførelse Trace.WriteLine ( ) aspekt. I modsætning til populær tro, i tillæg til logning, sikkerhed, normer, og ting af denne art udenfor, AOP til at løse andre problemer er også nyttigt.

Sammenlign

For at illustrere brugen af ​​AOP mere praktisk tilgang, vil vi skabe et program, en samling af genstande fra modtagelse folk navngivne ContactService.Service af webtjenester. Brug af Web services i. NET udvikling er den mest almindelige metode kaldes at returnere XML Web service, der forvandlet til et objekt inden for rammerne af den anti-sekvens automatisk. Disse objekter indeholder kun data og indeholder ikke nogen adfærd. I. NET Framework 2.0 ved hjælp af den delvise søgeord og skabe en adfærd, der kan tilføje funktionalitet til genstande såsom automatisk kodegenerering. Men der er stadig et problem, når at genbruge en bestemt adfærd blandt nogle af webtjenesten eller proxy objekt. Som beskrevet ovenfor, i de fleste tilfælde, vil indeholde den delte almindelig adfærd i en abstrakt klasse, alle andre klasser arver fra denne klasse. Men vi kan ikke gøre webtjenesten objekt arv. Tag denne mulighed for gennem denne udstede instrukser om, hvordan magtfulde AOP funktionalitet.

Vores ansøgning bruges til at vise kontaktinformation. Dens oprindelige formål er at vise de oplysninger, men du nødt til at tilføje nogle adfærd. For at se prøven kode, er vi nødt til at oprette en virtuel mappe kaldet TheAgileDeveloper.ContactService 's. Mappen skal pege TheAgileDeveloper.ContactService projekt placering på den lokale computer.

Bemærk, at dette projekt kan tilgås via http://localhost/TheAgileDeveloper.ContactService, det er meget vigtigt.

Figur 1 ansøgning skærmen snapshots.

Ansøgning har en mening, er det en WinForm opkaldt MainForm venstre Listevisning webtjenesten returnerer kontakt objekt til visning. Når du vælger en kontaktperson navn, efternavn og websider vil blive vist på højre side af tekstboksen. Når du lægger MainForm, det kalder Servicechef klassen for at få kontaktoplysninger. Følgende Servicechef klasse ved første øjekast ikke synes at tilføje nogen værdi, men i mellem form og tilføje endnu et lag af webtjenester. Men dens værdi ligger i at give en mulighed for at tilføje ny funktionalitet i web-tjenester, snarere end to eksemplarer kode. En anden fordel er, at det er en web-service "fodaftryk" abstrakte ud og fjernes fra hele ansøgningen.

Public Class Servicechef

Offentlige Delt Funktion GetAllContacts () As ContactService.Contact ()

Dim tjeneste Som ContactService.Service = Ny ContactService.Service

Dim kontakter () Som ContactService.Contact = service.GetAllContacts

Return kontakter

End Function

Public Shared Sub SaveContact (ByVal kontakt Som ContactService.Contact)

Dim tjeneste Som ContactService.Service = Ny ContactService.Service

service.SaveContact (kontakt)

End Sub

End Class


Forrige 1 Næste Vælg sider
Bruger Anmeldelse
Ingen kommentarer endnu
Jeg ønsker at kommentere [Besøgende (3.144.*.*) | Logon ]

Sprog :
| Tjek kode :


Søg

版权申明 | 隐私权政策 | Copyright @2018 Verden encyklopædiske viden