Leggere in inglese

Condividi tramite


Modulo client di PowerShell

Il modulo client di PowerShell in Orleans è un set di cmdlet di PowerShell che esegue il wrapping dell'oggetto GrainClient. Il modulo fornisce un set di comandi pratici che consentono di interagire non solo con il ManagementGrain, ma anche con qualsiasi IGrain, proprio come una normale applicazione di Orleans può usare gli script di PowerShell.

Questi cmdlet rendono possibili vari scenari, dall'avvio di attività di manutenzione, test, monitoraggio a qualsiasi altro tipo di automazione, sfruttando gli script di PowerShell.

Installare il modulo

Per installare questo modulo dal codice sorgente, è possibile creare una build usando il progetto OrleansPSUtils e importarla con:

PowerShell
Import-Module .\projectOutputDir\Orleans.psd1

Esiste comunque anche un modo molto più semplice e interessante per eseguire questa operazione, ossia l'installazione da PowerShell Gallery. I moduli di PowerShell sono facilmente condivisi, in modo molto simile ai pacchetti Nuget, ma sono ospitati in PowerShell Gallery invece che in nuget.org.

Per installare questo modulo da PowerShell Gallery, eseguire il comando seguente nella cartella desiderata:

PowerShell
Save-Module -Name OrleansPSUtils -Path <path>

Per installarlo nel percorso dei moduli di PowerShell (soluzione consigliata), eseguire:

PowerShell
Install-Module -Name OrleansPSUtils

Se si prevede di usare questo modulo in un'istanza di Automazione di Azure, usare questo collegamento.

Usare il modulo

Indipendentemente dalla modalità di installazione desiderata, è necessario importare il modulo nella sessione di PowerShell corrente, in modo da rendere disponibili i cmdlet, eseguendo questo comando:

PowerShell
Import-Module OrleansPSUtils

Importante

Se si è creata una build dal codice sorgente, è necessario importarla come suggerito nella sezione Installare il modulo usando il percorso del file con estensione .psd1 anziché il nome del modulo perché quest'ultimo non si troverà nella variabile di runtime di PowerShell $env:PSModulePath. È comunque altamente consigliabile installare il modulo da PowerShell Gallery.

Dopo l'importazione del modulo, che verrà quindi caricato nella sessione di PowerShell, saranno disponibili i cmdlet seguenti:

  • Start-GrainClient
  • Stop-GrainClient
  • Get-Grain

Avviare GrainClient

Questo modulo è un wrapper per GrainClient.Initialize() e i relativi overload.

Start-GrainClient

Questo cmdlet equivale a una chiamata a GrainClient.Initialize(), che cercherà i nomi di file di configurazione noti del client Orleans:

PowerShell
Start-GrainClient [-ConfigFilePath] <string> [[-Timeout] <timespan>]

Il comando precedente userà il percorso di file specificato, come in GrainClient.Initialize(filePath).

PowerShell
Start-GrainClient [-ConfigFile] <FileInfo> [[-Timeout] <timespan>]

Il comando precedente userà un'istanza della classe FileInfo che rappresenta il file di configurazione, come in GrainClient.Initialize(fileInfo).

PowerShell
Start-GrainClient [-Config] <ClientConfiguration> [[-Timeout] <timespan>]

Il comando precedente userà un'istanza di ClientConfiguration, come in GrainClient.Initialize(config).

PowerShell
Start-GrainClient [-GatewayAddress] <IPEndPoint> [[-OverrideConfig] <bool>] [[-Timeout] <timespan>]

Il comando precedente accetta un endpoint dell'indirizzo del gateway del cluster Orleans.

Suggerimento

Il parametro Timeout è facoltativo e, se specificato e maggiore di TimeSpan.Zero, chiamerà GrainClient.SetResponseTimeout(TimeSpan) internamente.

Arrestare GrainClient

Per arrestare l'oggetto GrainClient, chiamare il comando seguente:

PowerShell
Stop-GrainClient

Il comando precedente non accetta parametri e, quando viene chiamato, annulla normalmente l'inizializzazione dell'oggetto GrainClient, se inizializzato.

Ottenere un oggetto Grain

Per ottenere un oggetto Grain, questo cmdlet è un wrapper per GrainClient.GrainFactory.GetGrain<T>() e i relativi overload. Il parametro obbligatorio è -GrainType, insieme a -XXXKey, per i tipi di chiave dei grani correnti supportati da Orleans (string, Guid, long), e a -KeyExtension, che può essere usato sui grani con chiavi composte.

Questo cmdlet restituisce un riferimento al grano del tipo passato come parametro in -GrainType. Ecco un esempio di chiamata al metodo MyInterfacesNamespace.IMyGrain.SayHelloTo per un grano:

PowerShell
Import-Module OrleansPSUtils
$configFilePath = Resolve-Path(".\ClientConfig.xml").Path
Start-GrainClient -ConfigFilePath $configFilePath
Add-Type -Path .\MyGrainInterfaceAssembly.dll
$grainInterfaceType = [MyInterfacesNamespace.IMyGrain]
$grainId = [System.Guid]::Parse("A4CF7B5D-9606-446D-ACE9-C900AC6BA3AD")
$grain = Get-Grain -GrainType $grainInterfaceType -GuidKey $grainId
$message = $grain.SayHelloTo("Gutemberg").Result
Write-Output $message
Hello Gutemberg!
Stop-GrainClient

Esistono altri cmdlet non descritti qui, ma è disponibile il supporto per osservatori, flussi e altre funzionalità principali di Orleans in modo più nativo in PowerShell.

Nota

La finalità non è quella di reimplementare l'intero client in PowerShell, ma di offrire ai team IT e DevOps una soluzione per interagire con i grani senza dover implementare un'applicazione .NET.