Nouveau : Datasets open source gratuits disponibles !Decouvrir →
☁️
Intermediaire 25 min .NET

Deployer .NET sur GCP

Pourquoi Déployer .NET sur GCP ?

Le déploiement de .NET sur Google Cloud Platform (GCP) présente de nombreux avantages réels pour les développeurs. En effet, GCP propose une plateforme robuste et évoluante qui permet d'héberger des applications .NET de manière sécurisée, performante et à faible coût. Un cas concret serait le déploiement d'une application web complexe nécessitant un traitement de données en temps réel et des services hautement disponibles.

Prerequis

Avant de commencer ce tutoriel, vous devriez avoir les compétences suivantes :

  • Connaissances en programmation C# et .NET.
  • Une compréhension de base du système GCP (Google Cloud Platform).
  • Un compte Google Cloud actif avec des crédits suffisants pour l'exécution des services.

Outils à installer :

  • Visual Studio 2019 ou version ultérieure (pour le développement).
  • .NET SDK v3.1 ou plus récent.
  • Google Cloud SDK v248.0.0 ou plus récent.
  • Docker CE v19.03.5 ou plus récent.

Concepts fondamentaux

1. Projet GCP

Un projet est le conteneur principal pour toutes les ressources et services que vous utilisez sur Google Cloud Platform. Chaque utilisateur de GCP peut avoir plusieurs projets, chacun avec ses propres coûts et configurations.

## Créer un nouveau projet dans la ligne de commande
gcloud projects create mon-projet-id --name="Mon Projet"

2. Instance Compute Engine

L'Instance Compute Engine est une machine virtuelle sur laquelle vous pouvez exécuter n'importe quel système d'exploitation et toute application que vous souhaitez.

## Créer une nouvelle instance VM
gcloud compute instances create mon-vm --machine-type=n1-standard-1 --image-family=debian-cloud --image-project=debian-cloud

3. Service Cloud Run

Cloud Run est un service serverless qui permet d'exécuter et de mettre à l'échelle des applications web et API.

## Déployer une application .NET sur Cloud Run
gcloud run deploy mon-app --image=gcr.io/mon-projet-id/mon-app:latest --platform managed

Mise en pratique : Projet fil rouge

Nous allons créer un simple gestionnaire de tâches pour illustrer le déploiement d'une application .NET sur GCP.

Étape 1 : Création du projet

Créez un nouveau répertoire et initialisez-le avec .NET CLI :

mkdir TaskManager
cd TaskManager
dotnet new console -n TaskManager

Étape 2 : Ajout des dépendances

Ajoutez le package Microsoft.EntityFrameworkCore.SqlServer pour la gestion de base de données SQL Server.

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Étape 3 : Création du modèle de données

Créez un fichier Models/Task.cs :

using System;

namespace TaskManager.Models
{
    public class Task
    {
        public int Id { get; set; }
        public string Description { get; set; }
        public bool IsCompleted { get; set; }
    }
}

Étape 4 : Création du DbContext

Créez un fichier Data/TaskContext.cs :

using Microsoft.EntityFrameworkCore;
using TaskManager.Models;

namespace TaskManager.Data
{
    public class TaskContext : DbContext
    {
        public DbSet<Task> Tasks { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Initial Catalog=taskdb;Persist Security Info=False;User ID=mon-user;Password=mon-password;MultipleActiveResultSets=True;");
        }
    }
}

Étape 5 : Ajout des commandes CRUD

Modifiez Program.cs pour ajouter les commandes CRUD :

using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using TaskManager.Data;
using TaskManager.Models;

namespace TaskManager
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new TaskContext())
            {
                // Ajouter une tâche
                var task = new Task { Description = "Faire les courses", IsCompleted = false };
                context.Tasks.Add(task);
                context.SaveChanges();

                // Lire toutes les tâches
                var tasks = context.Tasks.ToList();
                foreach (var t in tasks)
                {
                    Console.WriteLine($"{t.Id}: {t.Description} - {(t.IsCompleted ? "Terminée" : "En cours")}");
                }

                // Mettre à jour une tâche
                var taskToUpdate = tasks.FirstOrDefault(t => t.Id == 1);
                if (taskToUpdate != null)
                {
                    taskToUpdate.IsCompleted = true;
                    context.SaveChanges();
                }

                // Supprimer une tâche
                var taskToDelete = tasks.FirstOrDefault(t => t.Id == 2);
                if (taskToDelete != null)
                {
                    context.Tasks.Remove(taskToDelete);
                    context.SaveChanges();
                }
            }
        }
    }
}

Étape 6 : Exécution de l'application

Exécutez le projet pour vérifier les opérations CRUD :

dotnet run

Erreurs fréquentes et debugging

1. Erreur : La chaîne de connexion est incorrecte

Code incorrect :

optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Initial Catalog=taskdb;Persist Security Info=False;");

Code correct :

optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Database=taskdb;User ID=mon-user;Password=mon-password;MultipleActiveResultSets=True;");

2. Erreur : La méthode 'UseSqlServer' n'est pas reconnue

Code incorrect :

optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Initial Catalog=taskdb;Persist Security Info=False;");

Code correct :

optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Database=taskdb;User ID=mon-user;Password=mon-password;MultipleActiveResultSets=True;");

3. Erreur : La base de données n'existe pas

Code incorrect :

optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Initial Catalog=taskdb;Persist Security Info=False;");

Code correct :

optionsBuilder.UseSqlServer("Server=tcp:mon-sql-server.database.windows.net,1433;Database=taskdb;User ID=mon-user;Password=mon-password;MultipleActiveResultSets=True;");

Pour aller plus loin

1. Utilisation de Kubernetes sur GCP

Kubernetes permet de gérer et d'écheloner des applications sur une infrastructure de conteneurs.

2. Déploiement en production avec SQL Server Managed Instance

Utilisez SQL Server Managed Instance pour un déploiement sécurisé et managé.

3. Utilisation de Cloud Functions

Cloud Functions vous permet de créer des fonctions serverless en C#.

Défi pratique

Développez une application API RESTful pour un blog en utilisant ASP.NET Core et déploiée sur Google Cloud Run. N'oubliez pas d'utiliser une base de données SQL Server sur Azure Database for SQL Server.


Ce tutoriel vous a guidé à travers le processus de déploiement d'une application .NET complète sur GCP. En suivant ces étapes, vous devriez être capable de déployer vos propres applications .NET sur la plateforme GCP de manière efficace et sécurisée.

Besoin d'aide sur .NET ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Comment créer un nouveau projet .NET sur Google Cloud Platform (GCP) ?
Pour créer un nouveau projet .NET sur GCP, vous pouvez utiliser la commande `gcloud projects create ` dans le terminal et suivre les instructions à l'écran. Vous devrez également configurer votre compte GCP avec la commande `gcloud auth login` avant de commencer.
Quelles sont les options de déploiement disponibles pour un application .NET sur GCP ?
Les options de déploiement pour une application .NET sur GCP incluent l'utilisation des services App Engine, Cloud Run et Compute Engine. App Engine est idéal pour les applications .NET web et multi-tenant, tandis que Cloud Run permet un déploiement serverless. Compute Engine offre plus de contrôle mais nécessite plus de configuration manuelle.
Comment configurer le runtime .NET sur Google Cloud Functions ?
Pour configurer le runtime .NET sur Google Cloud Functions, vous devez utiliser la bibliothèque `Google.Cloud.Functions.Hosting` dans votre projet. Vous pouvez ensuite déployer votre fonction avec la commande `gcloud functions deploy --runtime dotnet6`. Assurez-vous de suivre les instructions pour configurer le fichier `function.json` et le `project.json` appropriés.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.