Esporta (0) Stampa
Espandi tutto

Procedura dettagliata: creazione di un'applicazione distribuita

La procedura dettagliata descritta di seguito consente di creare un'applicazione Intranet distribuita a più livelli. L'applicazione sarà costituita da tre livelli logici: dati, oggetto business e interfaccia utente. Il livello dati è un database di SQL Server. Il livello oggetto business gestirà l'accesso ai dati e la relativa distribuzione ai client. Il livello interfaccia utente sarà costituito da un'applicazione basata sul Web e un'applicazione Windows tradizionale.

L'applicazione che verrà generata è una semplice applicazione dati con funzionalità di ricerca e modifica. Verrà generato un client Windows per visualizzare la tabella Customers dal database di esempio Northwind di SQL Server. Verrà creato un servizio Web XML per recuperare i dati che contengono informazioni della tabella Customers dal database. Verrà quindi creata un'applicazione Windows per comunicare con lo stesso servizio Web XML, allo scopo di recuperare un dataset contenente informazioni sugli autori.

Verranno creati un servizio Web XML e le applicazioni client sullo stesso server, anche se il database può trovarsi su un server differente. Sia il server delle applicazioni sia il server del database devono trovarsi nella stessa rete Intranet. Questa organizzazione di progetti consente di utilizzare l'autenticazione Windows per ottenere l'accesso al database ed eseguire il test dell'applicazione e, contemporaneamente, di rimuovere molti dettagli di accesso alla risorsa in modo che l'interazione del servizio Web XML e delle applicazioni client sia visibile. È possibile che questa organizzazione non corrisponda esattamente all'architettura desiderata per le applicazioni personalizzate che sono state create.

Per completare questa procedura dettagliata è necessario:

  • Accesso a un server con il database di esempio Northwind di SQL Server configurato per l'autenticazione integrata Windows. Il database Northwind è uno dei database di esempio che è possibile installare con SQL Server.

  • Nozioni di base sulla gestione dei dati in Visual Studio .NET. Per ulteriori informazioni, vedere Cenni preliminari su ADO.NET.

Uno dei modi possibili per sviluppare un'applicazione distribuita consiste nel creare un livello per volta, iniziando ad esempio dal livello dati per poi passare all'oggetto business di livello intermedio e concludendo con la creazione dell'interfaccia utente. I dati necessari per questa procedura sono già stati creati e sono disponibili nel database Northwind in SQL Server. Si inizierà quindi creando l'oggetto business, ossia il servizio Web XML, quindi le due interfacce utente: una pagina Web Form e un Windows Form. Questa procedura prevede le seguenti operazioni:

  1. Creazione dell'oggetto business di livello intermedio

    1. Creazione di un progetto di servizio Web ASP.NET

    2. Creazione e configurazione di una connessione a un database e di uno schema di dataset

    3. Esposizione del dataset dall'oggetto business

  2. Creazione dell'interfaccia utente

    1. Creazione di un'interfaccia utente Windows

  3. Distribuzione della soluzione o aggiunta di ulteriori funzionalità

Creazione dell'oggetto business di livello intermedio

L'oggetto business creato verrà eseguito su un server Web per fornire le prestazioni e la scalabilità di cui necessita un'applicazione distribuita. Verrà inoltre implementato come servizio Web XML per consentire ai client di utilizzare i protocolli Internet standard per comunicare con tale oggetto da qualsiasi piattaforma. Per informazioni dettagliate, vedere Programmazione di siti Web con i servizi Web XML.

In questo caso, il componente servizio Web XML conterrà le connessioni dati e la definizione del dataset. Verranno quindi aggiunti metodi del servizio Web XML per esporre il dataset, consentendo così la visualizzazione e la modifica del dataset da altre applicazioni.

Il servizio Web XML esporrà due metodi. Il primo, GetCustomers, restituirà un dataset dal database. Il secondo, UpdateCustomers, aggiornerà il database con le modifiche apportate dall'utente.

Per creare un progetto di servizio Web ASP.NET

  1. Scegliere Nuovo dal menu File, quindi fare clic su Sito Web. Verrà visualizzata la finestra di dialogo Nuovo sito Web.

  2. Fare clic su Servizio Web ASP.NET nel riquadro Modelli Visual Studio installati.

  3. Nella casella Percorso inserire il nome del server Web (sul computer di sviluppo) insieme al nome del progetto, http://NomeServer/CustomersWebService, quindi scegliere OK.

    NoteSuggerimento:

    Poiché il server Web si trova sul computer in uso, è possibile utilizzare il nome server LOCALHOST.

  4. Il progetto CustomersWebService viene aggiunto alla soluzione. È importante sottolineare che il servizio Web verrà inizializzato nella lingua predefinita selezionata per Visual Studio.

  5. In Esplora soluzioni selezionare Service.asmx facendo clic su di esso.

  6. Nella finestra Proprietà impostare la proprietà File Name del Servizio su CustomersService.

    In questo componente si creerà una connessione all'archivio dati e si otterrà un'istanza dei dati utilizzando un dataset.

Creazione e configurazione di una connessione a database e di uno schema di dataset

Verrà aggiunto un dataset all'applicazione, quindi verrà utilizzata la Configurazione guidata TableAdapter per generare un oggetto TableAdapter tipizzato specifico per la tabella Customers del database.

Per creare una connessione al database e un adattatore dati

  1. Scegliere Aggiungi nuovo elemento dal menu Sito Web. Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.

  2. Selezionare Dataset, quindi fare clic su Aggiungi.

    Il dataset verrà aggiunto al progetto e verrà avviata la Configurazione guidata TableAdapter.

  3. Nella Configurazione guidata TableAdapter fare clic su Nuova connessione per creare la connessione.

    Verrà visualizzata la finestra di dialogo Aggiungi connessione e verrà preselezionato Microsoft SQL Server come tipo di database.

  4. Nella finestra di dialogo Aggiungi connessione immettere il nome del server SQL Server in cui è installato il database Northwind. Se SQL Server si trova nel computer locale, immettere (local).

  5. Selezionare Usa autenticazione di Windows per le informazioni di accesso.

    NoteNota

    Se la sicurezza integrata non è impostata nel sistema, contattare l'amministratore della rete.

  6. Selezionare il database Northwind dall'elenco.

  7. Fare clic su Test connessione per convalidare le informazioni fornite, quindi scegliere OK per stabilire la connessione.

    Verrà creata una nuova connessione di database, che verrà aggiunta alla casella a discesa nella Configurazione guidata TableAdapter.

    NoteNota

    Se la connessione al database ha esito negativo, rivolgersi all'amministratore del database.

  8. Verificare che il database sia selezionato nella casella a discesa, quindi fare clic su Avanti.

  9. Fare nuovamente clic su Avanti per salvare la stringa di connessione nel file di configurazione.

  10. Verificare che nel riquadro Seleziona un tipo di comando sia selezionata l'opzione Usa istruzioni SQL, quindi fare clic su Avanti.

  11. Nel riquadro Immettere un'istruzione SQL digitare SELECT * FROM Customers, quindi fare clic su Avanti.

  12. Nel riquadro Scegliere i metodi per generare fare clic su Fine.

    È stata creata una connessione al database, un dataset tipizzato ed è stato generato il TableAdapter che interagisce con il database.

  13. Scegliere Salva tutto dal menu File

Per utilizzare la sicurezza integrata, è necessario configurare le impostazioni di sicurezza del progetto. A tal fine disattivare l'accesso anonimo e attivare la rappresentazione.

Per configurare l'autenticazione integrata di Windows per il progetto, è necessario modificare i file di progetto e configurare il progetto tramite lo strumento Internet Information Services.

Per configurare l'autenticazione integrata di Windows

  1. Avviare lo strumento Internet Information Services. È possibile eseguirlo da Strumenti di amministrazione nel Pannello di controllo. Per ulteriori informazioni sull'avvio di tale strumento, consultare la documentazione della Guida di Windows.

  2. Espandere il nodo del server.

  3. Espandere il nodo Sito Web predefinito.

  4. Fare clic con il pulsante destro del mouse sul nodo CustomersWebService, quindi scegliere Proprietà dal menu di scelta rapida.

  5. Scegliere la scheda Sicurezza directory.

  6. Fare clic sul pulsante Modifica nella sezione Controllo autenticazione e accesso anonimo.

  7. Deselezionare la casella di controllo Accesso anonimo.

  8. Selezionare la casella di controllo Autenticazione integrata di Windows. A questo punto la directory dei servizi Web XML è stata configurata.

  9. Ritornando al progetto in Visual Studio, fare doppio clic sul file Web.config in Esplora soluzioni.

  10. Per configurare la sicurezza integrata per il servizio Web XML, aggiungere il seguente tag nella riga dopo il tag <system.web> .

    <identity impersonate="true"/>
    

Esposizione di CustomersDataTable dall'oggetto business

Il passaggio successivo di questa procedura prevede l'esposizione dell'oggetto DataSet appena creato dall'oggetto business. Questa operazione rende disponibile il dataset per le applicazioni Windows o Web.

Aggiunta di metodi al servizio Web XML

  1. Scegliere Genera soluzione dal menu Genera per generare la soluzione.

  2. In Esplora soluzioni fare doppio clic su Service.vb per aprire l'editor del codice.

  3. Aggiungere una riga al corpo della classe per creare una nuova istanza di TableAdapter, come illustrato di seguito:

    Dim myAdapter As New DataSetTableAdapters.CustomersTableAdapter
    

    DataSetTableAdapters.CustomersTableAdapter myAdapter = new 
        DataSetTableAdapters.CustomersTableAdapter();
    
  4. Aggiungere un metodo denominato GetCustomers per la trasmissione di un datatable al client.

    Questo metodo, illustrato più avanti, restituisce un datatable compilato con i dati dei clienti.

    <WebMethod()> Public Function GetCustomers() As _
        DataSet.CustomersDataTable
        Return myAdapter.GetData
    End Function 
    

    [WebMethod]
    public DataSet.CustomersDataTable GetCustomers() 
    {
        Return myAdapter.GetData();
    }
    
  5. Aggiungere un metodo denominato UpdateCustomers per propagare al database le modifiche apportate dal client.

    Questo metodo, illustrato più avanti, è dotato di un parametro DataSet.CustomersDataTable che contiene i dati modificati e aggiorna il database mediante il metodo CustomersTableAdapter.Update. Il metodo Update accetta le modifiche nel dataset. Il dataset viene restituito al client. Il client utilizza quindi il dataset restituito per aggiornare la propria istanza del datatable Customers. Per informazioni sul metodo Update e sull'accettazione delle modifiche in un dataset, vedere Introduzione agli adattatori dati.

    <WebMethod> Public Sub UpdateCustomers(ByVal CustomerChanges _
    As DataSet.CustomersDataTable)
        myAdapter.Update(CustomerChanges)
    End Sub
    

    [WebMethod]
    public void UpdateCustomers(DataSet.CustomersDataTable customerChanges)
    {
       myAdapter.Update(customerChanges);
    }
    
    
    NoteNota

    In un'applicazione di produzione, a tali metodi vengono aggiunti il controllo degli errori e la gestione delle eccezioni.

  6. Scegliere Salva tutto dal menu File.

  7. Scegliere Genera soluzione dal menu Genera.

Nelle sezioni precedenti è stato creato un oggetto business di livello intermedio contenente un dataset associato a un database SQL Server. Al servizio Web XML CustomersWebService di livello intermedio è stato quindi aggiunto il codice necessario per ottenere dati da un'origine dati e per aggiornare l'origine dati con le modifiche apportate. Il client accede a queste funzioni tramite i metodi del servizio Web XML GetCustomers e UpdateCustomers.

Creazione dell'interfaccia utente

Dopo avere creato un oggetto business di livello intermedio per l'accesso ai dati e averlo esposto come servizio Web XML, sarà necessario creare le interfacce client. In questa procedura sono individuabili due scenari: un Windows Form tradizionale e una pagina Web Form. In questo esempio vengono creati entrambi come progetti separati all'interno della stessa soluzione. Non è necessario creare entrambe le interfacce.

Interfaccia utente Windows

Un'interfaccia Windows sfrutta le funzionalità del computer client per la gestione di parte dell'elaborazione dell'applicazione. In linea generale, un'interfaccia Windows fornisce maggiori funzionalità e consente all'utente di eseguire un numero maggiore di operazioni rispetto a un'interfaccia basata sul Web. Comporta un carico minore sul server rispetto a un front end Web in quanto l'esecuzione della logica dell'applicazione non è completamente demandata al server. Inoltre, un'interfaccia Windows può avvalersi delle risorse messe a disposizione dal sistema operativo, comprese le chiamate al file system e il Registro di sistema.

L'applicazione Windows, costituita da un Windows Form, conterrà un riferimento Web a CustomersWebService. I dati nel database verranno visualizzati in un controllo DataGridView facendo clic su un pulsante Load presente nel form. Il comportamento di caricamento viene implementato chiamando il metodo GetCustomers del servizio Web XML. Il controllo DataGridView consente la modifica diretta, con il passaggio diretto delle modifiche apportate ai dati al dataset sottostante. Sul form sarà presente anche un pulsante di salvataggio. Nel codice di questo pulsante sarà presente una chiamata al metodo UpdateAuthors del servizio Web XML per il salvataggio delle modifiche nel database.

Per creare l'applicazione Windows

  1. Scegliere Aggiungi dal menu File, quindi fare clic su Nuovo progetto. Verrà visualizzata la finestra di dialogo Aggiungi nuovo progetto.

  2. Selezionare Applicazione Windows nel riquadro Modelli Visual Studio installati.

  3. Denominare il progetto CustomersWinClient e selezionare una posizione per il progetto, quindi scegliere OK.

    Il progetto CustomersWinClient verrà aggiunto alla soluzione. Form1 viene automaticamente aggiunto al progetto e visualizzato in Progettazione Windows Form.

  4. Aggiungere un riferimento Web al progetto di servizio Web ASP.NET creato in precedenza:

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto CustomersWinClient e scegliere Aggiungi riferimento Web dal menu di scelta rapida.

    2. Fare clic su Servizi Web in questa soluzione , quindi su CustomersService.

    3. Scegliere Aggiungi riferimento.

      A questo punto è possibile creare un'istanza del dataset DataSet nell'applicazione.

Per aggiungere controlli al form

  1. Trascinare un controllo DataGridView dalla scheda Dati della Casella degli strumenti nel form.

  2. Trascinare un controllo Button dalla scheda Controlli comuni della Casella degli strumenti nel form. Impostare la proprietà Name del pulsante su LoadData e la proprietà Text su Load.

  3. Trascinare un altro controllo Button dalla scheda Controlli comuni della Casella degli strumenti nel form. Impostare la proprietà Name del pulsante su SaveData e la proprietà Text su Save.

  4. Fare doppio clic nel form per aprire l'editor del codice.

  5. Sotto la dichiarazione di classe, creare un'istanza di localhost.DataSet come indicato di seguito:

    Dim CustomerData As New localhost.DataSet.CustomersDataTable
    

    localhost.DataSet.CustomersDataTable CustomerData = new
        localhost.DataSet.CustomersDataTable();
    

Per aggiungere codice ai pulsanti LoadData e SaveData

  1. Scegliere Finestra di progettazione dal menu Visualizza. Fare doppio clic sul pulsante LoadData per creare un gestore eventi vuoto per l'evento Click. I metodi del servizio Web XML vengono chiamati creando prima un'istanza della classe di servizio, quindi chiamando i metodi del servizio. In questo caso, viene chiamato il metodo GetCustomers . Il dataset restituito viene unito al dataset CustomerData . La proprietà Credentials del servizio Web XML viene utilizzata per passare l'identità al servizio Web XML che, a sua volta, la passa al server di database. Aggiungere al metodo il codice riportato sotto.

    NoteNota

    Se il servizio Web XML non è in esecuzione sul computer locale, è necessario sostituire localhost nell'esempio di codice con il nome del server su cui è in esecuzione.

    Private Sub LoadData_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles LoadData.Click
        Dim ws As New localhost.Service()
        ws.Credentials = System.Net.CredentialCache.DefaultCredentials
        CustomerData.Merge(ws.GetCustomers)
        DataGridView1.DataSource = CustomerData
    End Sub
    
    

    private void LoadData_Click(object sender, System.EventArgs e)
    {
        localhost.Service ws = 
            new localhost.Service();
        ws.Credentials = System.Net.CredentialCache.DefaultCredentials;
        CustomerData.Merge(ws.GetCustomers());
        DataGridView1.DataSource = CustomerData;
    }
    
    
  2. Scegliere Finestra di progettazione dal menu Visualizza. Fare doppio clic sul pulsante SaveData per creare un gestore di eventi vuoto per l'evento Click.

    NoteNota

    In un'applicazione di produzione, in questa fase vengono affrontati gli aspetti relativi alla concorrenza dei dati. Per ulteriori informazioni, vedere Introduzione alla concorrenza dei dati in ADO.NET.

    Aggiungere ai metodi il seguente codice:

    Private Sub SaveData_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles SaveData.Click
        If CustomerData.HasChanges Then
           Dim ws As New localhost.Service()
           ws.Credentials = System.Net.CredentialCache.DefaultCredentials
           ws.UpdateCustomers(CustomerData)
        End If
    End Sub
    
    

    private void SaveData_Click(object sender, System.EventArgs e)
    {
        if (CustomerData.HasChanges())
        {
            localhost.Service ws = 
                new localhost.CustomersService();
            ws.Credentials = 
                System.Net.CredentialCache.DefaultCredentials;
            ws.UpdateCustomers(CustomerData);
        }
    }
    
    
    

Per eseguire l'applicazione

  1. Scegliere Salva tutto dal menu File.

  2. Fare clic con il pulsante destro del mouse su CustomersWinClient in Esplora soluzioni e scegliere Imposta come progetto di avvio.

  3. Premere CTRL+F5 per eseguire l'applicazione.

    Verrà visualizzata una finestra contenente un controllo DataGridView vuoto.

  4. Fare clic su Carica per compilare la tabella, apportare eventuali modifiche, quindi fare clic su Salva per salvare le modifiche.

Nella sezione precedente è stato aggiunto alla soluzione un progetto Windows Form che agisce da interfaccia Windows. Windows Form è stato connesso al servizio Web XML creato nella prima sezione e sono stati utilizzati i controlli DataGridView e Button per creare l'interfaccia utente per il caricamento e l'aggiornamento dei dati.

A questo punto è possibile distribuire l'applicazione o, se si desidera, assegnare ulteriori funzionalità al programma. Di seguito sono riportati alcuni suggerimenti.

  • Distribuzione della soluzione

    È possibile distribuire l'applicazione Web a un server o creare un progetto di installazione per l'applicazione Windows. Per informazioni sulla distribuzione dell'applicazione Windows, vedere Procedura dettagliata: distribuzione di un'applicazione basata su Windows.

  • Supporto per l'accesso Web Internet

    In questa procedura dettagliata viene gestita l'autenticazione per le applicazioni Intranet. L'accesso all'applicazione è consentito agli utenti su Internet; pertanto, potrebbe essere necessaria una soluzione di autenticazione diversa. Per ulteriori informazioni, vedere Utilizzo dell'autenticazione IIS con la rappresentazione ASP.NET. È inoltre possibile approfondire le modalità di creazione di un'interfaccia Web per l'applicazione unitamente ai protocolli di accesso Web.

  • Considerazioni sulla sicurezza

    In questa procedura dettagliata viene utilizzata l'autenticazione integrata di Windows per controllare l'accesso al database. La sicurezza del database costituisce solo un aspetto per le applicazioni Web. Per una discussione sulla sicurezza delle applicazioni Web, vedere Procedure di protezione di base per applicazioni Web (Visual Studio).

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft