Comment créer une application avec un mécanisme de plug-in [C # et Java]
J'ai cherché un peu sur le titre, donc je l'ai posté ici aussi.
Cependant, bien qu'il y ait eu beaucoup d'activité (papiers, articles, etc.) dans l'architecture des plug-ins vers 2003, il semble qu'il n'y ait pas eu beaucoup de discussions récemment.
Cette fois, j'ai implémenté un échantillon de références pour donner une idée de la méthode de base de fabrication.
Méthode de base de fabrication
- Définir les interfaces (GUI, commandes)
- Définir comment étendre l'interface
- Créez un plug-in ou une application hôte qui implémente l'interface définie
Utilisation de base
- Faire du plug-in un fichier exécutable d'une sorte
- L'application hôte stocke le fichier dans un emplacement spécifique et l'utilise.
Pour C
- Créez une dll qui définit l'interface
- Créez un plug-in avec dll qui implémente l'interface définie
- Créez une application hôte qui charge et utilise le plug-in
Pour Java
- Définir une interface pour le plug-in
- Créez un plug-in avec jar qui implémente l'interface définie
- Dans le fichier Jar, créez un fichier manifeste avec le nom de la classe du plug-in.
- Créez une application hôte qui charge et utilise le plug-in
Comment l'implémenter avec quelque chose qui n'a pas d'interface comme python?
Python semble être une spécification qui permet l'héritage multiple sans avoir d'interface.
Si vous ne faites pas très attention lors de sa mise en œuvre, vous souffrirez de l'influence d'autres modules ...
C'est une suite de l'enquête ...
Impression personnelle
- Lors de l'implémentation en C # ou Java, il est essentiel de définir l'interface, y compris quel type de plug-in peut être créé.
- Si vous voulez réaliser quelque chose comme IDE, il semble bon de se référer à l'interface de développement de plug-ins de Visual Studio et Eclipse.
- https://docs.microsoft.com/ja-jp/visualstudio/extensibility/starting-to-develop-visual-studio-extensions?view=vs-2017
- https://gihyo.jp/dev/serial/01/eclipse-plugin/0001
- Bien que non décrit, il semble être implémenté en utilisant l'héritage multiple dans des langages tels que Python qui n'ont pas d'interface.
- Pour les applications de bureau, la configuration et la conception de l'interface graphique de base n'ont pas changé, en ce qui concerne les exemples Visual Studio et Eclipse.
- Dispose d'un mécanisme pour définir des extensions pour chacun
- Menu / Barre d'outils / fenêtre Outils
[Voir ici pour le même contenu et code (principalement ici)]
https://github.com/dandan611/SampleOfPluginSoftware
Les références
- Commencez à développer des extensions Visual Studio
- https://docs.microsoft.com/ja-jp/visualstudio/extensibility/starting-to-develop-visual-studio-extensions?view=vs-2017
- Introduction au développement de plug-ins Partie 1 Bases du développement Apprenez les bases du développement de plug-in d'Eclipse
- https://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-plugindev1/index.html
- Création d'un éditeur de texte avec la fonctionnalité de plug-in .NET
- https://codezine.jp/article/detail/1
- Créez un programme Java qui peut être étendu avec un plug-in
- https://codezine.jp/article/detail/1271
- Qu'est-ce qu'OSGi, la technologie de base utilisée dans Eclipse et Spring?
- https://www.atmarkit.co.jp/fjava/special/osgi/osgi_1.html
- Writing Plugin-Based Applications
- https://www.developerfusion.com/article/4371/writing-pluginbased-applications/
Architecture plug-in
https://decomo.info/wiki/translation/adc/cocoa/foundation/introduction_to_dynamically_loading_code/0600_plugins