Novedades en Sync Framework 2.0

Sync Framework 2.0 incluye características nuevas y mejoradas en las siguientes áreas:

  • Proveedores de base de datos

    • Proveedor nuevos para SQL Server y SQL Server Compact

    • Procesamiento por lotes sólido basado en memoria

    • API de aprovisionamiento y administración

    • Inicialización de instantáneas

    • Flexibilidad respecto a la forma de tipologías

    • Mejoras de rendimiento

  • Proveedor de sincronización de archivos

    • Conversión de datos
  • Proveedores personalizados

    • proveedores simples

    • Conversión de datos entre proveedores

    • Filtrado

    • Control de conflictos

    • Seguimiento

    • Servicio de aplicación de cambios

    • Serializador de Metadata Storage Service

    • Convertidores de proveedor

    • Mejoras del conocimiento

    • Niveles de compatibilidad

    • Interfaces obsoletas

Proveedores de base de datos

Sync Framework 2.0 incorpora dos proveedores de bases de datos nuevos, varias características importantes de sincronización y relacionadas con la administración, así como mejoras de rendimiento considerables.

Proveedor nuevos para SQL Server y SQL Server Compact

Sync Framework 2.0 incluye dos proveedores de base de datos nuevos:

  • SqlCeSyncProvider se utiliza para sincronizar bases de datos de SQL Server Compact.

    Este proveedor se puede utilizar para sincronizar con un servidor de centra, pero dispone asimismo de la capacidad para sincronizar con otros clientes, lo cual no es posible con SqlCeClientSyncProvider. Con esta capacidad los desarrolladores pueden ocuparse de escenarios nuevos como un escenario de colaboración en el que los equipos de personas tienen la necesidad de sincronizarse entre ellos sin que exista una conexión a un servidor central.

  • SqlSyncProvider se utiliza para sincronizar otras ediciones de SQL Server, incluido SQL Server Express.

    Este proveedor, que se puede utilizar como servidor o cliente, reduce enormemente las barreras para sincronizar una base de datos de SQL Server. SqlSyncProvider tiene las mismas capacidades que DbSyncProvider, pero requiere mucho menos código y menos conocimiento de las consultas que utiliza Sync Framework para sincronizar datos. DbSyncProvider sigue siendo apropiado para las bases de datos que no sean de SQL Server.

Al igual que todos los proveedores de Sync Framework, estos proveedores nuevos se pueden utilizar en tipologías de cualquier forma: cliente-servidor, punto a punto, etc. Para obtener más información sobre ambos proveedores, vea Configurar y ejecutar la sincronización de colaboración (SQL Server).

Procesamiento por lotes sólido basado en memoria

Las versiones anteriores de Sync Framework y Sync Services for ADO.NET proporcionaron un método para que los desarrolladores definieran su propia lógica de procesamiento por lotes, que posteriormente llamaba el motor en tiempo de ejecución de Sync Framework. Entre los inconvenientes de este enfoque se incluye: la complejidad inherente asociada a los cambios de división en lotes; el exceso de ciclos de ida y vuelta en la red entre cliente y servidor; y la incapacidad de solucionar los problemas de contención de recursos porque los lotes se basaban en el número de filas sincronizadas en lugar de en la cantidad de memoria que consume cada lote.

Sync Framework 2.0 se ocupa de todos estos problemas ya que proporciona una API de procesamiento por lotes más completo y sólido. Los desarrolladores ya no tienen que escribir ellos mismos la lógica de la procesamiento por lotes porque el motor en tiempo de ejecución de Sync Framework divide los cambios en lotes basados en diversas propiedades en la API. Ahora, los lotes se definen por el consumo de memoria en lugar de por el número de filas sincronizadas, lo cual elimina los errores de memoria insuficiente en la mayoría de los escenarios. Para obtener más información, vea Entregar cambios en lotes (SQL Server).

API de aprovisionamiento y administración

Las actividades de aprovisionamiento e inicialización que se exponían anteriormente únicamente a través de las herramientas de Visual Studio se han agregado ahora a las API de proveedor de bases de datos. Esto incluye la capacidad de proporcionar una base de datos existente, para lo cual se agregan las tablas de seguimiento de cambios y los desencadenadores que requiere Sync Framework. También incluye la capacidad de comenzar con una base de datos vacía, crear el esquema de usuario y suministrar este esquema basado en otra base de datos de servidor o cliente que ya ha sido aprovisionada. Para obtener más información, vea Configurar y ejecutar la sincronización de colaboración (SQL Server).

Las tareas comunes como la copia de seguridad y restauración de bases de datos y la limpieza de metadatos se pueden realizar ahora directamente a través de la API, lo cual elimina la necesidad de que los desarrolladores implemente esta lógica ellos mismos. Para obtener más información, vea Realizar copias de seguridad y restauración de una base de datos (SQL Server) y Limpiar los metadatos de la sincronización de colaboración (SQL Server)

Inicialización de instantáneas

Antes de que una base de datos cliente de SQL Server Compact pueda empezar a recibir cambios de otra base de datos, la base de datos cliente debe contener un esquema de tabla y algunos datos iniciales, así como la infraestructura de seguimiento de cambios que Sync Framework necesita. Sync Framework dispone de dos mecanismos para inicializar la base de datos:

  • Inicialización completa de la base de datos cliente

    La inicialización completa resulta apropiada en algunos escenarios, pero no es la idónea en escenarios con recursos limitados en el cliente. La creación de un esquema de la base de datos desde el principio y cargar todos los datos a través de una conexión de red lenta puede dar como resultado tiempos prolongados de sincronización inicial y producir errores de memoria insuficiente.

  • La inicialización de la instantánea de la base de datos cliente a través de una base de datos cliente que ya existe

    La inicialización de una instantánea, que incorpora por vez primera Sync Framework 2.0, está diseñada para reducir el tiempo que se necesita para inicializar una base de datos cliente. Una vez que se ha inicializado una base de datos cliente a través de la inicialización completa, se pueden inicializar posteriormente otras bases de datos utilizando una instantánea de esta primera base de datos cliente. Una instantánea es una base de datos de SQL Server Compact preparada de manera especial que contiene el esquema de tabla, los datos (opcional) y la infraestructura de seguimiento de cambios. La inicialización de instantánea puede mejorar los tiempos de sincronización inicial en un orden de magnitud y reducir considerablemente la contención de la memoria. Para obtener más información, vea "Aprovisionar los clientes" en Configurar y ejecutar la sincronización de colaboración (SQL Server).

Flexibilidad respecto a la forma de tipologías

Las versiones anteriores de Sync Services for ADO.NET estaban vinculadas a una forma de tipología específica en la que muchos clientes sincronizaban los cambios a través de un servidor central.

Dado que Sync Services for ADO.NET ahora se genera sobre Sync Framework, los desarrolladores pueden ocuparse de una gama de escenarios mucho más amplia. Por ejemplo, los desarrolladores pueden admitir escenarios de colaboración que requieran la capacidad de sincronizar cambios entre clientes. Además, los desarrolladores pueden abordar un escenario de oficinas subsidiarias donde se sincroniza una serie de terminales de punto de venta (POS) con un servidor subsidiario que, a su vez, se sincroniza con un servidor corporativo central.

Dado que los proveedores de base de datos nuevos se generan sobre Sync Framework, la fase se establece de forma que admita la sincronización de los cambios con los nuevos tipos de almacén, como por ejemplo, los servicios de datos de SQL de Azure.

Mejoras de rendimiento

Los nuevos proveedores de base de datos en esta versión se han evaluado meticulosamente en escenarios a gran escala en los que un único servidor se ocupa de miles de clientes con cientos de operaciones de sincronización simultáneas. Estas pruebas han dado como resultado gran cantidad de mejoras en el rendimiento que permiten a los proveedores de bases de datos de Sync Framework alcanzar un rendimiento igual al de otras tecnologías de Microsoft como Acceso de datos remoto (RDA) a la vez que ofrece una amplia gama de capacidades que compiten con las soluciones de un extremo a otro, como por ejemplo, la replicación de mezcla.

Proveedor de sincronización de archivos

Además de las API de conversión de datos, que se pueden utilizar para cualquier tipo de proveedor personalizado, Sync Framework 2.0 también incluye API de conversión específicas para el proveedor de sincronización de archivos. Para obtener más información, vea Sincronizar el proveedor de sincronización de archivos con otros proveedores, IFileDataRetriever (en código administrado) e IFileDataRetriever (en código no administrado).

Proveedores personalizados

Sync Framework 2.0 incluye mejoras significativas relativas a las capacidades de los proveedores personalizados estándar e incorpora un tipo nuevo de proveedor personalizado: el proveedor simple.

Proveedores simples

La API de proveedor simple reduce la cantidad de trabajo necesario para desarrollar proveedores. Esto es especialmente verdad cuando el origen de datos tiene muy pocas capacidades de sincronización, como el seguimiento de cambios. Esta API permite que un desarrollador escriba un proveedor sin tener que convertirse en un experto en sincronización. La mayoría del código para un proveedor simple es el código necesario para interactuar con el origen de datos. Para obtener más información, vea Implementar un proveedor simple personalizado y Aspectos básicos de los proveedores personalizados.

Tipos nuevos importantes en el código administrado

Para obtener una lista completa de tipos, vea Microsoft.Synchronization.SimpleProviders.

Interfaces nuevas importantes en el código no administrado

Para obtener una lista completa de tipos, vea Componentes de proveedor simples de Sync Framework.

Conversión de datos entre proveedores

En algunos escenarios, los proveedores de sincronización sincronizan el mismo tipo de datos (por ejemplo, datos sobre ventas), pero el formato de los datos que necesita cada proveedor es diferente. Para resolver esta situación, Sync Framework le permite implementar interfaces que convierten los datos al formato que requiere cada proveedor. Para obtener más información, vea Convertir datos entre proveedores.

Tipos y propiedades nuevos en el código administrado

Interfaces nuevas en el código no administrado

Filtrado

Los filtros se utilizan para controlar los datos que están sincronizados. Sync Framework 2.0 aporta compatibilidad para los filtros que controlan las unidades de cambio que se van a sincronizar y para los filtros personalizados que escribe el desarrollador. Sync Framework 2.0 también ofrece la capacidad para que los proveedores negocien los filtros que se van a utilizar durante la sincronización.

Para obtener más información, vea Filtrar los datos de sincronización.

Filtrar unidades de cambio

Una unidad de cambio forma parte de un elemento que se sincroniza, como un número de teléfono en un elemento de contactos. Las distintas réplicas pueden representar de maneras diferentes al mismo elemento, y algunas de ellas ofrecen representaciones más enriquecidas y completas que otras. Por ejemplo, una comunidad de sincronización intercambia información de contacto y define las unidades de cambio para name, phone number y address. Una réplica en la comunidad es un dispositivo móvil que solo puede almacenar name y phone number. Para encargarse de esta situación, Sync Framework permite que un proveedor pueda especificar un filtro de unidad de cambio, que indica que una réplica solo puede almacenar un subconjunto de los datos. Los metadatos de sincronización y el proceso de sincronización se han mejorado para administrar este filtrado de forma eficaz.

Tipos nuevos en el código administrado

Interfaces y métodos nuevos en el código no administrado

Filtros personalizados

El desarrollador escribe los filtros personalizados, que pueden tomar cualquier forma. Una réplica filtrada solo almacena los datos de elemento para los elementos que figuran en el filtro, como una réplica de almacenamiento de medios que solo almacena canciones con una valoración de tres estrellas o más. Cuando la valoración de una canción cambia, es posible que un elemento entre o salga del filtro. Un desarrollador puede definir un filtro personalizado que se vaya a utilizar para controlar los datos de elemento que están almacenados en una réplica filtrada. Una réplica de seguimiento de filtros es otra réplica en la comunidad que puede identificar los elementos que están en el filtro y los que han entrado o salido del mismo recientemente. Una réplica de seguimiento de filtros puede almacenar datos de elemento para los elementos que no están en el filtro. En Sync Framework es posible realizar una sincronización eficaz desde la réplica de seguimiento de filtros hasta la réplica filtrada enviando solamente los elementos que están en el filtro, junto con información sobre el filtro. Asimismo, Sync Framework calcula correctamente el conocimiento y otros metadatos para la réplica de seguimiento de filtros cuando a esta se le envían cambios desde la réplica filtrada.

Tenga en cuenta que los filtros personalizados no los pueden usar los proveedores simples, los proveedores que notifiquen conflictos de restricción, ni los proveedores que utilicen el servicio de aplicación de cambios; de lo contrario, pueden producirse resultados inesperados.

Tipos nuevos importantes en el código administrado

El proveedor implementa los tipos siguientes:

Sync Framework implementa los tipos siguientes:

Para obtener una lista completa de tipos, vea Microsoft.Synchronization.

Interfaces nuevas importantes en el código no administrado

El proveedor implementa las interfaces siguientes:

Sync Framework implementa las interfaces siguientes:

Para obtener una lista completa de interfaces, vea Componentes principales de Sync Framework.

Filtros negociados por el proveedor

Cuando un origen de datos de destino almacena solo un subconjunto de los datos disponibles, resulta más eficaz que el proveedor de origen utilice un filtro para enumerar únicamente los datos que se pueden almacenar en el destino. Con la negociación de filtros, un proveedor de destino puede especificar que el proveedor de origen utilice uno o más filtros durante la enumeración de cambios; el proveedor de origen puede aceptar o rechazar un filtro. Si un proveedor de origen no admite ninguno de los filtros solicitados, el proveedor de destino puede decidir si recibir todos los datos y efectuar el filtrado él mismo. Sync Framework llama a los proveedores de forma apropiada para negociar el uso del filtro.

Tipos nuevos en el código administrado

Interfaces nuevas en el código no administrado

Controlar los conflictos

Sync Framework 2.0 aporta una compatibilidad mejorada para los conflictos de restricción y los conflictos registrados, así como para implementar la resolución de conflictos de "el último escritor gana".

Conflictos de restricción

Sync Framework 2.0 mejora la compatibilidad para los conflictos de restricción, que son conflictos que infringen las restricciones aplicadas a los elementos o unidades de cambio, como la relación de las carpetas o la ubicación de los datos con un nombre idéntico dentro de un sistema de archivos. Un proveedor de destino puede informar sobre un conflicto de restricción a Sync Framework y utilizar componentes de Sync Framework para resolver el conflicto y determinar cómo aplicar la resolución a la réplica de destino.

Tenga en cuenta que los conflictos de restricción no los pueden usar proveedores que utilicen filtros personalizados o el servicio de aplicación de cambios; de lo contrario, pueden producirse resultados inesperados.

Para obtener más información, vea Detectar y resolver conflictos de restricción.

Tipos nuevos importantes y actualizados en el código administrado

Los proveedores de destino implementan la clase nueva siguiente:

Las aplicaciones de sincronización implementan nuevos métodos en la clase siguiente:

Sync Framework implementa miembros nuevos en las clases siguientes:

Para obtener una lista completa de tipos, vea Microsoft.Synchronization.

Interfaces nuevas importantes en el código no administrado

Los proveedores de destino implementan la interfaz nueva siguiente:

Las aplicaciones de sincronización implementan la interfaz nueva siguiente:

Sync Framework implementa las interfaces nuevas siguientes:

Para obtener una lista completa de interfaces, vea Componentes principales de Sync Framework.

Registrar conflictos

Puede resultar útil guardar los conflictos en un registro para que se puedan procesar de forma independiente respecto a la sesión de sincronización, como cuando un usuario necesita comprobar los conflictos y decidir cómo resolverlos. Sync Framework 2.0 define un conjunto de interfaces de registro de conflictos y proporciona componentes que ayudan a administrar los conflictos en el registro. Sync Framework también proporciona una implementación de las interfaces de registro de conflictos para las réplicas que no contienen un registro de conflictos. Esta implementación funciona en la memoria y se utiliza para almacenar los conflictos temporales que puedan surgir a causa de la administración de los conflictos de restricción. Para obtener más información, vea Registrar y administrar conflictos.

Tipos nuevos en el código administrado

Los proveedores implementan las clases nuevas siguientes:

Sync Framework implementa las clases nuevas siguientes:

Interfaces nuevas en el código no administrado

Los proveedores implementan las clases nuevas siguientes:

Sync Framework implementa las clases nuevas siguientes:

Resolución de conflictos de "el último escritor gana"

Es posible que una aplicación quiera resolver conflictos de simultaneidad (en los que más de una réplica actualiza un elemento) manteniendo el cambio más reciente, independientemente de dónde se haya efectuado el cambio. Sync Framework 2.0 admite esta resolución, para lo cual proporciona un mecanismo mediante el que una aplicación puede recuperar la hora en la que se efectuó una modificación en la réplica de origen, así como la hora de modificación en la réplica de destino. A continuación, la aplicación puede comparar las dos horas y determinar la acción de resolución del conflicto que aplica el último cambio.

Para obtener más información, vea Detectar y resolver conflictos de simultaneidad.

Tipos nuevos en el código administrado

Los proveedores implementan la interfaz nueva siguiente:

Interfaces nuevas en el código no administrado

Los proveedores implementan la interfaz nueva siguiente:

Seguimiento

Sync Framework permite realizar el seguimiento de la ejecución de varios componentes, lo que es útil durante la depuración de la aplicación. Para la mayoría de los componentes de Sync Framework, el seguimiento se realiza en el nivel de código nativo utilizando la infraestructura de Seguimiento de eventos para Windows (ETW). Aunque se desarrolle con la versión administrada de una API, todavía se utiliza ETW porque la API administrada es un contenedor delgado de la API nativa. Para obtener más información, vea Componentes de seguimiento de Sync Framework.

Los proveedores de base de datos de Sync Framework proporcionan seguimiento administrado que se basa en la implementación de .NET Framework. Para obtener más información, vea Realizar el seguimiento del proceso de sincronización.

Servicio de aplicación de cambios

Sync Framework incluye una implementación de aplicador de cambios que utilizan la mayoría de las aplicaciones para aplicar cambios a una réplica. En la versión 2.0, Sync Framework presenta el servicio de aplicación de cambios, que realiza las mismas acciones que el aplicador de cambios, pero con mayor especificidad. Un proveedor de destino que requiera mayor flexibilidad que el aplicador de cambios estándar puede utilizar el servicio de aplicación de cambios para realizar únicamente el conjunto de acciones necesario.

Tenga en cuenta que los proveedores que notifican conflictos de restricción o que utilizan filtros personalizados no pueden usar el servicio de aplicación de cambios, de lo contrario, pueden producirse resultados inesperados.

Para obtener más información, vea Aplicar cambios utilizando el servicio de aplicación de cambios.

Tipos nuevos en el código administrado

Interfaces y enumeración nuevas en el código no administrado

Serializador de Metadata Storage Service

Metadata Storage Service almacena metadatos de réplica y del elemento en una base de datos ligera. Los metadatos se almacenan en un esquema de tabla específico y en formato binario que podrían verse modificados según vayan saliendo versiones nuevas de Sync Framework. Además, los campos de proveedor personalizado en la base de datos podrían cambiar si un desarrollador publica versiones nuevas de un proveedor determinado. Para habilitar una interoperabilidad mayor entre versiones diferentes, Sync Framework proporciona un formato de archivo canónico y un conjunto de interfaces de serialización, que ofrecen compatibilidad con versiones anteriores y posteriores para buena parte de los cambios de metadatos entre versiones. Para obtener más información, vea Obtener acceso a los metadatos desde componentes con versiones diferentes y Actualizar la versión del almacén de metadatos.

Tipos nuevos en el código administrado

Interfaces nuevas en el código no administrado

Convertidores de proveedor

Los proveedores personalizados derivan por lo general de IKnowledgeSyncProvider, pero también pueden derivar directamente de ISyncProvider. Sin embargo, cuando un objeto ISyncSession se utiliza para administrar la sincronización (que es lo habitual), es preciso que el proveedor derive de IKnowledgeSyncProvider. Para que un proveedor derivado de ISyncProvider pueda participar en una sesión de sincronización, Sync Framework permite convertir el proveedor en un IKnowledgeSyncProvider en tiempo de ejecución.

Interfaces y métodos nuevos en el código no administrado

Mejoras del conocimiento

Sync Framework 2.0 mejora el objeto de conocimiento para obtener más flexibilidad y eficacia.

Estructura de conocimiento

Sync Framework 2.0 cambia la estructura subyacente de un objeto de conocimiento a un formato más flexible y eficaz, asimismo define las nuevas interfaces para tener acceso a los nuevos elementos de conocimiento. Para aportar compatibilidad con versiones anteriores, los nuevos objetos de conocimiento emulan también los resultados de los métodos de conocimiento de Sync Framework 1.0.

Tipos nuevos y actualizados en el código administrado

Interfaces y enumeración nuevas en el código no administrado

Cookies de conocimiento

Sync Framework 2.0 agrega cookies de conocimiento, que son representaciones de conocimiento ligeras y de solo lectura, asimismo se pueden utilizar para realizar comparaciones rápidas cuando el rendimiento es especialmente importante.

Tipos y miembros nuevos en el código administrado

Enumeración y métodos nuevos en el código no administrado

Niveles de compatibilidad

Sync Framework incluye niveles de compatibilidad para los metadatos de modo que los componentes de versiones diferentes puedan continuar interoperando correctamente. Para obtener más información, vea Interoperabilidad y compatibilidad de Sync Framework con versiones anteriores.

Tipos y miembros nuevos en el código administrado

Enumeración y métodos nuevos en el código no administrado

Interfaces obsoletas

Las siguientes interfaces se encuentran obsoletas y no se deberían utilizar en desarrollos nuevos. Siguen funcionando tal como se espera en Sync Framework 2.0, pero es posible que se quiten en una versión posterior.

Interfaces obsoletas en el código no administrado

Vea también

Conceptos

Microsoft Sync Framework
Ventajas de utilizar Sync Framework
Seleccionar los componentes apropiados de Sync Framework