Principale utente con più risposte
Deploy Window Service..

Domanda
-
Ciao a tutti, ho la necessità di installare un Window Service che fa da host ad un Servizio WCF su, all'incirca, 50 macchine. Per l'installazione credo non ci siano dubbi che dovrò passarmeli tutti, ma è possibile gestire automaticamente gli aggiornamenti? In pratica vorrei qualcosa nello stile ClickOnce...
Enrico
Risposte
-
Enrico Gobbo wrote:
Ciao a tutti, ho la necessità di installare un Window Service che fa da host ad un Servizio WCF su, all'incirca, 50 macchine. Per l'installazione credo non ci siano dubbi che dovrò passarmeli tutti, ma è possibile gestire automaticamente gli aggiornamenti? In pratica vorrei qualcosa nello stile ClickOnce...
Non per un servizio considerate le problematiche di sicurezza.
Il deploy di aggiornamentei si può fare con windows installer (msi o msu).
Se invece vuoi un servizio che si auto-aggiorni devi costruirti un tuo sistema che:
- scarica le dll aggiornate
- lancia un processo di aggiornamento e si auto spegne il servizio
- questo processo copia le dll e fa ripartire il servizioIl problema in tutto ciò è che gli utenti normalmente usati per i servizi non hanno i privilegi per avviare i servizi.
L'utente localsystem evitalo perché è spropositamente più potente di quello che normalmente serve.Non hai pensato invece di hostare i tuoi servizi in IIS, semplificando quindi lo scenario?
Raffaele Rialdi http://www.iamraf.net
Weblog: http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - http://www.ugidotnet.org/
Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele- Proposto come risposta Mila Daniel Ovidiu lunedì 19 luglio 2010 07:44
- Contrassegnato come risposta Mila Daniel Ovidiu martedì 20 luglio 2010 13:44
-
Enrico Gobbo wrote:
Ciao Raffaele, il problema di IIS è la natura stessa del Servizio WCF... Brevemente, il mio servizio è un'estensione del tipico MessageBroker usato in WPF che mi permette di inviare messaggio anche al di fuori della stessa applicazione, in quanto la mia applicazione è composta da 5 Office AddIn + 1 Applicazione WPF che potrebbero lavorare sugli stessi dati. L'idea, è quella di notificare alle altre applicazioni quali sono, in questo caso, le commesse cambiate, così da far comparire una notifica.
Il problema l'ho risolto implementando la gestione del servizio all'interno della mia applicazione (come classe static), sia dal lato server che dal lato consumer. Per il debug divento un po' pazzo con due istanze dello stesso progetto aperto, però ci riesco senza grossi problemi. In questo modo ho il deploy e l'aggiornamento direttamente sul ClickOnce dell'applicazione stessa...
Riuscirei lo stesso a gestire questa cosa anche da IIS?
Ciao e grazie, Enrico.Non capisco dove starebbe l'intoppo con IIS.
Nel tuo scenario, a prescindere che il servizio sia hostato in IIS o in un servizio Windows, ogni applicazione pubblica le info al servizio.
Le altre applicazioni fanno polling nel servizio per chiedere cosa sia cambiato e ottengono le info richieste. Ovviamente il servizio non è mai attivo nei confronti delle app. Se il tuo traffico è sostenuto, puoi fare caching delle info cambiate in modo da evitare troppe operazioni ripetitive sul servizio.Alcune considerazioni:
- Per quanto riguarda gli aggiornamenti non esiste un sistema stile clickonce nè per windows service nè per iis
- per fare una pubblicazione rapida di tutte le application sulle varie macchine puoi usare i tool di IIS (web deployment tool, webdav/ftp, etc. ... vedi http://iis.net sotto deploy)
- iis ti semplifica la gestione della pubblicazione perché riavvia automaticamente il servizio se aggiorni i suoi file.
- se usi wcf4 puoi sfruttare le novità degli endpoint standard per definire una o più configurazioni di endpoint comuni a tutti i serviziCiao
Raffaele Rialdi http://www.iamraf.net
Weblog: http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - http://www.ugidotnet.org/
Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele- Proposto come risposta Mila Daniel Ovidiu martedì 20 luglio 2010 07:38
- Contrassegnato come risposta Enrico Gobbo martedì 20 luglio 2010 11:47
Tutte le risposte
-
Enrico Gobbo wrote:
Ciao a tutti, ho la necessità di installare un Window Service che fa da host ad un Servizio WCF su, all'incirca, 50 macchine. Per l'installazione credo non ci siano dubbi che dovrò passarmeli tutti, ma è possibile gestire automaticamente gli aggiornamenti? In pratica vorrei qualcosa nello stile ClickOnce...
Non per un servizio considerate le problematiche di sicurezza.
Il deploy di aggiornamentei si può fare con windows installer (msi o msu).
Se invece vuoi un servizio che si auto-aggiorni devi costruirti un tuo sistema che:
- scarica le dll aggiornate
- lancia un processo di aggiornamento e si auto spegne il servizio
- questo processo copia le dll e fa ripartire il servizioIl problema in tutto ciò è che gli utenti normalmente usati per i servizi non hanno i privilegi per avviare i servizi.
L'utente localsystem evitalo perché è spropositamente più potente di quello che normalmente serve.Non hai pensato invece di hostare i tuoi servizi in IIS, semplificando quindi lo scenario?
Raffaele Rialdi http://www.iamraf.net
Weblog: http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - http://www.ugidotnet.org/
Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele- Proposto come risposta Mila Daniel Ovidiu lunedì 19 luglio 2010 07:44
- Contrassegnato come risposta Mila Daniel Ovidiu martedì 20 luglio 2010 13:44
-
Ciao Raffaele, il problema di IIS è la natura stessa del Servizio WCF... Brevemente, il mio servizio è un'estensione del tipico MessageBroker usato in WPF che mi permette di inviare messaggio anche al di fuori della stessa applicazione, in quanto la mia applicazione è composta da 5 Office AddIn + 1 Applicazione WPF che potrebbero lavorare sugli stessi dati. L'idea, è quella di notificare alle altre applicazioni quali sono, in questo caso, le commesse cambiate, così da far comparire una notifica.
Il problema l'ho risolto implementando la gestione del servizio all'interno della mia applicazione (come classe static), sia dal lato server che dal lato consumer. Per il debug divento un po' pazzo con due istanze dello stesso progetto aperto, però ci riesco senza grossi problemi. In questo modo ho il deploy e l'aggiornamento direttamente sul ClickOnce dell'applicazione stessa...
Riuscirei lo stesso a gestire questa cosa anche da IIS?
Ciao e grazie, Enrico.
-
Enrico Gobbo wrote:
Ciao Raffaele, il problema di IIS è la natura stessa del Servizio WCF... Brevemente, il mio servizio è un'estensione del tipico MessageBroker usato in WPF che mi permette di inviare messaggio anche al di fuori della stessa applicazione, in quanto la mia applicazione è composta da 5 Office AddIn + 1 Applicazione WPF che potrebbero lavorare sugli stessi dati. L'idea, è quella di notificare alle altre applicazioni quali sono, in questo caso, le commesse cambiate, così da far comparire una notifica.
Il problema l'ho risolto implementando la gestione del servizio all'interno della mia applicazione (come classe static), sia dal lato server che dal lato consumer. Per il debug divento un po' pazzo con due istanze dello stesso progetto aperto, però ci riesco senza grossi problemi. In questo modo ho il deploy e l'aggiornamento direttamente sul ClickOnce dell'applicazione stessa...
Riuscirei lo stesso a gestire questa cosa anche da IIS?
Ciao e grazie, Enrico.Non capisco dove starebbe l'intoppo con IIS.
Nel tuo scenario, a prescindere che il servizio sia hostato in IIS o in un servizio Windows, ogni applicazione pubblica le info al servizio.
Le altre applicazioni fanno polling nel servizio per chiedere cosa sia cambiato e ottengono le info richieste. Ovviamente il servizio non è mai attivo nei confronti delle app. Se il tuo traffico è sostenuto, puoi fare caching delle info cambiate in modo da evitare troppe operazioni ripetitive sul servizio.Alcune considerazioni:
- Per quanto riguarda gli aggiornamenti non esiste un sistema stile clickonce nè per windows service nè per iis
- per fare una pubblicazione rapida di tutte le application sulle varie macchine puoi usare i tool di IIS (web deployment tool, webdav/ftp, etc. ... vedi http://iis.net sotto deploy)
- iis ti semplifica la gestione della pubblicazione perché riavvia automaticamente il servizio se aggiorni i suoi file.
- se usi wcf4 puoi sfruttare le novità degli endpoint standard per definire una o più configurazioni di endpoint comuni a tutti i serviziCiao
Raffaele Rialdi http://www.iamraf.net
Weblog: http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - http://www.ugidotnet.org/
Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele- Proposto come risposta Mila Daniel Ovidiu martedì 20 luglio 2010 07:38
- Contrassegnato come risposta Enrico Gobbo martedì 20 luglio 2010 11:47
-
-
Enrico Gobbo wrote:
L'intoppo sono io... non conosco affatto IIS :-) Vedo di studiarmi bene iis così da capire se riesco a utilizzarlo come voglio.
Grazie mille EnricoPrego, tieni conto che IIS non è più (solo) un web server, ma un host per qualsivoglia servizio.
In pratica gestisce il ciclo di vita dei servizi e delle web application.
I vantaggi di questa gestione sono tanti:
- attivazione on demand
- spegnimento del processo che non viene utilizzato (risparmi ram)
- recycling dei processi. Un processo sempre attivo può 'derivare' cioè accumulare (ad esempio) un piccolo leak fino a far scoppiare il servizio, mentre se lo rilanci di tanto in tanto è ovviamente più stabile.
- puoi usare anche protocolli non-http
...Ciao
Raffaele Rialdi http://www.iamraf.net
Weblog: http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - http://www.ugidotnet.org/
Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele