Tutorial: Crear una aplicación que se conecta ocasionalmente

Las aplicaciones que se conectan ocasionalmente son aplicaciones que es posible que no siempre tengan acceso a datos remotos. Dado que no siempre cuentan con este tipo de acceso, utilizan los datos de una base de datos local ubicada en el cliente y, periódicamente, sincronizan los datos entre la base de datos remota y la base de datos local. Microsoft Synchronization Services for ADO.NET (el espacio de nombres Microsoft.Synchronization.Data) facilita la sincronización de datos entre la base de datos local y la base de datos remota. Esta sincronización se configura en el cuadro de diálogo Configurar sincronización de datos.

Además del cuadro de diálogo Configurar sincronización de datos, se puede usar el Asistente para la configuración de orígenes de datos para configurar la sincronización. Durante la configuración de un conjunto de datos con tipo, seleccione la opción Habilitar almacenamiento en caché de la base de datos local en la página Elija los objetos de base de datos del asistente. Para obtener más información, vea Tutorial: Crear una aplicación conectada ocasionalmente con el Asistente para la configuración de orígenes de datos.

En este tutorial se proporcionan instrucciones paso a paso para desarrollar una aplicación que sólo se conecta ocasionalmente.

Durante este tutorial realizará las tareas siguientes:

  • Crear una nueva aplicación de Windows Forms.

  • Agregar una nueva Caché de base de datos local al proyecto.

  • Configurar opciones de sincronización que realicen las tareas siguientes:

    • Configurar las conexiones de datos a la base de datos servidor.

    • Configurar la sincronización para crear una nueva base de datos local.

    • Seleccionar las tablas de la base de datos que desee sincronizar con la aplicación.

  • Agregar un control DataGridView al formulario para mostrar datos de la base de datos local.

  • Agregar código para iniciar la sincronización entre las bases de datos.

  • Agregar un cuadro de mensaje para mostrar información sobre el número de registros sincronizados.

Requisitos previos

Para realizar este tutorial, necesita lo siguiente:

  • Tener acceso a la versión de SQL Server de la base de datos de ejemplo Northwind. Para obtener más información, vea Cómo: Instalar bases de datos de ejemplo.

  • SQL Server Compact 3.5 instalado en el equipo que ejecuta Visual Studio.

Crear la aplicación de formularios Windows Forms

Puesto que los datos van a mostrarse en un formulario Windows Forms (para comprobar que la sincronización es correcta), el primer paso de este tutorial es crear una nueva aplicación de Windows Forms.

Nota

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Para crear la nueva aplicación de formularios Windows Forms

  1. En el menú Archivo, cree un nuevo proyecto.

  2. Asigne al proyecto el nombre OCSWalkthrough.

    Nota

    En los proyectos de Visual Basic y C#, se admite el cuadro de diálogo Configurar sincronización de datos, de forma que puede crear el nuevo proyecto en uno de estos lenguajes.

  3. Haga clic en la plantilla Aplicación de Windows Forms y, a continuación, en haga clic en Aceptar. Para obtener más información, vea Crear aplicaciones basadas en Windows.

    El proyecto OCSWalkthrough se crea y se agrega al Explorador de soluciones.

Agregar un archivo de sincronización al proyecto

El siguiente paso para crear una aplicación que se conecta ocasionalmente es agregar (o crear) una base de datos local en el cliente. Para agregar una base de datos local que pueda sincronizarse con la base de datos remota, agregue al proyecto una plantilla Caché de base de datos local. Agregue archivos de caché de base de datos local (archivos .sync) a los proyectos mediante el cuadro de diálogo Agregar nuevo elemento.

Para agregar un archivo de opciones de sincronización a un proyecto

  1. En el menú Proyecto, haga clic en Agregar nuevo elemento.

  2. Haga clic en la plantilla Caché de base de datos local y escriba NorthwindCache.sync en el cuadro Nombre.

  3. Haga clic en Agregar.

    Se agregará un archivo NorthwindCache.sync al Explorador de soluciones y aparecerá el cuadro de diálogo Configurar sincronización de datos.

Configurar la sincronización de datos

Configurar la sincronización de datos consiste en las tareas siguientes:

  • Proporcionar una conexión de datos a la base de datos remota. Ésta es la conexión al servidor.

  • Proporcionar una conexión de datos a la base de datos local o crear una nueva base de datos en el cliente, tal y como se muestra en este tutorial. Ésta es la conexión de cliente.

  • Seleccionar las tablas de la conexión remota que desee usar en la aplicación. Éstas se denominan tablas almacenadas en memoria caché.

  • Para cada tabla que agregue a la base de datos local, seleccionar las columnas necesarias para reconciliar los cambios y la tabla en las que almacenar los elementos eliminados. Cada tabla requiere columnas específicas para seguir la traza de los registros nuevos y modificados, además de una tabla que siga la traza de los registros eliminados.

Configurar las conexiones de datos

Ahora, establecerá la conexión de servidor para conectarse a la base de datos remota (la base de datos externa a la aplicación). La conexión de cliente puede conectarse a una base de datos existente de SQL Server Compact 3.5, o puede dejar que el cuadro de diálogo Configurar sincronización de datos cree una nueva base de datos local automáticamente. En este tutorial, creará una conexión a la base de datos servidor y dejará que la conexión de cliente predeterminada cree automáticamente una nueva base de datos cliente (Northwind.sdf) en el proyecto.

Para establecer las conexiones de datos para las bases de datos servidor y cliente

  1. Seleccione una Conexión de servidor a la versión SQL Server de la base de datos Northwind o haga clic en Nueva para crear una nueva conexión a la versión SQL Server de la base de datos Northwind. Para obtener más información, vea Cómo: Crear una conexión de datos a la base de datos Northwind.

  2. Mantenga el valor predeterminado Northwind.sdf (nueva) para la Conexión de cliente. De esta forma, se creará una nueva base de datos SQL Server Compact 3.5 y se agregará al proyecto.

    Una vez seleccionada la conexión de servidor, el cuadro de diálogo Configurar sincronización de datos consulta la base de datos remota del servidor para obtener una lista de las tablas disponibles y habilita el botón Agregar una vez recuperada la lista.

    Nota

    Observe que el botón Aceptar no está habilitado. Esto se debe a que no se ha seleccionado ninguna tabla para sincronización. La siguiente sección explica cómo agregar tablas, lo cual hace que se habilite el botón Aceptar.

Seleccionar y configurar las tablas que desea usar sin conexión

Ahora, seleccionará las tablas que desea agregar a la base de datos cliente y sincronizar con la aplicación. Para cada tabla que agregue a la base de datos cliente, seleccione las columnas de seguimiento necesarias para reconciliar los cambios y la tabla donde almacenar los elementos eliminados. Si mantiene la configuración predeterminada, el cuadro de diálogo Configurar sincronización de datos creará las columnas de seguimiento y la tabla de elementos eliminados. En este tutorial, usará la configuración predeterminada.

Para configurar las tablas de modo que se almacenen en la memoria caché local

  1. Haga clic en Agregar para abrir el cuadro de diálogo Configurar tablas para usarlas sin conexión.

  2. Seleccione y active la tabla Customers.

  3. Mantenga todos los valores predeterminados. Haga clic en Aceptar.

    La tabla Customers se agregará a la lista Tablas en caché.

  4. En el cuadro de diálogo Configurar sincronización de datos, haga clic en Aceptar.

    Las columnas de seguimiento y la tabla para elementos eliminados se crearán en el servidor. La base de datos Northwind.sdf se creará en el proyecto y se sincronizará por primera vez.

  5. Seleccione y active la tabla Customers en el Asistente para la configuración de orígenes de datos y, a continuación, haga clic en Finalizar.

    NorthwindDataSet.xsd se agregará al proyecto y se cerrarán todos los cuadros de diálogo.

Habilitar la sincronización en la aplicación

Después de completar los pasos anteriores, hay que configurar la sincronización de datos. En estos momentos, la aplicación consta de los siguientes elementos:

  • La base de datos Northwind local (Northwind.sdf).

  • La información de las opciones de sincronización de datos (NorthwindCache.sync).

  • El conjunto de datos con tipo NorthwindDataSet.xsd generado por el asistente Configuración de origen de datos. Contiene una tabla Customers que se rellena a partir de la base de datos local.

  • Una carpeta SQLScripts que contiene los scripts que se utilizan para crear las columnas de seguimiento, la tabla de elementos eliminados y los desencadenadores necesarios para el seguimiento de los cambios en el servidor.

  • Una carpeta SQLUndoScripts que contiene los scripts necesarios para quitar las columnas de seguimiento, la tabla de elementos eliminados y los desencadenadores necesarios para el seguimiento de los cambios en el servidor.

    Nota

    Sólo se crearán scripts SQL si es necesario realizar modificaciones en el servidor. Si el servidor ya tiene una tabla de elementos eliminados y columnas de seguimiento, no se creará ningún script.

  • Referencias a las siguientes DLL de Microsoft Synchronization Services for ADO.NET:

    • Microsoft.Synchronization.Data

    • Microsoft.Synchronization.Data.Server

    • Microsoft.Synchronization.Data.SqlServerCe

Después de configurar la sincronización de datos, todavía tendrá que agregar la funcionalidad de sincronización a la aplicación. En concreto, deberá agregar código que inicie el proceso de sincronización.

En primer lugar, agregará un control DataGridView arrastrando el nodo Customers desde la ventana Orígenes de datos hasta el formulario. El DataGridView mostrará la tabla Clientes de la caché de la base de datos local (la base de datos Northwind.sdf ubicada en el proyecto), de forma que pueda comprobar si los datos están sincronizados entre las bases de datos local y remota. También agregará un botón para iniciar el proceso de sincronización.

Para crear un formulario enlazado a datos para iniciar y comprobar la sincronización de datos

  1. Arrastre el nodo Customers desde la ventana Orígenes de datos hasta Form1.

  2. Arrastre un control Button desde el Cuadro de herramientas hasta Form1. Establezca su propiedad Name en SynchronizeButton y su propiedad Text en Sincronizar ahora.

  3. Haga doble clic en el botón Sincronizar ahora para crear un controlador de eventos de clic de botón y abrir el formulario en el Editor de código.

  4. Agregue código para iniciar el proceso de sincronización y, a continuación, rellene la tabla Customers del conjunto de datos. El código del controlador de eventos debe presentar un aspecto similar al siguiente:

    Nota

    En la sección siguiente se explica la línea de código donde se declara la variable syncStats.

    ' Call the Synchronize method to synchronize
    ' data between local and remote databases.
    Dim syncAgent As NorthwindCacheSyncAgent = New NorthwindCacheSyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics =
        syncAgent.Synchronize()
    
    ' After synchronizing the data, refill the
    ' table in the dataset.
    Me.CustomersTableAdapter.Fill(NorthwindDataSet.Customers)
    
    // Call the Synchronize method to synchronize
    // data between local and remote databases.
    NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats;
    syncStats = syncAgent.Synchronize();
    // After synchronizing the data, refill the
    // table in the dataset.
    this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
    

Probar la aplicación

Para probar la aplicación

  1. Presione F5.

  2. Cuando se esté ejecutando la aplicación, use el Explorador de servidores/Explorador de bases de datos (u otra herramienta de administración de bases de datos) para realizar la conexión a la base de datos servidor remota y modificar algunos registros.

    1. En el Explorador de servidores/Explorador de bases de datos, busque la tabla Customers del servidor de bases de datos remoto (no la conexión a Northwind.sdf).

    2. Haga clic con el botón secundario en la tabla Customers y, a continuación, haga clic en Mostrar datos de tabla.

    3. Modifique uno o varios registros y confirme el cambio. (Desplácese fuera de la fila modificada.)

  3. Regrese al formulario y haga clic en Sincronizar ahora.

  4. Compruebe que los cambios realizados en la base de datos remota se hayan sincronizado con la base de datos local y que se muestren en la cuadrícula.

  5. Cierre el formulario. (Detenga la depuración.)

Recuperar información de una sincronización

Al llamar al método Synchronize, además de iniciar el proceso de sincronización realiza otras tareas. El método Synchronize también devuelve un objeto SyncStatistics desde el que se puede obtener acceso a información de sincronización.

Para obtener acceso a las estadísticas de sincronización

  • Abra Form1 en el Editor de código y agregue el código siguiente en la parte inferior del controlador de eventos SynchronizeButton_Click, bajo el código agregado en los pasos anteriores:

            MessageBox.Show("Changes downloaded: " &
    syncStats.TotalChangesDownloaded.ToString)
    
            MessageBox.Show("Changes downloaded: " +
    syncStats.TotalChangesDownloaded.ToString());
    

Probar la aplicación

Para probar la aplicación

  1. Presione F5.

  2. Cuando se esté ejecutando la aplicación, use el Explorador de servidores/Explorador de bases de datos (u otra herramienta de administración de bases de datos) para realizar la conexión a la base de datos servidor remota y modificar algunos registros.

    1. En el Explorador de servidores/Explorador de bases de datos, busque la tabla Customers del servidor de bases de datos remoto (no la conexión a Northwind.sdf).

    2. Haga clic con el botón secundario en la tabla Customers y, a continuación, haga clic en Mostrar datos de tabla.

    3. Modifique uno o varios registros y confirme el cambio. (Desplácese fuera de la fila modificada.)

  3. Regrese al formulario y haga clic en Sincronizar ahora.

  4. Aparecerá un cuadro de mensaje con información sobre los registros sincronizados.

  5. Compruebe que los cambios realizados en la base de datos remota se hayan sincronizado con la base de datos local y que se muestren en la cuadrícula.

Pasos siguientes

En función de los requisitos de la aplicación, quizás sea conveniente realizar varios pasos después de configurar una caché de base de datos local en una aplicación. Por ejemplo, a continuación se indican algunas de las mejoras que podría realizar en esta aplicación:

Vea también

Tareas

Tutorial: Implementar una aplicación cliente conectada ocasionalmente con la base de datos local

Conceptos

Información general sobre las aplicaciones conectadas ocasionalmente

SQL Server Compact 3.5 y Visual Studio