Stock (ejemplo)

Actualizado: 17 de julio de 2006

El ejemplo Stock es una aplicación de Microsoft SQL Server 2005 Notification Services que utiliza tanto suscripciones controladas por eventos como suscripciones programadas para generar notificaciones basadas en datos bursátiles. Los usuarios suscritos reciben notificaciones si el precio de las acciones sube por encima de un valor desencadenador determinado.

Este ejemplo también muestra cómo alojar el motor de Notification Services en una aplicación personalizada, en lugar de usar un servicio de Microsoft Windows creado por Notification Services.

Escenario

Los inversores se suscriben a notificaciones sobre el precio de las acciones. Cada suscripción especifica un símbolo de acción y está controlada por eventos o es programada.

Para las suscripciones controladas por eventos, cuando llegan los eventos de acciones, Notification Services genera una notificación si se cumplen todas las condiciones siguientes:

  • El símbolo de la acción en el evento coincide con el símbolo de la acción en la suscripción.
  • El nuevo precio de la acción es mayor que el valor desencadenador de la suscripción.
  • El precio alto anterior de la acción, que es una crónica de evento de acción, es menor que el valor desencadenador de la suscripción. De este modo se garantiza que el suscriptor no obtenga varias notificaciones para la misma acción.

Si el nuevo precio de la acción es mayor que el precio de la crónica, o si el símbolo de la acción no existe en la crónica, Notification Services actualiza la crónica.

Las notificaciones para las suscripciones controladas por eventos se entregan una por vez.

En el caso de las suscripciones programadas, Notification Services compara los datos de la crónica de precios de las acciones con las suscripciones programadas. Se produce una coincidencia si el símbolo de la acción de la suscripción coincide con un símbolo de acción de la crónica.

Para cada coincidencia, Notification Services produce una notificación. El distribuidor combina varias notificaciones para un solo suscriptor en una notificación que proporciona datos sobre la cartera de valores del suscriptor.

Lenguajes

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

Características

Área de aplicación Características

Clase de evento

Una clase de eventos y una crónica de eventos.

Clase de suscripción

Dos clases de suscripción, una para suscripciones controladas por eventos y una para suscripciones programadas.

Clase de notificación

Dos clases de notificación, una para notificaciones controladas por eventos y una para notificaciones programadas. Las notificaciones programadas usan entrega de resumen.

Proveedores de eventos

Un proveedor de eventos FileSystemWatcher y un proveedor de eventos personalizado no alojado.

Formateadores de contenido

Formateador de contenido Notification Services XSLT. Cada clase de notificación especifica su propio archivo XSLT para el formateador de contenido.

Protocolos de entrega

Protocolos de entrega File y SMTP.

Motor de Notification Services

Alojado en una aplicación de consola.

Requisitos previos

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

  • SQL Server 2005, incluidos los siguientes componentes:
    • Database Engine (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.

Generar la solución

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

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

Genere la solución de modo que pueda iniciar la instancia inmediatamente después de crearla.

Generar la solución de Visual Studio

  • Si está usando el SDK de .NET Framework, haga lo siguiente:

    1. En el menú Inicio, seleccione Todos los programas\Microsoft .NET Framework SDK v2.0 y, a continuación, haga clic en SDK Command Prompt.
    2. Vaya a la carpeta raíz del ejemplo Stock. Escriba el siguiente comando para la ubicación predeterminada:
      cd C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\Stock
    3. Escriba lo siguiente para generar la solución:
      [C#]
      msbuild Stock.sln
      [Visual Basic] 
      msbuild Stock_VB.sln
  • O bien, si usa Visual Studio 2005, haga lo siguiente:

    1. Abra el archivo de solución que prefiera (Stock.sln o Stock_VB.sln).
    2. Genere la solución.

Implementar la instancia de Notification Services

Para implementar la instancia de Notification Services, 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 ejecutar cada una de estas tareas.

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

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

    • SampleDirectory es la ruta de acceso de la carpeta raíz del ejemplo Stock. La ruta de acceso predeterminada es C:\Archivos de programa\Microsoft SQL Server\90\Samples\Notification Services\Stock.
    • NotificationServicesHost es el nombre del servidor local.
    • SQLServer es el 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 StockInstance, seleccione Tareas y, a continuación, seleccione Registrar.

    No seleccione ninguna opción. El motor será alojado por una aplicación personalizada, de manera que no debe crear el servicio de Windows.

  2. Haga clic en Aceptar.

  3. 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, Windows 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, 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ó 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 para ejecutar este ejemplo 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 StockInstanceNSMain:

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

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

  8. Configure la seguridad para la carpeta Events:

    1. En el Explorador de Windows, vaya a la carpeta Events del ejemplo Stock.
    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 para ejecutar el ejemplo.
    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 Stock.
    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 para ejecutar el ejemplo.
    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, deberá hacer lo siguiente:

  • Iniciar la instancia.
  • Agregar suscriptores y suscripciones.
  • Enviar eventos.

Después de realizar estas tareas, Notification Services generará notificaciones. Los siguientes procedimientos indican cómo desarrollar estas tareas y cómo ver las notificaciones obtenidas como resultado.

Paso 1: iniciar el motor alojado

  1. Compruebe que la cuenta en la que está ejecutando el motor alojado es miembro del grupo de Windows SQLServer2005NotificationServicesUser$nombreDeEquipo, que dispone de permisos para leer y ejecutar archivos binarios de Notification Services o que dispone de permisos para leer y ejecutar archivos en la carpeta C:\Archivos de programa\Microsoft SQL Server\90\Notification Services.

  2. En el Explorador de Windows, vaya a la carpeta HostableExecutionEngine\lenguaje\HostableExecutionEngine\bin\Debug del ejemplo Stock.

  3. Haga doble clic en HostableExecutionEngine.exe para ejecutar la aplicación de consola que aloja el motor Notification Services.

    Importante   No presione la tecla ENTRAR. El motor debe estar ejecutándose para que la aplicación Notification Services produzca notificaciones.

Paso 2: agregar suscriptores, suscripciones y eventos

  1. Ejecute AddSubscribers.exe.

    El archivo EXE se encuentra en la subcarpeta AddSubscribers\lenguaje\AddSubscribers\bin\Debug del ejemplo Stock.

    Después de agregar los suscriptores, presione la tecla ENTRAR para cerrar la aplicación de consola.

  2. Ejecute AddSubscriptions.exe.

    El archivo EXE se encuentra en la subcarpeta AddSubscriptions\lenguaje\AddSubscriptions\bin\Debug del ejemplo Stock.

    Después de agregar las suscripciones, presione la tecla ENTRAR para cerrar la aplicación de consola.

  3. Ejecute NonHostedEventProvider.exe.

    El archivo EXE se encuentra en la subcarpeta NonHostedEventProvider\lenguaje\NonHostedEventProvider\bin\Debug del ejemplo Stock.

    Esto agrega eventos a la aplicación mediante un proveedor de eventos no alojado, que se ejecuta fuera de la aplicación. El siguiente paso muestra cómo enviar eventos a un proveedor de eventos FileSystemWatcher alojado.

[!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 los eventos al colocar un archivo de eventos

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

    [!NOTA] Dado que ya envió eventos mediante un proveedor de eventos no alojado, este paso es opcional. Si no desea enviar eventos adicionales ni generar notificaciones adicionales, vaya al siguiente paso para ver notificaciones.

    Si coloca el archivo, el proveedor de eventos FileSystemWatcher leerá los datos del mismo, lo presentará a la aplicación y, a continuación, cambiará la extensión del archivo a .done.

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

Paso 4: ver notificaciones

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

  2. En el Explorador de Windows, vaya a la carpeta Notifications del ejemplo Stock. Debe encontrar un archivo llamado FileNotifications.txt. Este archivo contiene todas las notificaciones enviadas por esta aplicación.

  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.

[!NOTA] Si desea generar otra notificación sin volver a generar o cambiar el ejemplo, ejecute la siguiente consulta: USE [StockInstanceStock] DELETE FROM [StockInstanceStock].[dbo].[StockEventsChron]

Detener el motor

Cuando haya terminado de enviar los eventos y ver las notificaciones resultantes, detenga el motor de Notification Services.

Para detener el motor

  • En la ventana de consola HostableExecutionEngine, presione la tecla ENTRAR para detener el motor.

Eliminar el ejemplo

Siga el procedimiento que se indica a continuación para eliminar el ejemplo Stock.

Para eliminar el ejemplo Stock

  1. En el Explorador de objetos, expanda el nodo Notification Services.

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

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

Vea también

Otros recursos

Alojar el motor de Notification Services
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

17 de julio de 2006

Contenido agregado:
  • En los pasos 3 y 4 de la sección "Ejecutar el ejemplo", se ha agregado información acerca de las opciones de envío de eventos mediante el proveedor de eventos no alojado y el proveedor de eventos FileSystemWatcher.
  • Se ha agregado una nota acerca del uso de la función de base de datos NSSubscriberAdmin.

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.
  • Se actualizó la sección de permisos para aclarar las cuentas que los necesitan.