Quelles sont les meilleures ressources si vous souhaitez créer une application avec modularisation? [fermé]

StackOverflow https://stackoverflow.com/questions/413247

  •  03-07-2019
  •  | 
  •  

Question

Dans mon analyse des plates-formes / applications Web plus récentes, telles que Drupal, Wordpress et Salesforce, bon nombre d'entre elles créent leur logiciel selon le concept de modularisation: les développeurs peuvent créer de nouvelles extensions et applications sans avoir à modifier le code le " noyau " système maintenu par les principaux développeurs. En particulier, je sais que Drupal utilise un "crochet". système, mais je ne connais pas grand chose au sujet du moteur ou de la conception qui le met en œuvre.

Si vous deviez créer une application et que vous vouliez un système permettant la modularisation, par où commencer? S'agit-il d'un modèle de conception particulier que tout le monde connaît? Existe-t-il un manuel auquel ce paradigme a tendance à adhérer? Existe-t-il des sites Web traitant de ce type de développement depuis le début?

Je sais que certaines personnes pointent directement vers la POO, mais cela ne semble pas être la même chose, tout à fait.

Ce système particulier que je prévois penche davantage vers quelque chose comme Salesforce, mais ce n'est pas un système de gestion de la relation client.

Par souci de précision, ignorez l'argument Acheter / Construire , car cette considération est déjà en préparation. En ce moment, je recherche l'aspect construction.

Était-ce utile?

La solution

Il y a deux façons de se déplacer ici, laquelle dépend de la manière dont votre logiciel se comportera.

L’une des solutions est le plug-in route , où les utilisateurs peuvent installer un nouveau code dans l'application en modifiant les aspects pertinents . Cet itinéraire exige que votre application soit installable et non seulement proposée en tant que service (sinon vous installez et révisez le code envoyé par des tiers, un cauchemar).

L’autre méthode consiste à proposer une API , qui peut être appelé par les parties concernées et attribuer le contrôle de transfert d'application à un code situé ailleurs (comme les applications Facebook) ou faire en sorte que l'application fasse ce que les commandes d'API permettent au développeur (à la manière de Google Maps).

Même si les mécanismes varient et que leur mise en œuvre diffère, vous devez dans tous les cas définir

  • Quelle liberté vais-je laisser aux utilisateurs?
  • Quels services vais-je proposer aux programmeurs pour personnaliser l’application?

et la chose la plus importante:

  • Comment l'activer dans mon code tout en restant sécurisé et robuste. Cela se fait généralement en mettant le code en sandbox, en validant les entrées et en offrant éventuellement des fonctionnalités limitées aux utilisateurs.

Dans ce contexte, les hooks sont des emplacements prédéfinis dans le code qui appellent la fonction de hook de tous les plugins enregistrés, si elle est définie, modifiant le comportement standard de l'application. Par exemple, si vous avez une fonction qui rend un arrière-plan, vous pouvez avoir

function renderBackground() {
    foreach (Plugin p in getRegisteredPlugins()) {
        if (p.rendersBackground) p.renderBackground();
    }
    //Standard background code if nothing got executed (or it still runs, 
    //according to needs)
}

Dans ce cas, vous avez le hook 'renderBackground' que les plugins peuvent implémenter pour changer le fond.

De manière API, l'application utilisateur appelle votre service pour obtenir le rendu de l'arrière-plan

//other code
Background b = Salesforce2.AjaxRequest('getBackground',RGB(255,10,0));
//the app now has the result of calling you

Tout cela est également lié au principe d'Hollywood , ce qui est une bonne chose à appliquer , mais parfois ce n’est tout simplement pas pratique.

Autres conseils

Le modèle de plug-in à partir de P de EAA est probablement ce que vous recherchez. Créez une interface publique pour votre service à laquelle les plug-ins (modules) peuvent s'intégrer à ad-hoc lors de l'exécution.

Ceci s'appelle une architecture de composant. C'est vraiment un très grand domaine, mais voici quelques points importants:

  • composition des composants (les composants du conteneur peuvent contenir n'importe quel autre composant)
    • Par exemple, une grille devrait pouvoir contenir d'autres grilles ou tout autre composant
  • programmation par interface (les composants interagissent via des interfaces connues)
    • Par exemple, un système de vue qui peut demander à un composant de se rendre lui-même (par exemple en HTML ou à une zone de rendu et de demander à la vue d'y attirer directement
  • utilisation intensive de registres dynamiques (lorsqu'un plugin est chargé, il s'enregistre lui-même auprès des registres appropriés)
  • un système permettant de transmettre des événements à des composants (tels que des clics de souris, une entrée par curseur, etc.)
  • une notification
  • gestion des utilisateurs

et bien plus encore!

Si vous hébergez l'application, publiez (et dogfood) une API RESTful.

Si vous distribuez des logiciels, consultez OSGi .

Voici une petite vidéo qui vous donnera au moins quelques indices. processus Lego [moins de 2 minutes]

Il existe également une recette complète sur la manière de créer votre propre framework basé sur la modularisation ...

L’élément clé le plus important dans la création d’un logiciel modularisé est de garder à l’esprit qu’il s’agit uniquement de savoir comment vous pouvez créer des systèmes peu couplés. Plus le couplage est faible, plus il est facile de modulariser ...

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