Question

Nous avons quelques projets qui impliquent la création d'une application composée peut-être à 50 % de fonctionnalités personnalisées, mais qui intègre ensuite, disons, un wiki, un forum et d'autres composants qui sont des "roues" déjà inventées et que nous n'avons pas. souhaite réécrire à partir de zéro.

Ces applications tierces disposent généralement de leurs propres bases de données, thèmes et systèmes d'authentification.D'après mon expérience, faire fonctionner les choses comme une authentification unique ou un thème commun, ou marquer/rechercher des entités dans plusieurs sous-applications sont des problèmes assez difficiles.Quelles sont les bonnes pratiques pour ce type de projet d’intégration ?

Jusqu'à présent, notre approche a consisté à essayer de sélectionner soigneusement vos composants, en choisissant ceux qui ont une API clairement définie, de préférence via HTTP (comme REST ou SOAP), bien que cela ne soit pas toujours possible (nous n'avons pas trouvé de solution décente). forum qui fonctionne de cette façon).Y a-t-il des suggestions que les gens peuvent donner à quiconque essaie de le faire, comme je suppose que beaucoup d'entre nous le font de plus en plus fréquemment ces jours-ci ?

Était-ce utile?

La solution

Assurez-vous que l'interface entre votre application et l'application ou la bibliothèque tierce est telle que vous pouvez la remplacer facilement par autre chose au cas où.Dans certains cas, le logiciel tiers peut simplement être une implémentation d'une API standard (Java le fait souvent avec JDBC, JMS, JNDI, ...).Dans d'autres cas, cela signifie envelopper la bibliothèque tierce dans une API que vous proposez.

Bien sûr, il arrive parfois de jeter cette idée par la fenêtre et d’intégrer étroitement les éléments au logiciel tiers.Assurez-vous simplement que vous souhaitez VRAIMENT lier votre application à ce tiers.Une fois que vous avez emprunté cette voie, il est VRAIMENT difficile de revenir en arrière et de changer d'avis.

Autres conseils

Si vous optez pour des bibliothèques open source, choisissez celles avec une bonne licence.J'ai découvert à mes dépens (en essayant de OEM une application) que de nombreuses entreprises évitent les licences comme LGPL.Je n'entrerai pas dans les détails mais ils préfèrent les licences de style Apache, BSD ou MIT.

Choisissez des outils qui existent depuis un certain temps.Consultez la communauté et assurez-vous qu’elle est active.Voyez ce que les autres utilisent et utilisez ces outils.

Choisissez des technologies qui fonctionnent bien ensemble.J'ai mis en place une application qui utilise ORM et Web Services.Spring Framework + Apache CXF + JPA pour l'ORM ont créé une belle pile technologique.Tous les outils que j'utilise s'associent facilement au printemps, ce qui facilite leur utilisation ensemble.La dernière chose que vous voudriez faire est de choisir des outils pour lesquels vous devez écrire un tas de code juste pour les utiliser ensemble.

Choisissez des technologies basées sur des normes.De cette façon, si la bibliothèque ou l'outil meurt, vous pouvez facilement passer à un autre qui utilise le même standard.

Donald Knuth a déclaré qu'encore mieux que le code réutilisable, il s'agit d'un code modifiable. Par conséquent, s'il n'y a pas d'API, vous devriez rechercher une application open source bien écrite et donc personnalisable.

En ce qui concerne les bases de données, les systèmes de connexion et autres parties de programmation (je ne vois pas comment, par ex.la thématisation pourrait en bénéficier), vous pouvez également essayer, selon les circonstances, d'emballer des éléments de sorte que ce module pense qu'il est tout seul, mais qu'il parle réellement à votre code.

Mon approche a consisté à utiliser du code tiers pour certaines fonctionnalités de base.Par exemple, j'utilise Subsonic pour mon accès aux données, les composants Devexpress pour l'interface utilisateur et Peter Blum Data Entry Suite pour la saisie et la validation des données.Subsonic est open source, les contrôles de Devexpress Peter Blum ont un code source disponible moyennant des frais supplémentaires.Il me serait impossible d’obtenir les fonctionnalités de ces contrôles si j’essayais de les écrire moi-même.

Cette approche me permet de me concentrer sur les fonctionnalités personnalisées de mon application sans avoir à me soucier de la manière dont j'accéderai à la base de données ou de la façon dont je créerai une arborescence modifiable et jolie.Bien sûr, je n'ai pas de forum entièrement configuré et fonctionnel, mais je sais que j'utiliserai une base de données SQL pour mon application et que je n'aurai pas à essayer de faire fonctionner différents composants de stockage de données ensemble.Je n'ai pas de wiki mais je sais comment utiliser les composants devexpress ui et le formatage et la validation de la saisie des données sont un jeu d'enfant avec les contrôles de Peter Blum.En d’autres termes, apprenez les outils (et bien sûr choisissez-les avec soin) qui accéléreront le développement de tous vos projets, puis vous pourrez vous concentrer sur les parties de votre application qui doivent être personnalisées.

Je ne me soucie pas trop de savoir si c'est open source ou non tant que le code source est disponible.Si c'est open source, je fais un don au projet.S'il s'agit d'un composant commercial, je paierai un prix équitable.Dans tous les cas, les outils contribuent à rendre la programmation amusante et les résultats sont intègres et superbes.Si je développe un wiki ou un forum, je sais que je peux les faire travailler ensemble de manière transparente.Enfin, tous les outils que j’ai mentionnés existent depuis longtemps et sont écrits par des développeurs exceptionnels jouissant d’une excellente réputation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top