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

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

Данное пошаговое руководство содержит подробные инструкции по настройке синхронизации данных в произвольно подключаемом приложении для интеллектуального устройства. Образец приложения добавляет пользователя в кэш локальной базы данных и синхронизирует изменения с удаленной базой данных. Он также отображает данные пользователя в форме Windows Forms, что позволяет проверить успешное выполнение синхронизации.

В этом пошаговом руководстве выполняются следующие действия.

  • Создание нового приложения для интеллектуальных устройств.

  • Добавление новой библиотеки службы Window Communication Foundation (WCF), выступающей в роли среднего уровня между локальным кэшем базы данных и удаленной базой данных.

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

    Библиотека службы среднего уровня необходима, поскольку службы синхронизации для ADO.NET (устройства) не поддерживают прямую двухуровневую синхронизацию.

  • Добавление к проекту нового Кэша локальной базы данных.

  • Настройка параметров синхронизации.

  • Настройка и запуск службы WCF.

  • Добавление функции синхронизации в приложение для устройств.

  • Тестирование приложения.

Обязательные компоненты

Для выполнения данного пошагового руководства потребуется.

Создание приложения для интеллектуального устройства

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

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

Создание нового проекта на настольном компьютере

  1. С помощью команд меню Файл создайте новый проект, использующий Visual Basic или Visual C#.

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

    В проектах Visual Basic и C# поддерживается диалоговое окно Настройка синхронизации данных. Поэтому должен быть выбран один из этих языков.

  2. Назовите решение ПошаговоеРуководство, а проект — OCSDeviceApp.

  3. В разделе Типы проектов, выберите Интеллектуальное устройство, а затем — шаблон Проект интеллектуального устройства.

  4. Нажмите кнопку OК.

    Откроется диалоговое окно Добавление нового проекта интеллектуального устройства. По умолчанию выбраны целевая ОС Windows Mobile 5.0 Pocket PC SDK, платформа .NET Compact Framework версии 3.5 и шаблон приложения для устройства.

  5. Нажмите кнопку OК.

    Проект OCSDeviceApp будет создан и добавлен в обозреватель решений.

Создание службы WCF

В отличие от приложений для настольных систем локальный кэш базы данных SQL Server Compact не может быть синхронизирован непосредственно с удаленной базой данных SQL Server для проектов интеллектуальных устройств. Необходимо создать библиотеку службы WCF, которая будет выступать в роли посредника между двумя базами данных. Приложение для устройств использует службы, предоставляемые службой WCF, для синхронизации.

Добавление библиотеки службы WCF в решение

  1. В меню Файл последовательно выберите пункты Добавить, Новый проект.

  2. Присвойте проекту имя MiddleTierServiceLibrary.

  3. В разделе "Типы проектов" выберите WCF, а затем — шаблон Библиотека службы WCF.

  4. Нажмите кнопку OК.

    Проект MiddleTierServiceLibrary будет создан и добавлен в обозреватель решений.

Добавление кэша локальной базы данных

  • В отличие от приложений для настольных систем шаблон локального кэша базы данных недоступен из диалогового окна "Добавление нового элемента" проекта интеллектуального устройства. Вместо него в средний уровень проекта службы WCF или веб-службы необходимо добавить кэш локальной базы данных.

Добавление кэша локальной базы данных в проект

  1. Щелкните правой кнопкой мыши проект MiddleTierServiceLibrary и последовательно выберите пункты Добавить и Новый элемент.

  2. Щелкните шаблон Кэш локальной базы данных и введите NorthwindCache.sync в поле Имя.

  3. Нажмите кнопку Добавить.

    Файл NorthwindCache.sync будет добавлен в обозреватель решений и откроется диалоговое окно Настройка синхронизации данных. В файле NorthwindCache.sync хранятся данные о конфигурации синхронизации.

Настройка параметров синхронизации

Установка подключений к базам данных сервера и клиента

  1. Для создания подключения к базе данных Northwind, установленной ранее, используется диалоговое окно Настройка синхронизации данных. Эта удаленная база данных является внешней по отношению к приложению для интеллектуальных устройств. Можно либо выбрать существующее серверное подключение к базе данных Northwind SQL Server, либо, если подключение не существует, щелкнуть Создать и создать новое подключение к базе данных.

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

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

  2. Не изменяйте значение по умолчанию Northwind.sdf (новое) для параметра Подключение клиента. С помощью диалогового окна Настройка синхронизации данных будет создана новая база данных SQL Server Compact 3.5 и добавлена в проект. Дополнительные сведения о доступных параметрах подключения к данным см. в разделе Практическое руководство. Создание подключения к базе данных Northwind.

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

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

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

Добавление и настройка таблиц для локального кэширования

  1. Нажмите кнопку Добавить, чтобы открыть диалоговое окно Настройка таблиц для автономной работы.

  2. Выберите таблицу Customers.

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

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

  3. Не изменяйте значения столбцов и таблиц, заданные по умолчанию. Нажмите кнопку ОК. Диалоговое окно Настройка синхронизации данных создаст столбцы отслеживания изменений и таблицу удаленных элементов.

    Таблица Customers будет добавлена к списку Кэшированные таблицы.

Разделение компонентов синхронизации между клиентскими и серверными файлами проекта

  1. В диалоговом окне Настройка синхронизации данных нажмите кнопку Дополнительно.

  2. В раскрывающемся меню Размещение клиентского файла проекта выберите OCSDeviceApp.

  3. Нажмите кнопку ОК.

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

  4. Нажмите кнопку ОК.

    Созданные сценарии SQL сохраняются в серверном файле проекта. Клиентская база данных Northwind.sdf создается в клиентском файле проекта и синхронизируется с базой данных сервера в первый раз.

  5. После открытия мастера настройки источников данных выберите таблицу Customers.

  6. Нажмите кнопку Готово.

  7. Файл NorthwindDataSet.xsd будет добавлен к проекту клиента и закроются все диалоговые окна.

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

Элемент

Описание

Northwind.sdf

  • Файл локальной базы данных, содержащий кэшированные данные, полученные от SQL Server.

NorthwindCache.Client.sync

  • XML-файл, содержащий данные о конфигурации синхронизации. Дважды щелкните этот файл, чтобы открыть диалоговое окно Настройка синхронизации данных.

NorthwindCache.Client.Designer.cs (или с расширением VB)

Файл кода, содержащий определения для поставщика синхронизации клиента и агента синхронизации. Этот файл также содержит таблицы синхронизации для локальной базы данных. Дополнительные сведения см. в статье Архитектура и классы для синхронизации клиента и сервера.

NorthwindDataSet.xsd

  • Типизированный набор данных, созданный с помощью мастера настройки источников данных. Этот набор данных содержит таблицу Customers, заполняемую данными, которые хранятся в локальной базе данных.

References\Microsoft.Synchronization.Data

References\Microsoft.Synchronization.Data.SqlServerCe

Необходимые ссылки на службы синхронизации Майкрософт для ADO.NET.

В проект сервера будут добавлены следующие элементы.

Элемент

Описание

NorthwindCache.sync

XML-файл, содержащий данные о конфигурации синхронизации. Дважды щелкните этот файл, чтобы открыть диалоговое окно Настройка синхронизации данных.

NorthwindCache.Designer.cs (или с расширением VB)

Содержит определения для поставщика синхронизации сервера и адаптера синхронизации для базы данных сервера. Дополнительные сведения см. в статье Архитектура и классы для синхронизации клиента и сервера.

NorthwindCache.SyncContract.cs (или с расширением VB)

Файл кода, содержащий определение контракта WCF и его реализацию.

Папка SQLScripts

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

Cc488004.alert_note(ru-ru,VS.90).gifПримечание.
Сценарии SQL создаются только в том случае, если на сервере требуется выполнять изменения. Если на сервере уже есть таблица удаленных элементов и столбцы отслеживания изменений, то сценарии не создаются.

Папка SQLUndoScripts

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

Cc488004.alert_note(ru-ru,VS.90).gifПримечание.
Сценарии SQL создаются только в том случае, если на сервере требуется выполнять изменения. Если на сервере уже есть таблица удаленных элементов и столбцы отслеживания изменений, то сценарии не создаются.

References\Microsoft.Synchronization.Data

References\Microsoft.Synchronization.Data.Server

Необходимые ссылки на службы синхронизации Майкрософт для ADO.NET.

Настройка и запуск службы WCF

Настройка службы WCF (NorthwindCacheSyncService), созданной с помощью диалогового окна "Настройка синхронизации данных"

  1. В обозревателе решений дважды щелкните NorthwindCache.SyncContract.cs (или VB), чтобы открыть файл в редакторе кода.

  2. Добавьте атрибут XmlSerializerFormat() непосредственно перед определением INorthwindSyncContract. В редакторе кода должно отобразиться следующее.

    [ServiceContractAttribute()]
    [XmlSerializerFormat()]
    public interface INorthwindCacheSyncContract {
    <ServiceContractAttribute()> _
    <XmlSerializerFormat()> _
    Public Interface INorthwindCacheSyncContract
    
  3. В обозревателе решений дважды щелкните файл App.config.

  4. Внесите в XML-код файла App.config следующие изменения. Они настроят проект на размещение службы NorthwindCacheSyncService, созданной с помощью диалогового окна Настройка синхронизации данных вместо службы по умолчанию (Service1), созданной шаблоном проекта WCF.

    1. Измените <service name="MiddleTierServiceLibrary.Service1" behaviorConfiguration="MiddleTierServiceLibrary.Service1Behavior"> на <service name="MiddleTierServiceLibrary.NorthwindCacheSyncService" behaviorConfiguration="MiddleTierServiceLibrary.NorthwindCacheSyncServiceBehavior">

    2. Измените <add baseAddress="https://localhost:8731/Design_Time_Addresses/MiddleTierServiceLibrary/Service1/" /> на <add baseAddress="http://<your computer name>:8731/NorthwindCacheSyncService/" />.

    3. Измените <endpoint address="" binding="wsHttpBinding" contract="MiddleTierServiceLibrary.IService1"> на <endpoint address="" binding="basicHttpBinding" contract="MiddleTierServiceLibrary. INorthwindCacheSyncContract">.

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

      Привязка wsHttpBinding не поддерживается на устройствах.

    4. Измените <dns value="localhost"/> на <dns value="<your computer name>"/>.

    5. Измените <behavior name="MiddleTierServiceLibrary.Service1Behavior"> на <behavior name="MiddleTierServiceLibrary.NorthwindCacheSyncServiceBehavior">

  5. В обозревателе решений щелкните правой кнопкой мыши проект MiddleTierServiceLibrary и выберите команду Назначить автозагружаемым проектом.

  6. Чтобы запустить службу WCF, в меню Отладка выберите пункт Запуск без отладки.

    Откроется диалоговое окно Развертывание OCSDeviceApp.

  7. Нажмите кнопку Отмена, а затем — Да, чтобы продолжить.

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

    Будет запущена только служба WCF, эмулятор устройств пока не требуется.

    Запускается узел службы WCF (в области уведомлений появляется значок) и размещает службу. Отображается клиент теста WCF, позволяющий выполнить тестирование службы.

Кодирование функций синхронизации в приложении для интеллектуальных устройств

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

Добавление веб-ссылки из проекта в службу WCF

  1. В обозревателе решений щелкните правой кнопкой мыши OCSDeviceApp и выберите команду Добавить веб-ссылку.

    Откроется диалоговое окно Добавление веб-ссылки.

  2. Введите адрес службы NorthwindCacheSyncService в поле URL-адрес и нажмите кнопку Найти.

    После нахождения веб-службы NorthwindCacheSyncService станет активной кнопка Добавить ссылку.

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

    Адрес службы можно найти в файле App.config.

  3. Присвойте веб-ссылке имя NorthwindCacheWebRef и нажмите кнопку Добавить ссылку.

    В обозревателе решений в разделе Веб-ссылки появится веб-ссылка NorthwindCacheWebRef. Visual Studio создаст файл Reference.cs, однако он не будет отображаться в обозревателе решений.

  4. Чтобы открыть и изменить файл Reference.cs, выполните следующие действия.

    1. Дважды щелкните веб-ссылку NorthwindCacheWebRef, чтобы открыть ее в обозревателе объектов.

    2. Разверните узел OCSDeviceApp.NorthwindCacheWebRef.

    3. Правой кнопкой мыши щелкните NorthwindCacheSyncService и выберите команду Перейти к определению.

      Файл Reference.cs откроется в редакторе кода.

    4. После последнего оператора using или imports добавьте следующий код:

      [C#]

      using Microsoft.Synchronization;
      using Microsoft.Synchronization.Data;
      

      [Visual Basic]

      Imports Microsoft.Synchronization.Data
      Imports Microsoft.Synchronization
      
    5. Удалите все файлы и перечисления за исключением NorthwindCacheSyncService.

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

      Удаленные типы уже определены в недавно импортированных пространствах имен Microsoft.Synchronization и Microsoft.Synchronization.Data.

Создание формы с привязкой к данным, используемой для просмотра данных и инициации синхронизации

  1. В обозревателе решений дважды щелкните форму Form1, чтобы открыть ее в конструкторе Visual Studio.

  2. Перетащите узел Customers из окна Источники данных на форму Form1.

В форме Form1 щелкните пункт левого меню и введите Синхронизация. Присвойте свойству Имя значение SynchronizeMenuItem.

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

Для запуска процесса синхронизации пользователь в итоге будет нажимать кнопку Синхронизация.

Элемент управления DataGridView отображает таблицу Customers из локального кэша базы данных (база данных Northwind.sdf, находящаяся в проекте).

Добавление пользователя в локальную базу данных Northwind

  1. В обозревателе решений дважды щелкните форму Form1, чтобы открыть ее в конструкторе.

  2. Щелкните элемент меню, расположенный на правой стороне формы и введите Вставить строку. Присвойте свойству Имя пункта меню значение InsertRowMenuItem.

  3. Дважды щелкните кнопку Вставить строку, чтобы создать обработчик событий для события Menu-click и открыть форму в редакторе кода.

  4. Добавьте код для подключения к (и вставьте строку в) локальной базе данных SQL Server Compact.

    Dim conn = New System.Data.SqlServerCe.SqlCeConnection( _
        "Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName( _
            System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "Northwind.sdf") + _
        ";Max Database Size=2047"))
    
    Try
        ' Connect to the local database
        conn.Open()
    
        ' Insert a row
        Dim cmd = conn.CreateCommand()
        cmd.CommandText = "INSERT INTO Customers ([CustomerID], [CompanyName]) Values('NEWRW', 'Northwind Traders')"
        cmd.ExecuteNonQuery()
    
    
    Catch ex As Exception
    Finally
        conn.Close()
    End Try
    
    ' Reload the DataSet/Datagrid from the local database
    CustomersTableAdapter.Fill(Me.NorthwindDataSet.Customers)
    
    System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection(
        ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "Northwind.sdf") + ";Max Database Size=2047")));
    try
    {
        // Connect to the local database
        conn.Open();
        System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand();
    
        // Insert a row
        cmd.CommandText = "INSERT INTO Customers ([CustomerID], [CompanyName]) Values('NEWRW', 'Northwind Traders')";
        cmd.ExecuteNonQuery();
    }
    
    finally
    {
        conn.Close();
    }
    
    // Reload the DataSet/Datagrid from the local database
    customersTableAdapter.Fill(northwindDataSet.Customers);
    

    Элемент InsertRowMenuItem вставит новую строку в таблицу Customers в локальной базе данных.

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

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

Выполните тестирование приложения

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

Тестирование приложения

  1. В меню Сервис выберите пункт Диспетчер эмуляторов устройств (DEM).

    Откроется окно DEM, содержащее список доступных эмуляторов.

  2. Щелкните правой кнопкой мыши Эмулятор USA Windows Mobile 5.0 Pocket PC R2 (целевое устройство для OCSWalkthrough), а затем выберите команду Подключить.

    Откроется эмулятор устройства Pocket PC — WM 5.0.

  3. В окне DEM правой кнопкой мыши щелкните подключенное устройство, а затем выберите пункт В гнезде.

    Центр устройств Windows Mobile (Windows Vista) или ActiveSync подключится к находящемуся в гнезде эмулятору устройства. Если центр устройств Windows или ActiveSync предложит настроить устройство, щелкните Подключить без настройки устройства (Windows Vista) или нажмите кнопку Отмена.

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

    Подключение к WMDC или ActiveSync позволяет эмулятору получить доступ к службе NorthwindCacheSyncService, выполняющейся на настольном компьютере. Чтобы успешно подключить эмулятор устройства, параметры подключения в WMDC или ActiveSync должны иметь значения, разрешающие DMA-соединения.

  4. В обозревателе решений щелкните правой клавишей мыши проект OCSDeviceApp и выберите команду Назначить автозагружаемым проектом.

  5. Чтобы начать отладку, нажмите клавишу F5.

  6. Вернитесь к форме в эмуляторе устройства Pocket PC — WM 5.0 и нажмите Вставить строку. Синхронизация локальной и удаленной баз данных больше не выполняется. Однако в таблице должна отображаться новая строка.

  7. Нажмите кнопку Синхронизация.

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

    1. В окне Обозреватель серверов/Обозреватель баз данных найдите таблицу Customers на удаленном сервере баз данных (не подключенном к Northwind.sdf).

    2. Щелкните правой кнопкой мыши таблицу Customers и выберите команду Показать таблицу данных.

    3. Проверьте наличие новой строки.

    4. Щелкните новую строку правой кнопкой мыши и выберите команду Удалить. Базы данных снова не будут синхронизироваться.

  9. Вернитесь в форму в эмуляторе устройства и нажмите кнопку Синхронизация.

  10. Убедитесь, что изменения в удаленной базе данных синхронизированы с локальной базой данных и отображаются в сетке.

  11. Закройте форму (остановите отладку).

См. также

Задачи

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

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

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

Использование баз данных SQL Server Compact 3.5 (устройства)

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

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

Дата

Журнал

Причина

Июль 2008

Раздел добавлен.

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