Modello di hosting di Azure Service FabricAzure Service Fabric hosting model

Questo articolo fornisce una panoramica dei modelli di hosting delle applicazioni offerti da Azure Service Fabric e descrive le differenze tra i modelli Shared Process (Processo condiviso) ed Exclusive Process (Processo esclusivo).This article provides an overview of application hosting models provided by Azure Service Fabric, and describes the differences between the Shared Process and Exclusive Process models. Descrive l'aspetto di un'applicazione in un nodo di Service Fabric e la relazione tra le repliche (o istanze) del servizio e il processo host servizio.It describes how a deployed application looks on a Service Fabric node, and the relationship between replicas (or instances) of the service and the service-host process.

Prima di procedere oltre, assicurarsi di avere compreso i diversi concetti e relazioni illustrati in Modellare un'applicazione in Service Fabric.Before proceeding further, be sure that you understand the various concepts and relationships explained in Model an application in Service Fabric.

Nota

In questo articolo, se non diversamente specificato:In this article, unless explicitly mentioned as meaning something different:

  • Replica si riferisce sia a una replica di un servizio con stato che a un'istanza di un servizio senza stato.Replica refers to both a replica of a stateful service and an instance of a stateless service.
  • CodePackage considerato equivalente a un processo ServiceHost che registra un ServiceType e ospita repliche dei servizi di tale ServiceType.CodePackage is treated as equivalent to a ServiceHost process that registers a ServiceType, and hosts replicas of services of that ServiceType.

Per comprendere il servizio di hosting, esaminare l'esempio seguente.To understand the hosting model, let's walk through an example. Si supponga di avere un ApplicationType "MyAppType" con un ServiceType "MyServiceType".Let's say we have an ApplicationType 'MyAppType', which has a ServiceType 'MyServiceType'. "MyServiceType" viene fornito dal ServicePackage "MyServicePackage", che ha un CodePackage "MyCodePackage".'MyServiceType' is provided by the ServicePackage 'MyServicePackage', which has a CodePackage 'MyCodePackage'. "MyServiceType" registra ServiceType "MyServiceType" quando viene eseguito.'MyCodePackage' registers ServiceType 'MyServiceType' when it runs.

Si supponga anche di avere un cluster a tre nodi e di creare un'applicazione fabric:/App1 di tipo "MyAppType".Let's say we have a three-node cluster, and we create an application fabric:/App1 of type 'MyAppType'. All'interno di questa applicazione fabric:/App1 viene creato un servizio fabric:/App1/ServiceA di tipo "MyServiceType".Inside this application fabric:/App1, we create a service fabric:/App1/ServiceA of type 'MyServiceType'. Questo servizio ha due partizioni (ad esempio, P1 e P2) e tre repliche per ogni partizione.This service has two partitions (for example, P1 and P2), and three replicas per partition. Il diagramma seguente mostra la visualizzazione di questa applicazione distribuita in un nodo.The following diagram shows the view of this application as it ends up deployed on a node.

Diagramma della visualizzazione del nodo dell'applicazione distribuita

Service Fabric ha attivato "MyServicePackage" che ha avviato "MyCodePackage". Quest'ultimo ospita repliche da entrambe le partizioni.Service Fabric activated 'MyServicePackage', which started 'MyCodePackage', which is hosting replicas from both the partitions. Tutti i nodi del cluster hanno la stessa visualizzazione perché è stato scelto un numero di repliche per partizione uguale al numero di nodi del cluster.All the nodes in the cluster have the same view, because we chose the number of replicas per partition to be equal to the number of nodes in the cluster. Verrà ora creato un altro servizio, fabric:/App1/ServiceB, nell'applicazione fabric:/App1.Let's create another service, fabric:/App1/ServiceB, in the application fabric:/App1. Questo servizio ha una partizione (ad esempio, P3) e tre repliche per ogni partizione.This service has one partition (for example, P3), and three replicas per partition. Il diagramma seguente mostra la nuova visualizzazione del nodo:The following diagram shows the new view on the node:

Diagramma della visualizzazione del nodo dell'applicazione distribuita

Service Fabric posiziona la nuova replica per la partizione P3 del servizio fabric:/App1/ServiceB nell'attivazione esistente di "MyServicePackage".Service Fabric placed the new replica for partition P3 of service fabric:/App1/ServiceB in the existing activation of 'MyServicePackage'. Verrà oraNow. creata un'altra applicazione fabric:/App2 di tipo "MyAppType".let's create another application fabric:/App2 of type 'MyAppType'. In fabric:/App2 creare un servizio fabric:/App2/ServiceA.Inside fabric:/App2, create a service fabric:/App2/ServiceA. Questo servizio ha due partizioni (P4 e P5) e tre repliche per ogni partizione.This service has two partitions (P4 and P5), and three replicas per partition. Il diagramma seguente mostra la nuova visualizzazione del nodo:The following diagram shows the new node view:

Diagramma della visualizzazione del nodo dell'applicazione distribuita

Service Fabric attiva una nuova copia di "MyServicePackage", che avvia una nuova copia di "MyServicePackage".Service Fabric activates a new copy of 'MyServicePackage', which starts a new copy of 'MyCodePackage'. Repliche di entrambe le partizioni del servizio fabric:/App2/ServiceA (P4 e P5) vengono posizionate in questa nuova copia "MyCodePackage".Replicas from both partitions of service fabric:/App2/ServiceA (P4 and P5) are placed in this new copy 'MyCodePackage'.

Modello Shared Process (Processo condiviso)Shared Process model

La sezione precedente descrive il modello di hosting predefinito offerto da Service Fabric, denominato Shared Process (Processo condiviso).The preceding section describes the default hosting model provided by Service Fabric, referred to as the Shared Process model. In questo modello, per una determinata applicazione, solo una copia di un determinato ServicePackage viene attivata in un nodo (avviando così tutti i CodePackages contenuti).In this model, for a given application, only one copy of a given ServicePackage is activated on a node (which starts all the CodePackages contained in it). Tutte le repliche di tutti i servizi di un determinato ServiceType vengono inserite nel CodePackage che registra tale ServiceType.All the replicas of all services of a given ServiceType are placed in the CodePackage that registers that ServiceType. In altre parole, tutte le repliche di tutti i servizi in un nodo con un determinato valore di ServiceType condividono lo stesso processo.In other words, all the replicas of all services on a node of a given ServiceType share the same process.

Modello Exclusive Process (Processo esclusivo)Exclusive Process model

L'altro modello di hosting offerto da Service Fabric è il modello Exclusive Process (Processo esclusivo).The other hosting model provided by Service Fabric is the Exclusive Process model. In questo modello ogni replica in un determinato nodo si trova nel proprio processo dedicato.In this model, on a given node, each replica lives in its own dedicated process. Service Fabric attiva una nuova copia di ServicePackage (che avvia tutti i CodePackages contenuti).Service Fabric activates a new copy of ServicePackage (which starts all the CodePackages contained in it). Le repliche vengono inserite nel CodePackage che ha registrato il ServiceType del servizio a cui appartiene la replica.Replicas are placed in the CodePackage that registered the ServiceType of the service to which the replica belongs.

Se si usa Service Fabric versione 5.6 o successiva, è possibile scegliere il modello Exclusive Process (Processo esclusivo) mentre si crea un servizio (usando PowerShell, REST o FabricClient).If you are using Service Fabric version 5.6 or later, you can choose the Exclusive Process model at the time you create a service (by using PowerShell, REST, or FabricClient). Specificare ServicePackageActivationMode come "ExclusiveProcess".Specify ServicePackageActivationMode as 'ExclusiveProcess'.

PS C:\>New-ServiceFabricService -ApplicationName "fabric:/App1" -ServiceName "fabric:/App1/ServiceA" -ServiceTypeName "MyServiceType" -Stateless -PartitionSchemeSingleton -InstanceCount -1 -ServicePackageActivationMode "ExclusiveProcess"
var serviceDescription = new StatelessServiceDescription
{
    ApplicationName = new Uri("fabric:/App1"),
    ServiceName = new Uri("fabric:/App1/ServiceA"),
    ServiceTypeName = "MyServiceType",
    PartitionSchemeDescription = new SingletonPartitionSchemeDescription(),
    InstanceCount = -1,
    ServicePackageActivationMode = ServicePackageActivationMode.ExclusiveProcess
};

var fabricClient = new FabricClient(clusterEndpoints);
await fabricClient.ServiceManager.CreateServiceAsync(serviceDescription);

Se nel manifesto dell'applicazione è presente un servizio predefinito, è possibile scegliere il modello Exclusive Process (Processo esclusivo) specificando l'attributo ServicePackageActivationMode:If you have a default service in your application manifest, you can choose the Exclusive Process model by specifying the ServicePackageActivationMode attribute:

<DefaultServices>
  <Service Name="MyService" ServicePackageActivationMode="ExclusiveProcess">
    <StatelessService ServiceTypeName="MyServiceType" InstanceCount="1">
      <SingletonPartition/>
    </StatelessService>
  </Service>
</DefaultServices>

Verrà ora creato un altro servizio, fabric:/App1/ServiceC, nell'applicazione fabric:/App1.Now let's create another service, fabric:/App1/ServiceC, in application fabric:/App1. Questo servizio ha due partizioni (ad esempio, P6 e P7) e tre repliche per ogni partizione.This service has two partitions (for example, P6 and P7), and three replicas per partition. Si imposta ServicePackageActivationMode su "ExclusiveProcess".You set ServicePackageActivationMode to 'ExclusiveProcess'. Il diagramma seguente mostra la nuova visualizzazione del nodo:The following diagram shows new view on the node:

Diagramma della visualizzazione del nodo dell'applicazione distribuita

Come è possibile notare, Service Fabric ha attivato due nuove copie di "MyServicePackage", una per ogni replica dalle partizioni P6 e P7.As you can see, Service Fabric activated two new copies of 'MyServicePackage' (one for each replica from partition P6 and P7). Service Fabric ha inserito ogni replica nella copia dedicata di CodePackage.Service Fabric placed each replica in its dedicated copy of CodePackage. Quando si usa il modello Exclusive Process (Processo esclusivo), per una determinata applicazione possono essere attive in un nodo più copie di un determinato ServicePackage.When you use the Exclusive Process model, for a given application, multiple copies of a given ServicePackage can be active on a node. Nell'esempio precedente le tre copie di "MyServicePackage" sono attive per fabric:/App1.In the preceding example, three copies of 'MyServicePackage' are active for fabric:/App1. A ognuna di queste copie di "MyServicePackage" è associato un valore ServicePackageActivationId.Each of these active copies of 'MyServicePackage' has a ServicePackageActivationId associated with it. Questo ID identifica tale copia nell'applicazione fabric:/App1.This ID identifies that copy within application fabric:/App1.

Quando si usa solo il modello Shared Process (Processo condiviso) per un'applicazione, è presente una sola copia attiva di ServicePackage in un nodo.When you use only the Shared Process model for an application, there is only one active copy of ServicePackage on a node. Il ServicePackageActivationId per questa attivazione di ServicePackage è una stringa vuotaThe ServicePackageActivationId for this activation of ServicePackage is an empty string. come, ad esempio, in fabric:/App2.This is the case, for example, with fabric:/App2.

Nota

  • Con il modello di hosting Shared Process (Processo condiviso), ServicePackageActivationMode è uguale a SharedProcess.The Shared Process hosting model corresponds to ServicePackageActivationMode equals SharedProcess. Si tratta del modello di hosting predefinito e non è necessario specificare il valore di ServicePackageActivationMode al momento della creazione del servizio.This is the default hosting model, and ServicePackageActivationMode need not be specified at the time of creating the service.

  • Con il modello di hosting Exclusive Process (Processo esclusivo), ServicePackageActivationMode è uguale a ExclusiveProcess.The Exclusive Process hosting model corresponds to ServicePackageActivationMode equals ExclusiveProcess. Per usare questa impostazione, è consigliabile specificarla in modo esplicito al momento della creazione del servizio.To use this setting, you should specify it explicitly at the time of creating the service.

  • Per visualizzare il modello di hosting di un servizio, eseguire una query relativa alla descrizione del servizio e cercare il valore di ServicePackageActivationMode.To view the hosting model of a service, query the service description, and look at the value of ServicePackageActivationMode.

Usare un pacchetto del servizio distribuitoWork with a deployed service package

Una copia attiva di un ServicePackage in un nodo viene definita pacchetto del servizio distribuito.An active copy of a ServicePackage on a node is referred to as a deployed service package. Quando si usa il modello Exclusive Process (Processo esclusivo) per la creazione di servizi, per una determinata applicazione potrebbero essere presenti più pacchetti del servizio distribuiti per lo stesso ServicePackage.When you use the Exclusive Process model for creating services, for a given application, there might be multiple deployed service packages for the same ServicePackage. Se si eseguono operazioni specifiche di un pacchetto del servizio distribuito, è consigliabile fornire ServicePackageActivationId per identificare un pacchetto del servizio distribuito specifico.If you are performing operations specific to a deployed service package, you should provide ServicePackageActivationId to identify a specific deployed service package. Ad esempio, specificare l'ID se si segnala l'integrità di un pacchetto del servizio distribuito o si riavvia il pacchetto di codice di un pacchetto del servizio distribuito.For example, provide the ID if you are reporting the health of a deployed service package or restarting the code package of a deployed service package.

È possibile trovare il ServicePackageActivationId di un pacchetto del servizio distribuito eseguendo una query sull'elenco di pacchetti del servizio distribuiti in un nodo.You can find out the ServicePackageActivationId of a deployed service package by querying the list of deployed service packages on a node. Quando si cercano i tipi di servizi distribuiti, le repliche distribuite e i pacchetti di codice distribuiti in un nodo, il risultato della query contiene anche il ServicePackageActivationId del pacchetto del servizio distribuito padre.When you are querying for the deployed service types, deployed replicas, and deployed code packages on a node, the query result also contains the ServicePackageActivationId of the parent deployed service package.

Nota

  • In base al modello di hosting Shared Process (Processo condiviso), in un determinato nodo per un'applicazione specificata viene attivata una sola copia di un ServicePackage.Under the Shared Process hosting model, on a given node, for a given application, only one copy of a ServicePackage is activated. Il relativo ServicePackageActivationId è uguale a empty string e non è necessario specificarlo quando si eseguono operazioni correlate al pacchetto del servizio distribuito.It has a ServicePackageActivationId equal to empty string, and need not be specified while performing operations related to the deployed service package.

  • In base al modello di hosting Exclusive Process (Processo esclusivo), in un determinato nodo per un'applicazione specificata può essere attiva una o più copie di un ServicePackage.Under the Exclusive Process hosting model, on a given node, for a given application, one or more copies of a ServicePackage can be active. Ogni attivazione ha un ServicePackageActivationId non-empty, specificato quando si eseguono operazioni correlate al pacchetto del servizio distribuito.Each activation has a non-empty ServicePackageActivationId, specified while performing operations related to the deployed service package.

  • Se si omette ServicePackageActivationId, viene usata l'impostazione predefinita empty string.If ServicePackageActivationId is omitted, it defaults to empty string. Se è presente un pacchetto del servizio distribuito attivato in base al modello Shared Process (Processo condiviso), l'operazione verrà eseguita su tale pacchetto,If a deployed service package that was activated under the Shared Process model is present, the operation will be performed on it. altrimenti l'operazione non riesce.Otherwise, the operation fails.

  • Non eseguire una query e quindi memorizzare nella cache il ServicePackageActivationId.Do not query once and cache the ServicePackageActivationId. L'ID viene generato in modo dinamico e può cambiare per vari motivi.The ID is dynamically generated, and can change for various reasons. Prima di eseguire un'operazione che richiede il valore di ServicePackageActivationId, è necessario eseguire una query sull'elenco di pacchetti del servizio distribuiti in un nodo.Before performing an operation that needs ServicePackageActivationId, you should first query the list of deployed service packages on a node. Usare quindi il ServicePackageActivationId del risultato della query per eseguire l'operazione originale.Then use the ServicePackageActivationId from the query result to perform the original operation.

Applicazioni eseguibili guest e contenitoreGuest executable and container applications

Service Fabric tratta le applicazioni di tipo eseguibile guest e contenitore come servizi senza stato indipendenti.Service Fabric treats guest executable and container applications as stateless services, which are self-contained. Non esistono runtime di Service Fabric in ServiceHost (un processo o un contenitore).There is no Service Fabric runtime in ServiceHost (a process or container). Poiché che si tratta di servizi indipendenti, il numero di repliche per ServiceHost non è applicabile.Because these services are self-contained, the number of replicas per ServiceHost is not applicable for these services. La configurazione usata più comunemente con questi servizi è una partizione singola con InstanceCount uguale a -1 (in ogni nodo del cluster è in esecuzione una copia del codice del servizio).The most common configuration used with these services is single-partition, with InstanceCount equal to -1 (one copy of the service code running on each node of the cluster).

Il valore ServicePackageActivationMode predefinito per questi servizi è SharedProcess: Service Fabric attiva una sola copia di ServicePackage in un nodo per una determinata applicazione.The default ServicePackageActivationMode for these services is SharedProcess, in which case Service Fabric only activates one copy of ServicePackage on a node for a given application. Questo significa che una sola copia del codice del servizio sarà in esecuzione in un nodo.This means only one copy of service code will run a node. Per eseguire più copie del codice del servizio in un nodo, specificare ServicePackageActivationMode come ExclusiveProcess mentre si crea il servizio.If you want multiple copies of your service code to run on a node, specify ServicePackageActivationMode as ExclusiveProcess at the time of creating the service. È ad esempio possibile procedere in tal modo quando si creano più servizi (da Service1 a ServiceN) di ServiceType (specificato in ServiceManifest) o quando il servizio ha più partizioni.For example, you can do this when you create multiple services (Service1 to ServiceN) of ServiceType (specified in ServiceManifest), or when your service is multi-partitioned.

Modificare il modello di hosting di un servizio esistenteChange the hosting model of an existing service

Non è attualmente possibile modificare il modello di hosting di un servizio esistente da Shared Process (Processo condiviso) a Exclusive Process (Processo esclusivo) o viceversa.At the present time, you can't change the hosting model of an existing service from Shared Process to Exclusive Process (or vice-versa).

Scegliere tra i modelli di hostingChoose between the hosting models

È consigliabile valutare quale modello di hosting sia il più adatto ai propri requisiti.You should evaluate which hosting model best fits your requirements. Il modello Shared Process (Processo condiviso) usa meglio le risorse del sistema operativo perché viene generato un numero minore di processi e più repliche all'interno dello stesso processo possono condividere le porte.The Shared Process model uses operating system resources better, because fewer processes are spawned, and multiple replicas in the same process can share ports. Se tuttavia una delle repliche contiene un errore per cui l'host servizio deve essere arrestato, tale errore ha un impatto negativo su tutte le altre repliche nello stesso processo.However, if one of the replicas has an error where it needs to bring down the service host, it impacts all other replicas in same process.

Il modello Exclusive Process (Processo esclusivo) offre un migliore isolamento, con ogni replica in un proprio processo.The Exclusive Process model provides better isolation, with every replica in its own process. Se una delle repliche presenta un errore, non influisce sulle altre repliche.If one of the replicas has an error, it does not impact other replicas. Questo modello è utile nei casi in cui la condivisione delle porte non è supportata dal protocollo di comunicazione.This model is useful for cases where port sharing is not supported by the communication protocol. Rende inoltre più semplice l'applicazione della governance delle risorse a livello di replica.It facilitates the ability to apply resource governance at replica level. Tuttavia, il modello Exclusive Process (Processo esclusivo) utilizza una maggiore quantità di risorse del sistema operativo e genera un processo per ogni replica nel nodo.However, the Exclusive Process consumes more operating system resources, as it spawns one process for each replica on the node.

Considerazioni sul modello Exclusive Process (Processo esclusivo) e sul modello dell'applicazioneExclusive Process model and application model considerations

È possibile modellare la maggior parte delle applicazioni in Service Fabric mantenendo un ServiceType per ogni ServicePackage.For most applications, you can model your application in Service Fabric by keeping one ServiceType per ServicePackage.

In alcuni casi, Service Fabric consente anche più di un valore ServiceType per ogni oggetto ServicePackage (e un oggetto CodePackage può registrare più di un valore di ServiceType).For certain cases, Service Fabric also allows more than one ServiceType per ServicePackage (and one CodePackage can register more than one ServiceType). Di seguito sono descritti alcuni scenari in cui queste configurazioni possono essere utili:The following are some of the scenarios where these configurations can be useful:

  • Si vuole ottimizzare l'utilizzo delle risorse generando un minor numero di processi e aumentando la densità di replica per processo.You want to optimize resource utilization by spawning fewer processes and having higher replica density per process.
  • Le repliche da diversi ServiceType devono condividere alcuni dati comuni caratterizzati da un alto costo di inizializzazione o memoria.Replicas from different ServiceTypes need to share some common data that has a high initialization or memory cost.
  • Si usa una versione gratuita di un servizio e si vuole limitare l'utilizzo delle risorse inserendo tutte le repliche del servizio nello stesso processo.You have a free service offering, and you want to put a limit on resource utilization by putting all replicas of the service in same process.

Il modello di hosting Exclusive Process (Processo esclusivo) non è coerente con un modello dell'applicazione con più ServiceType per ServicePackage.The Exclusive Process hosting model is not coherent with an application model having multiple ServiceTypes per ServicePackage. Questo si verifica perché la configurazione con più ServiceType per ServicePackage è progettata per ottenere una maggiore condivisione delle risorse e consentire un aumento della densità di replica per processo.This is because multiple ServiceTypes per ServicePackage are designed to achieve higher resource sharing among replicas, and enables higher replica density per process. Il modello Exclusive Process (Processo esclusivo) è progettato per ottenere risultati diversi.The Exclusive Process model is designed to achieve different outcomes.

Si consideri il caso di più ServiceType per ServicePackage con un diverso CodePackage che registra ogni ServiceType.Consider the case of multiple ServiceTypes per ServicePackage, with a different CodePackage registering each ServiceType. Si supponga di avere un ServicePackage "MultiTypeServicePackge" con due CodePackage:Let's say we have a ServicePackage 'MultiTypeServicePackge', which has two CodePackages:

  • "MyCodePackageA", che registra il ServiceType "MyServiceTypeA".'MyCodePackageA', which registers ServiceType 'MyServiceTypeA'.
  • "MyCodePackageB", che registra il ServiceType "MyServiceTypeB".'MyCodePackageB', which registers ServiceType 'MyServiceTypeB'.

Ora si supponga di creare un'applicazione, fabric:/SpecialApp.Now, let's say that we create an application, fabric:/SpecialApp. In fabric:/SpecialApp vengono creati i due servizi seguenti con il modello Exclusive Process (Processo esclusivo):Inside fabric:/SpecialApp, we create following two services with the Exclusive Process model:

  • Servizio fabric:/SpecialApp/ServiceA di tipo "MyServiceTypeA", con due partizioni, P1 e P2, e tre repliche per partizione.Service fabric:/SpecialApp/ServiceA of type 'MyServiceTypeA', with two partitions (for example, P1 and P2), and three replicas per partition.
  • Servizio fabric:/SpecialApp/ServiceB di tipo "MyServiceTypeB", con due partizioni, P3 e P4, e tre repliche per partizione.Service fabric:/SpecialApp/ServiceB of type 'MyServiceTypeB', with two partitions (P3 and P4), and three replicas per partition.

In un determinato nodo entrambi i servizi hanno due repliche ognuno.On a given node, both of the services have two replicas each. Poiché per creare i servizi è stato usato il modello Exclusive Process (Processo esclusivo), Service Fabric attiva una nuova copia di "MyServicePackage" per ogni replica.Because we used the Exclusive Process model to create the services, Service Fabric activates a new copy of 'MyServicePackage' for each replica. Ogni attivazione di "MultiTypeServicePackge" avvia una copia di "MyCodePackageA" e "MyCodePackageB".Each activation of 'MultiTypeServicePackge' starts a copy of 'MyCodePackageA' and 'MyCodePackageB'. Tuttavia, solo uno tra "MyCodePackageA" e "MyCodePackageB" ospita la replica per la quale è stato attivato "MultiTypeServicePackge".However, only one of 'MyCodePackageA' or 'MyCodePackageB' hosts the replica for which 'MultiTypeServicePackge' was activated. Il diagramma seguente mostra la visualizzazione del nodo:The following diagram shows the node view:

Diagramma della visualizzazione del nodo dell'applicazione distribuita

Nell'attivazione di "MultiTypeServicePackge" per la replica della partizione P1 del servizio fabric:/SpecialApp/ServiceA, "MyCodePackageA" ospita la replica.In the activation of 'MultiTypeServicePackge' for the replica of partition P1 of service fabric:/SpecialApp/ServiceA, 'MyCodePackageA' is hosting the replica. "MyCodePackageB" è in esecuzione.'MyCodePackageB' is running. Analogamente, nell'attivazione di "MultiTypeServicePackge" per la replica della partizione P3 del servizio fabric:/SpecialApp/ServiceB, "MyCodePackageB" ospita la replica.Similarly, in the activation of 'MultiTypeServicePackge' for the replica of partition P3 of service fabric:/SpecialApp/ServiceB, 'MyCodePackageB' is hosting the replica. "MyCodePackageA" è in esecuzione.'MyCodePackageA' is running. Di conseguenza, maggiore è il numero di CodePackage (che registrano ServiceType differenti) per ServicePackage, più elevato è l'utilizzo ridondante delle risorse.Hence, the greater the number of CodePackages (registering different ServiceTypes) per ServicePackage, the higher the redundant resource usage.

Se tuttavia si creano i servizi fabric:/SpecialApp/ServiceA e fabric:/SpecialApp/ServiceB con il modello Shared Process (Processo condiviso), Service Fabric attiva soltanto una copia di "MultiTypeServicePackge" per l'applicazione fabric:/SpecialApp.However, if we create the services fabric:/SpecialApp/ServiceA and fabric:/SpecialApp/ServiceB with the Shared Process model, Service Fabric activates only one copy of 'MultiTypeServicePackge' for the application fabric:/SpecialApp. "MyCodePackageA" ospita tutte le repliche per il servizio fabric:/SpecialApp/ServiceA.'MyCodePackageA' hosts all replicas for the service fabric:/SpecialApp/ServiceA. "MyCodePackageB" ospita tutte le repliche per il servizio fabric:/SpecialApp/ServiceB.'MyCodePackageB' hosts all replicas for the service fabric:/SpecialApp/ServiceB. Il diagramma seguente mostra la visualizzazione del nodo in questa impostazione:The following diagram shows the node view in this setting:

Diagramma della visualizzazione del nodo dell'applicazione distribuita

Nell'esempio precedente, si potrebbe pensare che, se "MyCodePackageA" registra sia "MyServiceTypeA" che "MyServiceTypeB" e non è presente alcun "MyCodePackageB", non è in esecuzione alcun CodePackage ridondante.In the preceding example, you might think that if 'MyCodePackageA' registers both 'MyServiceTypeA' and 'MyServiceTypeB', and there is no 'MyCodePackageB', then there is no redundant CodePackage running. Anche se è corretto, questo modello di applicazione non è coerente con il modello di hosting Exclusive Process (Processo esclusivo).Although this is correct, this application model does not align with the Exclusive Process hosting model. Se l'obiettivo consiste nell'inserire ogni replica in un proprio processo dedicato, non è necessario registrare entrambi i ServiceType dallo stesso CodePackage.If the goal is to put each replica in its own dedicated process, you do not need to register both ServiceTypes from same CodePackage. È invece sufficiente inserire ogni ServiceType nel rispettivo ServicePackage.Instead, you simply put each ServiceType in its own ServicePackage.

Passaggi successiviNext steps

Creare il pacchetto di un'applicazione e prepararlo per la distribuzione.Package an application and get it ready to deploy.

Distribuire e rimuovere applicazioni.Deploy and remove applications. Questo articolo descrive come usare PowerShell per gestire le istanze dell'applicazione.This article describes how to use PowerShell to manage application instances.