6
votes

Quelle est l'idée de base derrière les plugins?

Quether vous appelez-le addons , plugins ou pièces de l'autre du code connecté avec le logiciel d'origine ultérieurement Cela n'a pas d'importance. J'aimerais bien comprendre comment ils travaillent, il doit y avoir une explication simple de la façon de concevoir un système de plug-in. Malheureusement, je ne l'ai jamais compris, et il reste beaucoup de questions ouvertes dans mon esprit. Par exemple, comment le programme trouve-t-il un plugin? Comment ça interface avec elle? Quand est-il préférable qu'un logiciel ait un système de plug-in?


Merci pour toutes les réponses utiles. Il semble que j'ai demandé une question trop ouverte, heureusement, j'ai des mots-clés à rechercher. J'ai aimé David Répondez bien que je ne suis pas un gars Java, mais sa conversation avait du sens pour moi :)


0 commentaires

8 Réponses :


7
votes
  1. Créer une interface que tous les plugins d'un type particulier implémentent
  2. Écrivez le code qui «consommera» le plugin contre l'interface uniquement.
  3. ont une manière dynamique de charger une DLL contenant le type de plug-in qui implémente votre interface (par exemple, disposez d'un emplacement de dossier configurable pour déterminer si des DLL dans ce dossier contiennent des types qui implémentent votre interface et de charger de manière dynamique tout ce qui est. . En .NET Ceci pourrait utiliser assembly.loadfile () )

    Si vous souhaitez consulter un code source, peinture.net est libre et open source et a une architecture de plug-in.


3 commentaires

Le Downvoter pourrait-il laisser un commentaire sur pourquoi? Merci.


Cela explique comment faire des plug-ins pas quelle est l'idée derrière eux.


Bonne réponse! Cependant, je trouve l'étape 1 et 3 de cette réponse très claire. Pourriez-vous s'il vous plaît élaborer à l'étape 2 "Écrivez le code qui" consommer "le plugin contre l'interface uniquement." ? Je n'ai pas vraiment compris celui-là. Merci!



1
votes

Un programme doit généralement être conçu pour rechercher un plug-in et le plug-in doit avoir un point d'accès standard pour accepter le contrôle du programme principal. Chaque application ou site Web le fait un peu différemment.

Le type de plug-in le plus simple est accessible à quelque chose comme ceci: xxx

Dans ce cas, le programme principal est codé. Pour uniquement gérer un ensemble spécifique de plug-ins (de nombreux modèles WordPress à base de PHP sont comme celui-ci). Un plug-in légèrement plus avancé xxx

Ce second cas peut gérer des plug-ins ridiculement complexes ... Le plug-in aurait juste besoin de mettre en œuvre plus de fonctions appelées par le maître programme.


1 commentaires

La complexité du plugin n'a rien à voir avec l'architecture pour implémenter un plugin.



0
votes

Un système de plug-in peut être mis en œuvre à bien des égards, mais la manière courante de nombreuses applications C / C ++ est un plugin basé sur la DLL SDK.

La DLL exposera divers appels de fonction automatisés pouvant permettre au plugin de "se définir" dans l'application en cours d'exécution, telle que l'ajout d'éléments de menu, une nouvelle fonctionnalité ou des options supplémentaires pour les systèmes (comme des implémentations de rendu 3D).


0 commentaires

0
votes

plus de puits, il n'y a pas besoin de découverte spéciale - le plugin mécanici est généralement muet: voici une signature de code que je comprends, et voici un appel que je peux faire. Je n'ai aucune idée de la façon dont la chose que j'appelle fera le travail, mais je m'attends à ce que le résultat soit dans certains formats. Et c'est à peu près un contrat. Maintenant, le plugin mettra en œuvre le contrat et se rendre sera disponible. En Java, par exemple "mise à disposition" signifie simplement que la mise en œuvre de classes est chargée en mémoire. Le pilote JDBC pour une base de données particulière serait un bon exemple.


0 commentaires

1
votes

Eclipse Dans un exemple de framework d'application entièrement basé sur le plug-in, ce qui signifie que toutes les fonctionnalités sont implémentées comme plugins. Il existe une fine couche en bas pour la start-up / arrêt et la gestion de la plug-in, mais tout le reste est mis en œuvre en tant que plugins en plus de cela. Cela se traduit par un cadre qui peut être utilisé pour presque tout. Plus d'infos sur l'architecture de plug-in Eclipse se trouvent ici: http: / /www.eclipse.org/articles/article-plug-in-architecture/plugin_architecture.html .


0 commentaires

7
votes

Les plug-ins du travail en se conformant à des interfaces bien connues que l'application principale s'attend à travailler avec.

Il existe différentes manières dans lesquelles une architecture plug-in fonctionne réellement, mais en général, ce sont les étapes:

    Les plug-ins
  1. sont conçus pour correspondre à une interface que l'application attend. Par exemple, une application simple peut nécessiter que les plug-ins impliquent une interface iplugin .
  2. Les plug-ins sont chargés par l'application, généralement lorsque l'application démarre
  3. Les plug-ins sont souvent donnés à une grande partie des données que l'application gère. Par exemple, les plug-ins Firefox peuvent accéder à la page Web actuelle et les plug-ins Eclipse peuvent accéder aux fichiers ouverts.

    Voici de deux manières (sur plusieurs) dans lesquelles une application peut trouver des plug-ins:

    1. Les plug-ins sont connus pour exister dans un dossier particulier et l'application sait charger des plug-ins de ce dossier
    2. Chaque plug-in fonctionne comme un service et que les services sont conçus pour fonctionner ensemble (c'est la manière dont une application basée sur l'OSGI fonctionne)

      Lorsque des plug-ins sont trouvées, ils sont chargés par l'application (parfois le travail d'un chargeur de classe ).

      Un architecte logiciel peut concevoir une architecture de plug-in lorsqu'il s'attend à ce que le fournisseur de logiciels ou la communauté des utilisateurs implémente de nouvelles fonctionnalités qui ne font pas partie intégrante du système. Deux grands exemples sont Eclipse et Firefox; D'autres applications comprennent Adobe Photoshop (pour les techniques artistiques et les outils graphiques) et Winamp (pour les visualisations).


0 commentaires

1
votes

C'est très dépendant de la langue.

Dans une langue interprétée, cela implique simplement d'appeler un fichier qui suit un modèle.

en C Il est assez difficile à faire sans aide. Dans C + Windows, une "DLL" peut être un plug-in et sont souvent utilisées de cette façon.

Dans une langue OO avec réflexion, vous pouvez créer un objet qui implémente une interface et le charger de manière réfléchie. Après sa charge, vous pouvez ignorer le fait qu'il s'agissait d'un plug-in car il est traité comme tout autre objet de votre code.

.NET a une architecture de plug-in (est-ce com?) Quoi qu'il en soit, COM peut être utilisé comme (IS?) Un système de plug-in.

Votre question est probablement trop ouverte en raison de toutes les possibilités. Il n'y a pas de réponse unique.


0 commentaires

1
votes

Je n'ai jamais écrit de système de plug-in. Mais c'est comme ça que je l'imagine dans ma tête:

  • Votre programme a un sous-répertoire pour les plugins (E.G. "C: \ Program Files \ Mon nom de programme \ plugins").
  • Vous créez des plug-ins comme fichiers DLL et placez-les dans le dossier Plugins.
  • Ces DLL exporteraient des fonctions avec des noms prédéfinis.
  • Lorsque vous exécutez votre programme, il examine toutes les DLL dans votre dossier Plugins. Dans chacun, il rechercherait une fonction exportée avec un certain nom (par exemple "" charger ") et appeler cette fonction. Le plug-in pourrait alors faire une configuration qu'elle devait faire.
  • Le programme appellerait alors une fonction exportée sur le plugin avec un nom comme "getpluginname". Le plugin retournerait son nom et le programme pourrait ensuite utiliser ce nom lorsqu'il affiche une liste de plugins à l'utilisateur.
  • Lorsqu'il arrive le temps d'invoquer le plugin, le programme appellerait une autre fonction exportée (peut-être "activate") et transmet probablement le pointeur de plug-in sur les données du plugin. Le programme ferait alors son travail sur les données.
  • Le plug-in peut également exporter une autre fonction que le programme appellerait à afficher une boîte de dialogue de configuration dans laquelle vous pourrez modifier les options du plug-in.

0 commentaires