В последний раз я пытался программировать на Visual Basic 3.0, поэтому обычно уделяю мало внимания миру разработчиков. Но Graph — теперь Microsoft Graph — захватывающий проект, в котором многочисленные нити «облачных» служб Microsoft сплетены в единую интеллектуальную ткань. Graph — не гигантская база данных. Это API-интерфейс со множеством функций, связывающих такие данные, как учетные записи пользователя, почтовые ящики, календари, группы и т. д., очень удобным для разработчиков способом. Поэтому Graph и интересен. По крайней мере, я так считаю… Но как мне связать Graph с Visual Basic?

После недавней беседы с Робом Леффетерсом, генеральным управляющим Microsoft по расширению Office, я задумался, насколько в целом велики возможности расширения Office сегодня.

В этом контексте Office представляет собой полную коллекцию классических приложений (Word, Excel и др.), серверов (Exchange, SharePoint и т. д.) и новых продуктов, таких как Sway. В этом качестве Office — довольно большой холст, для которого Microsoft должна предоставить необходимые API-интерфейсы и наборы инструментов, позволяющие разработчикам делать свое дело.

В Microsoft делят расширяемость Office на три типа. Надстройки, в частности доступные для Outlook и Outlook Web App, позволяют использовать в приложениях содержимое сообщений. Например, принять подтверждение от авиакомпании по электронной почте и вставить подробности авиарейса в календарь пользователя. API-интерфейсы обеспечивают доступ к содержимому почтовых ящиков и других репозиториев, а соединитель наделяет Office возможностью обрабатывать внешние данные.

Важная новость, о которой было объявлено на мероприятии для разработчиков Microsoft Connect (http://connect2015.visualstudio.com/), — появление Microsoft Graph, результат эволюции программы, известной ранее как Office Graph (http://dev.office.com/officegraph), дополнительные сведения можно найти здесь: https://blogs.office.com/2015/11/18/today-at-connect-introducing-the-microsoft-graph/. Как известно, Office Graph — «интеллектуальная структура», которая собирает сигналы о действиях пользователей Office 365, чтобы составить картину связей между ними. Данные из Office Graph часто используются такими приложениями, как Office Delve и Delve Analytics, доступными в составе нового плана высокого уровня Office 365 E5 начиная с 1 декабря.

Microsoft сообщает об интересном факте: на сегодня у коммерческого пакета Office 365 насчитывается 60 млн активных пользователей в месяц. Другими словами, таково число отдельных пользователей, подключающихся к Office 365 хотя бы один раз в месяц, чтобы произвести какое-нибудь действие, например отправить сообщение по электронной почте. Этот показатель с мая увеличился на 10 млн.

По многим причинам количество почтовых ящиков, организованных в Office 365, намного больше. Я не думаю, что 35% клиентской базы было перемещено на Exchange Online, но сейчас у Office 365 несомненно есть мощный импульс развития, что делает его привлекательной целью для разработчиков.

В Microsoft Graph получили дальнейшее развитие Office Graph и базы данных графа, которые совершенствовались в лаборатории Microsoft Research (пример можно найти по адресу: http://blogs.msdn.com/b/msr_er/archive/2015/06/26/announcing-the-microsoft-academic-graph-let-the-research-begin.aspx). Программа стала единой точкой входа для объединенного графа, собирающего информацию из многих источников данных. В действительности Microsoft Graph можно рассматривать как программу с возможностью получать информацию из различных источников в «облачных» службах Microsoft и предоставлять эту информацию разработчикам через унифицированный интерфейс на основе REST (https://msdn.microsoft.com/en-us/office/office365/howto/office-365-unified-api-overview), представленный в 2015 году на конференции Build.

Microsoft рассматривает Graph и API-интерфейс как одно целое; если рассуждать в терминах графов, то думаю, что API-интерфейс отображает узлы и связи, представляющие различные источники данных, показанные в Microsoft Graph с помощью интеллектуальных алгоритмов, автоматически обеспечивающих интересные соединения. Данные остаются в различных репозиториях; в первой версии Microsoft Graph представлены API-интерфейсы, данные и аналитика из Office 365 и Azure Active Directory. Данные поступают из Azure Active Directory, Exchange Online, SharePoint Online и т. д. В будущем число подключаемых источников увеличится.

В настоящее время программа Microsoft Graph общедоступна. API-интерфейс обеспечивает единую конечную точку (https://graph.microsoft.com), из которой можно перемещаться к любым источникам данных, доступным в Microsoft Graph. Благодаря метаданным разработчики могут перемещаться между почтовыми ящиками, группами, пользователями, документами и любыми другими объектами, известными Graph. После того как приложение прошло проверку подлинности в соответствии с открытым стандартом OAuth 2.0, оно может перемещаться внутри Graph, не предоставляя других учетных данных.

Microsoft стремится к тому, чтобы API-интерфейсы были всем доступны, то есть совместимы с такими языками, как JavaScript, PHP, Ruby и Python, а также ASP.NET. В сущности, любой специалист, имеющий опыт использования современных технологий веб-разработки, должен иметь возможность работать с Microsoft Graph. Так разработчики смогут уменьшить объем составляемого программного кода по сравнению с предшествующими API-интерфейсами (такими, как веб-службы Exchange). Таким образом, значительно упрощается проектирование решений, в которых используются «облачные» данные Microsoft. Как утверждается в публикации Microsoft, при использовании единого API потребуется всего 5 строк кода вместо 50 с лишним строк, необходимых сегодня.

Кроме того, приложения, построенные с использованием единого API, успешно приспосабливаются к экранам различных форматов. В частности, в них автоматически учитываются многочисленные формфакторы, встречающиеся в мобильных устройствах. Однако разработчики по-прежнему определяют окончательный вид своих приложений, поскольку способ отображения данных, полученных из Graph, целиком в их руках.

Как и ожидалось, собственные группы разработчиков Microsoft используют новые API-интерфейсы для построения приложений, в частности для управления небольшими проектами, обещанными в Office 365 Planner. В мобильных приложениях Office 365 также будет применяться единый API.

Microsoft Graph обеспечивает доступ ко многим формам данных, потреб­ляемым таким решением, как Outlook for Mac, поэтому можно предположить, что в будущих версиях единый API сможет заменить существующую основу веб-служб Exchange. Конечно, это только предположение, но, похоже, такой проект был бы достойной целью, так как Outlook for Mac всегда уступал в функциональности аналогичной программе для Windows. Но когда я высказал свое мнение, Роб засмеялся и сказал, что группа Outlook пока не обдумывает переход.

Замена старых API-интерфейсов на Graph может быть интересным проектом, но следует помнить, что Microsoft Graph ориентирован на «облачные» службы и не будет работать в гибридных или локальных сценариях. Microsoft признает, что эти сценарии следует реализовать, но работа по полноценному внедрению правильных подходов пока не завершена.

Также верно, что многие компоненты Microsoft Graph неразрывно связаны с технологией «облака», и удачно перенести эту технологию в локальную среду действительно трудно. Кроме того, сравнительно немногие ИТ-подразделения согласятся выполнить финансовые и технические требования, связанные с развертыванием такой сложной структуры, как Microsoft Graph.

На вопрос о предполагаемой реакции сторонних разработчиков на Microsoft Graph Роб ответил, что они будут удивлены «открытой позицией» Microsoft, и подчеркнул, что это еще один пример внутренних преобразований, через которые проходит Microsoft.

Я поинтересовался, что можно будет считать успехом этой инициативы. Роб ответил, что отслеживал метрики использования расширяемости, учитывая число приложений и число клиентов, использовавших набор инструментов. Он полагает, что таким образом можно оценить «энергию в экосистеме». Успех означает увеличение индекса «на порядок величины». В ответ на дополнительные расспросы Роб признался, что, по его ощущениям, 10-кратное увеличение было бы хорошим показателем. Что ж, достойный ориентир.

Время покажет, удастся ли Microsoft убедить разработчиков задействовать возможности Graph. Простота доступа к данным, извлекаемым из «облачных» служб Microsoft, и поддержка распространенных языков программирования — весомые доводы в пользу того, что Graph получит широкое распространение. Но окончательный ответ даст только время.