Creare un'applicazione .NET Service Fabric in AzureCreate a .NET Service Fabric application in Azure

Azure Service Fabric è una piattaforma di sistemi distribuiti per la distribuzione e la gestione di microservizi e contenitori scalabili e affidabili.Azure Service Fabric is a distributed systems platform for deploying and managing scalable and reliable microservices and containers.

In questa guida introduttiva viene illustrato come distribuire la prima applicazione .NET in Service Fabric.This quickstart shows how to deploy your first .NET application to Service Fabric. Al termine, sarà disponibile un'applicazione di voto con un front-end Web ASP.NET Core che salva i risultati delle votazioni in un servizio back-end con stato nel cluster.When you're finished, you have a voting application with an ASP.NET Core web front-end that saves voting results in a stateful back-end service in the cluster.

Screenshot dell'applicazione

Usando questa applicazione, si apprenderà come:Using this application you learn how to:

  • Creare un'applicazione mediante .NET e Service FabricCreate an application using .NET and Service Fabric
  • Usare ASP.NET Core come front-end WebUse ASP.NET core as a web front-end
  • Archiviare i dati dell'applicazione in un servizio con statoStore application data in a stateful service
  • Eseguire il debug dell'applicazione in localeDebug your application locally
  • Distribuire l'applicazione in un cluster in AzureDeploy the application to a cluster in Azure
  • Scalare orizzontalmente l'applicazione in più nodiScale-out the application across multiple nodes
  • Eseguire un aggiornamento in sequenza delle applicazioniPerform a rolling application upgrade

PrerequisitiPrerequisites

Per completare questa guida introduttiva:To complete this quickstart:

  1. Installare Visual Studio 2017 con i carichi di lavoro Sviluppo di Azure e Sviluppo ASP.NET e Web.Install Visual Studio 2017 with the Azure development and ASP.NET and web development workloads.
  2. Installare GitInstall Git
  3. Installare Microsoft Azure Service Fabric SDKInstall the Microsoft Azure Service Fabric SDK
  4. Eseguire il comando seguente per consentire a Visual Studio di eseguire la distribuzione nel cluster Service Fabric locale:Run the following command to enable Visual Studio to deploy to the local Service Fabric cluster: powershell Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser

Scaricare l'esempioDownload the sample

In una finestra di comando eseguire il comando seguente per clonare il repository dell'app di esempio nel computer locale.In a command window, run the following command to clone the sample app repository to your local machine.

git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart

Eseguire l'applicazione in localeRun the application locally

Fare clic con il pulsante destro del mouse sull'icona di Visual Studio nel menu Start e scegliere Esegui come amministratore.Right-click the Visual Studio icon in the Start Menu and choose Run as administrator. Per connettere il debugger ai servizi, è necessario eseguire Visual Studio come amministratore.In order to attach the debugger to your services, you need to run Visual Studio as administrator.

Aprire la soluzione di Visual Studio Voting.sln dal repository che è stato clonato.Open the Voting.sln Visual Studio solution from the repository you cloned.

Per impostazione predefinita, l'applicazione Voting è impostata per l'ascolto sulla porta 8080.By default, the Voting application is set to listen on port 8080. La porta dell'applicazione è impostata nel file /VotingWeb/PackageRoot/ServiceManifest.xml.The application port is set in the /VotingWeb/PackageRoot/ServiceManifest.xml file. È possibile cambiare la porta dell'applicazione aggiornando l'attributo Port dell'elemento Endpoint.You can change the application port by updating the Port attribute of the Endpoint element. Per distribuire ed eseguire l'applicazione in locale, la porta dell'applicazione deve essere aperta e disponibile nel computer.To deploy and run the application locally, the application port must be open and available on your computer. Se si cambia la porta dell'applicazione, sostituire "8080" con il nuovo valore della porta dell'applicazione in tutto l'articolo.If you change the application port, substitute the new application port value for "8080" throughout this article.

Per distribuire l'applicazione, premere F5.To deploy the application, press F5.

Nota

La prima volta che si esegue e si distribuisce l'applicazione, Visual Studio crea un cluster locale per il debug.The first time you run and deploy the application, Visual Studio creates a local cluster for debugging. Questa operazione può richiedere del tempo.This operation may take some time. Lo stato della creazione del cluster verrà visualizzato nella finestra di output di Visual Studio.The cluster creation status is displayed in the Visual Studio output window. Nell'output verrà visualizzato il messaggio "L'URL dell'applicazione non è impostato oppure non è di tipo HTTP/HTTPS, di conseguenza l'applicazione non verrà aperta nel browser."In the output, you see the message "The application URL is not set or is not an HTTP/HTTPS URL so the browser will not be opened to the application." Questo messaggio non indica un errore, ma indica che un browser non verrà avviato automaticamente.This message does not indicate an error, but that a browser will not auto-launch.

Al termine della distribuzione, avviare un browser e aprire la pagina http://localhost:8080, ovvero il front-end Web dell'applicazione.When the deployment is complete, launch a browser and open this page: http://localhost:8080 - the web front-end of the application.

Front-end dell'applicazione

È ora possibile aggiungere un set di opzioni per le votazioni e iniziare a raccogliere i voti.You can now add a set of voting options, and start taking votes. L'applicazione viene eseguita e archivia tutti i dati nel cluster di Service Fabric, senza che sia necessario un database separato.The application runs and stores all data in your Service Fabric cluster, without the need for a separate database.

Descrizione dettagliata dell'applicazione di voto di esempioWalk through the voting sample application

L'applicazione di voto è costituita da due servizi:The voting application consists of two services:

  • Il servizio front-end Web (VotingWeb) - Un servizio front-end Web ASP.NET Core che gestisce la pagina Web e che espone le API Web per la comunicazione con il servizio back-end.Web front-end service (VotingWeb)- An ASP.NET Core web front-end service, which serves the web page and exposes web APIs to communicate with the backend service.
  • Il servizio back-end (VotingData) - Un servizio Web ASP.NET Core che espone un'API per l'archiviazione dei risultati delle votazioni in un oggetto Reliable Dictionary reso persistente su disco.Back-end service (VotingData)- An ASP.NET Core web service, which exposes an API to store the vote results in a reliable dictionary persisted on disk.

Diagramma dell'applicazione

Quando l'utente vota nell'applicazione, si verificano gli eventi seguenti:When you vote in the application the following events occur:

  1. JavaScript invia la richiesta di voto all'API Web nel servizio front-end Web come una richiesta HTTP PUT.A JavaScript sends the vote request to the web API in the web front-end service as an HTTP PUT request.

  2. Il servizio front-end Web usa un proxy per individuare e inoltrare una richiesta PUT HTTP al servizio back-end.The web front-end service uses a proxy to locate and forward an HTTP PUT request to the back-end service.

  3. Il servizio back-end accetta la richiesta in ingresso e archivia il risultato aggiornato in un oggetto Reliable Dictionary, che viene replicato in più nodi all'interno del cluster e reso persistente su disco.The back-end service takes the incoming request, and stores the updated result in a reliable dictionary, which gets replicated to multiple nodes within the cluster and persisted on disk. Tutti i dati dell'applicazione sono archiviati nel cluster, quindi non è necessario alcun database.All the application's data is stored in the cluster, so no database is needed.

Eseguire il debug in Visual StudioDebug in Visual Studio

Durante il debug dell'applicazione in Visual Studio, viene usato un cluster di sviluppo locale di Service Fabric.When debugging application in Visual Studio, you are using a local Service Fabric development cluster. È possibile modificare l'esperienza di debug in base allo specifico scenario.You have the option to adjust your debugging experience to your scenario. In questa applicazione i dati vengono archiviati nel servizio back-end tramite un dizionario Reliable.In this application, data is stored in back-end service using a reliable dictionary. Visual Studio rimuove l'applicazione per impostazione predefinita quando si arresta il debugger.Visual Studio removes the application per default when you stop the debugger. La rimozione dell'applicazione determina la rimozione anche dei dati nel servizio back-end.Removing the application causes the data in the back-end service to also be removed. Per rendere persistenti i dati tra le sessioni di debug, è possibile modificare la proprietà Modalità di debug applicazione del progetto Voting in Visual Studio.To persist the data between debugging sessions, you can change the Application Debug Mode as a property on the Voting project in Visual Studio.

Per osservare che cosa avviene nel codice, completare la procedura seguente:To look at what happens in the code, complete the following steps:

  1. Aprire il file /VotingWeb/Controllers/VotesController.cs e impostare un punto di interruzione nel metodo Put dell'API Web alla riga 47. È possibile eseguire una ricerca nel file usando Esplora soluzioni in Visual Studio.Open the /VotingWeb/Controllers/VotesController.cs file and set a breakpoint in the web API's Put method (line 47) - You can search for the file in the Solution Explorer in Visual Studio.

  2. Aprire il file /VotingData/ControllersVoteDataController.cs e impostare un punto di interruzione nel metodo Put dell'API Web alla riga 50.Open the /VotingData/ControllersVoteDataController.cs file and set a breakpoint in this web API's Put method (line 50).

  3. Tornare al browser e fare clic su un'opzione di voto oppure aggiungere una nuova opzione di voto.Go back to the browser and click a voting option or add a new voting option. È stato raggiunto il primo punto di interruzione nel controller API del front-end Web.You hit the first breakpoint in the web front-end's api controller.

    • In questa posizione, il codice JavaScript nel browser invia una richiesta al controller API Web nel servizio front-end.This is where the JavaScript in the browser sends a request to the web API controller in the front-end service.

      Aggiungere il servizio front-end di voto

    • Prima di tutto, costruire l'URL di ReverseProxy per il servizio back-end (1).First, construct the URL to the ReverseProxy for our back-end service (1).

    • Inviare quindi la richiesta PUT HTTP a ReverseProxy (2).Then, send the HTTP PUT Request to the ReverseProxy (2).
    • Infine, restituire la risposta dal servizio back-end al client (3).Finally, return the response from the back-end service to the client (3).
  4. Premere F5 per continuare.Press F5 to continue

    • Ora ci troviamo al punto di interruzione nel servizio back-end.You are now at the break point in the back-end service.

      Aggiungere il servizio back-end di voto

    • Nella prima riga del metodo (1) StateManager viene usato per ottenere o aggiungere un dizionario Reliable denominato counts.In the first line in the method (1) the StateManager gets or adds a reliable dictionary called counts.

    • Tutte le interazioni con i valori in un oggetto Reliable Dictionary richiedono una transazione, che viene creata dall'istruzione using (2).All interactions with values in a reliable dictionary require a transaction, this using statement (2) creates that transaction.
    • Nella transazione aggiornare il valore della chiave pertinente per l'opzione di voto ed eseguire il commit dell'operazione (3).In the transaction, update the value of the relevant key for the voting option and commit the operation (3). Dopo la restituzione del metodo Commit, i dati vengono aggiornati nel dizionario e replicati negli altri nodi del cluster.Once the commit method returns, the data is updated in the dictionary and replicated to other nodes in the cluster. A questo punto, i dati sono archiviati in modo sicuro nel cluster e il servizio back-end può eseguire il failover in altri nodi, rendendo comunque disponibili i dati.The data is now safely stored in the cluster, and the back-end service can fail over to other nodes, still having the data available.
  5. Premere F5 per continuare.Press F5 to continue

Per interrompere la sessione di debug, premere MAIUSC+F5.To stop the debugging session, press Shift+F5.

Distribuzione dell'applicazione in AzureDeploy the application to Azure

Per distribuire l'applicazione in Azure, è necessario un cluster di Service Fabric che esegua l'applicazione.To deploy the application to Azure, you need a Service Fabric cluster which runs the application.

Aggiungere un party clusterJoin a Party cluster

I cluster di entità sono cluster Service Fabric gratuiti e disponibili per un periodo di tempo limitato ospitati in Azure e gestiti dal team di Service Fabric, in cui chiunque può distribuire applicazioni e ottenere informazioni sulla piattaforma.Party clusters are free, limited-time Service Fabric clusters hosted on Azure and run by the Service Fabric team where anyone can deploy applications and learn about the platform.

Eseguire l'accesso e aggiungere un cluster Windows.Sign in and join a Windows cluster. Ricordare il valore di Endpoint connessione, che viene usato nei passaggi seguenti.Remember the Connection endpoint value, which is used in following steps.

Nota

Per impostazione predefinita, il servizio front-end Web è configurato per l'ascolto del traffico in ingresso sulla porta 8080.By default, the web front-end service is configured to listen on port 8080 for incoming traffic. La porta 8080 è aperta nel party cluster.Port 8080 is open in the Party Cluster. Se è necessario cambiare la porta dell'applicazione, sostituirla con una delle porte aperte nel party cluster.If you need to change the application port, change it to one of the ports that are open in the Party Cluster.

Distribuire l'applicazione tramite Visual StudioDeploy the application using Visual Studio

Ora che l'applicazione è pronta, è possibile distribuirla in un cluster direttamente da Visual Studio.Now that the application is ready, you can deploy it to a cluster directly from Visual Studio.

  1. Fare clic con il pulsante destro del mouse su Voting in Esplora soluzioni e scegliere Pubblica.Right-click Voting in the Solution Explorer and choose Publish. Verrà visualizzata la finestra di dialogo Pubblica.The Publish dialog appears.

    Finestra di dialogo Pubblica

  2. Copiare l'endpoint della connessione dalla pagina del party cluster nel campo Endpoint connessione e fare clic su Pubblica.Copy the Connection Endpoint from the Party cluster page into the Connection Endpoint field and click Publish. ad esempio winh1x87d1d.westus.cloudapp.azure.com:19000.For example, winh1x87d1d.westus.cloudapp.azure.com:19000.

    Ogni applicazione nel cluster deve avere un nome univoco.Each application in the cluster must have a unique name. Un party cluster è tuttavia un ambiente pubblico condiviso e potrebbe verificarsi un conflitto con un'applicazione esistente.Party clusters are a public, shared environment however and there may be a conflict with an existing application. Se è presente un conflitto di nomi, ridenominare il progetto di Visual Studio e distribuirlo di nuovo.If there is a name conflict, rename the Visual Studio project and deploy again.

  3. Aprire un browser e digitare l'indirizzo del cluster seguito da ":8080" per passare all'applicazione nel cluster, ad esempio http://winh1x87d1d.westus.cloudapp.azure.com:8080.Open a browser and type in the cluster address followed by ':8080' to get to the application in the cluster - for example, http://winh1x87d1d.westus.cloudapp.azure.com:8080. A questo punto, sarà visualizzata l'applicazione in esecuzione nel cluster in Azure.You should now see the application running in the cluster in Azure.

Front-end dell'applicazione

Ridimensionare applicazioni e servizi in un clusterScale applications and services in a cluster

I servizi di Service Fabric possono essere facilmente ridimensionati in un cluster per supportare le modifiche del carico sui servizi.Service Fabric services can easily be scaled across a cluster to accommodate for a change in the load on the services. È possibile ridimensionare un servizio modificando il numero di istanze in esecuzione nel cluster.You scale a service by changing the number of instances running in the cluster. Sono disponibili diversi sistemi per garantire la scalabilità dei servizi: è possibile usare gli script o i comandi di PowerShell oppure l'interfaccia della riga di comando di Service Fabric (sfctl).You have multiple ways of scaling your services, you can use scripts or commands from PowerShell or Service Fabric CLI (sfctl). In questo esempio usare Service Fabric Explorer.In this example, use Service Fabric Explorer.

Service Fabric Explorer è in esecuzione in tutti i cluster di Service Fabric ed è accessibile da un browser, passando alla porta di gestione HTTP (19080) del cluster, ad esempio http://winh1x87d1d.westus.cloudapp.azure.com:19080.Service Fabric Explorer runs in all Service Fabric clusters and can be accessed from a browser, by browsing to the clusters HTTP management port (19080), for example, http://winh1x87d1d.westus.cloudapp.azure.com:19080.

Per scalare il servizio front-end Web, seguire questa procedura:To scale the web front-end service, do the following steps:

  1. Aprire Service Fabric Explorer nel cluster, ad esempio http://winh1x87d1d.westus.cloudapp.azure.com:19080.Open Service Fabric Explorer in your cluster - for example,http://winh1x87d1d.westus.cloudapp.azure.com:19080.
  2. Fare clic sui puntini di sospensione accanto al nodo fabric:/Voting/VotingWeb nella visualizzazione ad albero e scegliere Scale Service (Ridimensiona servizio).Click on the ellipsis (three dots) next to the fabric:/Voting/VotingWeb node in the treeview and choose Scale Service.

    Service Fabric Explorer

    Ora è possibile scegliere di modificare il numero di istanze del servizio front-end Web.You can now choose to scale the number of instances of the web front-end service.

  3. Impostare il numero su 2 e fare clic su Scale Service (Ridimensiona servizio).Change the number to 2 and click Scale Service.

  4. Fare clic sul nodo fabric:/Voting/VotingWeb nella visualizzazione ad albero ed espandere il nodo della partizione (rappresentato da un GUID).Click on the fabric:/Voting/VotingWeb node in the tree-view and expand the partition node (represented by a GUID).

    Ridimensionamento dei servizi in Service Fabric Explorer

    Dopo un ritardo saranno presenti due istanze del servizio.After a delay, you can see that the service has two instances. Nella visualizzazione ad albero si può verificare in quali nodi vengono eseguite le istanze.In the tree view you see which nodes the instances run on.

Con questa semplice attività di gestione le risorse disponibili si sono raddoppiate per il servizio front-end per l'elaborazione del carico utente.By this simple management task, the resources available doubled for the front-end service to process user load. È importante comprendere che non sono necessarie più istanze di un servizio perché questo venga eseguito in modo affidabile.It's important to understand that you do not need multiple instances of a service to have it run reliably. In caso di problemi di un servizio, Service Fabric assicura l'esecuzione di una nuova istanza del servizio nel cluster.If a service fails, Service Fabric makes sure a new service instance runs in the cluster.

Eseguire un aggiornamento in sequenza delle applicazioniPerform a rolling application upgrade

Durante la distribuzione di nuovi aggiornamenti per l'applicazione, Service Fabric distribuisce gli aggiornamenti in modo sicuro.When deploying new updates to your application, Service Fabric rolls out the update in a safe way. Gli aggiornamenti in sequenza non comportano tempi di inattività durante l'aggiornamento e consentono il rollback automatico in caso di errori.Rolling upgrades gives you no downtime while upgrading as well as automated rollback should errors occur.

Per aggiornare l'applicazione, eseguire le operazioni seguenti:To upgrade the application, do the following:

  1. Aprire il file /VotingWeb/Views/Home/Index.cshtml in Visual Studio.Open the /VotingWeb/Views/Home/Index.cshtml file in Visual Studio.
  2. ModificareChange the

    l'intestazione della pagina aggiungendo o aggiornando il testo.heading on the page by adding or updating the text. Ad esempio, modificare il titolo in "Esempio di voto di Service Fabric v2".For example, change the heading to "Service Fabric Voting Sample v2".

  3. Salvare il file.Save the file.
  4. Fare clic con il pulsante destro del mouse su Voting in Esplora soluzioni e scegliere Pubblica.Right-click Voting in the Solution Explorer and choose Publish. Verrà visualizzata la finestra di dialogo Pubblica.The Publish dialog appears.
  5. Fare clic sul pulsante Versione manifesto per modificare la versione del servizio e dell'applicazione.Click the Manifest Version button to change the version of the service and application.
  6. Modificare la versione dell'elemento Codice in VotingWebPkg, ad esempio in "2.0.0", e fare clic su Salva.Change the version of the Code element under VotingWebPkg to "2.0.0", for example, and click Save.

    Finestra di dialogo Modifica versione

  7. Nella finestra di dialogo Pubblica applicazione di Service Fabric selezionare la casella di controllo Aggiorna l'applicazione e fare clic su Pubblica.In the Publish Service Fabric Application dialog, check the Upgrade the Application checkbox, and click Publish.

    Impostazione di aggiornamento nella finestra di dialogo Pubblica

  8. Aprire il browser e passare all'indirizzo del cluster sulla porta 19080, ad esempio http://winh1x87d1d.westus.cloudapp.azure.com:19080.Open your browser and browse to the cluster address on port 19080 - for example, http://winh1x87d1d.westus.cloudapp.azure.com:19080.
  9. Fare clic sul nodo Applicazioni nella visualizzazione ad albero, quindi su Upgrades in Progress (Aggiornamenti in corso) nel riquadro destro.Click on the Applications node in the tree view, and then Upgrades in Progress in the right-hand pane. È possibile osservare che l'aggiornamento viene distribuito attraverso i domini di aggiornamento del cluster, verificando l'integrità di ogni dominio prima di procedere a quello successivo.You see how the upgrade rolls through the upgrade domains in your cluster, making sure each domain is healthy before proceeding to the next. Nell'indicatore di stato viene visualizzato in verde un dominio di aggiornamento dopo aver verificato l'integrità di dominio.An upgrade domain in the progress bar appears green when the health of the domain has been verified. Visualizzazione dell'aggiornamento in Service Fabric ExplorerUpgrade View in Service Fabric Explorer

    Service Fabric garantisce la sicurezza degli aggiornamenti attendendo due minuti dopo l'aggiornamento del servizio in ogni nodo del cluster.Service Fabric makes upgrades safe by waiting two minutes after upgrading the service on each node in the cluster. L'intero aggiornamento richiederà circa 8 minuti.Expect the entire update to take approximately eight minutes.

  10. Durante l'esecuzione dell'aggiornamento, è comunque possibile usare l'applicazione.While the upgrade is running, you can still use the application. Poiché nel cluster sono in esecuzione due istanze del servizio, alcune delle richieste potrebbero ottenere la versione aggiornata dell'applicazione, mentre altre potrebbero ancora ottenere la versione precedente.Because you have two instances of the service running in the cluster, some of your requests may get an upgraded version of the application, while others may still get the old version.

Passaggi successiviNext steps

In questa guida introduttiva si è appreso come:In this quickstart, you learned how to:

  • Creare un'applicazione mediante .NET e Service FabricCreate an application using .NET and Service Fabric
  • Usare ASP.NET Core come front-end WebUse ASP.NET core as a web front-end
  • Archiviare i dati dell'applicazione in un servizio con statoStore application data in a stateful service
  • Eseguire il debug dell'applicazione in localeDebug your application locally
  • Distribuire l'applicazione in un cluster in AzureDeploy the application to a cluster in Azure
  • Scalare orizzontalmente l'applicazione in più nodiScale-out the application across multiple nodes
  • Eseguire un aggiornamento in sequenza delle applicazioniPerform a rolling application upgrade

Per altre informazioni su Service Fabric e .NET, fare riferimento a questa esercitazione:To learn more about Service Fabric and .NET, take a look at this tutorial: