Общие сведения о произвольно подключаемых приложениях

Обновлен: Июль 2008

Произвольно подключаемое приложение представляет собой приложение, которое использует данные из удаленной базы данных, но, возможно, не всегда имеет к ней доступ. Произвольно подключаемые приложения также используются, если возможен непрерывный доступ, но постоянно запрашивать редко изменяющиеся данные из удаленной базы данных может оказаться неэффективным. В этих случаях приложения могут использовать данные из локальной базы данных, расположенной на стороне клиента, и периодически синхронизировать данные с удаленной базой данных.

Другими словами, если приложение требует данные из удаленной базы данных, которые не должны постоянно обновляться из базы данных, можно использовать локальную базу данных для хранения данных на клиентском компьютере. В качестве примера рассмотрим приложение инвентаризации, использующее данные из нескольких таблиц в базе данных. Так как число имеющихся в наличии экземпляров каждой детали является важной характеристикой данных, которые постоянно меняются, то приложение должно постоянно отражать текущие значения в базе данных. Приложение также должно отображать список действительных компаний-поставщиков, который изменяется сравнительно редко. Сведения об этих компаниях хранятся в таблице "Shippers", и их не обязательно извлекать каждый раз, когда выполняется запрос к базе данных. Если хранить таблицу "Shippers" в кэше локальной базы данных, то можно уменьшить количество лишних обращений, которые приложение должно сделать к удаленной базе данных. Таким образом, в дополнение к тому, чтобы использовать кэш локальной базы данных для произвольно подключаемых приложений, рассмотрите возможность хранения данных, которые редко изменяются или изменяются по известному расписанию, в кэше локальной базы данных.

Можно настроить кэширование для хранения отдельных таблиц, наборов таблиц или определенных записей, выбранных из таблицы (например только клиенты, имеющие определенного торгового представителя).

Синхронизацию данных между клиентской и серверной базами данных облегчает Microsoft Synchronization Services для ADO.NET (пространство имен Microsoft.Synchronization.Data). Можно настроить синхронизацию визуально в Visual Studio с помощью диалогового окна Настройка синхронизации данных.

Начиная с версии Visual Studio 2008 SP1, дополнительно к диалоговому окну Настройка синхронизации данных для настройки синхронизации можно также использовать Мастер настройки источника данных. Во время настройки типизированного набора данных выберите параметр Включить кэширование локальной базы данных на странице Выбор объектов базы данных мастера. Дополнительные сведения см. в разделе Пошаговое руководство. Создание произвольно подключаемого приложения с помощью мастера настройки источника данных.

Bb384572.alert_note(ru-ru,VS.90).gifПримечание.

В проектах интеллектуальных устройств конструктор синхронизации не может быть запущен из Мастера настройки источника данных. Дополнительные сведения см. в разделе Произвольно подключаемые приложения (устройства).

Дополнительно в версию Visual Studio 2008 SP1 добавлена поддержка средства отслеживания изменений SQL Server 2008. Отслеживание изменений SQL Server 2008 можно включить во время настройки синхронизации из диалогового окна Настройка синхронизации данных или в мастере настройки источника данных. Дополнительные сведения см. в разделе Практическое руководство. Настройка синхронизации данных для использования отслеживания изменений SQL Server.

Служба синхронизации API (Microsoft.Synchronization.Data)

Службы синхронизация для ADO.NET предназначены для произвольно подключаемых приложений. Они позволяют синхронизировать данные из различных источников через двухуровневые, многоуровневые архитектуры и службы. Вместо репликации базы данных и ее схемы служба синхронизации API предоставляет набор компонентов для синхронизации данных между службами данных и локальным хранилищем. Приложения все чаще используются на мобильных клиентах, таких как портативные компьютеры и устройства, у которых нет согласованного или надежного сетевого подключение к центральному серверу. Для этих приложений важна работа с локальной копией данных на стороне клиента. Столь же важным является требование синхронизации локальной копии данных с данными на центральном сервере при доступном сетевом подключении. Synchronization Services API, которая смоделирована после ADO.NET API доступа к данным, обеспечивает интуитивно понятный способ синхронизации данных. Он делает создание произвольно подключаемых приложений логическим продолжением создания приложений, зависимых от согласованного сетевого подключения.

Bb384572.alert_note(ru-ru,VS.90).gifПримечание.

В проектах интеллектуальных устройств 2-уровневая архитектура не поддерживается. Дополнительные сведения см. в разделе Произвольно подключаемые приложения (устройства).

Установка служб синхронизации API и документации

Synchronization Services API не является частью .NET Framework. Он устанавливается как часть установки SQL Server Compact 3.5. (По умолчанию SQL Server Compact 3.5 устанавливается при установке Visual Studio.) По умолчанию документация Synchronization Services не устанавливается локально. Таким образом, она будет доступна только если настроен сетевой доступ к справке. Чтобы установить документацию Synchronization Services для локального использования, необходимо сначала загрузить справку с веб-узла Документации служб синхронизации для ADO.NET.

Включение синхронизации данных в приложения с помощью Visual Studio

Для включения синхронизации данных в приложение Visual Studio предоставляет шаблон Локальный кэш базы данных. Локальный кэш базы данных доступен как шаблон нового элемента проекта. (В меню Проект выберите команду Добавить новый элемент). Дополнительные сведения см. в разделе Практическое руководство. Настройка синхронизации данных в приложении.

Bb384572.alert_note(ru-ru,VS.90).gifПримечание.

Шаблон Кэш локальной базы данных невозможно непосредственно добавить в проект интеллектуального устройства. Вместо этого Кэш локальной базы данных необходимо добавить в среднеуровневый проект WCF или веб-службы и затем раздельно добавить сгенерированные компоненты синхронизации в проект интеллектуального устройства. Дополнительные сведения см. в разделе Произвольно подключаемые приложения (устройства).

Начиная с версии Visual Studio 2008 SP1, дополнительно к диалоговому окну Настройка синхронизации данных для настройки синхронизации можно также использовать Мастер настройки источника данных. Во время настройки типизированного набора данных выберите параметр Включить кэширование локальной базы данных на странице Выбор объектов базы данных мастера. Дополнительные сведения см. в разделе Пошаговое руководство. Создание произвольно подключаемого приложения с помощью мастера настройки источника данных.

Добавление Локального кэша базы данных открывает диалоговое окно Настройка синхронизации данных. Используйте это диалоговое окно для предоставления определенных сведений о клиенте и сервере, чтобы настроить компоненты, требующие синхронизации. Кэш локальной базы данных использует базу данных SQL Server Compact 3.5 на стороне клиента для локального хранения данных. В качестве кэша локальной базы данных можно использовать существующую базу данных SQL Server Compact 3.5. Если локальной базы данных еще нет, то с помощью диалогового окна Настроить синхронизацию данных можно создать новую локальную базу данных. Чтобы создать новую локальную базу данных SQL Server Compact 3.5, задайте Подключение клиента (в диалоговом окне Настройка синхронизации данных) для создания новой базы данных SQL Server Compact 3.5, основанной на таблицах, выбранных из Подключения к серверу.

Bb384572.alert_note(ru-ru,VS.90).gifПримечание.

Диалоговое окно Настройка синхронизации данных позволяет настроить Microsoft Synchronization Services для ADO.NET только для сценариев загрузки. Это означает, что после настройки синхронизации данных с помощью этого диалогового окна вызов Microsoft.Synchronization.Data.SyncAgent.Synchronize будет только обновлять локальную базу данных изменениями, выполненными на удаленной базе данных. Изменения, выполненные в локальной базе данных, не будут переданы на удаленную базу данных. После настройки синхронизации данных с помощью диалогового окна Настроить синхронизацию данных можно программно включить загрузку на сервер (двунаправленную синхронизацию) во время синхронизации. Дополнительные сведения см. в разделе Практическое руководство. Настройка локальной и удаленной баз данных для двунаправленной синхронизации.

Настройка удаленной базы данных для синхронизации

Для успешной работы синхронизации данных существуют некоторые дополнения, требуемые для каждой таблицы в удаленной базе данных, с которой необходимо синхронизироваться. Диалоговое окно Настройка синхронизации данных создает сценарии SQL для выполнения в удаленной базе данных для создания необходимых объектов (перечислены в таблице ниже). Все сценарии SQL, созданные конструктором синхронизации, сохраняются в папке SQLScripts в проекте.

Bb384572.alert_note(ru-ru,VS.90).gifПримечание.

Сценарии SQL, создаваемые в диалоговом окне Настройка синхронизации данных, запускаются по умолчанию. Можно определить, будут ли сценарии создаваться и выполняться, установив параметры Формирования сценариев в диалоговом окне Настройка таблиц для автономных использования.

По умолчанию диалоговое окно Настройка синхронизации данных автоматически запускает сценарии и обновляет удаленную базу данных при закрытии. Снимите флажок Выполнить сценарии при закрытии окна, если не требуется автоматически запускать сценарии. Кроме того, если удаленная база данных уже имеет необходимые столбцы для отслеживания, триггеры и таблицы удаленной номенклатуры, сценарии не будут создаваться. Другими словами, если изменения в удаленной базе данных не требуются, сценарии не создаются.

В следующей таблице перечисляются элементы в удаленной базе данных и предоставляются пояснения для каждого из них:

Добавления к каждой синхронизируемой таблице в удаленной базе данных

Объяснение

Столбец LastEditDate.

Этот столбец должен иметь тип DateTime или TimeStamp в каждой синхронизируемой таблице. Он сравнивается со столбцом LastEditDate на клиенте для идентификации записей, которые были изменены на сервере с момента последнего вызова синхронизации.

Столбец CreationDate

Этот столбец должен иметь тип DateTime или TimeStamp в каждой синхронизируемой таблице. Он сравнивается с CreationDate столбца на клиенте для идентификации записей, которые были добавлены к серверу с момента последнего вызова синхронизации.

Таблица удаленных элементов (TableName_Deleted).

Элементы помещаются в эту таблицу при удалении из таблицы на сервере базы данных. Это делается для идентификации удаления записи с сервера с момента последнего вызова синхронизации. Каждая синхронизируемая таблица требует таблицы удаленных записей для слежения за удаленными с сервера записями.

DeletionTrigger (TableName_DeletionTrigger).

Этот триггер выполняется каждый раз при удалении записи из таблицы в серверной базе данных. Удаленные записи перемещаются в таблицу удаленных элементов. Они перемещаются в таблицу удаленных элементов, так как записи в клиентской базе данных, которых нет в базе данных сервера, могут рассматриваться как новые и могут быть снова добавлены на сервер. Службы синхронизации проверяют таблицы удаленных элементов, чтобы определить, что следует удалить запись из клиентской базы данных вместо добавления ее обратно в базу данных сервера.

InsertTrigger (TableName_InsertTrigger).

Этот триггер заполняет столбец CreationDate текущей датой и временем добавления новых записей.

UpdateTrigger (TableТame_UpdateTrigger).

Этот триггер заполняет столбец LastEditDate текущей датой и временем изменения существующих записей.

Запуск процесса синхронизации из приложения

После завершения работы с диалоговым окном Настройка синхронизации данных необходимо добавить код в приложение для запуска синхронизации. Важно понимать, что синхронизация данных обновляет локальную базу данных, а не таблицу набора данных или любой другой объект в приложении. Не забудьте перезагрузить источник данных приложения обновленными данными из локальной базы данных. Например, вызовите метод TableAdapter.Fill для загрузки таблицы данных набора данных обновленными данными из локальной базы данных.

Добавьте следующий код в приложение, туда, где должен инициироваться процесс синхронизации:

' Call SyncAgent.Synchronize() to initiate the synchronization process.
' Synchronization only updates the local database, not your project's data source.
Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()

' Add code here to refill your application's data source
' with the updated data from the local database.
// Call SyncAgent.Synchronize() to initiate the synchronization process.
// Synchronization only updates the local database, not your project's data source.
LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
Microsoft.Synchronization.Data.SyncStatistics syncStats =
syncAgent.Synchronize();

// Add code to refill your application's data source
// with the updated data from the local database.

См. также

Задачи

Практическое руководство. Настройка синхронизации данных в приложении

Пошаговое руководство. Создание произвольно подключаемого приложения

Практическое руководство. Настройка локальной и удаленной баз данных для двунаправленной синхронизации

Пошаговое руководство. Создание произвольно подключаемого приложения для интеллектуального устройства

Основные понятия

SQL Server Compact 3.5 и Visual Studio

Произвольно подключаемые приложения (устройства)

Другие ресурсы

Доступ к данным (Visual Studio)

Журнал изменений

Дата

Журнал

Причина

Июль 2008

Добавлен раздел о включении синхронизации данных из Мастера настройки источника данных.

Изменение функции SP1.

Июль 2008

Добавлен раздел о включении отслеживания изменений SQL Server во время настройки синхронизации данных.

Изменение функции SP1.

Июль 2008

Добавлены примечания о синхронизации в проектах интеллектуальных устройств.

Изменение функции SP1.