Kom ihåg mig?
Home Menu

Menu


Plugin Framework .NET?

Ämnesverktyg Visningsalternativ
Oläst 2009-02-10, 20:59 #1
ledstrom ledstrom är inte uppkopplad
Medlem
 
Reg.datum: Jan 2007
Inlägg: 84
ledstrom ledstrom är inte uppkopplad
Medlem
 
Reg.datum: Jan 2007
Inlägg: 84
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?
ledstrom är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-10, 22:15 #2
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
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.
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-10, 22:16 #3
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
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)
Onkelborg är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-10, 22:19 #4
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
Citat:
Originally posted by Onkelborg@Feb 10 2009, 23:16
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.
add_action($tag,$function);
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.
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-11, 17:26 #5
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Mitt inlägg var inget svar på ditt inlägg För övrigt hade jag .net i tankarna
Onkelborg är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-11, 23:57 #6
MrWize MrWize är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2005
Inlägg: 447
MrWize MrWize är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2005
Inlägg: 447
Har du kikat på Blogengine.NET? En blog med en implementation av "extensions" på ett jyst sätt.

/Patrik Berggren
MrWize är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-12, 09:23 #7
ledstrom ledstrom är inte uppkopplad
Medlem
 
Reg.datum: Jan 2007
Inlägg: 84
ledstrom ledstrom är inte uppkopplad
Medlem
 
Reg.datum: Jan 2007
Inlägg: 84
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 ;-)
ledstrom är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 06:04.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017