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

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

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

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

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

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

Ограничения локального кэша базы данных в SQL Azure

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

Следует использовать таких поставщиков в простых случаях и с малым количеством данных. Если требуется синхронизировать большое количество данных, операция синхронизации может не удасться из-за ограничений. Если возникла проблема, связанная с ограничениями, то нет способа уменьшить количество изменений, чтобы избежать неудачной синхронизации. Кроме того, такие поставщики плохо подходят для сложных случаев, когда требуется двунаправленная синхронизация.

Дополнительные сведения о компонентах, предназначенных для случаев, касающихся SQL Azure, см. в разделе https://go.microsoft.com/fwlink/?LinkId=180745.

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

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

Установка служб синхронизации 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 предоставляет шаблон Локальный кэш базы данных. Локальный кэш базы данных доступен как шаблон нового элемента проекта. (В меню Проект выберите команду Добавить новый элемент). Дополнительные сведения см. в разделе Практическое руководство. Настройка синхронизации данных в приложении.

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

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

Примечание

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

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

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

Примечание

Скрипты 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 для загрузки таблицы данных набора данных с обновленными данными из локальной базы данных.

См. также

Задачи

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

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

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

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

SQL Server Compact 3.5 и Visual Studio

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

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