Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
Новости
Последние поступления
Книжный магазин
  Hardware:
Видеоустройства
Системные платы
Процессоры
Мобильные устройства
Аудиосистема
Охлаждение системы
Накопители информации
КПК и ноутбуки
Телефоны и связь
Периферия
Система
Сети
Разные устройства
 
  Programming:
Web-разработка
Языки программирования
Технологии и теория
Разработка игр
Программная инженерия
 
  Software:
Операционные системы
Windows 7
Базы данных
Обзоры программ
Графика и дизайн
   
  Life:
Компьютерная жизнь
Разные материалы
   
Партнеры
Публикация
Правовая информация
Реклама на сайте
Обратная связь
Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



Практическая кроссплатформенность

Раздел: Software / Linux @ 08.06.2008 | Ключевые слова: linux ubuntu версия для печати

Автор: mdevils
Источник: habrahabr

После полугода использования Ubuntu Linux я окончательно решил, что это именно та система, которая мне нужна для работы и развлечений. Почту организовал в Evolution и был приятно удивлен тем, что там есть все что мне надо, но ничего лишнего (что особенно удивительно после работы в Microsoft Office Outlook)!

Так сложилось, что я купил себе PocketPC на базе WM6 (Windows Mobile 6).

Все было замечательно до момента, пока у меня не появилось много дел и задач: понадобилась полная синхронизация между тремя продуктами:
  • Evolution
  • Windows Mobile Outlook
  • MS Office Outlook

Поиск решения


После некоторого поиска в интернете я обнаружил то, что через USB-кабель я точно не смогу синхронизовать Evolution с КПК (WM6 еще не поддерживается, а проект по синхронизации с WM5 умер полностью).

Далее я обнаружил, что в теории возможна синхронизация всех трех систем через Exchange-сервер (и это правильный подход). Но я не нашел бесплатного Exchange-сервера в сети (нашел один, но Evolution с ним отказался работать т.к. в логине использовался знак @). Но может и не старался искать - я люблю изобретать велосипед и набирать опыт, получая удовольствие в изучении нового.

Задача


Задача в общем-то была ясна. Надо было написать программу, которая бы обеспечила синхронизацию.

НО!

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

После определенного обзора я обнаружил:

1. MS Office Outlook предоставляет объектную модель для .NET приложений.
2. Evolution предоставляет объектную модель для mono-приложений.
    Для тех кто не знает: mono — это кроссплатформенная (Win/*nix/Mac) реализация .NET Framework.
3. WM Outlook предоставляет объектную модель для .NET-приложений.

Класс! Значит, я могу на C# все написать!

Решение


Самое главное — хорошо все спроектировать! Я построил некую абстрактную модель:

Провайдер синхронизации — абстрактный класс. Надо выполнить для всех трех источников данных.
Синхронизатор — система нахождения разностей данных, взаимодействующая с провайдерами синхронизации. Единая для всех трех программ.
Менеджер сети — система обмена данными между приложениями по сети (напрямую или через сервера - неважно).
Конфигуратор — система работы с конфигурацией.
Особенности системы — подсистема, хранящая данные об особенностях работы на разных платформах.

Распределил я эти области ответственности следующим образом:

Программа: Реализация провайдера синхронизации
Библиотека (Sync.dll): Синхронизатор, Менеджер сети, Конфигуратор
Библиотека (Platform.dll): Особенности системы

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

За работу!


Я запустил Visual Studio и на одном дыхании реализовал Sync.dll. После чего занялся WM Outlook и (после определенного секса при настройке отладки на виртуальном устройстве) я написал первый провайдер синхронизации.

Такс... теперь Evolution. Я запустил MonoDevelop, поставил evolution mono bindings (с огромным сексом, так как у пакета не были правильно соблюдены зависимости). И написал второй провайдер синхронизации!

Запустил, и о чудо! Контакты из Evolution скопировались в КПК! Теперь надо обратную передачу тоже доделать и мелочи поправить! :-)

Итоги


Меня удивило то, что .NET сейчас действительно кроссплатформенный (и как бы так выразиться, кросс-устройственный)! Я понял что могу писать один и тот же код для трех разных платформ, одна из которых вообще КПК. А тут уже большой простор для фантазии! :-)

Это интересно:








версия для печатиРаспечатать статью


Вернуться в раздел: Software / Linux


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.