Azure Cosmos DB: Connettersi a un'app MongoDB usando .NETAzure Cosmos DB: Connect to a MongoDB app using .NET

Azure Cosmos DB è il servizio di database di Microsoft multimodello distribuito a livello globale.Azure Cosmos DB is Microsoft’s globally distributed multi-model database service. È possibile creare ed eseguire rapidamente query su database di documenti, coppie chiave-valore e grafi, sfruttando in ognuno dei casi i vantaggi offerti dalle funzionalità di scalabilità orizzontale e distribuzione globale alla base di Azure Cosmos DB.You can quickly create and query document, key/value, and graph databases, all of which benefit from the global distribution and horizontal scale capabilities at the core of Azure Cosmos DB.

Questa esercitazione illustra come creare un account Azure Cosmos DB usando il portale di Azure e come creare un database e una raccolta per l'archiviazione di dati usando l'API per MongoDB.This tutorial demonstrates how to create an Azure Cosmos DB account using the Azure portal, and how to create a database and collection to store data using the MongoDB API.

Questa esercitazione illustra le attività seguenti:This tutorial covers the following tasks:

  • Creare un account Azure Cosmos DBCreate an Azure Cosmos DB account
  • Aggiornare la stringa di connessioneUpdate your connection string
  • Creare un'app MongoDB in una macchina virtualeCreate a MongoDB app on a virtual machine

Creare un account di databaseCreate a database account

Si inizia creando un account Azure Cosmos DB nel portale di Azure.Let's start by creating an Azure Cosmos DB account in the Azure portal.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

In alternativa, è possibile provare gratuitamente Microsoft Azure Cosmos DB senza una sottoscrizione di Azure e senza impegnoAlternatively, you can Try Azure Cosmos DB for free without an Azure subscription, free of charge and commitments. oppure usare l'emulatore Azure Cosmos DB per questa esercitazione, con una stringa di connession diOr you can use the Azure Cosmos DB Emulator for this tutorial with a connection string of

mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true

Suggerimento

  1. In una nuova finestra accedere al portale di Azure.In a new window, sign in to the Azure portal.
  2. Nel menu a sinistra fare clic su Nuovo, quindi su Database e in Azure Cosmos DB fare clic su Crea.In the left menu, click New, click Databases, and then under Azure Cosmos DB, click Create.

    Screenshot del portale di Azure in cui sono evidenziati Altri servizi e Azure Cosmos DB

  3. Nel pannello Nuovo account specificare la configurazione desiderata per l'account Azure Cosmos DB.In the New account blade, specify the desired configuration for the Azure Cosmos DB account.

    Con Azure Cosmos DB è possibile scegliere uno dei quattro modelli di programmazione: Gremlin (graph), MongoDB, SQL (DocumentDB) e Table (key-value).With Azure Cosmos DB, you can choose one of four programming models: Gremlin (graph), MongoDB, SQL (DocumentDB), and Table (key-value).

    In questa guida introduttiva eseguiremo la programmazione in base all'API MongoDB, per cui occorrerà scegliere MongoDB nella compilazione del modulo.In this quick start we'll be programming against the MongoDB API so you'll choose MongoDB as you fill out the form. Tuttavia, se si dispone di dati grafo per un'app social media, dati documento di un'app di catalogo o dati chiave-valore (tabella), tenere presente che Azure Cosmos DB può fornire una piattaforma di servizi di database distribuiti a livello globale e a disponibilità elevata per tutte le applicazioni cruciali.But if you have graph data for a social media app, document data from a catalog app, or key/value (table) data, realize that Azure Cosmos DB can provide a highly available, globally-distributed database service platform for all your mission-critical applications.

    Compilare il pannello Nuovo account usando le informazioni riportate nella tabella come guida.Fill out the New account blade using the information in the table as a guide.

    Screenshot del pannello Nuovo Azure Cosmos DB

    ImpostazioneSetting Valore consigliatoSuggested value DescrizioneDescription
    IDID Valore univocoUnique value Nome univoco scelto per identificare l'account Azure Cosmos DB.A unique name you choose to identify the Azure Cosmos DB account. Poiché alI'ID fornito viene aggiunto documents.azure.com per creare l'URI, usare un ID univoco ma facilmente identificabile.documents.azure.com is appended to the ID you provide to create your URI, so use a unique but identifiable ID. L'ID può contenere solo lettere minuscole, numeri e il carattere '-' e deve avere una lunghezza compresa tra 3 e 50 caratteri.The ID may contain only lowercase letters, numbers, and the '-' character, and must be between 3 and 50 characters.
    APIAPI MongoDBMongoDB L'API determina il tipo di account da creare.The API determines the type of account to create. Azure Cosmos DB offre cinque API per soddisfare le esigenze dell'applicazione, ovvero SQL (database di documenti) Gremlin (grafo), MongoDB, SQL (database di documenti), Tabella di Azure e Cassandra, per ognuna delle quali è attualmente necessario un account separato.Azure Cosmos DB provides five APIs to suits the needs of your application: SQL (document database), Gremlin (graph database), MongoDB (document database), Azure Table, and Cassandra, each which currently require a separate account.

    Selezionare MongoDB perché in questa guida introduttiva si crea un database di documenti su cui è possibile eseguire query usando MongoDB.Select MongoDB because in this quickstart you are creating a document database that is queryable using MongoDB.

    Altre informazioni sull'API MongoDBLearn more about the MongoDB API
    SottoscrizioneSubscription Sottoscrizione in usoYour subscription Sottoscrizione di Azure da usare per l'account Azure Cosmos DB.The Azure subscription that you want to use for the Azure Cosmos DB account.
    Gruppo di risorseResource Group Stesso valore di IDThe same value as ID Nome del nuovo gruppo di risorse per l'account.The new resource group name for your account. Per semplicità si può usare lo stesso nome usato come ID.For simplicity, you can use the same name as your ID.
    LocalitàLocation Area più vicina ai propri utentiThe region closest to your users Posizione geografica in cui ospitare l'account Azure Cosmos DB.The geographic location in which to host your Azure Cosmos DB account. Scegliere la posizione più vicina ai propri utenti per fornire loro l'accesso più rapido possibile ai dati.Choose the location closest to your users to give them the fastest access to the data.
  4. Fare clic su Crea per creare l'account.Click Create to create the account.

  5. Sulla barra degli strumenti fare clic su Notifiche per monitorare il processo di distribuzione.On the toolbar, click Notifications to monitor the deployment process.

    Notifica di distribuzione avviata

  6. Al termine della distribuzione aprire il nuovo account dal riquadro Tutte le risorse.When the deployment is complete, open the new account from the All Resources tile.

    Account Azure Cosmos DB nel riquadro Tutte le risorse

Aggiornare la stringa di connessioneUpdate your connection string

  1. Nella pagina Azure Cosmos DB del portale di Azure selezionare l'account dell'API per MongoDB.In the Azure portal, in the Azure Cosmos DB page, select the API for MongoDB account.
  2. Nella barra a sinistra del pannello Account fare clic su Avvio rapido.In the left bar of the account blade, click Quick start.
  3. Scegliere la piattaforma (driver .NET, driver Node.js, MongoDB Shell, driver Java, driver Python).Choose your platform (.NET driver, Node.js driver, MongoDB Shell, Java driver, Python driver). Se il driver o lo strumento non è visualizzato nell'elenco, tenere presente che altri frammenti di codice di connessione vengono continuamente documentati.If you don't see your driver or tool listed, don't worry, we continuously document more connection code snippets.
  4. Copiare e incollare il frammento di codice nell'app MongoDB per iniziare.Copy and paste the code snippet into your MongoDB app, and you are ready to go.

Configurare l'app MongoDBSet up your MongoDB app

È possibile usare l'esercitazione Creare un'app Web di Azure che si connette a MongoDB in esecuzione su una macchina virtuale, con modifiche minime, per configurare rapidamente un'applicazione MongoDB, in locale o pubblicata in un'app Web di Azure, che si connette a un account dell'API per MongoDB.You can use the Create a web app in Azure that connects to MongoDB running on a virtual machine tutorial, with minimal modification, to quickly setup a MongoDB application (either locally or published to an Azure web app) that connects to an API for MongoDB account.

  1. Seguire l'esercitazione, con una modifica.Follow the tutorial, with one modification. Sostituire il codice del file Dal.cs con il codice seguente:Replace the Dal.cs code with this:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using MyTaskListApp.Models;
    using MongoDB.Driver;
    using MongoDB.Bson;
    using System.Configuration;
    using System.Security.Authentication;
    
    namespace MyTaskListApp
    {
        public class Dal : IDisposable
        {
            //private MongoServer mongoServer = null;
            private bool disposed = false;
    
            // To do: update the connection string with the DNS name
            // or IP address of your server. 
            //For example, "mongodb://testlinux.cloudapp.net
            private string connectionString = "mongodb://localhost:27017";
            private string userName = "<your user name>";
            private string host = "<your host>";
            private string password = "<your password>";
    
            // This sample uses a database named "Tasks" and a 
            //collection named "TasksList".  The database and collection 
            //will be automatically created if they don't already exist.
            private string dbName = "Tasks";
            private string collectionName = "TasksList";
    
            // Default constructor.        
            public Dal()
            {
            }
    
            // Gets all Task items from the MongoDB server.        
            public List<MyTask> GetAllTasks()
            {
                try
                {
                    var collection = GetTasksCollection();
                    return collection.Find(new BsonDocument()).ToList();
                }
                catch (MongoConnectionException)
                {
                    return new List<MyTask>();
                }
            }
    
            // Creates a Task and inserts it into the collection in MongoDB.
            public void CreateTask(MyTask task)
            {
                var collection = GetTasksCollectionForEdit();
                try
                {
                    collection.InsertOne(task);
                }
                catch (MongoCommandException ex)
                {
                    string msg = ex.Message;
                }
            }
    
            private IMongoCollection<MyTask> GetTasksCollection()
            {
                MongoClientSettings settings = new MongoClientSettings();
                settings.Server = new MongoServerAddress(host, 10255);
                settings.UseSsl = true;
                settings.SslSettings = new SslSettings();
                settings.SslSettings.EnabledSslProtocols = SslProtocols.Tls12;
    
                MongoIdentity identity = new MongoInternalIdentity(dbName, userName);
                MongoIdentityEvidence evidence = new PasswordEvidence(password);
    
                settings.Credentials = new List<MongoCredential>()
                {
                    new MongoCredential("SCRAM-SHA-1", identity, evidence)
                };
    
                MongoClient client = new MongoClient(settings);
                var database = client.GetDatabase(dbName);
                var todoTaskCollection = database.GetCollection<MyTask>(collectionName);
                return todoTaskCollection;
            }
    
            private IMongoCollection<MyTask> GetTasksCollectionForEdit()
            {
                MongoClientSettings settings = new MongoClientSettings();
                settings.Server = new MongoServerAddress(host, 10255);
                settings.UseSsl = true;
                settings.SslSettings = new SslSettings();
                settings.SslSettings.EnabledSslProtocols = SslProtocols.Tls12;
    
                MongoIdentity identity = new MongoInternalIdentity(dbName, userName);
                MongoIdentityEvidence evidence = new PasswordEvidence(password);
    
                settings.Credentials = new List<MongoCredential>()
                {
                    new MongoCredential("SCRAM-SHA-1", identity, evidence)
                };
                MongoClient client = new MongoClient(settings);
                var database = client.GetDatabase(dbName);
                var todoTaskCollection = database.GetCollection<MyTask>(collectionName);
                return todoTaskCollection;
            }
    
            # region IDisposable
    
            public void Dispose()
            {
                this.Dispose(true);
                GC.SuppressFinalize(this);
            }
    
            protected virtual void Dispose(bool disposing)
            {
                if (!this.disposed)
                {
                    if (disposing)
                    {
                    }
                }
    
                this.disposed = true;
            }
    
            # endregion
        }
    }
    
  2. Modificare le variabili seguenti nel file Dal.cs in base alle impostazioni dell'account nella pagina Chiavi del portale di Azure:Modify the following variables in the Dal.cs file per your account settings from the Keys page in the Azure portal:

    private string userName = "<your user name>";
    private string host = "<your host>";
    private string password = "<your password>";
    
  3. Usare l'app.Use the app!

Pulire le risorseClean up resources

Se non si prevede di continuare a usare questa app, seguire questa procedura per eliminare tutte le risorse create da questa esercitazione nel portale di Azure.If you're not going to continue to use this app, use the following steps to delete all resources created by this tutorial in the Azure portal.

  1. Scegliere Gruppi di risorse dal menu a sinistra del portale di Azure e quindi fare clic sul nome della risorsa creata.From the left-hand menu in the Azure portal, click Resource groups and then click the name of the resource you created.
  2. Nella pagina del gruppo di risorse fare clic su Elimina, digitare il nome della risorsa da eliminare nella casella di testo e quindi fare clic su Elimina.On your resource group page, click Delete, type the name of the resource to delete in the text box, and then click Delete.

Passaggi successiviNext steps

In questa esercitazione sono state eseguite le operazioni seguenti:In this tutorial, you've done the following:

  • Creare un account Azure Cosmos DBCreate an Azure Cosmos DB account
  • Aggiornare la stringa di connessioneUpdate your connection string
  • Creare un'app MongoDB in una macchina virtualeCreate a MongoDB app on a virtual machine

È possibile passare all'esercitazione successiva e importare i dati di MongoDB in Azure Cosmos DB.You can proceed to the next tutorial and import your MongoDB data to Azure Cosmos DB.