J'ai réfléchi aux "bonnes pratiques" concernant la structure des paquets dans les paquets osgi. Actuellement, en moyenne, nous avons 8-12 classes par paquet. Une de mes initiatives/propositions a été d'avoir deux paquets; com.company_name.osgi.services.api (pour les classes/interfaces liées à l'API (qui est exportée en externe) et un package nom.compagnie.osgi.services.impl pour l'implémentation (non exporté)). Quels sont les avantages de cela? D'autres suggestions?Structure du paquet OSGi
Répondre
Vous pouvez également envisager de mettre les interfaces dans com.company_name.subsystem
, et l'implémentation dans com.company_name.subsystem.impl
, le code spécifique OSGI, s'il y en a, pourrait être dans com.company_name.subsystem.osgi
. Parfois, vous pourriez avoir plusieurs implémentations des mêmes interfaces. Dans ce cas, vous pourriez envisager - com.company_name.subsystem.impl1
et com.company_name.subsystem.impl2
, par exemple:
com.company.scm // the scm api
com.company.scm.git // its git implementaton
com.company.scm.svn // its subversion implementation
com.company.scm.osgi // the place to put an OSGI Activator
Dans cette structure de paquet de sens pourrait être agnostique OSGi, si vous plus tard passer à un autre conteneur, vous mettez juste un
com.company.scm.sca // or whatever component model you might think of
supplémentaires
Toujours avoir api
et impl
dans votre nom de package peut être gênant. En cas de doute, utilisez impl
mais pas api
.
Ce n'est pas le nombre de classes qui est important mais les concepts. À mon avis, vous devriez avoir une entité conceptuelle dans un paquet. Dans certains cas, cela peut être juste quelques classes dans plusieurs autres paquets avec des centaines de classes.
Il est important de séparer l'API et l'implémentation. Un bundle contient l'API de votre concept et l'autre l'implémentation. Vous pouvez ainsi proposer différentes implémentations pour une API bien définie. Dans certains cas, cela peut même être nécessaire si vous souhaitez accéder aux services à distance (par exemple R-OGSi)
Les ensembles d'API sont ensuite utilisés par le partage de code et les services des ensembles d'implémentation par partage de service. La meilleure façon d'explorer ces possibilités est de regarder les ServiceTrackers.
Dans votre cas, vous pourriez avoir l'implémentation dans le même paquet, mais toutes ses classes "paquet protégé". De cette façon, vous pouvez exporter le package et l'implémentation ne sera pas visible à l'extérieur, même si vous n'utilisez pas OSGi (mais en tant que fichier jar standard).
- 1. configuration du paquet sharepoint
- 2. Implémentations existantes du service OSGi Configuration Admin?
- 3. Réalisation du lanceur OSGi de type Eclipse
- 4. Echec du chargement du paquet Ankhsvn
- 5. Bibliothèques OSGi et héritées
- 6. Implémentation OSGi pour .NET
- 7. Structure du plugin jQuery
- 8. Comment configurer Log4J lors du déploiement d'une application OSGi avec Equinox Servle Bridge sur Tomcat?
- 9. Exemples complets d'utilisation du paquet pySerial
- 10. Jeton pour le nom du paquet Maven
- 11. XCode - Édition du paquet xcodeproj (spécifiquement project.pbxproj)
- 12. question sur l'exécution du paquet ssis
- 13. Solution de migration pour les singletons dans un environnement OSGI
- 14. Comment faire pour exécuter une structure OSGi dans le code java habituel?
- 15. Choisir entre Impala et OSGi
- 16. Paquet SQL - Paquet DTS: droits minimum
- 17. démarrer avec osgi + felix
- 18. ServiceTracker dans OSGi r4.1
- 19. Comment configurer un package à l'échelle du système dans osgi?
- 20. Structure des données du calendrier
- 21. Structure du document Single Document
- 22. Exécution de JAI dans OSGi
- 23. Gestion d'une application OSGi volumineuse
- 24. Service OSGi envelopper un pot
- 25. Java OSGi Configuration réseau centralisée
- 26. Comment obtenir des références de service OSGi à partir d'une servlet enregistrée dans OSGi HttpService?
- 27. Inclusion de ressources supplémentaires avec les bundles OSGi
- 28. Le plugin OSGi ne démarre pas dans tomcat
- 29. Modèle ASP.NET Voir Présentateur structure du projet
- 30. Automatiser la structure du dossier dynamiquement