Condividi tramite


Esempio FlightNmo

Data aggiornamento: 17 luglio 2006

L'esempio FlightNmo illustra come creare l'applicazione di esempio Flight mediante gli oggetti NMO (Notification Services Management Objects).

Scenario

I clienti sottoscrivono notifiche relative ai prezzi dei voli. In ogni sottoscrizione indicano la città di partenza e di destinazione, il prezzo desiderato e facoltativamente la compagnia aerea.

La società che esegue l'applicazione FlightNmo inoltra i dati degli eventi relativi ai prezzi dei voli all'applicazione copiando dati XML in una cartella monitorata. Notification Services raccoglie quindi tali dati e genera notifiche per i sottoscrittori con sottoscrizioni corrispondenti.

Le notifiche vengono generate quando vengono soddisfatte le condizioni seguenti:

  • Il prezzo del biglietto dell'evento è inferiore a quello della sottoscrizione.
  • L'aeroporto di partenza dell'evento coincide con quello della sottoscrizione.
  • L'aeroporto di destinazione dell'evento coincide con quello della sottoscrizione.
  • La compagnia aerea dell'evento coincide con quella della sottoscrizione (se specificata).

Se a un sottoscrittore devono essere inviate più notifiche contemporaneamente, Notification Services utilizza il recapito digest per combinare le diverse notifiche. Notification Services formatta quindi la notifica mediante un formattatore del contenuto XSLT e la distribuisce attraverso il canale di recapito specificato (posta elettronica o file).

Linguaggi

XML, XSD, XSLT e Microsoft Visual C# o Microsoft Visual Basic.

Funzionalità

Nell'esempio FlightNmo vengono utilizzate le funzionalità seguenti di Notification Services:

Area di applicazione Funzionalità

Classe di evento

Coda degli eventi di base (senza cronologia).

Classe di sottoscrizione

Sottoscrizioni guidate dagli eventi.

Classe di notifica

Recapito digest.

Provider di eventi

Provider di eventi di monitoraggio del file system.

Formattatori del contenuto

Formattatore del contenuto XSLT.

Protocolli di recapito

Protocolli di recapito File e SMTP.

Sviluppo dell'istanza e dell'applicazione

NMO

Prerequisiti

Prima di eseguire questo esempio, verificare che siano installati i prodotti software seguenti:

  • SQL Server 2005, con i componenti seguenti:
    • Motore di database.
    • Motore e componenti client di Notification Services.
    • SQL Server Management Studio.
    • Esempi di Notification Services, inclusi in SQL Server 2005. È possibile scaricare la versione più recente degli esempi dal sito Web per gli sviluppatori di SQL Server.
    • .NET Framework SDK 2.0 o Microsoft Visual Studio 2005. .NET Framework SDK è disponibile gratuitamente. Vedere Installazione di .NET Framework SDK.

Verificare che i componenti seguenti di Windows siano installati e funzionino correttamente:

  • Servizio SMTP (Simple Mail Transfer Protocol), che è un componente di Internet Information Services (IIS). Per impostazione predefinita, in Microsoft Windows Server 2003 il servizio SMTP non è installato con IIS. Per istruzioni su come installare e utilizzare il servizio SMTP, vedere la documentazione di Windows.

Verificare inoltre che l'istanza di Motore di database sia avviata.

Generazione di un file di chiave con nome sicuro

Se non è stato ancora creato un file di chiave con nome sicuro, generare il file di chiave seguendo le istruzioni seguenti.

Per generare un file di chiave con nome sicuro

  1. Aprire il prompt dei comandi di Microsoft Visual Studio 2005. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

    -- oppure --

    Aprire il prompt dei comandi di Microsoft .NET Framework. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

  2. Utilizzare il comando CD (change directory) per passare dalla directory corrente della finestra del prompt dei comandi alla cartella in cui sono stati installati gli esempi.

    [!NOTA] Per determinare la cartella in cui si trovano gli esempi, fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2005, Documentazione ed esercitazioni, quindi Samples. Se è stato utilizzato il percorso di installazione predefinito, gli esempi si troveranno in <unità_sistema>:\Programmi\Microsoft SQL Server\100\Samples.

  3. Al prompt dei comandi digitare il comando seguente per generare il file di chiave:

    sn -k SampleKey.snk

    ms160822.note(it-it,SQL.90).gifImportante:
    Per ulteriori informazioni sulla coppia di chiavi con nome sicuro, vedere l'argomento relativo ai nomi sicuri e alla protezione in .NET Framework nel centro per sviluppatori di .NET su MSDN.

Creazione dell'istanza di Notification Services

Per creare l'istanza, eseguire le operazioni seguenti:

  • Creare e registrare l'istanza di Notification Services.
  • Concedere le autorizzazioni per SQL Server, database e cartelle.

Di seguito è illustrato come eseguire queste operazioni per l'esempio FlightNmo.

Passaggio 1: generazione della soluzione Visual Studio

  1. Generare innanzitutto la soluzione Visual Studio.

    Se si utilizza Microsoft .NET Framework SDK, eseguire le operazioni seguenti:

    1. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK v2.0 e quindi SDK Command Prompt.
    2. Individuare la cartella principale dell'esempio FlightNmo. Digitare il comando seguente per il percorso predefinito:
      cd \Programmi\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo
    3. Digitare la sintassi seguente per generare la soluzione:
      [C#] 
      msbuild FlightNmo.sln
      [Visual Basic] 
      msbuild FlightNmo_VB.sln

    In alternativa, se si utilizza Visual Studio 2005, eseguire le operazioni seguenti:

    1. Aprire il file della soluzione desiderato (FlightNmo.sln o FlightNmo_VB.sln).
    2. Scegliere Genera soluzione dal menu Genera di Visual Studio.

Passaggio 2: creazione e registrazione dell'istanza di Notification Services

  1. Al prompt dei comandi passare alla cartella Debug di CreateFlightNmoInstance.

    cd CreateFlightNmoInstance\linguaggio\CreateFlightNmoInstance\bin\Debug

  2. Eseguire CreateFlightNmoInstance.exe come illustrato di seguito per creare, registrare e abilitare l'istanza. Gli argomenti SqlUserName e SqlPassword sono necessari solo se si utilizza l'autenticazione di SQL Server. Tutti gli altri argomenti sono obbligatori:

    **CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**directory

    **NotificationServicesHost=**NotificationServicesHost

    **ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd

    **SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd

    Quando si esegue questo comando, utilizzare i valori seguenti per i segnaposto indicati in precedenza in questo argomento:

    • databaseServer è l'istanza del Motore di database in cui vengono creati i database dell'istanza e dell'applicazione.
    • directory è la directory dell'esempio. Il percorso predefinito è C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo.
    • NotificationServicesHost è il server che esegue i componenti del motore di Notification Services. Per questo esempio è consigliabile utilizzare il computer locale.
    • NSServiceUserName è l'account in cui viene eseguito il servizio Windows NS$FlightNmoInstance.
    • NSServicePwd è la password per l'account NSServiceUserName.
    • Utilizzare gli argomenti per l'autenticazione di SQL Server, NSServiceSqlUserName e NSServiceSqlPwd, solo se si utilizza l'autenticazione di SQL Server. Se questi argomenti vengono specificati, il servizio Windows li utilizza per connettersi al Motore di database.

    Al completamento del comando, sono disponibili due nuovi database e un servizio Windows. I database sono denominati FlightNmoInstanceNSMain e FlightNmoInstanceFlightNmo, e il servizio Windows NS$FlightNmoInstance.

[!NOTA] Se si distribuisce un esempio di Notification Services utilizzando l'account del proprietario del database o di un amministratore del sistema, non sarà necessario concedere autorizzazioni per SQL Server a tale account. Se si concedono tali autorizzazioni verrà visualizzato un errore, che può essere ignorato. Quando si distribuiscono applicazioni personalizzate, per migliorare la protezione è consigliabile utilizzare account con privilegi inferiori.

Passaggio 3: concessione delle autorizzazioni per SQL Server e per il database

  1. Eseguire SQL Server Management Studio e connettersi all'istanza del Motore di database specificata nell'argomento SqlServer.

  2. In Esplora oggetti espandere il nodo Protezione.

  3. Se è necessario creare un nuovo account di accesso al database per il servizio Windows, fare clic con il pulsante destro del mouse su Account di accesso, scegliere Nuovo account di accesso e creare l'account:

    • Per utilizzare l'autenticazione di Windows, selezionare Autenticazione di Windows e immettere lo stesso account di Windows specificato nell'argomento ServiceUserName.
    • Per utilizzare l'autenticazione di SQL Server, selezionare Autenticazione di SQL Server e immettere i valori specificati per gli argomenti SqlUserName e SqlPassword.
  4. Se l'account di accesso utilizzato dal servizio Windows dispone già dell'accesso a SQL Server, fare clic con il pulsante destro del mouse e scegliere Proprietà.

  5. Nel riquadro sinistro della finestra di dialogo Proprietà account di accesso selezionare Mapping utenti.

  6. Concedere le autorizzazioni per il database FlightNmoInstanceNSMain:

    1. In Utenti mappati all'account di accesso seguente selezionare FlightNmoInstanceNSMain.
    2. In Appartenenza a ruoli del database per: FlightNmoInstanceNSMain selezionare NSRunService.
  7. Concedere le autorizzazioni per il database FlightNmoInstanceFlightNmo:

    1. In Utenti mappati all'account di accesso seguente selezionare FlightNmoInstanceFlightNmo.
    2. In Appartenenza a ruoli del database per: FlightNmoInstanceFlightNmo selezionare NSRunService.
  8. Fare clic su OK per concedere le autorizzazioni per SQL Server.

  9. In Esplora risorse configurare la protezione per la cartella Events:

    1. Individuare la cartella Events dell'esempio.
    2. Fare clic con il pulsante destro del mouse sulla cartella Events, scegliere Condivisione e protezione e quindi selezionare la scheda Protezione.
    3. Fare clic su Aggiungi e aggiungere l'account utilizzato dal servizio Windows.
    4. In Utenti e gruppi selezionare l'account aggiunto.
    5. In Autorizzazioni per selezionare le autorizzazioni Lettura e Modifica.
    6. Fare clic su OK per rendere effettive le modifiche.
  10. Configurare la protezione per la cartella Notifications:

    1. Individuare la cartella Notifications dell'esempio.
    2. Fare clic con il pulsante destro del mouse sulla cartella Notifications, scegliere Condivisione e protezione e quindi selezionare la scheda Protezione.
    3. Fare clic su Aggiungi e aggiungere l'account utilizzato dal servizio Windows.
    4. In Utenti e gruppi selezionare l'account aggiunto.
    5. In Autorizzazioni per selezionare Scrittura.
    6. Fare clic su OK per rendere effettive le modifiche.

Esecuzione dell'esempio

Per eseguire l'esempio, è necessario eseguire le operazioni seguenti:

  • Avviare l'istanza.
  • Aggiungere sottoscrittori e sottoscrizioni.
  • Copiare un file XML che contiene eventi.
  • Visualizzare le notifiche risultanti.

Di seguito è illustrato come eseguire queste operazioni.

Passaggio 1: avvio dell'istanza

  1. In Esplora oggetti aprire la cartella Notification Services.

  2. Fare clic con il pulsante destro del mouse su FlightNmoInstance e quindi scegliere Avvia.

Passaggio 2: aggiunta di sottoscrittori e sottoscrizioni

  1. Eseguire AddSubscribers.exe.

    Il percorso predefinito del file è C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscribers\linguaggio\AddSubscribers\bin\Debug.

  2. Eseguire AddSubscriptions.exe.

    Il percorso predefinito del file è C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscriptions\linguaggio\AddSubscriptions\bin\Debug.

[!NOTA] Per le applicazioni di produzione, o se si esegue l'applicazione con un account con limitazioni, aggiungere l'account di accesso di SQL Server dell'applicazione al ruolo del database NSSubscriberAdmin nei database dell'istanza e dell'applicazione.

Passaggio 3: inoltro degli eventi

  1. In Esplora risorse individuare la cartella principale dell'esempio FlightNmo e copiare il file EventData.xml nella sottocartella Events.

    Dopo la copia del file, il provider di eventi di monitoraggio del file system legge i dati contenuti nel file, li inoltra all'applicazione e quindi modifica l'estensione del file in done.

    Se durante la lettura o l'inoltro dei dati si verifica un errore, il provider di eventi modifica l'estensione del file in err. Per ulteriori informazioni sull'errore, vedere il Visualizzatore eventi di Windows.

Passaggio 4: visualizzazione delle notifiche

  1. Attendere circa un minuto affinché Notification Services produca le notifiche.

  2. In Esplora risorse individuare la cartella Notifications dell'esempio FlightNmo. La cartella contiene un file denominato FileNotifications.txt, che include notifiche basate su file.

  3. Passare alla cartella dove vengono spostati i messaggi di posta elettronica. Si tratta in genere di una delle cartelle in C:\Inetpub\mailroot. Le notifiche dovrebbero essere contenute nella cartella Pickup o nella cartella Queue, in base allo stato del server SMTP. Se il servizio SMTP è in esecuzione, i messaggi potrebbero essere spostati nella cartella Badmail.

Rimozione dell'esempio

Eseguire le operazioni seguenti per rimuovere l'esempio FlightNmo.

Per rimuovere l'esempio FlightNmo

  1. In SQL Server Management Studio, in Esplora oggetti, aprire la cartella Notification Services.

  2. Fare clic con il pulsante destro del mouse su FlightNmoInstance e quindi scegliere Interrompi.

  3. Fare clic con il pulsante destro del mouse su FlightNmoInstance, scegliere Attività e quindi Annulla registrazione.

  4. Fare clic con il pulsante destro del mouse su FlightNmoInstance, scegliere Attività e quindi Elimina.

Vedere anche

Altre risorse

Esempi di SQL Server Notification Services
Protezione di Notification Services

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

14 aprile 2006

Contenuto aggiunto:
  • Aggiunta di una nota sull'esecuzione degli esempi utilizzando le autorizzazioni del proprietario del database.

5 dicembre 2005

Contenuto modificato:
  • Modifica delle istruzioni per la generazione di un file di chiave, inclusi il nome e il percorso del file di chiave.