2009-07-22 6 views
8

Per alcune delle applicazioni di monitoraggio e per le attività che devono essere pianificate per il polling di alcuni servizi, utilizziamo tradizionalmente un'applicazione console che a sua volta chiama alcuni metodi nel nostro livello aziendale o esegue il polling delle posizioni dei file/posizioni ftp.Quali sono i vantaggi di uno script PowerShell su un'applicazione console?

Per un altro compito che stavo svolgendo ho iniziato a giocare con Powershell ed è rimasto molto colpito, il che mi ha fatto pensare quali sono i vantaggi di uno script PowerShell e un'applicazione console.

Sembra il fatto che lo script di PowerShell può essere modificato al volo senza ricompilare che lo rende un vantaggio per le potenziali modifiche, ma ci devono essere degli svantaggi che non vedo.

Quindi quando le persone consigliano di scambiare un'applicazione console per uno script PowerShell?

risposta

7

Penso che il modo migliore per pensare a questo è, quando sceglieresti un'applicazione per console?

Se non si è preoccupati di velocità di run-time ultrarealistiche, distribuzione a terze parti (PowerShell non è ancora abbastanza standard) o protezione del codice sorgente, penso che PowerShell sia un concorrente forte.

A proposito, PowerShell può manipolare gli oggetti COM in modo immediato, quindi in termini di automazione delle attività funziona piuttosto bene come codice colla tra .NET e infrastruttura basata su COM.

2

Bene, sembra che il tuo caso sia quasi perfetto per le cose per cui è stato progettato Powershell. L'unico inconveniente possibile che posso immaginare è che Powershell può essere un po 'lento perché è interpretato e non compilato e inoltre non è stato ottimizzato per la velocità, ma piuttosto per la facilità d'uso.

1

Si dovrebbe anche considerare la dimensione della "app". Se un singolo file di piccole dimensioni può gestire l'attività, PowerShell è un'ottima soluzione. Una volta superato questo, è necessario porre domande sulla manutenibilità e la comprensibilità dello script rispetto al tipico codice dell'applicazione. (E il controllo del codice sorgente non dovrebbe entrare nell'equazione poiché entrambi dovrebbero essere memorizzati lì!)

5

Il più grande vantaggio per me è la perdita del processo di compilazione e il lancio di file binari. Ti darò un esempio. Avevo un'applicazione che utilizzava alcune assunzioni dalla cartella degli assembly privati ​​di Visual Studio, i binari istrumneted dell'app ed eseguiva i test delle unità durante il nostro processo di completamento. Quando uscì VS 2008, dovetti cambiare risorse, ricompilarlo e poi dovevo distribuire i binari a tutti i nostri server di compilazione. Ho deciso che era stupido e sono passato a PowerShell così ora il mio script individua quale versione di vsts è installata e carica le dll con la versione più alta. Ora puoi farlo in un'app usando reflection e late binding e roba ma è molto più facile in PowerSHell, che e ogni Release ENgineer può semplicemente modificare lo script velocemente in un editor di testo quando aggiungiamo i binari o rimuoviamo i binari che abbiamo bisogno di strumento . Per le piccole applicazioni interne, ho sempre PowerSHell ora ...

1

Non sottovalutare il valore dell'analisi dei parametri essenzialmente gratuita, che migliora ulteriormente con le funzioni avanzate in V2. Pensa a tutte le piccole console che scrivi e quanta parte di quel codice è l'analisi dei parametri rispetto a fare qualcosa di interessante. Pensa anche a quanto bene gestisci l'analisi dei parametri? Gestisci i parametri posizionali vs denominati? Che ne dici della validazione dei parametri? Valori dei parametri predefiniti? E i file di risposta? Mentre Posh non supporta i file di risposta in senso letterale, in V2 esiste un operatore splatting che consente di impacchettare i parametri in un array o in una tabella hash, funzionalità molto simile.

OTOH a un certo punto se il mio script inizia a diventare enorme e sto invocando.Codice NET più di cmdlet, comincio a pensare di scrivere un cmdlet per fare il lavoro. Il debugger VS è ancora migliore persino delle funzionalità di debug V2.

Problemi correlati