Applicazione da riga di comando per la gestione del data warehouse - App console PowerShell o C #

StackOverflow https://stackoverflow.com/questions/344561

  •  19-08-2019
  •  | 
  •  

Domanda

Prefazione questa domanda dicendo che è per un negozio solo Microsoft.

Se dovessi scrivere un'app console per gestire un data warehouse, cosa utilizzeresti:
1) Scrivere un ambiente personalizzato per PowerShell (con le ultime versioni di Exchange / SQL Server)
2) Scrivilo come un'app console C #

Se # 2 ci sono dei framework che eseguono l'offload scrivendo un "sistema di menu" o qualsiasi altra attività per te.

Se questa app dovesse durare dai 6 agli 8 anni, utilizzeresti PowerShell? Al momento nessuno nel team ha esperienza con PowerShell, ma siamo studenti veloci.

È stato utile?

Soluzione

Se si scrive la funzionalità di gestione come cmdlet di PowerShell, è possibile emergere tale funzionalità sia lasciando che le persone eseguano direttamente i cmdlet o avvolgendoli in una GUI. L'utilizzo di PowerShell ti offre probabilmente la massima flessibilità a lungo termine e, poiché MS implementa più cmdlet PowerShell, significa che la gestione del data warehouse potrebbe essere incorporata con altri processi aziendali più grandi, se necessario. Probabilmente NON sceglierei di scrivere un'app console C #, ma ho un "amministratore" decisamente più " prospettiva. Noi amministratori siamo stanchi di lanciarci app personalizzate per console: l'idea di PowerShell è standardizzare tutto in un modo che supporti l'amministrazione della riga di comando e della GUI.

Altri suggerimenti

Penso che tu possa avere successo con entrambi, e dovresti essere in grado di passare tra i due senza troppi problemi. Se inizi a creare un'app console ma apprendi PowerShell in un secondo momento, puoi eliminare molto del codice specifico dell'app console (ad esempio il codice di analisi della riga di comando) e creare alcuni cmdlet di PowerShell per racchiudere l'API esistente. Oppure, se costruisci un gruppo di Cmdlet fuori dal gate, ma devi passare a un'app console in seguito, non avrai perso molto tempo a scrivere i Cmdlet.

Quindi, non ho davvero un forte consiglio in un modo o nell'altro. Dirò: ehi, vai a provare PowerShell. Se non ti piace, non è troppo difficile cambiare.

Ho scoperto che PowerShell è una soluzione molto più gestibile per le cose più piccole. Le app della console richiedono il ricollegamento in nuove librerie e la ricompilazione e la ridistribuzione quando le librerie da cui dipendi cambiano (nel mio caso passando da Visual Studio 2005 - Visual Studio 2008 al codecoverage e altre cose) così come gli eseguibili che i tuoi script possono chiamare vsinstr, mstest, ecc. dove come con gli script di PowerShell puoi facilmente personalizzare per ogni ambiente che hai e non devi passare attraverso la compilazione, il collegamento, distribuire elementi per ogni ambiente che scegli. In effetti, se ottieni le informazioni sul tuo percorso dal registro, lo stesso script può essere eseguito in entrambi gli ambienti.

Puoi fare tutto ciò che vuoi con entrambi, preferisco solo dover mantenere un singolo file di testo semplice, quindi un'app console. Solo preferenze personali.

Quando dici di gestire un data warehouse, di che tipo di attività stai parlando?

Gran parte della gestione che farei in T-SQL (eliminazione, archiviazione, trasformazione) - l'interfaccia con quella può essere molto sottile (anche inesistente).

OK, in base al tuo commento avrei il codice che fa tutto il lavoro in un proc memorizzato con un assembly .NET (tipica libreria di classi API), il più possibile nei proc memorizzati, con l'assembly per cose che è più facile fatto lì o che richiede COM o altro. Vorrei quindi avvolgere la libreria di classi in cmdlet o semplicemente chiamare gli oggetti .NET da PowerShell (ricordare che PowerShell può creare un'istanza di oggetti).

Ora hai una libreria .NET che può anche essere chiamata da pagine Web, app GUI, qualunque cosa tu voglia, e hai un cmdlet e un'interfaccia .NET diretta, oltre all'opzione di chiamarli da SQL se sono completamente implementati a livello SQL.

La bellezza dell'implementazione di PowerShell invece di un'app cosole è che non è necessario codificare tutti i parametri di analisi o tutta la formattazione. PowerShell si occupa di tutto ciò per te. È possibile, ovviamente, ignorare le impostazioni predefinite, se necessario. È possibile ottenere caratteri jolly gratuitamente. Puoi anche fare in modo che i tuoi Cmdlet prendano valori dalla pipeline che apre tutti i tipi di possibilità e usi per l'automazione. Con PowerShell, sia l'utente finale che lo sviluppatore avranno un'esperienza molto migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top