venerdì 5 dicembre 2025

Tutorial Asp.Net web API MongoDB : C# Operazioni CRUD tramite Web API e MongoDB




In questa seconda ed ultima parte, vedremo come utilizzare i servizi web api creati nel precedente articolo, per gestire le informazioni contenuti nel database MongoDB Community.
In particolare, vedremo come da un progetto di tipo “Windows Application”, possiamo eseguire operazioni CRUD, richiamando i vari metodi del servizio.
Tramite l’ambiente di sviluppo “Visual Studio 2022 Community” e l’ultima versione del Framework .Net, nel momento in cui è pubblicato l’articolo è la 9, richiameremo tramite i vari pulsanti i metodi del servizio.

Creazione del progetto

Si crea un nuovo progetto di tipo “Window Application” selezionando come modello  “App Windows Forms”, dopo aver selezionato tale modello , fare click sul pulsante “Avanti”, nella schermata successiva, impostiamo un nome al progetto, e facciamo click sul pulsante “Avanti”. Nella schermata successiva, che è anche l’ultima, selezioniamo l’ultima versione del Framework, nel nostro caso è la 9. Facciamo click sul pulsante “Crea”.
Aggiungiamo al progetto, un controllo datagridView, impostando la proprietà “Name” con il valore “DtgDati”, e la proprietà “dock” con il valore “top”. Aggiungiamo due label, con la proprietà impostata rispettivamente “Nome” e l’altro controllo con il valore “Cognome”, e due controlli di tipo “textbox”, con la proprietà “Name” impostata con “TxtNome”, e l’altro controllo con la proprietà “Name” impostata con “TxtCognome”.
Aggiungiamo tre controlli di tipo “Button”, e nella proprietà “name” impostiamo il valore “BtnWebApiMetodoInsert”, per un controllo, il valore “BtnWebAPIMetodoDelete” per un altro controllo, ed il valore “BtnWebAPIMetodoUpdate”. Impostiamo per ogni controllo   la proprietà “text” rispettivamente con il valore “Web API metodo Insert”, “Web API metodo Delete” e “Web API metodo Update”, il progetto sarà come mostrato in figura 1.

Figura 1 – La form con i relativi controlli
Figura 1 – La form con i relativi controlli




Aggiungiamo al progetto il pacchetto nuget per la gestione dei formati Json, dalla finestra Nuget, inseriamo il pacchetto Newtonsoft.Json”, il tutto come mostrato in figura 2.


Figura 2 – Il pacchetto per la gestione dei formati Json
Figura 2 – Il pacchetto per la gestione dei formati Json


Stesura del codice

Terminata la creazione del progetto, non resta che scrivere il codice, la prima operazione da fare, è aggiungere lo spazio dei nomi del pacchetto aggiunto poco fa. Passiamo in visualizzazione codice, ed in alto, sopra ad ogni dichiarazione, inseriamo il seguente namespace.

C#

using Newtonsoft.Json;



Sempre restando in visualizzazione codice, scriviamo una classe che farà da contenitore dei dati, e che mapperà la collection.
La classe, la possiamo utilizzare nella stessa form, oppure in un file separato, a descrizione del lettore.
Di seguito si riporta la mappa per la gestione dei dati.



C#

    public class Dati

    {

       public string Id { get; set; }

        public string nome { get; set; }

        public string cognome { get; set; }

        public string email { get; set; }

 

        public DateTime data_nascita { get; set; }

    }





Continuando a rimanere nella form, nella stessa classe inseriamo una procedura che avrà il compito di leggere i dati dal database, e sarà richiamata nell’evento load della form e nelle varie operazioni di inserimento, modifica e cancellazione dei dati.
La funzione effettuerà una chiamata di tipo “Get” al metodo web api, creato nel precedente articolo per estrapolare i dati.
Di seguito si riporta il frammento di codice delle suddette operazioni.


C#

private void CaricaDati()

{

    //Richiamo il metodo get della Web API

    try

    {

        using (var client = new HttpClient())

        {

            client.BaseAddress = new Uri("http://localhost:5081/"); //Indirizzo della Web API

            client.DefaultRequestHeaders.Accept.Clear();

            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            //Eseguo la chiamata al metodo Get

            HttpResponseMessage response = client.GetAsync("api/daticontrollers").Result;

            if (response.IsSuccessStatusCode)

            {

                var datiJson = response.Content.ReadAsStringAsync().Result;

                var listaDati = JsonConvert.DeserializeObject<List<Dati>>(datiJson);

                DtgDati.DataSource = null;

                DtgDati.DataSource = listaDati;

            }

            else

            {

                MessageBox.Show("Errore nella chiamata alla Web API: " + response.StatusCode);

            }

        }

    }

    catch (Exception ex)

    {

        MessageBox.Show(ex.Message);

    }

 

 

 

}





Passiamo in visualizzazione grafica, e facciamo dopo click in una qualunque parte della form, in modo da passare in visualizzazione codice nell’evento load della form.
In questo evento viene richiamato il metodo per la lettura dei dati che verranno visualizzati nella griglia.
Di seguito si riportano il frammento di codice delle suddette operazioni.

C#

private void Form1_Load(object sender, EventArgs e)

{

    CaricaDati();

}





Ritorniamo in visualizzazione grafica, e facciamo doppio click sul pulsante di inserimento dati, in modo da passare in visualizzazione codice nell’evento click del pulsante.
In questo evento si crea un oggetto della classe dati, impostando i campi nome e cognome con i valori presenti nelle caselle di testo, il campo email, con un valore preso da nome e cognome, ed il campo data di nascita, con la data odierna.
Tramite una chiamata di tipo “Post” trasformando in un formato json l’oggetto con i dati, verrà inserito il dato nella collection di MongoDB Community.
Di seguito si riporta il codice delle suddette operazioni.


C#

private void BtnWebApiMetodoInsert_Click(object sender, EventArgs e)

 {

 

     //Richiamo il metodo web api per l'inserimento del dato

     try

     {

         using (var client = new HttpClient())

         {

             client.BaseAddress = new Uri("http://localhost:5081/"); //Indirizzo della Web API

             client.DefaultRequestHeaders.Accept.Clear();

             client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

             //Eseguo la chiamata al metodo post

             var nuovoDato = new Dati

             {

                 nome = TxtNome.Text,

                 cognome = TxtCognome.Text,

                 email = $"{TxtNome.Text}{TxtCognome.Text}@dominio.it",

                 data_nascita = DateTime.Now

             };

 

             var json = JsonConvert.SerializeObject(nuovoDato);

             var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

 

 

             HttpResponseMessage response = client.PostAsync("api/daticontrollers", content).Result;

             if (response.IsSuccessStatusCode)

             {

                 response = client.GetAsync("api/daticontrollers").Result;

                 if (response.IsSuccessStatusCode)

                 {

                     CaricaDati();

 

                 }

                 else

                 {

                     MessageBox.Show("Errore nella chiamata alla Web API: " + response.StatusCode);

                 }

 

             }

             else

             {

                 MessageBox.Show("Errore nella chiamata alla Web API: " + response.StatusCode);

             }

         }

     }

     catch (Exception ex)

     {

         MessageBox.Show(ex.Message);

     }

 }



Passiamo in visualizzazione grafica, e facciamo click sul pulsante per la cancellazione del dato, quello relativo a "Delete”.
In questo caso, tramite l’operazione DeleteAsync, passando l’id della riga selezionata della griglia, verrà cancellato in dato.
Di seguito si riporta il frammento di codice per invocare il metodo web api per la cancellazione del dato.


C#

  private void BtnWebAPIMetodoDelete_Click(object sender, EventArgs e)

  {

      //Elimino un dato tramite la web api

 

      try

      {

          if (DtgDati.SelectedRows.Count == 0)

          {

              MessageBox.Show("Selezionare una riga da eliminare");

              return;

          }

          var selectedRow = DtgDati.SelectedRows[0];

          var idSelezionato = selectedRow.Cells[0].Value.ToString();

          if (string.IsNullOrEmpty(idSelezionato))

          {

              MessageBox.Show("record non trovato");

              return;

          }

          string id = idSelezionato;

          using (var client = new HttpClient())

          {

              client.BaseAddress = new Uri("http://localhost:5081/"); //Indirizzo della Web API

              client.DefaultRequestHeaders.Accept.Clear();

              client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

              //Eseguo la chiamata al metodo delete

              HttpResponseMessage response = client.DeleteAsync($"api/daticontrollers/{id}").Result;

              if (response.IsSuccessStatusCode)

              {

                  response = client.GetAsync("api/daticontrollers").Result;

                  if (response.IsSuccessStatusCode)

                  {

                       

                      CaricaDati();

                  }

                  else

                  {

                      MessageBox.Show("Errore nella chiamata alla Web API: " + response.StatusCode);

                  }

              }

              else

              {

                  MessageBox.Show("Errore nella chiamata alla Web API: " + response.StatusCode);

              }

 

 

 

          }

 

 

      }

      catch (Exception ex)

      {

          MessageBox.Show(ex.Message);

      }

  }





Siamo giunti all’ultimo esempio di codice, quello relativo alla modifica del dato, l’operazione di tipo update.

Facciamo doppio click sul pulsante “Update” in modo da passare in visualizzazione codice nell’evento click del pulsante stesso, in modo da scrivere le operazioni di aggiornamento.

In questo metodo si crea un oggetto della classe dati, con i dati modificati, utilizzeremo la chiamata di tipo post, passando l’id del record e  l’oggetto trasformato in formato json. 


C#

private void BtnWebAPIMetodoUpdate_Click(object sender, EventArgs e)

{

    //Aggiorno un dato tramite la web api

 

    try

    {

        if (DtgDati.SelectedRows.Count == 0)

        {

            MessageBox.Show("Selezionare una riga da aggiornare");

            return;

        }

        var selectedRow = DtgDati.SelectedRows[0];

        var idSelezionato = selectedRow.Cells[0].Value.ToString();

        if (string.IsNullOrEmpty(idSelezionato))

        {

            MessageBox.Show("record non trovato");

            return;

        }

        string id = idSelezionato;

        using (var client = new HttpClient())

        {

            client.BaseAddress = new Uri("http://localhost:5081/"); //Indirizzo della Web API

            client.DefaultRequestHeaders.Accept.Clear();

            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            //Eseguo la chiamata al metodo put

            var datoAggiornato = new Dati

            {

                nome = TxtNome.Text,

                cognome = TxtCognome.Text,

                email = $"{TxtNome.Text}{TxtCognome.Text}@dominio.it",

                data_nascita = DateTime.Now

            };

            var json = JsonConvert.SerializeObject(datoAggiornato);

            var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

            HttpResponseMessage response = client.PutAsync($"api/daticontrollers/{id}", content).Result;

            if (response.IsSuccessStatusCode)

            {

                response = client.GetAsync("api/daticontrollers").Result;

                if (response.IsSuccessStatusCode)

                {

                    CaricaDati();

                     

                }

                else

                {

                    MessageBox.Show("Errore nella chiamata alla Web API: " + response.StatusCode);

                }

            }

            else

            {

                MessageBox.Show("Errore nella chiamata alla Web API: " + response.StatusCode);

            }

 

 

 

        }

 

 

    }

    catch (Exception ex)

    {

        MessageBox.Show(ex.Message);

    }

}









Ora non resta che testare il nostro progetto per le varie operazioni CRUD, ricordando di eseguire anche il servizio delle Web APi oltre al progetto di tipo Windows Application.

Conclusioni

Il tutorial ha fornito al lettore le informazioni e le basi per la gestione del database noSQL MondoDB Community.
In particolare, la gestione delle varie operazioni CRUD, su un database ed una collection, e richiamare il servizio di tipo WEB API creato con la tecnologia Asp.Net Core, servizi molto usati in questi ultimi anni. 
La chiamata ai vari metodi del servizi sono stati invocati da un progetto di tipo “Windows Application”, ma possono essere utilizzati anche da altri tipi di progetto, come console Application, web application o mobile application.
Informazioni di base, per la creazione di applicazioni business per la gestione dei dati del database MongoDB Community.





lunedì 1 dicembre 2025

Elenco Software gratuito per Windows

Nuovo aggiornamento riguardante l'elenco dei software gratuiti per Windows.

Si riporta qui di seguito una serie di programmi gratuiti da installare ed utilizzare sul sistema operativo Windows.

Quando si acquista un nuovo pc, è necessario installare alcuni programmi di utilità quotidiana, ma che a volte non troviamo, di seguito una serie di programmi divisi per categorie:

Di seguito la lista:

Lettore file pdf (Adobe):

Sono programmi per aprire i file di sola lettura di Adobe, quelli con estensione "pdf".


Adobe: Programma gratuito per la lettura e compilazione dei moduli dei file Pdf. Download qui https://get.adobe.com/it/reader/


Office Automation: 

Sono programmi che offrono la possibilità di una gestire vari tipologie di file quali video scrittura per la stesura delle lettere, foglio di calcolo per operazioni di contabilità e matematici, presentazioni e tanto altro.

Di seguito la lista dei programmi gratuiti da installare uno tra quelli presenti:

Onlyoffice: https://www.onlyoffice.com/it/download-desktop.aspx?from=home-use 

Libre Office: https://it.libreoffice.org/ 

Sono entrambi molto validi, anche se OnlyOffice offre qualcosa in più.


Office online: Suite di Microsoft, gratuita se utilizzata con un account gratuito Microsoft quale indirizzo email outlook o altri. www.outlook.it per accedere.

Navigazione internet browser:

Programmi che permettono di navigare in internet, ossia aprire i vari siti.


Da installare uno o più di uno dall'elenco qui di seguito:

Browser Chrome:  https://www.google.com/intl/it_it/chrome/ 

Posta elettronica:


em client https://it.emclient.com/


Grafica:

Programmi per la modifica di immagini o creazione di immagini.

Da installare uno o più dall'elenco qui di seguito in base alle proprie esigenze.

Paint.Net: programma di grafica: Un programma gratuito con codice sorgente, per realizzare immagini anche professionali https://www.getpaint.net/index.html 

Teleassistenza:

Programmi che permettono di collegarsi ad altro pc, per offrire assistenza o prendere il controllo da remoto, permette di vedere cosa accade in un altro pc che è collegato.


Da installare uno dall'elenco qui di seguito.

RustDesk          https://rustdesk.com/it/  Gratuito ed open source, senza limitazioni. 

TeamViewer:  https://www.teamviewer.com/it/

Supremo: https://www.supremocontrol.com/it/


Opzionali.

VPN:

Sono programmi che permettono di avere più sicurezza su internet, e sono utili per nascondere il proprio indirizzo ip.


Avira VPN https://www.avira.com/it/free-vpn

OpenVPN Connect: https://openvpn.net/client/

Sicurezza del pc:


Programmi che permettono di proteggere il proprio pc.

Avira free Security https://www.avira.com/it/free-security

Pulizia Adware

AdwCleaner - Strumento gratuito di pulizia e rimozione adware | Malwarebytes https://it.malwarebytes.com/adwcleaner/

Protezione Malware https://www.iobit.com/it/malware-fighter.php

Video Editing

Vimix

https://brunoherbelin.github.io/vimix/

Audio Editing

Ardour

https://ardour.org/ 

Editor di testo

Notepad++

https://notepad-plus-plus.org/