Exemple FlightNmo

Mis à jour : 17 juillet 2006

L'exemple FlightNmo décrit comment générer l'exemple d'application Flight à l'aide des objets NMO (Notification Services Management Objects).

Scénario

Des clients s'abonnent à des notifications de prix de vol. Dans chaque abonnement, ils indiquent la ville de départ et d'arrivée, le prix et, facultativement, la compagnie aérienne souhaités.

La société qui exécute l'application FlightNmo soumet les données d'événement de prix de vol à l'application en déposant des données XML dans un dossier observé. Notification Services collecte ensuite ces données et génère des notifications à l'intention des personnes dont les abonnements correspondent aux données recueillies.

Les notifications sont générées lorsque les conditions suivantes sont remplies :

  • Le prix du billet de l'événement est inférieur au prix du billet de l'abonnement.
  • L'aéroport de départ de l'événement est égal à l'aéroport de départ de l'abonnement.
  • L'aéroport d'arrivée de l'événement est égal à l'aéroport d'arrivée de l'abonnement.
  • La compagnie aérienne de l'événement est égale à la compagnie aérienne de l'abonnement (si elle a été spécifiée).

Si plusieurs notifications sont à envoyer en même temps pour un abonné, Notification Services procède à une remise de type digest afin de regrouper toutes ces notifications. Notification Services met ensuite en forme la notification à l'aide d'un module de formatage de contenu XSLT et utilise le canal de remise spécifié (message électronique ou fichier) pour distribuer la notification.

Langages

XML, XSD, XSLT et Microsoft Visual C# ou Microsoft Visual Basic.

Fonctionnalités

L'exemple FlightNmo utilise les fonctionnalités suivantes de Notification Services :

Domaine d'application Fonctionnalités

Classe Event

File d'attente d'événements de base (pas de chronique).

Classe Subscription

Abonnements pilotés par les événements.

Classe Notification

Remise de type digest.

Fournisseurs d'événements

Fournisseur d'événements FileSystemWatcher.

Modules de formatage de contenu

Module de formatage de contenu XSLT.

Protocoles de remise

Protocoles de remise FTP et SMTP.

Développement de l'instance et de l'application

NMO

Configuration requise

Avant d'exécuter cet exemple, vérifiez que le logiciel suivant est installé :

  • SQL Server 2005, y compris les composants suivants :
    • Moteur de base de données.
    • Composants du moteur de Notification Services et composants clients.
    • SQL Server Management Studio.
    • Exemples Notification Services. Ces exemples accompagnent SQL Server 2005. Vous pouvez télécharger la dernière version des exemples sur le site Web du SQL Server Developer Center (Centre des développeurs SQL Server).
    • Le Kit de développement .NET Framework SDK 2.0 ou Microsoft Visual Studio 2005. Vous pouvez obtenir gratuitement le Kit de développement .NET Framework SDK. Consultez Installation du SDK .NET Framework.

Vérifiez que les composants Windows suivants sont installés et opérationnels :

  • Service SMTP (Simple Mail Transfer Protocol), qui est un composant des services IIS (Internet Information Services). Sur Microsoft Windows Server 2003, SMTP n'est pas installé par défaut avec les services IIS. Pour plus d'informations sur l'installation et l'utilisation du service SMTP, consultez la documentation de Windows.

Par ailleurs, vérifiez que l'instance du moteur de base de données que vous allez utiliser a démarré.

Génération d'un fichier de clé de nom fort

Si vous n'avez pas encore créé un fichier de clé de nom fort, utilisez la procédure suivante pour générer ce fichier.

Pour générer un fichier de clé de nom fort

  1. Ouvrez une invite de commandes Microsoft Visual Studio 2005. Cliquez sur Démarrer, pointez sur Tous les programmes et sur Kit de développement Microsoft .NET Framework SDK 2.0, puis cliquez sur Invite de commandes du Kit de développement SDK.

    -- Ou --

    Ouvrez une invite de commandes Microsoft .NET Framework. Cliquez sur Démarrer, pointez sur Tous les programmes et sur Kit de développement Microsoft .NET Framework SDK 2.0, puis cliquez sur Invite de commandes du Kit de développement SDK.

  2. Utilisez la commande CD (changer de répertoire) pour remplacer le dossier actif dans la fenêtre de l'invite de commandes par le dossier dans lequel les exemples sont installés.

    ms160822.note(fr-fr,SQL.90).gifRemarque :
    Pour déterminer le dossier dans lequel se trouvent les exemples, cliquez sur le bouton Démarrer, pointez successivement sur Tous les programmes, sur Microsoft SQL Server 2005 et sur Documentation et didacticiels, puis cliquez sur le répertoire Samples. Si l'emplacement d'installation par défaut a été utilisé, les exemples se trouvent dans <lecteur_système>:\Program Files\Microsoft SQL Server\100\Samples.
  3. À l'invite de commandes, exécutez la commande suivante pour générer le fichier de clé :

    sn -k SampleKey.snk

    ms160822.note(fr-fr,SQL.90).gifImportant :
    Pour plus d'informations sur la paire de clés de nom fort, consultez l'article de sécurité concernant les noms forts et la sécurité dans .NET Framework, dans le Centre de développement .NET sur MSDN.

Génération de l'instance de Notification Services

Pour générer l'instance, vous devrez procéder comme suit :

  • Créez et inscrivez l'instance de Notification Services.
  • Octroyez les autorisations pour SQL Server, les bases de données et les dossiers.

Les procédures suivantes montrent comment effectuer chacune de ces tâches pour l'exemple FlightNmo.

Étape 1 : Générez la solution Visual Studio

  1. Vous allez commencer par générer la solution Visual Studio.

    Si vous utilisez le Kit de développement (SDK) Microsoft .NET Framework, procédez comme suit :

    1. Cliquez sur Démarrer, pointez sur Tous les programmes\Kit de développement Microsoft .NET Framework SDK v2.0, puis cliquez sur Invite de commandes du Kit de développement SDK.
    2. Recherchez le dossier racine de l'exemple FlightNmo. Tapez la commande suivante (si ce dossier se trouve à l'emplacement par défaut) :
      cd C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo
    3. Tapez la commande suivante pour générer la solution :
      [C#] 
      msbuild FlightNmo.sln
      [Visual Basic] 
      msbuild FlightNmo_VB.sln

    Ou bien, si vous utilisez Visual Studio 2005, procédez comme suit :

    1. Ouvrez le fichier solution de votre choix (FlightNmo.sln ou FlightNmo_VB.sln).
    2. À partir de Visual Studio, affichez le menu Générer et sélectionnez Déployer la solution.

Étape 2 : Créez et inscrivez l'instance de Notification Services.

  1. À l'invite de commandes, accédez au sous-répertoire Debug du répertoire CreateFlightNmoInstance.

    cd CreateFlightNmoInstance\language\CreateFlightNmoInstance\bin\Debug

  2. Exécutez CreateFlightNmoInstance.exe comme indiqué ci-dessous pour créer, inscrire et activer l'instance. Les arguments SqlUserName et SqlPassword ne sont obligatoires que si vous utilisez l'authentification SQL Server. Tous les autres arguments sont requis :

    **CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**directory

    **NotificationServicesHost=**NotificationServicesHost

    **ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd

    **SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd

    Lorsque vous exécutez cette commande, utilisez les valeurs suivantes pour les espaces réservés ci-dessus :

    • databaseServer est l'instance du moteur de base de données sur laquelle doivent être créées les bases de données d'instance et d'application.
    • directory est le répertoire de l'exemple. Il s'agit par défaut de C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo.
    • NotificationServicesHost est le serveur qui exécute les composants du moteur de Notification Services. Pour cet exemple, vous devez utiliser l'ordinateur local.
    • NSServiceUserName est le compte qu'utilisera le service Windows NS$FlightNmoInstance pour s'exécuter.
    • NSServicePwd est le mot de passe du compte NSServiceUserName.
    • Ne spécifiez les arguments de l'authentification SQL Server, NSServiceSqlUserName et NSServiceSqlPwd, que si vous utilisez l'authentification SQL Server. Si ces arguments sont fournis, le service Windows les utilisera pour se connecter au moteur de base de données.

    Lorsqu'elle s'exécute, cette commande crée deux bases de données et un service Windows. Les bases de données sont nommées FlightNmoInstanceNSMain et FlightNmoInstanceFlightNmo. Le nom du service Windows est NS$FlightNmoInstance.

ms160822.note(fr-fr,SQL.90).gifRemarque :
Si vous déployez un exemple Notification Services à l'aide d'un compte de propriétaire de base de données ou d'un compte d'administrateur système, il n'est pas nécessaire d'accorder les autorisations SQL Server sur le compte. L'octroi de ces autorisations risque d'entraîner une erreur, que vous pouvez d'ailleurs ignorer. Lorsque vous déployez vos propres applications, vous devez utiliser des comptes dotés de privilèges réduits afin d'améliorer la sécurité.

Étape 3 : Octroyez les autorisations pour SQL Server et les bases de données

  1. Ouvrez SQL Server Management Studio et connectez-vous à l'instance du moteur de base de données que vous avez spécifiée dans l'argument SqlServer plus haut dans cette rubrique.

  2. Dans l'Explorateur d'objets, développez le nœud Sécurité.

  3. Si vous devez créer un nouveau compte de connexion SQL Server pour le service Windows, cliquez avec le bouton droit sur Connexions, puis sélectionnez Nouvelle connexion et créez le compte de connexion :

    • Pour utiliser l'authentification Windows, sélectionnez Authentification Windows et entrez le nom du compte Windows que vous avez spécifié dans l'argument ServiceUserName plus haut dans cette rubrique.
    • Pour utiliser l'authentification SQL Server, sélectionnez Authentification SQL Server, puis entrez les valeurs que vous avez spécifiées pour les arguments SqlUserName et SqlPassword plus haut dans cette rubrique.
  4. Si le compte de connexion utilisé par le service Windows a déjà accès à SQL Server, cliquez avec le bouton droit sur ce compte de connexion et sélectionnez Propriétés.

  5. Dans le volet gauche de la boîte de dialogue Connexion, sélectionnez l'option de mappage des utilisateurs.

  6. Octroyez les autorisations pour la base de données FlightNmoInstanceNSMain :

    1. Dans la zone réservée aux utilisateurs mappés à cette connexion, sélectionnez FlightNmoInstanceNSMain.
    2. Dans la zone Appartenance au rôle de base de données pour : FlightNmoInstanceNSMain, sélectionnez NSRunService.
  7. Octroyez les autorisations pour la base de données FlightNmoInstanceFlightNmo :

    1. Dans la zone réservée aux utilisateurs mappés à cette connexion, sélectionnez FlightNmoInstanceFlightNmo.
    2. Dans la zone Appartenance au rôle de base de données pour : FlightNmoInstanceFlightNmo, sélectionnez NSRunService.
  8. Cliquez sur OK pour appliquer les autorisations SQL Server.

  9. À l'aide de l'Explorateur Windows, configurez la sécurité pour le dossier Events :

    1. Recherchez le dossier Events de l'exemple.
    2. Cliquez avec le bouton droit sur le dossier Events, sélectionnez Partage et sécurité, puis sélectionnez l'onglet Sécurité.
    3. Cliquez sur Ajouter et ajoutez le compte utilisé par le service Windows.
    4. Dans la zone Noms d'utilisateurs ou de groupes, sélectionnez le compte que vous venez d'ajouter.
    5. Dans la zone Autorisations pour, sélectionnez les autorisations Lecture et Modification.
    6. Cliquez sur OK pour appliquer les modifications.
  10. Configurez la sécurité pour le dossier Notifications :

    1. Recherchez le dossier Notifications de l'exemple.
    2. Cliquez avec le bouton droit sur le dossier Notifications, sélectionnez Partage et sécurité, puis sélectionnez l'onglet Sécurité.
    3. Cliquez sur Ajouter et ajoutez le compte utilisé par le service Windows.
    4. Dans la zone Noms d'utilisateurs ou de groupes, sélectionnez le compte que vous venez d'ajouter.
    5. Dans la zone Autorisations pour, sélectionnez Écriture.
    6. Cliquez sur OK pour appliquer les modifications.

Exécution de l'exemple

Pour exécuter l'exemple, vous devez procéder comme suit :

  • Démarrez l'instance.
  • Ajoutez des abonnés et des abonnements.
  • Déposez dans le dossier Events un fichier XML qui contient des événements.
  • Affichez les notifications résultantes.

Les procédures suivantes montrent comment réaliser ces tâches :

Étape 1 : Démarrez l'instance

  1. Dans l'Explorateur d'objets, ouvrez le dossier Notification Services.

  2. Cliquez avec le bouton droit sur FlightNmoInstance, puis sélectionnez Démarrer.

Étape 2 : Ajoutez des abonnés et des abonnements

  1. Exécutez AddSubscribers.exe.

    L'emplacement par défaut de ce fichier est C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscribers\language\AddSubscribers\bin\Debug.

  2. Exécutez AddSubscriptions.exe.

    L'emplacement par défaut de ce fichier est C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscriptions\language\AddSubscriptions\bin\Debug.

ms160822.note(fr-fr,SQL.90).gifRemarque :
Si vous travaillez dans une application de production ou si vous exécutez votre application avec un compte restreint, ajoutez la connexion SQL Server de l'application au rôle de base de données NSSubscriberAdmin dans les bases de données d'instance et d'application.

Étape 3 : Soumettez des événements

  1. Dans l'Explorateur Windows, recherchez le dossier racine de l'exemple FlightNmo, puis copiez le fichier EventData.xml vers le sous-dossier Events.

    Lorsque vous déposez le fichier, le fournisseur d'événements FileSystemWatcher lit les données du fichier, les soumet à l'application, puis affecte au fichier l'extension .done.

    Si une erreur se produit lors de la lecture ou de la soumission des données, le fournisseur d'événements affecte au fichier l'extension .err. Pour plus d'informations sur l'erreur, consultez l'Observateur d'événements Windows.

Étape 4 : Affichez les notifications

  1. Laissez à Notification Services environ une minute pour produire les notifications.

  2. À l'aide de l'Explorateur Windows, recherchez le dossier Notifications de l'exemple FlightNmo. Vous devez y trouver un fichier nommé FileNotifications.txt. Ce fichier contient les notifications basées sur fichier.

  3. Naviguez jusqu'au dossier où sont déposés les messages électroniques. Il s'agit généralement de l'un des dossiers de C:\Inetpub\mailroot. Selon l'état du serveur SMTP, les notifications doivent se trouver dans le dossier Pickup ou le dossier Queue. Si le service SMTP s'exécute, les messages peuvent avoir été déplacés vers le dossier Badmail.

Suppression de l'exemple

Respectez la procédure suivante pour supprimer l'exemple FlightNmo.

Pour supprimer l'exemple FlightNmo

  1. Dans l'Explorateur d'objets de SQL Server Management Studio, ouvrez le dossier Notification Services.

  2. Cliquez avec le bouton droit sur FlightNmoInstance, puis sélectionnez Arrêter.

  3. Cliquez avec le bouton droit sur FlightNmoInstance, pointez sur Tâches, puis sélectionnez Annuler l'inscription.

  4. Cliquez avec le bouton droit sur FlightNmoInstance, pointez sur Tâches, puis sélectionnez Supprimer.

Voir aussi

Autres ressources

Exemples SQL Server Notification Services
Sécurisation de Notification Services

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

14 avril 2006

Contenu ajouté :
  • Ajout d'une remarque sur l'exécution des exemples à l'aide des autorisations de propriétaire de base de données.

5 décembre 2005

Contenu modifié :
  • Modification des instructions concernant la génération d'un fichier de clé, entre autres le nom et l'emplacement de ce fichier.