Задача
Мы продолжаем работать над SkyHistory, приложением для просмотра, мониторинга, хранения, фильтрации сообщений в Skype и их поиска по дате.
Стремление расширить функциональность кроссплатформенного ядра продукта привело команду СКЭНД к разработке кроссплатформенных компонентов для импорта текстовых сообщений Skype. К этим компонентам относятся:
- SQLite Wrapper — для получения доступа к Skype и управления локальными базами данных.
- FileSystemWatcher — для отслеживания изменений в базе данных аккаунта Skype и оповещения компонента Conversation Manager о любых обновлениях локальной базы данных.
При создании решений наша команда использовала:
- кроссплатформенный фреймворк .NET Core;
- набор библиотек CoreFX;
- объединение компонентов .NET Core и UI-библиотеки, разработанной при помощи фреймворка Electron.
Подход
Мы выбрали фреймворк .NET Core для реализации кроссплатформенных компонентов ядра по ряду причин. Прежде всего, .NET Core — это кроссплатформенный (Windows, Mac, Linux) аналог Microsoft .NET Framework с открытым исходным кодом. Фреймворк содержит среду CoreCLR, кроссплатформенную реализацию CLR. В нее входит RyuJIT — JIT-компилятор. Также .NET Core включает в себя набор библиотек CoreFX, функциональность которых частично совпадает с Base Class Library, стандартной библиотекой классов платформы .NET Framework.
Что касается основных платформозависимых компонентов ядра, FileSystemWatcher отслеживает оповещения об изменениях в файловых системах и генерирует события в случае любых изменений в локальной базе данных Skype. Реализованный класс принимает имя директория/файла в качестве параметра и поэтому может легко использоваться в других приложениях как сторонняя библиотека.
Для реализации функциональности компонента SQLite Wrapper мы использовали драйвер SQLite ODBC, написанный на C++ и обернутый в .NET Core Data.Sqlite. Это обеспечивает совместимость и кроссплатформенность. Этот же компонент стал частью UI-приложения, разработанного при помощи фреймворка Electron, и используется для получения списков пользователей, групп пользователей или сообщений за определенный период.
Особенности
Работая над кроссплатформенным ядром, мы успешно внедрили:
- кроссплатформенный компонент FileSystemWatcher;
- кроссплатформенный компонент SQLite Wrapper;
- компоненты .NET Core и GUI-библиотеку, разработанную при помощи фреймворка Electron;
- менеджер пакетов NuGet;
- автономное развертывание.
Результат
Разработанный нашей командой набор компонентов является единым для всех платформ, которые поддерживают Microsoft Skype, — Windows, Linux и macOS. Нам удалось с легкостью объединить .NET Core и UI-приложение, разработанное при помощи фреймворка Electron.
Кроссплатформенные компоненты FileSystemWatcher и SQLite Wrapper при необходимости можно эффективно использовать в любых приложениях.