Flight (ejemplo)

Actualizado: 17 de julio de 2006

El ejemplo Flight es una aplicación de Microsoft SQL Server 2005 Notification Services controlada por eventos que produce notificaciones sobre precios de vuelos para usuarios suscritos de acuerdo con sus suscripciones.

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 Flight 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 Flight utiliza las características siguientes 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.

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
    • 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 sin cargo. Vea Instalar .NET Framework SDK.

Asegúrese también de que los siguientes componentes de Microsoft 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.

Generar la instancia de Notification Services

Para generar la instancia, deberá hacer lo siguiente:

  • Crear la instancia de Notification Services.
  • 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 Flight.

Paso 1: crear la instancia de Notification Services

  1. Abra SQL Server Management Studio y conéctese a una instancia de SQL Server.

  2. En el Explorador de objetos, haga clic con el botón secundario en la carpeta de Notification Services y seleccione Nueva instancia de Notification Services.

  3. En el cuadro de diálogo Nueva instancia de Notification Services, haga clic en Examinar y seleccione el archivo InstanceConfig.xml en la carpeta raíz del ejemplo Flight.

  4. En el cuadro Parámetros, escriba valores para los tres parámetros:

    • SampleDirectory: ruta de acceso a la carpeta raíz del ejemplo Flight. La ruta de acceso predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\Flight.
    • NotificationServicesHost: nombre del servidor de Notification Services.
    • SQLServer: nombre de la instancia de SQL Server.
  5. Active la casilla de verificación Habilitar la instancia una vez creada.

  6. Haga clic en Aceptar.

  7. Cuando Notification Services haya terminado de crear la instancia, haga clic en Cerrar.

Paso 2: registrar la instancia de Notification Services

  1. En SQL Server Management Studio, abra el nodo de Notification Services, haga clic con el botón secundario en FlightInstance, seleccione Tareas y, a continuación, seleccione Registrar.

  2. En el cuadro de diálogo Registrar, active la casilla de verificación Crear servicio de Windows. El servicio de Windows ejecuta la instancia de Notification Services en este equipo.

  3. En Inicio de sesión de servicio, escriba una cuenta de inicio de sesión de Windows y una contraseña. Ésta es la cuenta de Windows con la cual se ejecutará el servicio. Si usa autenticación de Windows para obtener acceso a SQL Server, el servicio de Windows también usará esta cuenta para conectarse a SQL Server.

  4. Si debe usar autenticación de SQL Server para obtener acceso a SQL Server, seleccione Autenticación de SQL Server en Autenticación y, a continuación, escriba un nombre de inicio de sesión de SQL Server y la contraseña.

    Se recomienda usar la autenticación de Windows.

  5. Haga clic en Aceptar.

  6. Cuando Notification Services haya terminado de registrar la instancia, haga clic en Cerrar.

[!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, base de datos y carpeta

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

  2. 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 escriba la misma cuenta de Windows que especificó al registrar la instancia.
    • Si debe usar la autenticación de SQL Server, seleccione Autenticación de SQL Server y escriba el mismo nombre de inicio de sesión de SQL Server y la misma contraseña que especificó al registrar la instancia.
  3. 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.

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

  5. Conceda permisos para la base de datos FlightInstanceNSMain:

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

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

  8. 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.
  9. 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.

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

    ms160946.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.

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 indican cómo desarrollar estas tareas y cómo ver las notificaciones obtenidas como resultado.

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 FlightInstance y, a continuación, seleccione Inicio.

Paso 2: agregar suscriptores y suscripciones

  1. Generar la solución de Visual Studio Flight o Flight_VB

    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. Localice la carpeta raíz del ejemplo Flight. Escriba el siguiente comando para la ubicación predeterminada:
      cd \Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\Flight
    3. Escriba lo siguiente para generar la solución de Visual Studio:
      [C#]
      msbuild Flight.sln
      [Visual Basic] 
      msbuild Flight_VB.sln

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

    1. Abra el archivo de solución que prefiera (Flight.sln o Flight_VB.sln).
    2. Genere la solución.
  2. Ejecute AddSubscribers.exe.

    La ubicación predeterminada de este archivo es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\Flight\AddSubscribers\lenguaje\AddSubscribers\bin\Debug.

  3. Ejecute AddSubscriptions.exe.

    C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\Flight\AddSubscriptions\lenguaje\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 Flight 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 Flight. 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 los pasos que se indican a continuación para eliminar el ejemplo Flight.

Para eliminar el ejemplo Flight

  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 FlightInstance y, a continuación, seleccione Detener.

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

  4. Haga clic con el botón secundario en FlightInstance, 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.