Question

J'aimerais en savoir plus sur les différentes manières dont d'autres développeurs et architectes gèrent la personnalisation de certains domaines de leurs applications pour certains sites. Les appels passés aux clients implémentés avant et après traitement, les événements faisant de même, permettant de remplacer les méthodes de logique métier, en utilisant des stratégies avec des modules enfichables, des processus configurables de données, par ex. moteurs de règles, scripts, etc.

La liste pourrait continuer, mais je demande qui a utilisé quoi et quels sont les avantages et les inconvénients de chacune de ces approches, ainsi que les autres approches possibles.

Cela suppose que nous ne créons pas de branche de code spécifique au client pour prendre en charge ces personnalisations.

Était-ce utile?

La solution

MS travaille sur deux frameworks différents pour cela dans .NET: le Managed Extensibility Framework et System.Addin.

La manière la plus couramment utilisée par les applications d’exposer l’extensibilité est probablement l’injection de dépendance / Inversion de contrôle mélangée à une résolution de type à l’exécution. Cela signifie que vous laissez une entité externe " injecter " l'implémentation d'une interface lors de l'exécution au lieu de se lier à une implémentation spécifique lors de la compilation. Votre code n'a pas d'importance si votre IRepository est écrit par votre entreprise ou par un tiers. En codant sur des interfaces et en utilisant des infrastructures DI / IOC (ce lien fournit un bon aperçu des frameworks .NET) , vous permettez à votre application d'être facilement personnalisable.

Autres conseils

J'aurais tendance à tout construire de manière modulaire, puis à ajouter des éléments au programme à la demande du client. Vous pouvez combiner cela avec les paramètres d'application que le client peut contrôler, ce qui leur permet d'ajouter et de supprimer des modules eux-mêmes. Dans ce cas, vous ne feriez que définir une configuration par défaut.

Une solution consisterait à intégrer un langage de script (python et javascript semblent être populaires) et à exposer d'importants morceaux de l'API via l'extension de script. Vous trouverez peut-être également plus facile d'implémenter des parties de votre application dans le langage de script.

Pour les produits avec lesquels je travaille, les personnalisations créées soit par le groupe Services pour un client donné, soit parfois par les clients eux-mêmes, sont partagées avec le reste de l'équipe (pour les éléments que nous avons créés) et souvent " productized " dans les versions ultérieures.

Nous prenons en charge une API [presque] à accès complet qui peut être utilisée pour faire [presque] tout ce que les interfaces graphiques peuvent faire, mais de manière automatisée.

Nous encourageons les clients à écrire des scripts personnalisés, puis à les partager avec nous. Augmenter les utilisations disponibles d'un produit par le biais d'extensions, qu'elles soient officiellement prises en charge ou restent des outils de la communauté, contribue à générer de la bonne volonté parmi votre clientèle.

Pour les personnalisations que nous construisons, le travail initial, tout en étant facturé à un client spécifique, peut ensuite être rapidement implémenté ailleurs, permettant ainsi aux utilisateurs actuels et futurs de gagner en flexibilité lors de l'utilisation du produit.

J'ai constaté que la création de votre application sous la forme d'une bibliothèque de modules accessible à partir d'un bon langage de script intégré ( Lua était: créé exactement pour cela!) vous donne une tonne de flexibilité, pas seulement pour les utilisateurs; mais pour vous aussi.

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