Главная » Просмотр файлов » ПКРПСиБД LAB10 Бочаров И.А.

ПКРПСиБД LAB10 Бочаров И.А. (548560)

Файл №548560 ПКРПСиБД LAB10 Бочаров И.А. (Лабораторная работа 10)ПКРПСиБД LAB10 Бочаров И.А. (548560)2015-08-23СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Национальный исследовательский институт

Московский Энергетический Институт (Технический Университет)

Институт автоматики и вычислительной техники

Кафедра Прикладной математики





Лабораторная работа №9

по дисциплине:

Проектирование крупных распределенных программных систем и баз данных

тема: «Microsoft Sync Framework»

Выполнил:

Бочаров Иван Андреевич

Проверил:

к.т.н., доц. Куриленко Иван Евгеньевич









Москва

2012 г.



Microsoft Sync Framework

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

Синхронизация файловых систем

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

  • Создает объект FileSyncProvider, представляющий каждую из папок.

  • Передает два поставщика объекту SyncOrchestrator и указывает один из них в качестве поставщика источника, а другой — в качестве поставщика назначения.

  • Вызывает Synchronize, чтобы начать сеанс синхронизации.

Задание параметров синхронизации

Объект FileSyncOptions позволяет определить ряд параметров синхронизации файлов, в том числе задать способ обнаружения изменений и необходимость удаления элементов или их перемещения в корзину в процессе синхронизации. В следующем примере кода определены четыре параметра, три из которых связаны с операциями удаления элементов. Параметр ExplicitDetectChanges указывает на то, что платформа Sync Framework не будет выполнять обнаружение изменений, если приложение явным образом не вызвало метод DetectChanges.

Осуществление обнаружения изменений

По умолчанию платформа Sync Framework выполняет обнаружение изменений в обеих репликах при каждом вызове метода Synchronize. Обнаружение изменений дает возможность платформе Sync Framework определить, какие элементы должны быть отправлены от источника к назначению, а какие из этих элементов конфликтуют (если есть). Параметр ExplicitDetectChanges позволяет управлять способом обнаружения изменений.

Определение статического фильтра

Для исключения файлов по имени (в том числе с использованием шаблонов) и по атрибуту можно задавать статические фильтры. Кроме этого, статические фильтры позволяют целиком исключать содержимое вложенных папок. Также можно задать явный список имен файлов, включаемых в синхронизацию (в том числе с использованием шаблонов). Для включения в область синхронизации файлы или папки должны пройти все фильтры. Например, если все файлы, имеющие расширение TXT, должны быть исключены из области, а файл MyFile.txt указан в списке файлов, предназначенных для явного включения в область, то файл MyFile.txt все равно будет исключен.

Обработка конфликтов

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

Приложение

Синхронизация баз данных

Платформы Sync Framework обеспечивают синхронизацию между базами данных. Предоставляется гибкий и интуитивно понятный API-интерфейс, который позволяет создавать приложения для работы вне сети и различных вариантов совместной работы. Этот API-интерфейс позволяет использовать все или некоторые из предоставляемых компонентов в зависимости от архитектуры и требований приложения. Платформа Sync Framework поддерживает клиент-серверную, одноранговую и смешанную топологии. В клиент-серверных топологиях все клиенты синхронизируются с центральным сервером. В одноранговой топологии каждый клиент может синхронизироваться с другим узлом без передачи изменений через центральный сервер. Смешанные топологии включают сочетание топологий «клиент-клиент» и «клиент-сервер».

Службы синхронизации баз данных

Ниже перечислены три основные службы синхронизации баз данных-источника Sync Framework, включающие:

  • Поставщик SqlSyncProvider предназначен для синхронизации баз данных SQL Server.

  • Поставщик SqlCeSyncProvider предназначен для синхронизации баз данных SQL Server Compact.

  • DbSyncProvider обычно используется для синхронизации баз данных, отличных от баз данных SQL Server

Данные поставщики имеют следующие характеристики.

  • Могут использоваться для клиент-серверных, одноранговых и смешанных топологий.

  • Могут использоваться более гибким образом. Например, можно синхронизировать два экземпляра DbSyncProvider либо один экземпляр SqlSyncProvider и один экземпляр SqlCeSyncProvider и т. д.

  • Используют метаданные Sync Framework и могут служить участниками в топологиях совместно с другими поставщиками Sync Framework.

Приложение

Создадим в запущенном экземпляре MSSQL при помощи Management Studio две базы данных: SyncDB и SyncClientDB. В первой создадим таблицу SyncTable :

Используя разработанное приложение, установим нужные для синхронизации таблицы:

Синхронизируем данные:

Также разработанное приложение позволяет, в случае, если синхронизация больше не нужна, удалять служебную информацию.

Код программ

Синхронизация файлов

using System;

using System.IO;

using Microsoft.Synchronization;

using Microsoft.Synchronization.Files;

using System.Threading;

public class Program

{

public static void Main(string[] args)

{

string folder1RootPath = "D:\\First";

string folder2RootPath = "D:\\Second";

while (true)

{

try

{

FileSyncOptions options = FileSyncOptions.ExplicitDetectChanges | FileSyncOptions.RecycleDeletedFiles | FileSyncOptions.RecyclePreviousFileOnUpdates | FileSyncOptions.RecycleConflictLoserFiles;

FileSyncScopeFilter filter = new FileSyncScopeFilter();

filter.FileNameExcludes.Add("*.jpg");

filter.SubdirectoryExcludes.Add("info");

DetectChangesOnFileSystemfolder(folder1RootPath, filter, options);

DetectChangesOnFileSystemfolder(folder2RootPath, filter, options);

SyncFileSystemFoldersOneWay(folder1RootPath, folder2RootPath, null, options);

SyncFileSystemFoldersOneWay(folder2RootPath, folder1RootPath, null, options);

Thread.Sleep(5000);

}

catch (Exception e)

{

Console.WriteLine("\nПолучено исключение! Текст сообщения:\n" + e.ToString());

}

}

}

public static void DetectChangesOnFileSystemfolder(string rootPath, FileSyncScopeFilter filter, FileSyncOptions options)

{

FileSyncProvider provider = null;

try

{

provider = new FileSyncProvider(rootPath, filter, options);

provider.DetectChanges();

}

finally

{

if (provider != null)

provider.Dispose();

}

}

public static void SyncFileSystemFoldersOneWay(string sourceRoot, string destinationRoot, FileSyncScopeFilter filter, FileSyncOptions options)

{

FileSyncProvider sourceProvider = null;

FileSyncProvider destinationProvider = null;

try

{

sourceProvider = new FileSyncProvider(sourceRoot, filter, options);

destinationProvider = new FileSyncProvider(destinationRoot, filter, options);

destinationProvider.AppliedChange += new EventHandler(OnAppliedChange);

destinationProvider.SkippedChange += new EventHandler(OnSkippedChange);

SyncOrchestrator agent = new SyncOrchestrator();

agent.LocalProvider = sourceProvider;

agent.RemoteProvider = destinationProvider;

agent.Direction = SyncDirectionOrder.Upload;

Console.WriteLine("Синхронизируем изменения для папки: " + destinationProvider.RootDirectoryPath);

agent.Synchronize();

}

finally

{

if (sourceProvider != null) sourceProvider.Dispose();

if (destinationProvider != null) destinationProvider.Dispose();

}

}

public static void OnAppliedChange(object sender, AppliedChangeEventArgs args)

{

switch(args.ChangeType)

{

case ChangeType.Create:

Console.WriteLine("Создан файл: " + args.NewFilePath);

break;

case ChangeType.Delete:

Console.WriteLine("Удален файл: " + args.OldFilePath);

break;

case ChangeType.Update:

Console.WriteLine("Обновлен файл: " + args.OldFilePath);

break;

case ChangeType.Rename:

Console.WriteLine("Файл: " + args.OldFilePath +

" переименован как: " + args.NewFilePath);

break;

}

}

public static void OnSkippedChange(object sender, SkippedChangeEventArgs args)

{

Console.WriteLine("Пропустили изменеия " + args.ChangeType.ToString().ToUpper()

+ " для " + (!string.IsNullOrEmpty(args.CurrentFilePath) ?

args.CurrentFilePath : args.NewFilePath) + " в силу ошибки ");

if (args.Exception != null)

Console.WriteLine(" [" + args.Exception.Message + "]");

}

}



Синхронизация БД

using System;

using System.Collections.Generic;

using System.Collections.ObjectModel;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using Microsoft.Synchronization;

using Microsoft.Synchronization.Data;

using Microsoft.Synchronization.Data.SqlServer;

namespace SyncDb

{

class Program

{

static void Main(string[] args)

{

string answer = "";

string selection = "";

do

{

Console.WriteLine("\nВыберите вариант из списка:");

Console.WriteLine(@"a - чтобы настроить синхронизацию");

Console.WriteLine(@"s - чтобы провести синхронизацию");

Console.WriteLine(@"d - чтобы удалить служебные таблицы и прекратить синхронизацию");

Console.Write("Ваш выбор: ");

selection = Console.ReadLine();

if (selection.Equals("a"))

SetupSync();

Характеристики

Тип файла
Документ
Размер
519,2 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лабораторной работы

Лабораторная работа 10
SyncFolders
SyncFolders
Properties
AssemblyInfo.cs
bin
Debug
SyncFolders.exe
SyncFolders.pdb
SyncFolders.vshost.exe
SyncFolders.vshost.exe.manifest
Release
SyncFolders.exe
SyncFolders.pdb
SyncFolders.vshost.exe
SyncFolders.vshost.exe.manifest
obj
Debug
TempPE
DesignTimeResolveAssemblyReferencesInput.cache
SyncFolders.csproj.FileListAbsolute.txt
SyncFolders.csprojResolveAssemblyReference.cache
SyncFolders.exe
SyncFolders.pdb
Release
TempPE
DesignTimeResolveAssemblyReferencesInput.cache
SyncFolders.csproj.FileListAbsolute.txt
SyncFolders.exe
SyncFolders.pdb
Program.cs
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7045
Авторов
на СтудИзбе
259
Средний доход
с одного платного файла
Обучение Подробнее