WinFuture-Forum.de: Plug-ins Programmieren - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Plug-ins Programmieren Welche Logik steckt dahinter??


#1 Mitglied ist offline   sladaloose 

  • Gruppe: aktive Mitglieder
  • Beiträge: 347
  • Beigetreten: 30. Juni 04
  • Reputation: 0

geschrieben 08. Juli 2004 - 06:26

Hallo!

Meine Frage ist recht allgemein gehalten und soll unabhängig von Programmiersprachen sein.

Viele Programme bieten mittlerweile die Möglichkeit Plug-Ins downzuloaden und zu installieren um Programmfunktionen zu erweitern. Meist ist es ja so, dass diese Plug-Ins in einem Plug-In Verzeichnis abgelegt werden. Viele kommen als *.dll daher.

Meine Frage ist jetzt einfach: Wie schreibt man ein Programm dass Plug-Ins laden kann? Ich komm einfach nicht dahinter welche Routinen man schreiben muss um überhaupt externe Anwendungen zu laden, die vorher noch gar nicht definiert sind. Dass die Plug-Ins auf das Hauptprogramm abgestimmt sein müssen ist mir schon bewusst, aber was genau muss man da beachten um überhaupt ein Plug-In schreiben zu können?

Kann mir jemand die Logik erkären, wie so Plug-Ins im allgemeinen geschrieben werden, bzw. wie man ein Programm so erweitert, dass man Plug-Ins laden kann?

Wäre auch nicht schlecht zu wissen, wie das ganze mit Fehlern aussieht. Was passiert, wenn im Plug-In ein Fehler auftritt, stürzt dann das Hauptprogramm mit ab, oder kann man das abfangen?

Ich bin für jeden Ratschlag sehr dankbar!

ca
0

Anzeige



#2 Mitglied ist offline   Philipp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.036
  • Beigetreten: 30. Oktober 02
  • Reputation: 0
  • Wohnort:Plattling
  • Interessen:PS, DW, Windows, Linux, Mit Freunden abhängen, Schlafen :-)

geschrieben 08. Juli 2004 - 17:31

du musst dir die doku zu den programm durchlesen :D meißtens gibt es doch dokus. wie ein plugin aufgebaut sein muss usw.
0

#3 Mitglied ist offline   Dimension 

  • Gruppe: aktive Mitglieder
  • Beiträge: 774
  • Beigetreten: 17. November 03
  • Reputation: 0

geschrieben 08. Juli 2004 - 18:05

@zero-one: Er fragt, wie er seinen eigenen Programmen eine Plug-In-Schnittstelle hinzufügen kann :)

@sladaloose: Dazu gibt es keine Muster-Lösung, es kommt vielmehr darauf an, was die Plug-Ins alles können sollen, ob du dem Code "trauen" kannst usw.

Die einfachste Methode geht über Runtime-Linking. Du exportierst von deinem Programm einige Prozeduren (genauso wie bei einer DLL), und linkst die DLLs dann mit der Import-Library. Die PlugIn-DLLs können nun einfach mit LoadLibrary() geladen werden und haben Zugriff auf die exportierten Funktionen. So kann auch ein Plug-In weitere Plug-Ins unterstützen usw.

Damit das Programm nun das Plug-In aufrufen kann, ist entweder ein festgelegter Eintrittspunkt möglich (über GetProcAddress()) oder die DLL ruft beim Laden eine Prozedur auf und sagt dem Programm, wie sie zu verwenden ist.

Eine Schwachstelle von Plug-Ins ist jedoch, dass sie mit gleichen Privilegien im gleichen Adressraum wie das Hauptprogramm laufen und so dieses abstürzen oder übernehmen können (bei Demoversionen z.B. Funktionen freischalten oder Werbebanner ausblenden usw.).
Um das zu verhindern, müss(t)en die Plugs als eigenständige Anwendungen laufen - dann wird der Overhead aber grösser und du hast eine Client-Server-Architektur (keine direkten Prozeduraufrufe, sondern über Messages/Sockets/...). Diese läuft dafür bei guter Programmierung auch übers Netzwerk :D

Dieser Beitrag wurde von Dimension bearbeitet: 08. Juli 2004 - 18:09

0

#4 Mitglied ist offline   Philipp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.036
  • Beigetreten: 30. Oktober 02
  • Reputation: 0
  • Wohnort:Plattling
  • Interessen:PS, DW, Windows, Linux, Mit Freunden abhängen, Schlafen :-)

geschrieben 08. Juli 2004 - 18:07

Zitat (Dimension: 08.07.2004, 19:05)

@zero-one: Er fragt, wie er seinen eigenen Programmen eine Plug-In-Schnittstelle hinzufügen kann :)

:D
0

#5 Mitglied ist offline   sladaloose 

  • Gruppe: aktive Mitglieder
  • Beiträge: 347
  • Beigetreten: 30. Juni 04
  • Reputation: 0

geschrieben 09. Juli 2004 - 06:54

Aaaah, auf diesen Gedanken bin ich noch gar net gestoßen n paar Funktionen zu exportieren. Klar dass die Plug-Ins dann Zugriff darauf haben! Danke!

Bei den Funktionen übers Netzwerk... das würde ja dann auch funktionieren, dass zum Bleistift Rechner 1 Das Hauptprogramm steuert, Rechner 2 ein Primzahlen Plug-In verwendet um Primzahlen zu errechnen und Rechner 3 die Primzahlen einfach aufaddiert. Richtig? (Zugegeben, dieses Beispiel könnte auch auf einem Rechner funktionieren...)

ca und Danke nochmal!
0

#6 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 09. Juli 2004 - 14:32

sladaloose,
wenn dich verteilte objekte uebers netzwerk interessieren schau dir mal corba an, das macht genau das. ;)
I'm mó. mo's good twin.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0