Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Techie

Alter Hase

  • »Techie« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

1

06.04.2013, 22:34

PlugIn Programme

Guten Abend,
ich bin gerade recht neugierig geworden auf ein Thema:
Programme die aus PlugIns gebaut sind.

Wie ich auf das Thema komme?
In einem Thread sagte, Michel Hutch ( ein Entwickler von Xamarin ), dass die ganze Xamarin IDE aus PlugIns bestehe.

Nun das hörst sich interessant an, doch da wäre eine Frage:
Wie plant man solche Programme eigentlich?


Gruß Techie
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Yannic

unregistriert

2

06.04.2013, 23:11

In dem man alle Sachen, die man sonst direkt in das Programm einbaut, als Plugin plant?^^
In das eigentliche Programm kommt dann eigentlich nur der Teil, den ein Plugin benötigt, um überhaupt zu laufen, und das dann meistens unter bestimmten "Sicherheitsvorkehrungen"(AppDomains in .NET z.B.).
Beim Laden der Plugins wird dann einfach ein Interface zum Programm gegeben, so dass bestimmte Funktionalitäten von da aus verwendet werden können.
Um die Plugins untereinander kommunizieren zu lassen, kann man sich dann auch noch Kanäle ausdenken, Softwareentwicklung ist halt Kreativsache :D

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

3

06.04.2013, 23:37

Wenn man keinerlei Erfahrung in der Sache hat ist der beste Weg vermutlich, dass man die Software erstmal ohne Plugins baut und dann versucht Module und deren Kommunikation untereinander zu abstrahieren. Dann kann man diese in Plugins auslagern.

Techie

Alter Hase

  • »Techie« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

4

08.04.2013, 17:12

Oh ok.
Naja wie gesagt, es hat mich interessiert ^^
Ich denke es eignet sich ganz gut für größere Programme da man bestimmte Teile sehr leicht auswechseln/updaten kann.

Nun, vielen Danke an euch beide :thumbsup:
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

simbad

unregistriert

5

08.04.2013, 19:04

Wenn man keinerlei Erfahrung in der Sache hat ist der beste Weg vermutlich, dass man die Software erstmal ohne Plugins baut und dann versucht Module und deren Kommunikation untereinander zu abstrahieren. Dann kann man diese in Plugins auslagern.

Wenn du das so versuchst erschiesst du dich bei einer Software in der Komplexität einer IDE nach wenigen Tagen.

Man baut sich eine Infrastruktur für die Kommunikation der einzelnen Programmteile und kann dann die Plugins untereinander kommunizieren lassen. Der Kern der Anwendung ist nur für die Kommunikation zuständig und für das laden der Plugins.
Im OS Bereich nennt man sowas Micro-Kernel-Architecture. Kommunikation mittels Nachrichten.

Simpel, schnell, flexibel.

6

08.04.2013, 19:05

Ich denke Begriffe wie Dependency Injection und Services können ein Ansatz für eine entsprechende Architektur sein.

simbad

unregistriert

7

08.04.2013, 19:13

Ich habe in meinem Web-Server ein Plugin-System integriert.
Beim Laden teilen die Plugins dem Kern mit für welche URLs und/oder extensions sie zuständig sind, und dann werden die Requests auf das entsprechende Plugin geleitet.
Jedes Plugin startet einen eigenen Thread und ist somit asynchron und autark.

dependency injection geht da, nach einem schnellen Blick drauf, noch weiter. WIrd auch nicht gebraucht. Jedenfalls nicht für ein Kernsystem.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

8

08.04.2013, 19:14

Wenn man keinerlei Erfahrung in der Sache hat ist der beste Weg vermutlich, dass man die Software erstmal ohne Plugins baut und dann versucht Module und deren Kommunikation untereinander zu abstrahieren. Dann kann man diese in Plugins auslagern.

Wenn du das so versuchst erschiesst du dich bei einer Software in der Komplexität einer IDE nach wenigen Tagen.

Man baut sich eine Infrastruktur für die Kommunikation der einzelnen Programmteile und kann dann die Plugins untereinander kommunizieren lassen. Der Kern der Anwendung ist nur für die Kommunikation zuständig und für das laden der Plugins.
Im OS Bereich nennt man sowas Micro-Kernel-Architecture. Kommunikation mittels Nachrichten.

Simpel, schnell, flexibel.

Das erfordert, dass man die noetige Erfahrung hat um die Infrastruktur und Kommunikation entwerfen zu koennen.

simbad

unregistriert

9

08.04.2013, 19:22

Wenn man keinerlei Erfahrung in der Sache hat ist der beste Weg vermutlich, dass man die Software erstmal ohne Plugins baut und dann versucht Module und deren Kommunikation untereinander zu abstrahieren. Dann kann man diese in Plugins auslagern.

Wenn du das so versuchst erschiesst du dich bei einer Software in der Komplexität einer IDE nach wenigen Tagen.

Man baut sich eine Infrastruktur für die Kommunikation der einzelnen Programmteile und kann dann die Plugins untereinander kommunizieren lassen. Der Kern der Anwendung ist nur für die Kommunikation zuständig und für das laden der Plugins.
Im OS Bereich nennt man sowas Micro-Kernel-Architecture. Kommunikation mittels Nachrichten.

Simpel, schnell, flexibel.

Das erfordert, dass man die noetige Erfahrung hat um die Infrastruktur und Kommunikation entwerfen zu koennen.

Sicher. Aber der erste Ansatz führt ziemlich sicher zum Tod des Programmierers oder des Computers. Deswegen mein Hinweis unter anderem auf den micro-kernel. Da kann man sich das abgucken. Man braucht es nur meist nicht so super extrem.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

10

08.04.2013, 19:39

Wenn man keinerlei Erfahrung in der Sache hat ist der beste Weg vermutlich, dass man die Software erstmal ohne Plugins baut und dann versucht Module und deren Kommunikation untereinander zu abstrahieren. Dann kann man diese in Plugins auslagern.

Wenn du das so versuchst erschiesst du dich bei einer Software in der Komplexität einer IDE nach wenigen Tagen.

Man baut sich eine Infrastruktur für die Kommunikation der einzelnen Programmteile und kann dann die Plugins untereinander kommunizieren lassen. Der Kern der Anwendung ist nur für die Kommunikation zuständig und für das laden der Plugins.
Im OS Bereich nennt man sowas Micro-Kernel-Architecture. Kommunikation mittels Nachrichten.

Simpel, schnell, flexibel.

Das erfordert, dass man die noetige Erfahrung hat um die Infrastruktur und Kommunikation entwerfen zu koennen.

Sicher. Aber der erste Ansatz führt ziemlich sicher zum Tod des Programmierers oder des Computers. Deswegen mein Hinweis unter anderem auf den micro-kernel. Da kann man sich das abgucken. Man braucht es nur meist nicht so super extrem.

Das kommt darauf an, was das zu entwickelnde Programm ist. Wenn es ein kleines Tool ist, dann wird keiner von beiden sterben. Wenn es aber tatsächlich eine IDE oder eine andere enorm große Anwendung ist, dann könnte es schon eher sein, dass der _Programmierer_ Probleme bekommt. Allerdings ist es für eine einzelne Person kein größeres Problem auch noch im Laufe einer Entwicklung diverse Funktionalitäten auf Plugins auszulagern (es sind keine Absprachen mit anderen Personen notwendig und selbst wenn, wäre es immernoch machbar).
Da es aber unwahrscheinlich ist, dass Techie eine eigene IDE entwickeln will und er sich wahrscheinlich eher für Plugin-Systeme selbst interessiert haben dürfte, ist der Hinweis durchaus berechtigt.

Zur eigentlichen Frage: für ein Plugin-System muss man schon Erfahrung mitbringen, um einschätzen zu können, was dieses bieten muss. Da ich mich bisher noch nicht mit Plugin-Systemen im allgemeinen auseinandergesetzt habe, könnte ich wahrscheinlich nur für bestimmte Aufgabengebiete Hinweise geben und keine allgemeingültigen.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige