2012-04-12 3 views
3

Je suis à la recherche de commentaires sur la direction à prendre pour créer une application de comptabilité. L'application doit permettre une personnalisation élevée, parfois des processus entiers devront être modifiés.Architecture d'application pour faciliter la personnalisation des applications

Je veux un moyen d'apporter des modifications sans recompiler l'ensemble de l'application lorsqu'un client a une demande de modification spécifique. Le back-end sera une base de données SQL de quelque sorte. Probablement SQL Server Express pour des raisons de coût. L'interface sera C#.

Je pense à un système basé sur les événements qui aura des événements pour quand différents types d'actions, telles que les entrées, sont faites. J'aurais alors un système de plugin qui gère l'événement. Il se peut que plusieurs processus doivent s'appliquer dans un ordre spécifique aux données avant qu'elles ne soient définitivement enregistrées. Il devra également déclencher d'autres processus. Je souhaite que mon application de base reste la même, ce qui fonctionne pour la plupart des clients, mais permet de charger les processus personnalisés d'autres clients spécifiques.

Je suis ouvert à toutes les suggestions. Même s'ils pensent à des manières complètement différentes d'aborder le problème. Notre talent actuel de développement interne est .NET et MS SQL Server. Je ne suis pas au courant d'un modèle de logiciel qui pourrait correspondre à cette situation.

Informations supplémentaires: Ce système d'ardoise n'est pas complètement vierge, il aura des fonctionnalités qui fonctionnent pour un grand nombre de clients. Pour diverses raisons, les exigences changent selon les états et même au niveau de la région et de la ville où la personnalisation peut être nécessaire. Je voudrais être en mesure de brancher des modules précompilés supplémentaires. Quand j'ai commencé à chercher des options possibles, j'imaginais un gestionnaire vide dans lequel je pouvais insérer du code via un plugin. Ainsi, par exemple, une nouvelle entrée est faite au grand livre qui soulève un événement. Le gestionnaire est appelé, mais le code du gestionnaire provient d'un plugin, ce qui peut être mon processus d'origine qui correspond à 80% des clients. Si un client veut une opération personnalisée, je pourrais ajouter un plugin qui remplace complètement l'original ou lui faire ajouter une étape de post-traitement supplémentaire via un autre plugin après l'exécution d'origine. Une sorte de processus de superposition je suppose.

+1

Pouvez-vous expliquer pourquoi vous ne voulez pas compiler? Êtes-vous en train de dire que vous voulez pouvoir brancher des modules précompilés supplémentaires, ou que tout soit piloté par une sorte de configuration? – Ian

Répondre

2

Vous pouvez regarder Managed Extensibility Framework Il offre des fonctions de couche de composition riche qui vous permettent de construire des applications de plug-ins faiblement couplés. Mise à jour: vous avez besoin des modules prédéfinis sur différentes zones géographiques et l'utilisation de la conception de la chaîne de responsabilité peut vous aider à gérer le principe du changement. Désolé aucun code fourni juste jeter mes pensées

+0

J'apprécie vraiment cette possibilité. Surtout après avoir constaté que "les extensions elles-mêmes peuvent dépendre l'une de l'autre et MEF s'assurera qu'elles sont connectées ensemble dans le bon ordre (une autre chose dont vous n'aurez pas à vous inquiéter)". Cela semble très proche de ce que je pense fonctionnerait. Merci. – Martin

0

Windows Workflow Foundation (WF) (une partie du .NET Framework) est un candidat potentiel pour vos besoins. Il permet de composer dynamiquement différentes actions, commandes et lettrages, de sorte que vous puissiez personnaliser plus facilement différents flux de travail pour différents utilisateurs/clients. WF est utilisé par Biztalk pour l'intégration de systèmes à grande échelle et est hébergé dans le processus par de nombreuses autres applications qui nécessitent la possibilité de modifier facilement l'orchestration d'un certain nombre de tâches et d'actions plus petites.

Vous voudrez peut-être commencer par this tutorial on WF4.

HTH.

+0

Ce qui est limité - été là, fait. Il est inutile si votre application ne supporte pas l'affichage par exemple de l'interface utilisateur (dans une application winform/wpf) car vous êtes limité aux formulaires déjà fournis. Mais c'est TRÈS bon pour la logique métier flexible. – TomTom

+0

Je devrais regarder de plus près à quelques exemples. On dirait qu'il pourrait avoir des possibilités. Cela me rappelle SQL Server Integration Services. Merci. – Martin

0

Ce n'est pas seulement des plugins ou la façon dont vous résolvez techniquement ce problème de plugin, utilisez MEF (+1 @laptop) ou autre chose, Vous devez mettre le plus d'effort dans la définition de plugin "points" dans votre application, c'est parti être le plus important, par exemple. où vous mettrez les "événements" vides pour mettre votre code, ou quels paramètres auront ces évènements ou plugins. Par exemple, le plugin utilisable serait en avant l'événement de sauvegarde, mais vous devrez avoir seulement une place dans l'application qui permettra d'enregistrer divers types de documents commerciaux, de sorte que vous pouvez appeler des plugins et le paramètre serait objet document abstrait.

Vous devez donc réfléchir sérieusement à l'architecture de votre système, être assez abstrait pour les différents points de plugin, et faire complètement cette architecture, ne faites pas juste une partie du système et commencez à coder dessus. J'espère que vous avez compris ce que je voulais dire, parce que l'anglais n'est pas ma langue maternelle.

Questions connexes