Мы продолжаем создавать продукты на основе Skype для бизнеса (и для него).
Это непростая задача – вам предстоит столкнуться со множеством препятствий, которые нужно преодолеть творчески.
Сегодня я расскажу о том, как проходила разработка одного из наших последних приложений, откуда пришла идея и какие технологические проблемы мы решали.
Идея
В нашей компании сервер Lync и клиенты Skype for Business используются для общения сотрудников в качестве корпоративных коммуникаций.У них есть свои преимущества и недостатки (например, проблемы с сохранением истории переписки), но мы сегодня не об этом.
У нас уже была идея создать собственный клиент на основе Lync SDK , который полностью заменит клиент Skype для бизнеса.
Мы потратили много времени и сил, создали собственный мессенджер, который покрывает все неудобства и дополняет функционал Lync, но преодолеть несколько «ShowStoppers» нам не удалось.
Также не добавляло оптимизма немалое количество ошибок в самом Lync SDK. Главное, что мы получили в процессе создания собственного клиента – это огромный опыт использования технологий и знания, по сути, уникальные.
Поэтому мы решили не останавливаться и создать несколько отдельных приложений для Skype for Business, каждое из которых должно решать только одну основную задачу, в отличие от предыдущего проекта, который представлял собой приложение «все в одном».
Так родились две идеи – приложение для управления контактами, о котором пойдет речь в этой статье, и приложение для сохранения истории сообщений, о котором мы поговорим отдельно.
Стек технологий, архитектура, разработка
Приложение разработано с использованием технологий .NET Framework 4.6.1, Unity Framework, Prism. Одним из недостатков разработки предыдущего приложения было использование Lync SDK по всему коду, что сильно затрудняло внедрение новых функций и модульность приложения.
Поэтому главный вывод, который мы сделали, — независимость от сторонних решений.
Все интеграционные зависимости должны быть абстрагированы, и наше решение должно использовать абстракции вместо конкретных библиотек и фреймворков.
Если посмотреть на компонентную схему архитектурного решения, то можно выделить три группы компонентов.
— Сторонние компоненты, не принадлежащие нам (Lync Client SDK);
— сервисные компоненты, реализующие логику соединения и развязки слоев (MSConnector, IConnector, CommonDTO, AppModel);
— компоненты приложения, являющиеся клиентскими приложениями.
Если с первой и третьей группой все более-менее понятно, то о второй следует поговорить подробнее.
Модель приложения – доменная модель.
Это чистая объектная модель, описывающая заданную предметную область.
Его главная особенность в том, что он не содержит ссылок на сторонние библиотеки (например, Lync и Outlook).
Для связи с нижележащим уровнем модель использует интерфейс IКоннектор , который охватывает конкретную реализацию и всю грязную работу по подключению к транспортным и сервисным библиотекам.
Этот интерфейс удобно считать общим — при разработке он был разделен на функциональные части (ICommunication, ICalendar, ITask и т. д.).
Одним из вариантов реализации этого интерфейса является MSConnector , который может взаимодействовать с Lync Client SDK и Outlook, а также обслуживать запросы, поступающие в интерфейс.
Для того чтобы модель и коннектор поддерживали эффективное взаимодействие, в системе имеется компонент CommonDTO, который описывает все общие классы, необходимые для обмена данными.
Клиентские приложения взаимодействуют с моделью предметной области напрямую, вызывая ее объекты и подписываясь на ее события.
По сути, в этой архитектуре модель представляет собой прокси-сервер кэширования для внешних сервисов.
Таким образом, мы добились отвязки приложения от Lync (Skype for Business) и Outlook и пришли к выводу, что в рамках этой архитектуры потенциально можно перейти на другие сервисы.
Например, используйте Telegram или обычный Skype в качестве мессенджера, а Google Apps — в качестве почтового приложения и календаря.
На основе этого решения мы создали библиотеки слоев между Lync и нашим приложением и приступили к разработке непосредственно клиентской части.
Суть приложения — расширенное управление вашими контактами Lync. К основным особенностям относятся следующие: • создание контактов (одиночных или множественных); • создание групп; • поиск в адресной книге Lync и Outlook; • Просмотр собственного календаря.
При этом каждый контакт имеет расширенный список возможностей:
• Открытие диалога с контактом (с возможностью отправки коротких сообщений);
• Звонок в Lync, на любой телефон из списка контактов, видеозвонок;
• Просмотр календаря контакта;
• Уведомления об изменении статуса контакта на «В сети» с запоминанием сообщений;
• Изменение действия по умолчанию при нажатии на контакт (вызов, видеозвонок или открытие чата);
• Отправка электронного письма с пустым или заранее заданным заголовком;
• Назначение встречи с контактом;
• Поиск всех писем от контакта;
• Просмотр карточки контакта (показывающей весь календарь пользователя).
Дополнительные возможности приложения включают в себя:
• Перетаскивание контактов между группами из окна поиска;
• Масштабирование контактов всех групп сразу и групп контактов отдельно;
• Добавление ярлыков файлов или приложений на панель задач программы;
• Изменение собственного статуса в Skype для бизнеса.
Публикация в Магазине Windows
Было решено, что приложение следует распространять в двух формах — обычный установщик (exe или msi, через сайт) и через магазин Microsoft как пакет appx. Имея опыт конвертации классических приложений в пакет appx на предыдущем приложении, в данном случае мы пошли по тому же пути, но двинулись гораздо быстрее.Единственное, что мы добавили по сравнению с публикацией предыдущего приложения, — это многоязычие.
Приложение теперь доступно пользователям на трех языках – русском, английском и немецком.
Для того, чтобы увидеть в магазине Microsoft список языков, поддерживаемых приложением, нужно немного подправить AppxManifest.xml, в нашем случае он выглядит так:
<Resources> <Resource Language="de-DE" /> <Resource Language="ru-RU" /> <Resource Language="en-us" /> <Resource uap:Scale="100" /> <Resource uap:Scale="125" /> <Resource uap:Scale="150" /> <Resource uap:Scale="200" /> <Resource uap:Scale="400" /> </Resources>
Заключение
В результате у нас теперь есть как само приложение для управления контактами, которое не повторяет функционал Lync, а расширяет его и работает в паре с ним, так и набор необходимых библиотек для «быстрой» реализации наших дальнейших идей.Буду рад обратной связи в комментариях, благодарен за идеи.
Вячеслав Нестеров Теги: #lync #skype для бизнеса #Lync SDK #занимаюсь пиаром
-
Развитие По: 1. Стероидная Индустрия
19 Oct, 24 -
Психоделическая Фантастика (Гл. 1)
19 Oct, 24 -
Спам Должен Быть Проблемой Получателя
19 Oct, 24 -
Учебник 5 По Rabbitmq — Темы
19 Oct, 24