SDK от Яндекс.Диска

в 12:47, , рубрики: api, SDK, webdav, Блог компании Яндекс, Облачные вычисления, Яндекс API, Яндекс.Диск, метки: , , ,

Яндекс.Диск получил SDK. Теперь можно удобно использовать его возможности в приложениях для OS X и Windows, ровно как и в мобильных приложениях на iOS, Android и Windows Phone. Кроме этого, мы разработали специальные виджеты, чтобы и любой веб-сайт мог удобно реализовать работу с Я.Диском (например, загружать файлы прямо на Я.Диск пользователя) прямо на месте.

Сразу замечу — мы и раньше использовали открытый протокол WebDAV, поэтому и раньше можно было в своих приложениях интегрироваться с Диском. Но теперь возможностей для этого стало больше, а главное — это теперь станет намного более удобным и простым делом.

Также, кроме SDK и виджетов, есть ещё одно важное нововведение — дедупликация файлов, загружаемых через WebDAV. Теперь, если какой-то пользователь уже загружал такой файл, то для вас он будет загружен мгновенно. Это особенно важно при использовании SDK (например когда сайт часто раздаёт своим пользователям похожие файлы).

image

Обо всём этом я вчера рассказал в своей презентации на Yet Another Conference, а сейчас специально для вас хочу рассказать подробности на Хабре.

Дедупликация через WebDAV

Изначально для взаимодействия с Диском мы сделали свою реализацию открытого протокола WebDAV. Это стандартный протокол для работы с файлами. В основе лежит HTTP. Для push-нотификаций используется xmpp. Именно по этим протоколам работают все наши и сторонние клиенты Кроме того, по WebDAV доступ к Диску можно получить непосредственно через файловые менеджеры, встроенные в систему.

image

Но в нашем официальном клиенте есть одна интересная функция, которая до сих пор не была доступна сторонним разработчикам: дедупликация файлов. Мы можем на стороне клиента посчитать две контрольные суммы файла, и по этой информации (а также по размеру) понять, не загружен ли уже такой файл на наш сервер. И если этот файл у нас уже есть, его загрузку можно произвести практически мгновенно. А точнее, файл не загружается вовсе, а на серверной стороне просто обновляется метаинформация, и доступ к файлу открывается новому пользователю. Подробнее про новую функцию можно почитать в документации.

image

API & SDK

Мы очень любим WebDAV и не собираемся отказываться от него. Он уже используется во многих сторонних приложениях (информацию о них мы бережно собираем на этой страничке). Но есть у этого протокола и свои проблемы. В первую очередь, конечно, проблемы в реализациях под разные платформы. Кроме того, WebDAV заточен именно под работу с файлами, а нам хотелось бы предоставить пользователям и разработчикам нечто большее.

Сегодня зачастую мобильные приложения заменяют или дополняют собой сайты. Там, где раньше разработчик просто делал сайт, теперь делается набор приложений. Мультиплатформенность становится все более важной, нужно поддерживать не только физические хранилища, но и облачные. И хранить нужно не только файлы но и данные. Мы понимаем, что WebDAV в данном случае – не самая удобная вещь. В связи с этим мы решили подготовить новую API-платформу, которая включает в себя полноценный REST API Диска для работы с файлами.

Но просто сделать новый API нам показалось мало. Разработчикам нужен SDK. Ведь работа с сетью – не самое приятное занятие. Постоянно обрабатывать сетевые запросы, смотреть, как они разрываются или не разрываются. Особенно в мобильных устройствах, где связь – вообще большая проблема. Ну и помимо самого приложения требуется написать бэкэнд, прикрутить к нему API для работы с сетью, поставить в дата-центр сервер (а лучше — сразу два в разных дата-центрах), настроить на них базу данных. Гораздо лучше, когда есть готовая библиотека и хранилище, которые можно применять где угодно, а не создавать для каждого сервиса заново. Именно для этого мы сделали и запускаем SDK Диска.

image

В версии 0.1 есть только средства для работы с сетью и файлами, возможность взаимодействия с базой данным мы добавим позже. На данный момент в нашем SDK реализована поддержка трех языков программирования: Java, Objective-C и C#. Таким образом, с его помощью можно создавать приложения подо все популярные платформы: как мобильные, так и десктопные.

image

Мы сами собираемся активно использовать SDK внутри Яндекса. Но и любому внешнему разработчику есть, что сэкономить, используя такие прекрасные вещи. Мы подготовили подробную документацию, так что начинать работать с SDK можно уже сейчас.

Виджеты

Раньше у большинства людей было по одному компьютеру. Обычно это был десктоп или ноутбук. На его жестком диске хранились все файлы. Еще иногда был КПК. Вы сохраняли любой файл из интернета себе на диск, и дальше все было понятно. Но сейчас таких устройств стало очень много (компьютеры на работе и дома, смартфоны, планшеты), задача сохранения файла существенно усложнилась. Каждый файл лежит на своем устройстве, нужно помнить, что и куда было сохранено. И сегодня облачные хранилища представляют собой новую реализацию жесткого диска, куда можно сохранить все постоянно используемые файлы, и получать к ним доступ из любого места и с любого устройства. Именно с такой идеей в голове мы и разрабатывали Яндекс.Диск в его первоначальном виде.
И раз уж мы говорим о том, что Диск – это новое хранилище для всех основных файлов пользователя, почему бы не дать возможность сохранять файлы из интернета сразу на Диск? Или наоборот загружать файлы непосредственно с него? Реализовать это мы решили при помощи виджетов. Мы протестировали их в Почте, Фотках, а также других наших сервисах и решили сделать их доступными для любого сайта. Встраивать виджет для сохранения файлов можно уже сейчас, а виджет загрузки появится в ближайшее время.

image

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

Автор: vladimirrusinov

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js