Pull to refresh

Спецификации протокола Scope

Reading time2 min
Views1.4K
Original author: OpJohannes
Ни разу до этого не писал переводы, если есть замечания, пожалуйста, в хабрапочту.

Сегодня мы рады представить спецификации протокола Scope. Этот протокол используется для связи Оперы с отладчиком Dragonfly. Он также используется в компании Опера для автоматизированного тестирования браузера.

С самого начала мы старались сделать Dragonfly проектом с открытым кодом. Весь код и документация доступны под лицензией BSD, но без спецификации протокола сторонним разработчикам было трудно создать что-то новое, или модифицировать существующее. Цель этого релиза — устранить этот недостаток.

Документация более или менее похожа на ту, что мы использовали внутри команды, и это значит, что что-то может быть упущено просто потому, что в команде все знали как оно работает. Если встретите такие пробелы, пожалуйста, дайте нам знать в комментариях (ссылка на комментарии к оригинальной статье).

Одна из причин, почему мы выпускаем спецификации прямо сейчас, в том, что остальные производители браузеров начали задумываться об удаленной отладке. С самого начала это было то, на что мы делали упор в Dragonfly, поэтому мы хотим поделиться нашим опытом и идеями с остальными.

Спецификация разбита на две части. Текущая реализация, названная Scope Transfer Protocol 0 (STP/0), основана на XML. Мы пришли к выводу, что этот вариант очень медленный, когда нужно передавать много данных, например DOM-деревья. Одно из преимуществ протокола на основе XML было в том, что его было просто реализовать на стороне клиента с помошью XMLHTTPRequests. Также он легко воспринимается визуально, без дополнительных инструментов.

Протокол следующего поколения, STP/1, это то, над чем мы сейчас работаем. По большей части реализация еще не готова, но мы выпустим его как только сможем. До этого момента в нем все еще могут произойти изменения. Протокол продолжит поддерживать XML, но мы добавили еще 2 способа передачи данных: JSON и Protocol Buffers. Сами данные во всех трех случаях будут одинаковые, просто они будут передаваться в разных структурах. Это значит, что мы можем, по большей части, не менять уже существующие утилиты, работающие на XML, и просто переключиться на Protocol Buffers для большей производительности, или на JSON, являющейся компромиссом между простотой использования в JavaScript и низким трафиком.

Наш следующий релиз будет сборкой Оперы, поддерживающей STP/1, вместе с инструментами, которые помогут вам начать использовать протокол STP/1.

Наслаждайтесь чтением!
Tags:
Hubs:
+21
Comments22

Articles