IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

iis et tâche programmée


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut iis et tâche programmée
    j'ai un site web, j'aimerais à interval régulier lancer une tâche.

    L'idée premiere était de lancer un thread à partir de Application_start, ce thread gérerais la tache. Il s'avère que je ne sais pas si cette méthode est "propre" de plus lorsque le site n'a pas d'activité il se met en off "Application_end" et tue mon thread .

    Autre solution serait de faire un application console et de la lancer via windows service, mais l'application devrait reutilisé les dlls du site, je devrais réppliquer l'ensemble des clés de mon web.config et donc au niveau de la maintenance, cela m'inquiete un peu.

    auriez vous un avis sur mes solutions, ou une solution miracle ?

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Je te conseille de regarder du côté des Services Windows, ou bien de déporter ton processus dans une application Console, qui sera lancée à intervalles réguliers par le Gestionnaire de Tâches de Windows.

    Tu ne seras ainsi pas gêné par le cycle de vie de IIS...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut
    Si je fais un exe, n'y a t'il pas une méthode pour ne pas répliquer les dlls et le web.config ?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Pour ne pas avoir à recopier les DLLs, tu peux envisager l'utilisation du GAC. Ainsi tu ne devras déployer tes assembly qu'une seule fois, et ils seront accessible par ton service/appli console, ainsi que par ton application Web.

    En ce qui concerne les paramètres du fichier web.config, si tu veux éviter la copie, il faudra aller lire ton web.config depuis ton service/appli console. Tu peux garder ces paramètres en mémoire le temps que ton programme tourne, et à chaque lancement, tu répètes l'opération de lecture.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Une autre méthode est d'implémenter tout ce que tu veux faire dans une page aspx et d'appeler ta page à partir d'une tache planifiée windows.

    J'utilise cette méthode et ça fonctionne assez bien.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Effectivement ça fonctionne aussi, mais je ne suis personnellement pas très fan de ce genre d'approche, car à la base ASP.NET fonctionne de manière passive, en répondant à des requêtes HTTP.

    Je pense qu'il vaut mieux mettre en place un Web Service par exemple, qui va exposer la logique à exécuter. Cela évitera de devoir donner à l'application ASP.NET la responsabilité de l'exécution du code à intervales réguliers. Que se passe-t-il si le serveur redémarre ? Que se passe-t-il en cas de recyclage de l'application pool ? ... Autant de questions à se poser.

    Ensuite, à mon sens, la meilleure solution est d'utiliser un Service Windows, qui a l'avantage de pouvoir s'exécuter dans beaucoup de situations (par exemple si le serveur est en train de redémarrer, le service sera automatiquement lancé lorsqu'il aura terminé de rebooter...).

    Voici un exemple concret qui montre comment mettre en place ce genre de solution : http://msdn.microsoft.com/en-us/magazine/cc163821.aspx

    Cela est bien entendu discutable, mais c'est mon point de vue
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Tâches programmées sur routeur - ping
    Par carroteman dans le forum Hardware
    Réponses: 1
    Dernier message: 21/05/2010, 10h10
  2. Programme invisible en tâche de fond
    Par probo dans le forum Delphi
    Réponses: 3
    Dernier message: 08/02/2007, 11h23
  3. [barre des tâches]Faire clignoter mon programme
    Par Baptiste Wicht dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 05/06/2006, 20h20
  4. Comment récupérer l'ID d'une tâche programmée avec AT ?
    Par langela94 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 11h01
  5. Ouvrir le planificateur de tâches Windows par programme
    Par BBPlastique dans le forum Windows
    Réponses: 8
    Dernier message: 16/07/2004, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo