527 messaggi dal 18 dicembre 2012
Ciao a tutti
come scritto in un post precedente, devo realizzare un'applicazione che gira su un server e accede, ad intervalli regolari, ad una cartella in ftp, legge dei file e aggiorna un database.
Stavo pensando di realizzare un servizio windows.
E' una soluzione che va bene? Ci sono soluzioni migliori?
Mi è capitato di realizzare un servizio windows qualche anno fa e non so se è una cosa superata per quello che devo realizzare.
Altro dubbio, e se chi mi offre il servizio di hosting non mi permette di installare il servizio?
Grazie mille
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
un servizio per Windows potrebbe andar bene ma ogni soluzione è valida solo considerando anche il suo contesto.
Se vai in hosting condiviso, è quasi scontato che non ti lasceranno installare il servizio. Se invece ti procuri in server dedicato, allora avrai il completo controllo su di esso e potrai certamente installare il servizio.

Oppure, anziché crearti un servizio per windows, potresti sfruttare lo Scheduler di Azure per configurare un Job che invierà una richiesta HTTP GET ad una tua pagina ad intervalli regolari. La pagina, a quel punto, può essere ospitata ovunque, anche in hostng condiviso.

Ecco un esempio:
http://michiel.vanotegem.nl/2014/01/getting-started-with-windows-azure-scheduler-part-1/

Ecco la pagina del servizio.
http://azure.microsoft.com/it-it/services/scheduler/
E' gratuito fintanto che non superi determinate soglie di utilizzo.
http://azure.microsoft.com/it-it/pricing/details/scheduler/



ciao,
Moreno.
Modificato da BrightSoul il 26 marzo 2015 19.54 -

Enjoy learning and just keep making
89 messaggi dal 13 aprile 2004
In genere i servizi di hosting a meno di server dedicati (che in genere si dovrebbero chiamare servizi di housing) non permettono di far girare servizi Windows. Il motivo è presto detto un servizio Windows ha necessità di maggiori privilegi per funzionare. Pertanto come prima cosa mi accerterei se il provider permette di far partire servizi Windows.
In alternativa si può procedere in almeno due modalità con un'applicazione Web (anche in questo caso occorre consultare il provider perchè l'accesso ad una cartella ftp dovrebbe richiedere la modalità "Full Trust"):
1) realizzare una pagina Web che esegue le operazioni necessarie. E demandare ad uno schedulatore esterno la chiamata ogni tot minuti. Come schedulatore esterno una soluzione pratica è quella di uno dei tanti servizi che verificano se un sito è online o meno. Esistono tanti provider per tale funzionalità, gran parte dei quali se l'intervallo non è troppo spinto (in genere superiore a 5-10 minuti), la forniscono gratis. Esempi che ho provato sono https://uptimerobot.com oppure https://www.statuscake.com/.
2) Creare la logica del servizio Windows all'interno del Application_Start del global.asax. Ovvero crei un Worker Thread che si addormenta per un tot di tempo e poi esegue le operazioni necessarie per poi rimettersi a dormire. Su internet trovi tanti articoli su come procedere in questo caso. Le considerazioni in questo caso sono che trattandosi di thread secondario vive nel ambito del Web Server, in fase di debug se si interrompe l'esecuzione ma non si interrompe IIS Express continua a girare. Se ci sono errori si possono ribaltare sull'intero Application Pool, con gravi problemi.Altra problemtica è che è difficile da interrompere e non tutti i provider ti permettono di gestire la ripartenza dell'Applicazione e la chiamata della funzione Application_Start (vedi Aruba).
Ovviamente la strada da prendere deve essere scelta in considerazione alle esigenze e a quanto fornito dal provider. Nel mio caso avendo come provider Aruba ho adottato (dopo averle sperimentate entrambe) la prima soluzione, sostituendo lo schedulatore esterno con quello fornito direttamente da Aruba che di base ha una schedulazione con un intervallo minimo di un'ora (ma ponendo più timer sfalsati si riescono ad ottenere intervalli più brevi nel mio caso 3 timer con uno sfasamento di 20 minuti).
527 messaggi dal 18 dicembre 2012
Ciao e grazie
come immaginavo e come anticipato da voi, non è possibile eseguire un file .exe
Devo creare un task. Mi hanno che posso creare anche una pagina aspx che verrà eseguita in automatico ogni tot minuti.
Altermaive o suggerimenti si come creare l'applicazione?
Grazie
89 messaggi dal 13 aprile 2004
Io credevo di averti indicato i miei suggerimenti ...
Il problema è che non conosco in dettaglio il contesto (ad es. se non viene eseguita una schedulazione c'è un problema grave oppure è lieve e basta che viene eseguita la prossima schedulazione, qual'è l'intervallo di schedulazione richiesta, c'è la possibiltà di un budget per un servizio di monitoraggio a pagamento, il provider dell'hosting è già scelto o deve essere ancora scelto etc.).
In definitiva direi che il primo meccanismo è un poco più semplice, ma hai meno controllo. Il secondo metodo è più complesso. Si tratta di un effettivo Servizio Windows con tanto di thread, con le ulteriori limitazioni di essere in una pagina ASP.Net e in un area borderline ovvero all'interno del Global.asax (Application_Start) che pone alcune limitazioni ulteriori non essendo del tutta creata l'infrastruttura dell'applicazione.
Io ho fatto proprio il processo contrario dalla seconda soluzione sono passata alla prima perchè su Aruba non riuscivo a far ripartire a comando il sistema di schedulazione (in parole povere non riuscivo a far eseguire quando volevo l'Application_Start se per qualche motivo avevo fermato il thread) alla seconda. Nel mio caso il salto di una schedulazione non è fondamentale.
Io comunque in entrambe le soluzioni verificherei, come ti ho già detto, se le operazioni che devi fare si riescono a fare con i livelli permessi dall'hosting.
Ciao

Antonio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.