2011-10-06 4 views
3

Je travaille avec cette petite application web (1 page) construite par quelqu'un d'autre qui fait une tâche spécifique après avoir appuyé sur un bouton de la page web.application web à l'application de la console?

Maintenant, les exigences ont légèrement changé, et nous devons automatiser cela pour qu'il s'exécute toutes les semaines sans avoir besoin de l'intervention de l'utilisateur.

Quelle serait la meilleure façon de procéder, en minimisant les modifications apportées au code?

Je pensais à ajouter une application de console au projet qui fait référence à l'intérieur de l'application web mais cela ne semble pas fonctionner.

Ou peut-être de convertir l'application Web à une application de console, si cela est possible?

Y a-t-il un moyen simple de le faire?

Merci

Répondre

0

Cela dépend vraiment de la structure du code existant. Une approche commune consiste à diviser la logique métier de la couche de présentation. Dans VS, cela se fait normalement en créant un projet de bibliothèque de classes et en conservant toute la logique métier. Un projet d'application Web instancie alors simplement les classes de logique métier et exécute leurs méthodes.

Si c'est fait comme ça, vous avez juste besoin de référencer le projet de bibliothèque de classes. Si, d'un autre côté, vous avez toute la logique dans le projet d'application Web, il n'y a probablement pas de moyen rapide de le faire, car vous n'êtes pas supposé instancier manuellement les classes de pages (vous pouvez le faire aussi, mais est maladroit et non recommandé). Dans ce cas, vous devez créer un projet de bibliothèque de classes et y déplacer toute la logique que vous devez utiliser dans votre application de console. J'imagine que cela nécessiterait beaucoup de refactoring.

+0

oui c'est ce que je pensais et j'essayais d'éviter mais on dirait qu'il n'y a pas d'autre solution. myabe le convertit en un service Web et l'appelle à partir de l'application de la console? – user441365

+0

Le service Web ressemble à une surcharge. Et je pense que vous devriez faire au moins le même nombre de changements pour que cela fonctionne. Mieux vaut le faire correctement avec la bibliothèque de classe. –

1

d'abord, assurez-vous que la « tâche spécifique » est réparti de l'application Web de sorte qu'il réside dans son propre projet .NET. Même si ce projet ne contient qu'une seule classe, vous «séparez les problèmes» entre l'interface Web et la tâche elle-même.

Ensuite, vous pouvez créer un autre "projet wrapper" pour appeler ce nouveau projet comme vous le souhaitez. Une application de console peut très bien faire le travail - vous pouvez l'exécuter en utilisant une tâche planifiée - ou vous pouvez préférer utiliser un service Windows.

Questions connexes