Совсем недавно Microsoft сделала заявление, что её отношение к сообществу opensource меняется. И подтверждение этих слов не заставило себя долго ждать. Microsoft открывает исходные кода клиента для протокола Open Data Protocol (OData). Итак, что же это за протокол и чем он выгодно отличается от решений конкурентов?
Во-первых, несколько слов о подходе. Сейчас разработчики веб-ресурсов вынуждены определять, какая информация может быть получена и как она будет представлена (подходы REST и SOAP). Проблема в том, что у разработчиков нет времени на отображение именно той информации, которая нужна пользователю - обычно информация выдаётся с излишком, который вынуждены обрабатывать пользователи и другие разработчики. Более того, сейчас очень мало веб-сервисов с поддержкой запросов на сервере, что делает доступ к информации ещё более усложнённым.
Протокол OData использует несколько другой подход. Для любой конечной точки сервиса на основе OData (например, http://odata.netflix.com/Catalog/CatalogTitles) можно сделать запрос на выдачу информации с обработкой результатов (например, ограничить диапазон или указать что-то конкретное).
Например:
- фильмы, выпущенные в этом году ($filter=ReleaseYear eq 2010);
- фильмы, выпущенные в этом году, со словом «банк» в описании ($filter=substringof('bank',Synopsis) and ReleaseYear eq 2010).
Microsoft предоставляет клиентские библиотеки для большого числа платформ: JavaScript, Java, PHP, .NET и Objective-C bindings. А с настоящего момента доступны и исходные коды клиентской библиотеки для .NET под лицензией Apache 2. Как уже заявил Мигель де Икаса в своём блоге, он намерен в ближайшее время включить поддержку открытого протокола в платформу Mono в библиотеку System.Data.Services.
Как видно, протокол OData выгодно отличается от конкурентов своими возможностями по выполнению запросов. Именно благодаря этому, хранящуюся на сервере информацию можно сделать легко обрабатываемой для пользователей и поднять качество веб-сервисов на определённо новый уровень. Сервеная часть пока что остаётся закрытой, но спецификации протокола открыты и любой желающий может их реализовать. IBM уже реализовала серверную часть протокола в WebSphere.
Информация об OData на MIX Sessions.
Перемещено Aceler из OpenSource