FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Hej!
Jag tänkte göra en webbtjänst där man ska kunna skriva lite plugins till på något enkelt sätt. Vi tänker oss att webbplatsen är en community, det finns några funktioner som typ "Logga in", "Skicka PM" och så vidare. Om vi tänker att jag har gjort en Plugin som ska skicka Ett mail till användaren när det kommer ett PM. Då ska den pluginen vara registerad på något sätt, samt när "Skicka PM" eventen körs, så ska den ge rätt kontext till pluginen så den kan leverera det hela. Jag tänker mig ett system som är ungefär så här: Alla olika händelser ska vara utformade utav ett BaseInterface för respektive event. Tex: Varje gång man skickar ett PM så körs alla klasser som implenterar PMInterfacet? Är det helt korkat och lösa det så? Hur ska man göra? Sedan undrar jag också, hur ska man smidigast lösa själva administrationen utav plugines, om jag vill binda SkickaEmail Pluginen, plus Anti-Spam Pluginen till "Skicka PM" eventen. Ska jag göra någon databas lösning som håller reda på vilken Plugin som är kopplad till vilken event? Det är inte svårt och lösa sättet jag beskriver det på, men är det ett bra sätt? Hur skulle ni göra? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Har WN som tidsfördriv
|
En snabb Googling
http://msdn.microsoft.com/en-us/library/ms972962.aspx Jag har själv skrivit ett enkelt plugin framework, fast i PHP. Vill du se kod så kan du PM'a mig. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Flitig postare
|
Jag skulle nog nästan föreslå en lite mer "lös" variant än att köra med olika interface, det tillkommer en massa komplexa problem med interface då man snabbt får beroenden på alla möjliga håll (forumet <-> pm t.ex), och vad händer om man vill byta ut pm-modulen? Måste man uppdatera forummodulen så den implementerar ett annat interface då?
En variant jag själv tror mer på är att definera ett interface som alla implementerar. Det har en/flera metoder för att hantera händelser. Den första parametern är förslagsvis id:t på händelsen (t.ex. "forum_sent_message"), och alla som vill bry sig om händelsen kör då valfri kod. En annan variant är att också då köra med ett interface, men istället ha tre/flera metoder. Man kör samma variant som den jag nämnde nyss, men man har ytterligare två metoder, varav en som enbart returnerar vilka händelser som någonsin kan vara intressanta, och en som returnerar vilka händelser som pluginer någonsin kan generera. Pluginsystemet lägger sedan upp listor för varje händelse, och fyller listorna med de plugin som det är värt att fråga. Man vinner exekveringstid där då man slipper exekvera en massa kod i nödan för varje händelse. Nackdelen med att koppla löst är att man förlorar typsäkerhet, å andra sidan är olika komponenter inte så beroende av varandra; vill man plocka bort pm så behöver man inte strula med forumet (vilket, som jag förstått, är lite tanken bakom det hela) |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
Pluginen kör för att $function ska läggas till i en sorts kö för att köras när $tag händer. do_action($tag,$args); Kör alla funktioner som finns på $tag och ger dessa $args, ett par argument som kan användas av pluginen. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Flitig postare
|
Mitt inlägg var inget svar på ditt inlägg
![]() |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Flitig postare
|
Har du kikat på Blogengine.NET? En blog med en implementation av "extensions" på ett jyst sätt.
/Patrik Berggren |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Hej MrWize!
Jag sitter och kollar på BlogEngine.net och jag tycker det är väldigt välarbetat. Men jag förstår inte riktigt hur allt hänger ihop, men jag jobbar på det ;-) |
||
![]() |
![]() |
Svara |
|
|