FlightNmo (ejemplo)

Actualizado: 17 de julio de 2006

El ejemplo FlightNmo muestra cómo generar la aplicación de ejemplo Flight mediante los objetos de administración de Notification Services (NMO).

Escenario

Clientes viajeros se suscriben para recibir notificaciones de precios de vuelos. En cada suscripción, indican una ciudad de partida y una de llegada, un precio deseado y, opcionalmente, una compañía aérea.

La compañía que ejecuta la aplicación FlightNmo envía datos de eventos de precios de vuelos a la aplicación al colocar datos XML en una carpeta supervisada. A continuación, Notification Services recopila esos datos y genera notificaciones para los suscriptores con suscripciones coincidentes.

Las notificaciones se generan cuando se cumplen las siguientes condiciones:

  • El precio de billete del evento es menor que el precio de billete de la suscripción.
  • El aeropuerto de partida del evento es igual al aeropuerto de partida de la suscripción.
  • El aeropuerto de llegada del evento es igual al aeropuerto de llegada de la suscripción.
  • La compañía aérea del evento es igual a la compañía aérea de la suscripción (si se especifica).

Si un suscriptor tiene varias notificaciones que se deben enviar al mismo tiempo, Notification Services utiliza la entrega de resumen para combinar las diversas notificaciones. A continuación, Notification Services aplica formato a la notificación mediante un formateador de contenido XSLT y utiliza el canal de entrega especificado (correo electrónico o archivo) para distribuir la notificación.

Lenguajes

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

Características

El ejemplo FlightNmo utiliza las siguientes características de Notification Services:

Área de aplicación Características

Clase de evento

Cola de eventos básica (sin crónica).

Clase de suscripción

Suscripciones controladas por eventos.

Clase de notificación

Entrega de resumen.

Proveedores de eventos

Proveedor de eventos FileSystemWatcher.

Formateadores de contenido

Formateador de contenido XSLT.

Protocolos de entrega

Protocolos de entrega File y SMTP.

Desarrollo de instancia y aplicación

NMO

Requisitos previos

Antes de ejecutar este ejemplo, asegúrese de que esté instalado el siguiente software:

  • SQL Server 2005, incluidos los siguientes componentes:
    • Motor de base de datos.
    • Motor y componentes cliente de Notification Services.
    • SQL Server Management Studio.
    • Ejemplos de Notification Services. Estos ejemplos están incluidos en SQL Server 2005. Puede descargar la última versión de los ejemplos en el sitio Web para programadores de SQL Server.
    • .NET Framework SDK 2.0 o Microsoft Visual Studio 2005. Puede obtener .NET Framework SDK gratuitamente. Vea Instalar .NET Framework SDK.

Asegúrese de que los siguientes componentes de Windows estén instalados y en funcionamiento:

  • Servicio de Protocolo simple de transferencia de correo (SMTP), que es un componente de Servicios de Internet Information Server (IIS). En Microsoft Windows Server 2003, SMTP no se instala de forma predeterminada con IIS. Vea la documentación de Windows para obtener instrucciones sobre cómo instalar y usar el servicio SMTP.

Asegúrese también de que se inicie la instancia del Database Engine (Motor de base de datos) que va a utilizar.

Generar un archivo de clave de nombre seguro

Si aún no ha creado un archivo de clave de nombre seguro, genere este archivo mediante las siguientes instrucciones.

Para generar un archivo de clave de nombre seguro

  1. Abra un símbolo del sistema de Microsoft Visual Studio 2005. Haga clic en Inicio, seleccione Todos los programas, Microsoft .NET Framework SDK 2.0 y, a continuación, haga clic en Símbolo del sistema de SDK.

    -- O bien --

    Abra un símbolo del sistema de Microsoft .NET Framework. Haga clic en Inicio, seleccione Todos los programas, Microsoft .NET Framework SDK 2.0 y, a continuación, haga clic en Símbolo del sistema de SDK.

  2. Use el comando de cambio de directorio (CD) para cambiar el directorio actual a la carpeta donde están instalados los ejemplos.

    [!NOTA] para determinar la carpeta donde se encuentran los ejemplos, haga clic en el botón Inicio, seleccione Todos los programas, Microsoft SQL Server, Documentación y tutoriales y, a continuación, haga clic en el directorio Ejemplos. Si se usó la ubicación de instalación predeterminada, los ejemplos se encontrarán en <unidadDeSistema>:\Archivos de programa\Microsoft SQL Server\100\Ejemplos.

  3. En el símbolo del sistema, ejecute el comando siguiente para generar el archivo de clave:

    sn -k SampleKey.snk

    ms160822.note(es-es,SQL.90).gifImportante:
    Para obtener más información acerca del par de claves de nombre seguro, vea el apartado sobre informes de seguridad de nombres seguros y seguridad en .NET Framework en el centro de desarrollo de .NET de MSDN.

Generar la instancia de Notification Services

Para generar la instancia, deberá hacer lo siguiente:

  • Crear y registrar la instancia de Notification Services.
  • Conceder permisos de SQL Server, base de datos y carpeta.

Los siguientes procedimientos muestran cómo realizar cada una de estas tareas para el ejemplo FlightNmo.

Paso 1: generar la solución de Visual Studio

  1. En primer lugar, genere la solución de Visual Studio.

    Si está usando Microsoft .NET Framework SDK, haga lo siguiente:

    1. Haga clic en Inicio, seleccione Todos los programas\Microsoft .NET Framework SDK v2.0 y, a continuación, haga clic en SDK Command Prompt.
    2. Busque la carpeta raíz del ejemplo FlightNmo. Escriba el siguiente comando para la ubicación predeterminada:
      cd \Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo
    3. Escriba lo siguiente para generar la solución:
      [C#]
      msbuild FlightNmo.sln
      [Visual Basic] 
      msbuild FlightNmo_VB.sln

    O bien, si usa Visual Studio 2005, haga lo siguiente:

    1. Abra el archivo de solución que prefiera (FlightNmo.sln o FlightNmo_VB.sln).
    2. En el menú Generar de Visual Studio, seleccione Generar solución.

Paso 2: crear y registrar la instancia de Notification Services

  1. En el símbolo del sistema, vaya a la carpeta Debug dentro de CreateFlightNmoInstance.

    cd CreateFlightNmoInstance\language\CreateFlightNmoInstance\bin\Debug

  2. Ejecute CreateFlightNmoInstance.exe según se indica a continuación, para crear, registrar y habilitar la instancia. Los argumentos SqlUserName y SqlPassword se necesitan sólo si se usa la autenticación de SQL Server. Todos los demás argumentos son obligatorios:

    **CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**directory

    **NotificationServicesHost=**NotificationServicesHost

    **ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd

    **SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd

    Cuando ejecute este comando, use los siguientes valores para los marcadores indicados anteriormente:

    • databaseServer es la instancia de motor de base de datos en la que se deben crear las bases de datos de instancia y aplicación.
    • directory es el directorio del ejemplo. La ruta de acceso predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo.
    • NotificationServicesHost es el servidor que ejecuta los componentes del motor de Notification Services. Para este ejemplo, debe usar el equipo local.
    • NSServiceUserName es la cuenta bajo la cual se ejecutará el servicio de Windows NS$FlightNmoInstance.
    • NSServicePwd es la contraseña para la cuenta NSServiceUserName.
    • Use los argumentos de la autenticación de SQL Server, NSServiceSqlUserName y NSServiceSqlPwd, sólo si está usando la autenticación de SQL Server. Si se proporcionan estos argumentos, el servicio de Windows los usará para conectarse al Motor de base de datos.

    Una vez finalizada la ejecución de este comando, tendrá dos nuevas bases de datos y un servicio de Windows. Las bases de datos se denominan FlightNmoInstanceNSMain y FlightNmoInstanceFlightNmo. El servicio de Windows se denomina NS$FlightNmoInstance.

[!NOTA] Si está implementando un ejemplo de Notification Services con una cuenta que es el propietario de la base de datos o un administrador del sistema, no tiene que conceder permisos de SQL Server a la cuenta. Conceder estos permisos puede generar un error, que se puede omitir. Al implementar sus propias aplicaciones, debe utilizar cuentas con un menor número de privilegios para mejorar la seguridad.

Paso 3: conceder permisos de SQL Server y base de datos

  1. Abra SQL Server Management Studio y conéctese con la instancia del Motor de base de datos especificada en el argumento SqlServer que figura anteriormente en este tema.

  2. En el Explorador de objetos, expanda el nodo Seguridad.

  3. Si debe crear una nueva cuenta de inicio de sesión de base de datos para el servicio de Windows, haga clic con el botón secundario en Inicios de sesión, seleccione Nuevo inicio de sesión y cree la cuenta de Inicio de sesión:

    • Para usar la autenticación de Windows, seleccione Autenticación de Windows y especifique la misma cuenta de Windows que especificó en el argumento ServiceUserName anteriormente en este tema.
    • Para usar la autenticación de SQL Server, seleccione Autenticación de SQL Server y luego especifique los valores especificados para los argumentos SqlUserName y SqlPassword anteriormente en este tema.
  4. Si el inicio de sesión utilizado por el servicio de Windows ya tiene acceso a SQL Server, haga clic con el botón secundario en el inicio de sesión y seleccione Propiedades.

  5. En el panel izquierdo del cuadro de diálogo Inicio de sesión, seleccione Asignación de usuarios.

  6. Conceda permisos para la base de datos FlightNmoInstanceNSMain:

    1. En el cuadro Usuarios asignados a este inicio de sesión, seleccione FlightNmoInstanceNSMain.
    2. En el cuadro Miembros de la función de base de datos para: FlightNmoInstanceNSMain, seleccione NSRunService.
  7. Conceda permisos para la base de datos FlightNmoInstanceFlightNmo:

    1. En el cuadro Usuarios asignados a este inicio de sesión, seleccione FlightNmoInstanceFlightNmo.
    2. En el cuadro Miembros de la función de base de datos para: FlightNmoInstanceFlightNmo, seleccione NSRunService.
  8. Haga clic en Aceptar para aplicar los permisos de SQL Server.

  9. Con el Explorador de Windows, configure la seguridad para la carpeta Events:

    1. Ubique la carpeta Events del ejemplo.
    2. Haga clic con el botón secundario en la carpeta Events, seleccione Compartir y seguridad y, a continuación, haga clic en la ficha Seguridad.
    3. Haga clic en Agregar y agregue la cuenta usada por el servicio de Windows.
    4. En el cuadro Nombres de grupos o usuarios, seleccione la cuenta que acaba de agregar.
    5. En el cuadro Permisos para, seleccione los permisos Leer y Modificar.
    6. Haga clic en Aceptar para aplicar los cambios.
  10. Configure la seguridad para la carpeta Notifications:

    1. Ubique la carpeta Notifications del ejemplo.
    2. Haga clic con el botón secundario en la carpeta Notifications, seleccione Compartir y seguridad y, a continuación, haga clic en la ficha Seguridad.
    3. Haga clic en Agregar y agregue la cuenta usada por el servicio de Windows.
    4. En el cuadro Nombres de grupos o usuarios, seleccione la cuenta que acaba de agregar.
    5. En el cuadro Permisos para, seleccione Escribir.
    6. Haga clic en Aceptar para aplicar los cambios.

Ejecutar el ejemplo

Para ejecutar el ejemplo, debe hacer lo siguiente:

  • Iniciar la instancia.
  • Agregar suscriptores y suscripciones.
  • Colocar un archivo de XML que contiene eventos.
  • Ver las notificaciones resultantes.

Los siguientes procedimientos muestran cómo ejecutar estas tareas.

Paso 1: iniciar la instancia

  1. En el Explorador de objetos, abra la carpeta Notification Services.

  2. Haga clic con el botón secundario en FlightNmoInstance y, a continuación, seleccione Inicio.

Paso 2: agregar suscriptores y suscripciones

  1. Ejecute AddSubscribers.exe.

    La ubicación predeterminada de esta carpeta es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscribers\language\AddSubscribers\bin\Debug.

  2. Ejecute AddSubscriptions.exe.

    La ubicación predeterminada de esta carpeta es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscriptions\language\AddSubscriptions\bin\Debug.

[!NOTA] En el caso de aplicaciones de producción o si está ejecutando esta aplicación en una cuenta restringida, agregue el inicio de sesión de SQL Server de la aplicación a la función de base de datos NSSubscriberAdmin en las bases de datos de instancia y de aplicación.

Paso 3: enviar eventos

  1. En el Explorador de Windows, ubique la carpeta raíz del ejemplo FlightNmo y, a continuación, copie el archivo EventData.xml en la subcarpeta Events.

    Al colocar el archivo, el proveedor de eventos FileSystemWatcher lee los datos del archivo, lo presenta a la aplicación y, a continuación, cambia la extensión del nombre de archivo por .done.

    Si aparece un error al leer o enviar datos, el proveedor de eventos cambia la extensión del nombre de archivo por .err. Vea el Visor de sucesos de Windows para obtener detalles adicionales sobre el error.

Paso 4: ver notificaciones

  1. Espere aproximadamente un minuto para que Notification Services produzca notificaciones.

  2. Con el Explorador de Windows, ubique la carpeta Notifications del ejemplo FlightNmo. Debe encontrar un archivo denominado FileNotifications.txt, que es el archivo que contiene las notificaciones basadas en archivos.

  3. Vaya a la carpeta donde se colocan los mensajes de correo electrónico. Normalmente es una de las carpetas de C:\Inetpub\mailroot. Según el estado del servidor SMTP, las notificaciones deben estar en la carpeta Pickup o Queue. Si el servicio SMTP se está ejecutando, los mensajes se pueden mover a la carpeta Badmail.

Eliminar el ejemplo

Siga estos pasos para eliminar el ejemplo FlightNmo.

Para eliminar el ejemplo FlightNmo

  1. En el Explorador de objetos de SQL Server Management Studio, abra la carpeta Notification Services.

  2. Haga clic con el botón secundario en FlightNmoInstance y, a continuación, seleccione Detener.

  3. Haga clic con el botón secundario en FlightNmoInstance, seleccione Tareas y, a continuación, haga clic en Eliminar del Registro.

  4. Haga clic con el botón secundario en FlightNmoInstance, seleccione Tareas y, a continuación, haga clic en Eliminar.

Vea también

Otros recursos

Ejemplos de SQL Server Notification Services
Proteger Notification Services

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido agregado:
  • Se agregó una nota acerca de la ejecución de ejemplos mediante permisos de propietario de base de datos.

5 de diciembre de 2005

Contenido modificado:
  • Se cambiaron las instrucciones para generar un archivo de clave, incluidos el nombre y la ubicación del archivo.