Компоненты для мониторинга сообщений в Skype

При помощи фреймворка .NET Core мы разработали кроссплатформенные компоненты для импорта текстовых сообщений Skype.

Задача

Мы продолжаем работать над 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 при необходимости можно эффективно использовать в любых приложениях.

Нуждаетесь в разработке похожего проекта?

Свяжитесь с нами

Мы любим новые проекты! Напишите нам, и мы ответим вам в ближайшее время.

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

// Yandex.Metrika counter (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(49667656, "init", { id:49667656, clickmap:false, trackLinks:true, accurateTrackBounce:true, webvisor:true });
var $zoho=$zoho || {};$zoho.salesiq = $zoho.salesiq || {widgetcode:"siq695cdf015eb431ebbba4b9aee4de6b482020d06f245727bd3c91efcb51f639d4", values:{},ready:function(){$zoho.salesiq.floatbutton.visible('hide');}};var d=document;s=d.createElement("script");s.type="text/javascript";s.id="zsiqscript";s.defer=true;s.src="https://salesiq.zoho.eu/widget";t=d.getElementsByTagName("script")[0];t.parentNode.insertBefore(s,t); // hire-php-developers/