Språk :
SWEWE Medlem :Inloggning |Registrering
Sök
Encyclopedia gemenskap |Encyclopedia Svar |Submit fråga |Ordförråd Kunskap |Överför kunskap
Föregående 1 Nästa Välj Sidor

Aspect-Oriented Programming

Aspektorienterad programmering aspektorienterad programmering (AOP) under en längre tid, men först nyligen börjat vinna Microsoft. NET utveckling gynnas av samhället. Varje antagande av en ny teknik ofta missförstår tekniken och dess användning, är AOP inget undantag. För att klargöra missförstånd av AOP, pappret och följande kodexempel illustrerar kan lösas den praktiska tillämpningen av ett vanligt problem och en del AOP AOP. Om du vill använda webbtjänsten ansökan, till exempel, kommer vi utöka funktionaliteten i webbtjänsten returnerar ett objekt, metoden är en AOP ram genom tillämpning av objektet return nya aspekter. Dessa aspekter kommer att fungera självständigt genererade denna objektmodell, som från WSDL.Kort introduktion

Vid granskningen av objekt och objektrelationer till andra objekt, som vi brukar tänka på begreppet arv. Till exempel, definitionen av en abstrakt klass - Hund klass. Men när vissa klasser har sin egen unika för varje klass identifiera liknande beteende, ofta använder arv för att utöka funktionaliteten. Till exempel, om identitet pudel, kan du säga en är en pudelhund, Pudel som ärvt hund. Så långt allt verkar bra, men om du definierar en annan senare identifierades som lydig hund unika beteende kommer att hända? Naturligtvis inte alla hundar är väldigt tamt, så hund lydnad klasser kan inte innehålla beteende. Dessutom, om du vill skapa ärver från hund lydig hund klass, Pudel placerade i denna position i hierarkin som är bättre? Pudel är en hund, pudel, men inte nödvändigtvis lydig, då pudelhund ärvs eller lydig hund på det? Nej, vi kan tämja som en sida, tillämpas på alla typer av tam hund, är vi motståndare till olämpligt beteende på väg att tvinga hunden i hierarkin.

I programvaru termer kan aspektorienterad programmering vara oberoende av eventuella förändringar i arvshierarkin och tillämpning aspekter av beteendet hos en klass eller ett objekt. Då tillämpningen av dessa aspekter vid körning eller kompilera tid. Som ett exempel på AOP, och sedan för att beskriva, förklara det lättare. Först definierar fyra nyckel AOP terminologi, det är mycket viktigt eftersom jag kommer att använda dem om och om igen:

Junction (Joinpoint) - code definierade identifierbar punkt.

Brytpunkt (Pointcut) - en metod som anges i punkt förbindningskonfiguration eller kodning.

Anmälan (Råd) - visar en metod behöver utföra övergripande åtgärder

Blandat (Mixin) - en instans av en klass av instanser av målet klass blandas med införandet av nytt beteende.

För att bättre förstå dessa termer, kan betraktas som förbindelsepunkten fastställs i programflödet. Beskrivning korsning är ett bra exempel: När koden anropar en metod samtal sker den punkten anses vara en korsning. Brytpunkt för att ange eller definiera hopp i programflödet avlyssnade korsning. Vidare innefattande en gränspunkt underrättelse som uppstår när den når övergången. Därför, om du definierar en brytpunkt på en viss metod samtal, sedan anropa metoden eller korsning, kommer AOP ram fånga brytpunkten kommer föreläggande också skära punkten. Det finns flera typer av anmälan, men den vanligaste situationen är att se det som en annan metod att åberopa. När du anropar en metod med en brytpunkt, kommer anmälan att genomföras är en annan metod att åberopa. Metoden anmälan eller objektet att åkalla den metod som kan avlyssnas, kan den blandas med ett annat objekt i metoden. Vi kommer att förklaras ytterligare senare blandades.

För-och nackdelar

En vanlig missuppfattning är att AOP fångas upp, är det inte. Men det använda fångar för att tillämpa en kombination av anmälningar och beteende. Det finns några. NET kodexempel ContextBoundObject replik i en stil som beskrivs AOP avlyssning. Men för att illustrera den mottas av ContextBoundObject inte lämpligt, eftersom övriga villkor för användningen av denna metod är att alla måste avlyssnas klasser måste ärva från ContextBoundObject. Metoder som ContextBoundObject AOP med förutsättningar kommer att ha en negativ inverkan på efterfrågan som genereras, så AOP tillvägagångssätt ses som viktigt, och bör undvikas. Ett stort "fotavtryck" tunga äldre system tillvägagångssätt kommer potentiellt att påverka varje klass och hindra framtida förändring eller ändra funktion i systemet.

Jag skapade ett program som heter inlägga lätt ram. Med en "lätt" innebörden av begreppet inte finns någon påverkan på hela systemet. Olika delar av systemet fortfarande påverkas av AOP, men valet av lätt ram och tillämpa god programmeringspraxis kan lindra de flesta av de negativa frågor. Inlägga ramen är att förenkla användningen av brytpunkt, och aspekter av blandade kombinationer. Utvecklarna kodar i inlägga av programmet, för att ersätta de flesta andra lätt AOP ram använder en konfigurationsfil (t.ex. XML).

Viktbaserad AOP ramverk hindrar programmet, men den skyldige hindrar AOP AOP är allmänt tillgänglig i nästan alla exempel är följande: ". Method in" innan du kör metoden första avlyssning, och programkörnings Trace.WriteLine ( ) aspekt. Tvärtemot vad många tror, ​​förutom loggning, säkerhet, normer, och saker av detta slag utanför, AOP för att lösa andra problem är också användbara.

Jämför

För att illustrera användningen av AOP mer praktiskt tillvägagångssätt, kommer vi att skapa en applikation, en samling av föremål från de mottagande heter ContactService.Service av webbtjänster. Med hjälp av webbtjänster i. NET utveckling är den vanligaste metoden kallas för att returnera XML webbtjänst som automatiskt förvandlas till ett objekt genom ramen för det anti-sekvensen. Dessa objekt innehåller endast data och innehåller inte någon beteende. I. NET Framework 2.0 med hjälp av partiell sökord och skapa ett beteende som kan lägga till funktioner till objekt såsom automatisk kodgenerering. Men fortfarande finns det ett problem vid återanvändning ett visst beteende hos en del av webbtjänsten eller proxyobjekt. Såsom beskrivits ovan, i de flesta fall kommer att innehålla den delade gemensamma beteenden i en abstrakt klass, alla andra klasser ärver från denna klass. Däremot kan vi inte göra webbtjänsten objekt arv. Passa på, genom detta utfärda anvisningar om hur kraftfull AOP funktionalitet.

Vår ansökan används för att visa kontaktinformation. Dess ursprungliga syfte är att visa informationen, men du behöver lägga till vissa beteenden. För att visa exempelkoden, måste vi skapa en virtuell katalog som heter TheAgileDeveloper.ContactService 's. Katalogen måste peka TheAgileDeveloper.ContactService projekt plats på den lokala datorn.

Observera att detta projekt kan nås via http://localhost/TheAgileDeveloper.ContactService, är detta mycket viktigt.

Figur 1 ansökan skärmen ögonblicksbilder.

Ansökan har en åsikt, det är en WinForm som heter MainForm s lämnat Listview webbtjänsten returnerar kontaktobjekt för visning. När du väljer ett kontaktnamn, efternamn och webbsidor kommer att visas till höger om textrutan. När du fyller MainForm, kallar det ServiceManager klassen för att få kontaktuppgifter. Följande ServiceManager klassen vid första anblicken verkar inte tillför något värde, men i mellan formen och lägga ytterligare ett lager av webbtjänster. Dock ligger dess värde i att ge en möjlighet att lägga till ny funktionalitet i webbtjänster, i stället för två exemplar kod. En annan fördel är att det är en webbtjänst "fotavtryck" abstrakt ut och tas ut ur hela programmet.

Public class ServiceManager

Public Shared Function GetAllContacts () As ContactService.Contact ()

Dim tjänsten Som ContactService.Service = Ny ContactService.Service

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

Retur kontakter

End Function

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

Dim tjänsten Som ContactService.Service = Ny ContactService.Service

service.SaveContact (kontakt)

End Sub

End Class


Föregående 1 Nästa Välj Sidor
Användare Omdöme
Inga kommentarer
Jag vill kommentera [Besökare (18.116.*.*) | Inloggning ]

Språk :
| Kontrollera kod :


Sök

版权申明 | 隐私权政策 | Copyright @2018 World uppslagsverk kunskap