Distribuire e rimuovere applicazioni con PowerShellDeploy and remove applications using PowerShell


Dopo aver creato il pacchetto di un tipo di applicazione, è possibile distribuirlo in un cluster di Azure Service Fabric.Once an application type has been packaged, it's ready for deployment into an Azure Service Fabric cluster. La distribuzione prevede i tre passaggi seguenti:Deployment involves the following three steps:

  1. Caricamento del pacchetto dell'applicazione nell'archivio di immaginiUpload the application package to the image store
  2. Registrare il tipo di applicazioneRegister the application type
  3. Creare l'istanza dell'applicazioneCreate the application instance

Dopo che un'applicazione è stata distribuita e un'istanza è in esecuzione nel cluster, è possibile eliminare l'istanza dell'applicazione e il tipo di applicazione corrispondente.After an application is deployed and an instance is running in the cluster, you can delete the application instance and its application type. Per rimuovere completamente un'applicazione dal cluster, sono necessari i passaggi seguenti:To completely remove an application from the cluster involves the following steps:

  1. Rimuovere (o eliminare) l'istanza dell'applicazione in esecuzioneRemove (or delete) the running application instance
  2. Annullare la registrazione del tipo di applicazione se non è più necessarioUnregister the application type if you no longer need it
  3. Rimuovere il pacchetto applicazione da Image Store.Remove the application package from the image store

Se si usa Visual Studio per eseguire la distribuzione e il debug delle applicazioni nel cluster di sviluppo locale, tutti i passaggi precedenti vengono gestiti automaticamente tramite uno script di PowerShell.If you use Visual Studio for deploying and debugging applications on your local development cluster, all the preceding steps are handled automatically through a PowerShell script. Questo script è disponibile nella cartella Scripts del progetto dell'applicazione.This script is found in the Scripts folder of the application project. Questo articolo illustra le operazioni eseguite da tali script per consentirne l'esecuzione anche all'esterno di Visual Studio.This article provides background on what that script is doing so that you can perform the same operations outside of Visual Studio.

Connettersi al clusterConnect to the cluster

Prima di eseguire qualsiasi comando PowerShell incluso in questo articolo, iniziare sempre usando Connect-ServiceFabricCluster per connettersi al cluster di Service Fabric.Before you run any PowerShell commands in this article, always start by using Connect-ServiceFabricCluster to connect to the Service Fabric cluster. Per connettersi al cluster di sviluppo locale eseguire le operazioni seguenti:To connect to the local development cluster, run the following:

PS C:\>Connect-ServiceFabricCluster

Per alcuni esempi di connessione a un cluster remoto o a un cluster protetto mediante Azure Active Directory, certificati X509 o Windows Active Directory, vedere Connettersi a un cluster sicuro.For examples of connecting to a remote cluster or cluster secured using Azure Active Directory, X509 certificates, or Windows Active Directory see Connect to a secure cluster.

Caricare il pacchetto applicazioneUpload the application package

Quando si carica il pacchetto dell’applicazione, la si inserisce in un percorso accessibile ai componenti interni di Service Fabric.Uploading the application package puts it in a location that's accessible by internal Service Fabric components. Se si desidera verificare il pacchetto dell'applicazione in locale, usare il cmdlet Test-ServiceFabricApplicationPackage.If you want to verify the application package locally, use the Test-ServiceFabricApplicationPackage cmdlet.

Il comando Copy-ServiceFabricApplicationPackage consente di caricare il pacchetto dell'applicazione nell'archivio di immagini del cluster.The Copy-ServiceFabricApplicationPackage command uploads the application package to the cluster image store.

Si supponga di compilare e assemblare un'applicazione denominata MyApplication in Visual Studio 2015.Suppose you build and package an application named MyApplication in Visual Studio 2015. Per impostazione predefinita, il nome del tipo di applicazione elencato nel file ApplicationManifest.xml è "MyApplicationType".By default, the application type name listed in the ApplicationManifest.xml is "MyApplicationType". Il pacchetto dell'applicazione, che contiene il manifesto dell'applicazione necessario, i manifesti dei servizi e i pacchetti di codice, configurazione e dati, si trova in C:\Users<username>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug.The application package, which contains the necessary application manifest, service manifests, and code/config/data packages, is located in C:\Users<username>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug.

Il comando seguente elenca il contenuto del pacchetto dell'applicazione:The following command lists the contents of the application package:

PS C:\> $path = 'C:\Users\<user\>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug'
PS C:\> tree /f $path
Folder PATH listing for volume OSDisk
Volume serial number is 0459-2393
C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\MYAPPLICATION\MYAPPLICATION\PKG\DEBUG
│   ApplicationManifest.xml
│
└───Stateless1Pkg
    │   ServiceManifest.xml
    │
    ├───Code
    │       Microsoft.ServiceFabric.Data.dll
    │       Microsoft.ServiceFabric.Data.Interfaces.dll
    │       Microsoft.ServiceFabric.Internal.dll
    │       Microsoft.ServiceFabric.Internal.Strings.dll
    │       Microsoft.ServiceFabric.Services.dll
    │       ServiceFabricServiceModel.dll
    │       Stateless1.exe
    │       Stateless1.exe.config
    │       Stateless1.pdb
    │       System.Fabric.dll
    │       System.Fabric.Strings.dll
    │
    └───Config
            Settings.xml

Se il pacchetto dell'applicazione è di grandi dimensioni e/o dispone di molti file, è possibile comprimerlo.If the application package is large and/or has many files, you can compress it. La compressione riduce le dimensioni e il numero di file.The compression reduces the size and the number of files. L'effetto collaterale è che la registrazione e l'annullamento della registrazione del tipo di applicazione sono più veloci.The side effect is that registering and un-registering the application type are faster. Il tempo di caricamento potrebbe attualmente risultare più lento, specialmente se si include il tempo per comprimere il pacchetto.Upload time may be slower currently, especially if you include the time to compress the package.

Per comprimere un pacchetto, usare il medesimo comando Copy-ServiceFabricApplicationPackage.To compress a package, use the same Copy-ServiceFabricApplicationPackage command. La compressione può avere luogo separatamente dal caricamento, tramite il flag SkipCopy, oppure contemporaneamente.Compression can be done separate from upload, by using the SkipCopy flag, or together with the upload operation. L'applicazione della compressione a un pacchetto compresso è no-op.Applying compression on a compressed package is no-op. Per decomprimere un pacchetto compresso, usare il medesimo comando Copy-ServiceFabricApplicationPackage con lo switch UncompressPackage.To uncompress a compressed package, use the same Copy-ServiceFabricApplicationPackage command with the UncompressPackage switch.

Il cmdlet seguente comprime il pacchetto senza copiarlo nell'archivio immagini.The following cmdlet compresses the package without copying it to the image store. Ora il pacchetto include i file compressi per i pacchetti Code e Config.The package now includes zipped files for the Code and Config packages. I manifesti dell'applicazione e del servizio non sono compressi in quanto necessari per numerose operazioni interne, come la condivisione dei pacchetti e l'estrazione del nome e della versione del tipo di applicazione per determinate convalide.The application and the service manifests are not zipped, because they are needed for many internal operations (like package sharing, application type name and version extraction for certain validations). La compressione dei manifesti renderebbe inefficienti tali operazioni.Zipping the manifests would make these operations inefficient.

PS C:\> Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -CompressPackage -SkipCopy
PS C:\> tree /f $path
Folder PATH listing for volume OSDisk
Volume serial number is 0459-2393
C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\MYAPPLICATION\MYAPPLICATION\PKG\DEBUG
|   ApplicationManifest.xml
|
└───Stateless1Pkg
       Code.zip
       Config.zip
       ServiceManifest.xml

Per i pacchetti di applicazione di grandi dimensioni, la compressione richiede tempo.For large application packages, the compression takes time. Per ottenere risultati ottimali, usare un'unità SSD rapida.For best results, use a fast SSD drive. Anche i tempi di compressione e la dimensione del pacchetto compresso variano in base al contenuto del pacchetto.The compression times and the size of the compressed package also differ based on the package content. Ad esempio, ecco le statistiche della compressione per alcuni pacchetti, che mostrano le dimensioni del pacchetto iniziale e di quello compresso, insieme al tempo di compressione.For example, here is compression statistics for some packages, which show the initial and the compressed package size, with the compression time.

Dimensioni iniziali (MB)Initial size (MB) Numero di fileFile count Tempo di compressioneCompression Time Dimensioni pacchetto compresso (MB)Compressed package size (MB)
100100 100100 00:00:03.354759200:00:03.3547592 6060
512512 100100 00:00:16.385030300:00:16.3850303 307307
10241024 500500 00:00:32.590795000:00:32.5907950 615615
20482048 10001000 00:01:04.377555400:01:04.3775554 12311231
50125012 100100 00:02:45.295128800:02:45.2951288 30743074

Una volta compresso, un pacchetto può essere caricato in uno o più cluster di Service Fabric in base alle necessità.Once a package is compressed, it can be uploaded to one or multiple Service Fabric clusters as needed. Il meccanismo di distribuzione è lo stesso per i pacchetti compressi e non.The deployment mechanism is same for compressed and uncompressed packages. Se il pacchetto è compresso, viene archiviato come tale nell'archivio immagini del cluster e viene decompresso nel nodo prima dell'esecuzione dell'applicazione.If the package is compressed, it is stored as such in the cluster image store and it's uncompressed on the node before the application is run.

L'esempio seguente carica il pacchetto nell'archivio di immagini, in una cartella denominata "MyApplicationV1":The following example uploads the package to the image store, into a folder named "MyApplicationV1":

PS C:\> Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -ApplicationPackagePathInImageStore MyApplicationV1 -TimeoutSec 1800

Se non si specifica il parametro -ApplicationPackagePathInImageStore, il pacchetto dell'applicazione viene copiato nella cartella "Debug" dell'archivio immagini.If you do not specify the -ApplicationPackagePathInImageStore parameter, the application package is copied into the "Debug" folder in the image store.

Nota

Se la sessione di PowerShell è connessa a un cluster di Service Fabric, Copy-ServiceFabricApplicationPackage rileverà automaticamente la stringa di connessione dell'archivio immagini appropriata.Copy-ServiceFabricApplicationPackage will automatically detect the appropriate image store connection string if the PowerShell session is connected to a Service Fabric cluster. Per le versioni di Service Fabric precedenti alla versione 5.6, l'argomento -ImageStoreConnectionString deve essere specificato in modo esplicito.For Service Fabric versions older than 5.6, the -ImageStoreConnectionString argument must be explicitly provided.

PS C:\> Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -ApplicationPackagePathInImageStore MyApplicationV1 -ImageStoreConnectionString (Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)) -TimeoutSec 1800

Il cmdlet Get-ImageStoreConnectionStringFromClusterManifest , che fa parte del modulo PowerShell Service Fabric SDK, viene usato per ottenere la stringa di connessione dell'archivio immagini.The Get-ImageStoreConnectionStringFromClusterManifest cmdlet, which is part of the Service Fabric SDK PowerShell module, is used to get the image store connection string. Per importare il modulo SDK, eseguire:To import the SDK module, run:

Import-Module "$ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

Per informazioni agguntive sull'archivio di immagini e ImageStoreConnectionString, vedere Understand the image store connection string (Comprendere la stringa di connessione dell'archivio di immagini).See Understand the image store connection string for supplementary information about the image store and image store connection string.

Il tempo necessario per caricare un pacchetto varia in base a diversi fattori.The time it takes to upload a package differs depending on multiple factors. Tra questi, ad esempio, il numero di file nel pacchetto, le dimensioni del pacchetto stesso e dei file singoli.Some of these factors are the number of files in the package, the package size, and the file sizes. Anche la velocità di rete tra il computer di origine e il cluster di Service Fabric influisce sul tempo di caricamento.The network speed between the source machine and the Service Fabric cluster also impacts the upload time. Il timeout predefinito per Copy-ServiceFabricApplicationPackage è di 30 minuti.The default timeout for Copy-ServiceFabricApplicationPackage is 30 minutes. In base ai fattori descritti, potrebbe essere necessario aumentare il timeout.Depending on the described factors, you may have to increase the timeout. Se si sta eseguendo la compressione del pacchetto nella chiamata di copia, è necessario considerare anche il tempo di compressione.If you are compressing the package in the copy call, you need to also consider the compression time.

Registrare il pacchetto applicazioneRegister the application package

Quando si registra il pacchetto dell'applicazione, il tipo e la versione dell'applicazione dichiarati nel manifesto di quest'ultima diventano disponibili per l'uso.The application type and version declared in the application manifest become available for use when the application package is registered. Il sistema leggerà il pacchetto caricato al passaggio precedente, lo verificherà, ne elaborerà il contenuto e infine copierà il pacchetto elaborato in un percorso di sistema interno.The system reads the package uploaded in the previous step, verifies the package, processes the package contents, and copies the processed package to an internal system location.

Eseguire il cmdlet Register-ServiceFabricApplicationType per registrare il tipo di applicazione nel cluster e renderlo disponibile per la distribuzione:Run the Register-ServiceFabricApplicationType cmdlet to register the application type in the cluster and make it available for deployment:

PS C:\> Register-ServiceFabricApplicationType MyApplicationV1
Register application type succeeded

"MyApplicationV1" è la cartella nell'archivio immagini in cui si trova il pacchetto dell'applicazione."MyApplicationV1" is the folder in the image store where the application package is located. Il tipo di applicazione con il nome "MyApplicationType" e la versione "1.0.0" (entrambi si trovano nel manifesto dell'applicazione) è registrato nel cluster.The application type with name "MyApplicationType" and version "1.0.0" (both are found in the application manifest) is now registered in the cluster.

Il comando Register-ServiceFabricApplicationType restituirà il controllo solo dopo che il sistema avrà registrato correttamente il pacchetto dell'applicazione.The Register-ServiceFabricApplicationType command returns only after the system has successfully registered the application package. La durata della registrazione dipende dalla dimensione e dal contenuto del pacchetto.How long registration takes depends on the size and contents of the application package. Se necessario, è possibile usare il parametro -TimeoutSec per specificare un intervallo di tempo più esteso per il timeout. Il timeout predefinito è di 60 secondi.If needed, the -TimeoutSec parameter can be used to supply a longer timeout (the default timeout is 60 seconds).

Se si dispone di un pacchetto dell'applicazione di grandi dimensioni o se si verificano timeout, usare il parametro -Async.If you have a large application package or if you are experiencing timeouts, use the -Async parameter. Il comando restituisce un valore quando il cluster accetta il comando di registrazione e l'elaborazione continua come da richiesta.The command returns when the cluster accepts the register command, and the processing continues as needed. Il comando Get-ServiceFabricApplicationType elenca tutte le versioni del tipo di applicazione registrate correttamente e il loro stato di registrazione.The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. È possibile usare questo comando per determinare quando viene eseguita la registrazione.You can use this command to determine when the registration is done.

PS C:\> Get-ServiceFabricApplicationType

ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Rimuovere il pacchetto di un'applicazione dall'archivio di immaginiRemove an application package from the image store

Al termine della registrazione dell'applicazione, è consigliabile rimuovere il pacchetto dell'applicazione.It's recommended that you remove the application package after the application is successfully registered. L'eliminazione dei pacchetti di applicazioni dall'archivio immagini consente di liberare risorse di sistema.Deleting application packages from the image store frees up system resources. Conservando pacchetti inutilizzati, viene occupato spazio di archiviazione su disco e si verificano problemi di prestazioni delle applicazioni.Keeping unused application packages consumes disk storage and leads to application performance issues.

PS C:\>Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore MyApplicationV1

Creazione dell'applicazioneCreate the application

È possibile creare un'istanza di un'applicazione da qualsiasi versione del tipo di applicazione registrata mediante il cmdlet New-ServiceFabricApplication.You can instantiate an application from any application type version that has been registered successfully by using the New-ServiceFabricApplication cmdlet. Il nome di ogni applicazione deve iniziare con lo schema "fabric:" e deve essere univoco per ogni istanza dell'applicazione.The name of each application must start with the "fabric:" scheme and must be unique for each application instance. Vengono creati anche i servizi predefiniti specificati nel manifesto dell'applicazione del tipo di applicazione di destinazione.Any default services defined in the application manifest of the target application type are also created.

PS C:\> New-ServiceFabricApplication fabric:/MyApp MyApplicationType 1.0.0

ApplicationName        : fabric:/MyApp
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
ApplicationParameters  : {}

Per qualsiasi versione di un tipo di applicazione registrato, è possibile creare più istanze dell'applicazione.Multiple application instances can be created for any given version of a registered application type. Ogni istanza viene eseguita in isolamento, con un proprio processo e una propria directory di lavoro.Each application instance runs in isolation, with its own work directory and process.

Per vedere quali app e servizi sono in esecuzione nel cluster, eseguire i cmdlet Get-ServiceFabricApplication e Get-ServiceFabricService:To see which named apps and services are running in the cluster, run the Get-ServiceFabricApplication and Get-ServiceFabricService cmdlets:

PS C:\> Get-ServiceFabricApplication  

ApplicationName        : fabric:/MyApp
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
ApplicationStatus      : Ready
HealthState            : Ok
ApplicationParameters  : {}

PS C:\> Get-ServiceFabricApplication | Get-ServiceFabricService

ServiceName            : fabric:/MyApp/Stateless1
ServiceKind            : Stateless
ServiceTypeName        : Stateless1Type
IsServiceGroup         : False
ServiceManifestVersion : 1.0.0
ServiceStatus          : Active
HealthState            : Ok

Rimuovere un'applicazioneRemove an application

Quando un'istanza dell'applicazione non è più necessaria, è possibile rimuoverla definitivamente per nome usando il cmdlet Remove-ServiceFabricApplication.When an application instance is no longer needed, you can permanently remove it by name using the Remove-ServiceFabricApplication cmdlet. Remove-ServiceFabricApplication rimuove automaticamente anche tutti i servizi appartenenti all'applicazione, nonché il relativo stato di servizio.Remove-ServiceFabricApplication automatically removes all services that belong to the application as well, permanently removing all service state.

Avviso

Tale operazione non può essere annullata e lo stato dell'applicazione non può essere recuperato.This operation cannot be reversed, and application state cannot be recovered.

PS C:\> Remove-ServiceFabricApplication fabric:/MyApp

Confirm
Continue with this operation?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
Remove application instance succeeded

PS C:\> Get-ServiceFabricApplication

Annullare la registrazione di un tipo di applicazioneUnregister an application type

Quando una determinata versione di un tipo di applicazione non è più necessaria, è consigliabile annullare la registrazione del tipo di applicazione usando il cmdlet Unregister-ServiceFabricApplicationType.When a particular version of an application type is no longer needed, you should unregister the application type using the Unregister-ServiceFabricApplicationType cmdlet. L'annullamento della registrazione dei tipi di applicazione inutilizzati rilascia lo spazio di archiviazione usato dall'archivio di immagini rimuovendo i file binari dell'applicazione.Unregistering unused application types releases storage space used by the image store by removing application binaries. L'annullamento della registrazione di un tipo di applicazione non rimuove il pacchetto dell'applicazione.Unregistering an application type does not remove the application package. È possibile annullare la registrazione di un tipo di applicazione solo se non sono state create istanze di applicazioni basate su di esso o non vi sono aggiornamenti di applicazioni in sospeso che vi fanno riferimento.An application type can be unregistered as long as no applications are instantiated against it and no pending application upgrades are referencing it.

Eseguire Get-ServiceFabricApplicationType per vedere i tipi di applicazione attualmente registrati nel cluster:Run Get-ServiceFabricApplicationType to see the application types currently registered in the cluster:

PS C:\> Get-ServiceFabricApplicationType

ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Eseguire Unregister-ServiceFabricApplicationType per annullare la registrazione di un tipo di applicazione specifico:Run Unregister-ServiceFabricApplicationType to unregister a specific application type:

PS C:\> Unregister-ServiceFabricApplicationType MyApplicationType 1.0.0

Risoluzione dei problemiTroubleshooting

Copy-ServiceFabricApplicationPackage chiede un parametro ImageStoreConnectionStringCopy-ServiceFabricApplicationPackage asks for an ImageStoreConnectionString

Nell'ambiente Service Fabric SDK dovrebbero già essere configurate le impostazioni predefinite corrette.The Service Fabric SDK environment should already have the correct defaults set up. Tuttavia, se necessario, ImageStoreConnectionString per tutti i comandi deve corrispondere al valore che viene usato dal cluster Service Fabric.But if needed, the ImageStoreConnectionString for all commands should match the value that the Service Fabric cluster is using. È possibile trovare ImageStoreConnectionString nel manifesto del cluster, recuperato tramite i comandi Get-ServiceFabricClusterManifest e Get-ImageStoreConnectionStringFromClusterManifest:You can find the ImageStoreConnectionString in the cluster manifest, retrieved using the Get-ServiceFabricClusterManifest and Get-ImageStoreConnectionStringFromClusterManifest commands:

PS C:\> Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)

Il cmdlet Get-ImageStoreConnectionStringFromClusterManifest , che fa parte del modulo PowerShell Service Fabric SDK, viene usato per ottenere la stringa di connessione dell'archivio immagini.The Get-ImageStoreConnectionStringFromClusterManifest cmdlet, which is part of the Service Fabric SDK PowerShell module, is used to get the image store connection string. Per importare il modulo SDK, eseguire:To import the SDK module, run:

Import-Module "$ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

ImageStoreConnectionString è disponibile nel manifesto del cluster:The ImageStoreConnectionString is found in the cluster manifest:

<ClusterManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="Server-Default-SingleNode" Version="1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">

    [...]

    <Section Name="Management">
      <Parameter Name="ImageStoreConnectionString" Value="file:D:\ServiceFabric\Data\ImageStore" />
    </Section>

    [...]

Per informazioni agguntive sull'archivio di immagini e ImageStoreConnectionString, vedere Understand the image store connection string (Comprendere la stringa di connessione dell'archivio di immagini).See Understand the image store connection string for supplementary information about the image store and image store connection string.

Distribuire un pacchetto dell'applicazione di grandi dimensioniDeploy large application package

Problema: Copy-ServiceFabricApplicationPackage raggiunge il timeout per un pacchetto dell'applicazione di grandi dimensioni (nell'ordine di GB).Issue: Copy-ServiceFabricApplicationPackage times out for a large application package (order of GB). Soluzione:Try:

  • Specificare un timeout maggiore per il comando Copy-ServiceFabricApplicationPackage, con il parametro TimeoutSec.Specify a larger timeout for Copy-ServiceFabricApplicationPackage command, with TimeoutSec parameter. Il timeout è di 30 minuti per impostazione predefinita.By default, the timeout is 30 minutes.
  • Controllare la connessione di rete tra il computer di origine e il cluster.Check the network connection between your source machine and cluster. Se la connessione è lenta, provare a usare una macchina con una connessione di rete più veloce.If the connection is slow, consider using a machine with a better network connection. Se il computer client si trova in un'area diversa dal cluster, si consiglia di usare un computer cliente in un'area più vicina o nella stessa area del cluster.If the client machine is in another region than the cluster, consider using a client machine in a closer or same region as the cluster.
  • Controllare se si stiano raggiungendo le limitazioni esterne.Check if you are hitting external throttling. Ad esempio, quando l'archivio immagini è configurato per usare l'archiviazione di Azure, il caricamento potrebbe essere limitato.For example, when the image store is configured to use azure storage, upload may be throttled.

Problema: Il pacchetto è stato caricato completamente ma si è verificato un timeout di Register-ServiceFabricApplicationType. Soluzione:Issue: Upload package completed successfully, but Register-ServiceFabricApplicationType times out. Try:

  • Comprimere il pacchetto prima di copiarlo nell'archivio immagini.Compress the package before copying to the image store. La compressione riduce le dimensioni e il numero di file, cosa che a sua volta riduce il traffico e le operazioni di Service Fabric.The compression reduces the size and the number of files, which in turn reduces the amount of traffic and work that Service Fabric must perform. L'operazione di caricamento potrebbe risultare più lenta (specialmente se si include il tempo di compressione), ma registrazione e relativo annullamento del tipo dell'applicazione saranno più veloci.The upload operation may be slower (especially if you include the compression time), but register and un-register the application type are faster.
  • Specificare un timeout maggiore per il comando Register-ServiceFabricApplicationType, con il parametro TimeoutSec.Specify a larger timeout for Register-ServiceFabricApplicationType with TimeoutSec parameter.
  • Specificare lo switch Async per Register-ServiceFabricApplicationType.Specify Async switch for Register-ServiceFabricApplicationType. Il comando viene completato quando il cluster accetta il comando e la registrazione del tipo di applicazione continua in modo asincrono.The command returns when the cluster accepts the command and the registration of the application type continues asynchronously. Per questo motivo, in questo caso non è necessario specificare un timeout maggiore.For this reason, there is no need to specify a higher timeout in this case. Il comando Get-ServiceFabricApplicationType elenca tutte le versioni del tipo di applicazione registrate correttamente e il loro stato di registrazione.The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. È possibile usare questo comando per determinare quando viene eseguita la registrazione.You can use this command to determine when the registration is done.
PS C:\> Get-ServiceFabricApplicationType

ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Distribuire un pacchetto di applicazione con numerosi fileDeploy application package with many files

Problema: Si verifica un timeout di Register-ServiceFabricApplicationType per un pacchetto di applicazione con molti file (nell'ordine di migliaia).Issue: Register-ServiceFabricApplicationType times out for an application package with many files (order of thousands). Soluzione:Try:

  • Comprimere il pacchetto prima di copiarlo nell'archivio immagini.Compress the package before copying to the image store. La compressione riduce il numero dei file.The compression reduces the number of files.
  • Specificare un timeout maggiore per il comando Register-ServiceFabricApplicationType, con il parametro TimeoutSec.Specify a larger timeout for Register-ServiceFabricApplicationType with TimeoutSec parameter.
  • Specificare lo switch Async per Register-ServiceFabricApplicationType.Specify Async switch for Register-ServiceFabricApplicationType. Il comando viene completato quando il cluster accetta il comando e la registrazione del tipo di applicazione continua in modo asincrono.The command returns when the cluster accepts the command and the registration of the application type continues asynchronously. Per questo motivo, in questo caso non è necessario specificare un timeout maggiore.For this reason, there is no need to specify a higher timeout in this case. Il comando Get-ServiceFabricApplicationType elenca tutte le versioni del tipo di applicazione registrate correttamente e il loro stato di registrazione.The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. È possibile usare questo comando per determinare quando viene eseguita la registrazione.You can use this command to determine when the registration is done.
PS C:\> Get-ServiceFabricApplicationType

ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Passaggi successiviNext steps

Aggiornamento di un'applicazione di infrastruttura di serviziService Fabric application upgrade

Introduzione all'integrità di Service FabricService Fabric health introduction

Eseguire la diagnosi e la risoluzione dei problemi di un servizio di Service FabricDiagnose and troubleshoot a Service Fabric service

Modellare un'applicazione in Service FabricModel an application in Service Fabric