Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

"Как создавался XMLHttpRequest". Алекс Хопманн.


краткое содержание

"Как создавался XMLHttpRequest". Алекс Хопманн.

Рассказ разработчика, создавшего для веб-интерфейса прототип объекта XMLHTTP и участвовавшего во внедрении полноценного объекта в IE5 Beta 2 для веб-клиента Outlook из пакета MS Exchange 2000.
Существует дней: 284
Автор: 12345c
Другие выпуски:
Рассылка 'Упражнения по яванскому письму. Javascript.'
 
Статья.
29.01.07

Как создавался XMLHttpRequest

В статье разработчик рассказывает о своём участии в создании объекта XMLHttpRequest во время, когда он работал в Microsoft. Статья заслуживает дословного перевода и прочтения, потому что это "живой голос истории" о том, как создавался протокол и объект JS, изменивший взгляды на подход к созданию веб-интерфейсов. В следующую очередь, интересно, насколько рано его сделали и насколько поздно обратились к его использованию.

Алекс Хопманн. Оригинал статьи (англ.). Перевод 12345с, 29.02.2006.

 

 

Мой уход из Microsoft, конечно, дал повод рассказать о немногом из тех проектов, с которыми я был связан. Один из тех, о которых, вероятно, стоит рассказать - это история  XMLHTTP.

Объект XMLHTTP в последнее время стал дико популярен. Похоже, его люди заметили, когда Google начал использовать его в  Google Suggest  - расширении поисковика, и стали смотреть на исходный код страницы, чтобы узнать, как это работает. Фактически, Google использовал его ранее в GMail, но "раскопать" коды этого сервиса было значительно сложнее, и на него не сразу обращали внимание.

С тех пор методология XMLHTTP и "AJAX" (Asynchronous Javascript And XML) была упомянута в "Уолл Стрит джорнал" и CNET (published: March 17, 2005) среди других новостей.

В действительности же архитектура клиента GMAil в грубом приближении появилась ещё в Exchange 2000, в реализации поддержки доступа к Outlook (Outlook Web Access) для IE5 и начала своё существование в 2000 году.

Фактически, XMLHTTP зародился из команды Exchange 2000. Я начал работать в Microsoft в ноябре 1996 и переехал в Редмонд весной 1997, работая вначале над некоторыми интернет-стандартами, применявшимися впоследствии в Outlook, выполнял разные специфические работы с мета-данными для вебсайтов, включающими ранне рекомендации, называемые веб-коллекциями. В то время однажды Томас Рердон (Thomas Reardon) потащил меня вниз в холл, чтобы представить меня одному парню по имени Джин Паоли (Jean Paoli), который только начал работать в компании. Джин работал над этой новой штуковиной, XML, в большом будущем которой некоторые люди сомневались, по причинам, непонятным сейчас.

После того как я добрался до сути XML, я переделал свои предложения по веб-коллекциям с использованием преимуществ XML и опубликовал W3C-предложение, названное "Веб-коллекции с использованием XML". Глядя назад, надо сказать, что документ выглядел довольно запутанным, но в своё время он был очень обсуждаемым, и, насколько знаю, он был перевым документом в сети, обсуждающий XML.

Это привлекло меня к работе с некоторыми людьми из Microsoft, которые работали над WebDAV-стандартом, и я повлиял в переводе WebDAV на использование XML как модели для обмена данными. Вскоре после этого я присоединился к команде Exchange, которая как раз склонялась ко введению серверов Microsoft WebDAV в Exchange 2000 (которые были выполнены и в обычном IIS поверх файловой системы DAVFS, и в среде данных Exchange - DAVEX).

Не помню точно, когда мы начали работать над Outlook Web Access (OWA) в Exchange 2000. Думаю, это было примерно через год после начала моей работы в команде, вероятно, в конце 1998. В любом случае, мы уже прошли один или два этапа в проекте Exchange 2000 (или "Platinum") и тщательно игнорировали проблему OWA, главным образом, потому что старая версия была довольно "по-хакерски" сделанной. Она была написана под сильным влиянием предыдущей версии, использующей страницы ASP, отчего они закономерно были как уродливы, так и с большими проблемами с масштабируемостью и скоростью работы.

В какой-то момент Брайан Валентайн (Brian Valentine), который тогда был GM (Great Manager?) в Exchange, попросил нас выяснить, что можно сделать с OWA в Exchange 2000. Были 2 варианта: один - на использовании непосредственно HTML-страниц, насколько это было с ними возможно, другой - начинал работать с удобным пользовательским интерфейсом, который строился с использованием DHTML. Когда я впервые увидел демонстрацию работы DHTML от Jim Van Eaton и Bob Gering, меня это просто поразило. Тем не менее, они в основном делали "хакерские" отправки форм на сервер и имели некоторые из тех же проблем старой версии с масштабируемостью и динамическими данными.

Тогда в выходные я открыл Visual Studio и наскоро сделал первую версию прототипа объекта XMLHTTP. Первая версия не имела асинхронности и была довольно сырой, но была достаточной, чтобы помочь Джиму и Бобу общаться с частью WebDAV/XML данных, которые мы уже реализовали в Exchange 2000, и сделала реальный прогресс в реализации их DHTML OWA-приложений.

Далее, как мы фактически внедрили  XMLHTTP [в IE].

Такое удобство было причиной, чтобы иметь этот компонент, с которым мы могли общаться с сервером, но у нас ещё не было никаких оснований включать его в продукт. Основная идея Outlook Web Access была в том, чтобы мы могли подойти к любому компьютеру, имеющему браузер, и тут же получить доступ к своей почте. Если необходимо загружать ActiveX-компонент - это разрушит основную идею, поэтому очередным шагом следовало начать внедрять этот механизм в Internet Explorer.

Первым шагом было доведение кода до нужного качества, поэтому мы поручили Шону Брейсвеллу (Bracewell), одному из разработчиков команды OWA, заниматься этим. Будучи смышлённым малым, он быстро выбросил мой код, переписав его в более надёжной манере, с поддержкой асинхронности, обработкой ошибок, и т.д. .

Тем временем, до выпуска беты 2 IE5 оставалась одна неделя, а она была последней бетой перед релизом. Это были старые добрые дни, когда критически важные дополнения вставлялись буквально за считанные дни до релиза, но при этом всё ещё модифицировались. Я понял, что MSXML-библиотека добавлена в IE, и, имея некоторые хорошие контакты вне группы XML, которые, могли бы помочь - пообщался с Джином Паоли, который управлял командой XML, и мы довольно быстро достигли соглашения, чтобы подключить XMLHTTP как часть библиотеки MSXML. Это есть объяснение тому, откуда произошло название "XMLHTTP" - объект главным образом работает с HTTP и не имеет с XML особой связи. Но для наиболее лёгкого оправдания того, почему объект включается в эту библиотеку, мне пришлось впихнуть в название его слово "XML" (к тому же, XML был раскрученной технологией и казался хорошим маркетинговым подспорьем для объекта).

Пока Шон работал с Крисом Лаветтом (Chris Lovett) в XML-команде для интеграции с их библиотекой, я выполнил оставшуюся часть работы по "портированию" кода и завершил её с помощью Джо Петерсона (Joe Peterson), который управлял IE-проектом в то время. Мы быстро проверили вопросы безопасности, но в то время действительно никто не понимал серьёзность и типы уязвимостей, которые могло создать портирование. С точки зрения качества для бета-версии подход был такой: "так как мы не собираемся использовать его нигде, кроме OWA, ошибка реализации в худшем случае приведёт к тому, что мы его не будем использовать". За неделю до выпуска беты, когда мы проверяли, всё выглядело отлично.

Бета была собрана, и команда OWA (Outlook Web Application) могла уже начать работу с ней, когда Шон исправил в течение дня множество ошибок IE5. Нам потребовалось ещё 1.5 года, чтобы сделать Exchange 2000, но это был один из случаев, когда небольшое заблаговременное внедрение компонента привело к тому, что ко времени выпуска продукта необходимый для него объект существовал в мире в довольно дольшом количестве.

Выпущенный компонент потребовал помощи ещё многих людей кроме тех, которых я пока упомянул (и уверен, что забыт другими). Karim Battish и Sean Lyndersay были привлечены в разное время для выполнения специальных дополнений (которые написаны в основном после реализации, но иногда удивительно, как это удаётся) и работы с партнёрскими комндами. Chris Tyner был незаменим при тестировании - я вполне уверен, что без его энергии и настойчивости мы бы сделали эту вещь с монгочисленными огрехами.

Если я правильно помню, Крис сделал такого "убийцу HTML-страницы", который которая давал интерфейс для отправки произвольный HTTP-запросов. Кажется, это называли "DAVUI" и он имел шаблоны для всех HTTP1.1-, WEBDAV- и специальных Exchange-запросов, и, в отличие от инструмента, который мы имели до этого (*.exe), он мог просто скопировать htm-файл на любую машину или управлять им удалённо. Блистательно.

 

 

Есть новая статья на CNET - , в которой говорится об AJAX / DHTML + JavaScript + XMLHTTP методологии проектирования. Там сомневаются, что AJAX-подход снижает стоимость разработки, в отличие от Flash и Microsoft Avalon / XAML. Учитывая, что последние 4 года отданы работе над Avalon, я думаю, что они совершенно не учли стоимость Avalon и его кода. Делать OWA было действительно очень тяжело, и результаты даже в таком проекте были не сравнимы с полным Outlook. Вы не можете использовать его в оффлайне, не можете работать сразу из нескольких аккаунтов, и интефейс несколько неуклюжий. Это не умаляет его ценности в возможности доступа из любой точки мира. Однако, модель программирования и сопровождение DHTML действительно трудны, поскольку приложение стало больше. Красота многих Google-приложений в том, что они действительно сложные специализированные приложения, которые не пытаются делать больше, а пользуются реальными преимуществами сети. Похоже, ложная мысль предположить, что такой подход легко позволит расширять приложения до масштабов Офиса. Авалон базируется на модели программирования, которая есть большой шаг вперёд в терминах деления на компоненты и ремонтопригодности, плюс это чехарда с типом графики, пользовательского интерфейса и только простая опытность позволит Вам справиться даже с точно настроенным полным кодом Windows.

Это было большое дело в работе в Microsoft, и я надеюсь, что они все еще имеют это - долгосрочное видение и способность доводить продукты до версии 3, когда она действительно начинают господствовать на рынке. Я пытаюсь строить другой подход в Pure Networks, хотя он должен быть совершенно другого духа. Как стартап, мы должны постоянно адаптироваться, внедрять решения быстро и эффективно. Но достаточно интересная особенность компании, и одна из вещей, которые действительно привлекают меня - это наличие большой картины долгосрочного плана действий, которая зачастую отсутствует в подобного рода предприятиях. Магия Сети  (это синоним прежней ссылки - прим. 12345с) - это трудная задачка из того, что вы можете сделать с программным обеспечением, которое глубоко понимает вашу домашнюю сеть, но это - действительно только начало.

Я также получил несколько новых онлайн-проектов, с которыми работаю. Графические библиотеки, как этот набор изображений самолетов, с масштабированием и управлением, основанными на AJAX, http://www.calendardata.com/ - мой веб-сайт, который помогает собирать календарь событий и прочее, чтобы начать работу.

 

Мелким шрифтом - мнения на этом сайте принадлежат мне и не обязательно представляют моего работодателя.

 

Конец статьи. Дата публикации не указана, а на самом сайте первые упоминания о ней в RSS-потоке автор делал 19.01.2007.

Остаётся добавить, что внедрение использования объекта в GMail было в свою очередь мощным стимулом для поддержки объекта в других браузерах. Если в Мозилле к тому времени существовал аналогичный объект, то 8-й версии Оперы пришлось срочно "строиться" в ряд с другими - 8-е версии поддерживали его только в том объёме, чтобы работала GMail и Google Suggest.

Прочитать статью можно не только на сайте рассылки и на сайте автора, но и на новом ресурсе сети - Группах Google, которые недавно перешли из стадии бета-тестирования в стадию рабочего проекта. В них создана русскоязычная группа, посвящённая разработке и использованию программ на Javascript. Адрес статьи в ней - "Как создавался XMLHttpRequest".

Автор: Алекс Хопманн.

Перевод 12345с, 29.02.2006.

Уровень: для всех

Новости.
29.01.07

Группы Google

Groups.google.com перешли из стадии бета-тестирования в рабочую стадию проекта. Об этом официально было объявлено 23 января 2003 года. Разработчики Javascript могут оценить преимущества общения в группах через русскоязычную группу comp_lang.javascript.russian.

Если сказать в 2 словах - то это группа, объединяющая 3 сервиса одновременно: во-первых, в ней можно вести обсуждения вопросов, как это делалось в группах рассылки - смотреть письма в вебе или получать и отправлять по почте; во-вторых - писать статьи и править их, как это делается в вики-движках, но значительно проще, потому что нет специальной разметки, которую надо знать, чтобы писать хорошие страницы. (Об этом была группа статей у нас в рассылке - см. номера 11 и следующий.); в-третьих, в группе можно размещать файлы, архивы, примеры, относящиеся к разработке, чтобы обмениваться ценной (или проблемной) информацией - места для обмена выдаётся 100 МБ на группу.

 

Если подробнее, то история групп начинается задолго до создания самого Google. Как им это удалось? Непросто, но удалось - Google унаследовал от фирмы Deja News в 2001 году права на представление конференций Usenet. С тех пор длилось тестирование сервиса групп. Вот вехи старых архивов, отражающие различные события в мире в те, прежние годы. Старые архивы со всей историей можно как смотреть через службу Google, так и создавать новые, с возможностью писать свои HTML-страницы (читай "статьи") и выкладывать свои файлы. В середине 2004 года Google создал службу "Google groups 2".

Разумеется, всё это происходило под знаком "суровой" борьбы с конкурентом Yahoo за популярность и посетителей. Группы Yahoo издавна были отличительной маркой этой компании. В них существуют и различные сообщества Javascript-групп. В Гугле столь точной классификации нет, но наблюдается многоиндексность: можем делать срез по нескольким признакам: активность, количество подписчиков, язык, географическое место и категория.

 

Ссылка по 2 срезам: компьютеры, интернет.

По 3 срезам : компьютеры, интернет, русский.

 

Здесь попалось много групп, которые имеют JS в своей тематике, но, конечно, такие могут быть и среди групп, не попавших в обе категории. Среди них появилась группа, посвящённая сугубо программированию на JS. Она называется, по аналогии с Юзенетом, comp_lang.javascript.russian.

Попробуйте этот сервис, чтобы определиться с тем, насколько удобно им пользоваться.

Уровень: для всех

 javascript.aho.ru , © I.Svetlov, 2005-2006 
Текущая очерёдность плана статей (подписчики могут корректировать через голосование).
9. Многуровневое меню с навигацией по наведению мыши.
8. Ключевые слова новых технологий, которые нужно знать разработчику веб-страниц.
3. Как писать тексты с доступом через JS без экранирования специальных символов (< и другие).
4. select и list - в них есть много общего. Как и с меню навигации. Эмулятор селекта.
5. Древовидное меню, подход к данным, отделение данных от представления.
6. Многонедельный календарь со ссылками. (По списку строится календарь.)

Форум сайта рассылки, почта автора рассылки.

 


В избранное