-
Interaction FTP IIS
bonjour,
Une application doit me déposer un fichier sur un FTP (via IIS). Je dois par la suite traiter ce fichier.
Mon problème est d'avoir "un évènement" qui déclenche le traitement de mon fichier une fois que celui-ci a été déposé.
J'ai pensé a plusieurs façons :
- Un processus qui regarde toutes les X secondes si un fichier est crée
- les HttpHandlers mais pas sur que ce soit faisable.
- Peut être y a t'il un événement générer par IIS qui pourrait être récupérable
Si vous avez des idées je suis preneur
Merci
-
Dans la mesure où il s'agit de FTP, c'est totalement indépendant de Http...
les HTTPHandlers ne te serons donc pas d'un grand secours...
Il n'est pas difficile, ni insurmontable d'avoir un service qui scrute l'arborescence des répertoires acessible par le FTP pour vérifier la création d'un nouveau fichier et d'agir en conséquence.
En ce qui concerne IIS, j'ignore s'il est possible dans un module ISAPI (pour HTTP), de récupérer un message indiquant s'il vient de recevoir un fichier FTP.
Disons que si l'application qui traite se fichier n'a rien avoir avec HTTP, une solution par service windows, est un très bon choix.
-
merci pour ta réponse,
L'application qui est censée traiter le fichier est une application web. Donc si je m'oriente vers un service qui scrute le répertoire, j'ai surement intérêt de lancer un thread dans le "application start". Cela ne va pas être un peu lourd en terme de performance?
-
Ba si tu est comme moi, tu aimes sortir l'artiellerie lourde.
Le problème c'est que lancer un thread qui ne meurt pas dans ton Application start pose un petit souci... éthique.
Car la session en cours n'expire pas du coup... et tout appel à la page va lancer un thread qui ne mourra pas... un peu génant.
il ne faut pas oublié que dans une application web, tu travail dans un mode "débranché", chaque page est exécuté, et basta. meme si ton appli est isapi et reste en mémoire... je vois pas trop ce que tu veux faire en fait.
soit plus explicite sur les besoins de ces traitements, a quel finalité vis à vis de l'interaction utilisateur ?
-
Mes besoins sont les suivants :
- On me dépose un fichier XML dans un dossier via FTP.
- Dès qu'un fichier est déposé je le lis et en extrait la valeur de certaines balises. Ces données sont ensuite insérées en base de données.
Sinon je peux crée un Service qui lancée sur le serveur, mais du coup il devra insérer dans la BD et n'aura pas accès au paramètre de connection a cette BD qui sont dans le fichier de configuration de mon application Web
-
euh en fait ca ca peut toujours se contourner...
ConfigurationManager n'est jamais qu'un outil qui prend un fichier de config XML et le lit et le traduit.
Qui t'empeche de faire tes propres fichiers de configs structurés comme tu le souhaite, partagés ainsi par ton appli web ASPx et ton service windows ?
Ayant un problème similaire vu que j'ai une instance de l'appli qui marche en mode service et l'autre en mode GUI... (ya juste l'exe qui diffère, mais le reste du programme est dans une assembly .dll) j'ai géré moi meme ma configuration, qui du coup est plus structurée, et exactement comme je le souhaite.
Je peux donc rajouteer des sections pour les modules sans tout faire planter quand les modules sont pas installés, ou tout faire planter si le module en question a pas sa section dans le fichier de config.
lire et gérer un XML en .NET demeure assez enfantin, quelque soit le langage, meme si ma préférence va à C#.
Fait donc ton propre ConfigurationManager dans une assembly.
Et fait référence à cette assembly dans ton Service windows et dans ton appli ASP.NET.
c'est tout.
Effectivement le mieux est encore de faire un service windows qui fait ce traitement dès qu'il remarque une insertion.
Et si tu veux encore éviter des tuiles, tu fait le traitement d'un fichier dans un thread de pool, celui-ci meurt à la fin du traitement et basta. Ainsi le thread chargé de vérifier toutes les n secondes si ya pas du nouveau n'est pas encombré.
-
merci pour ces conseils !
Pour le moment c'est à l'état de spec, mais l'idée me parait très bonne
Merci