Просмотров: 10252

Принцип “сохранения совместимости” на примере ASP.NET


Это перевод с моей лит.коррекцией (извините, не удержался) вот этой статьи. О чём эта короткая заметка? Вот ключевые слова её содержания: Microsoft, воровство чужих идей, мнимая забота о пользователе, идиотизм и, конечно, эта чёртова «обратная совместимость». Всё это будет рассмотрено на примере эволюции технологии ASP.NET.

Впрочем, если ты и не программируешь на ASP.NET — прочитать это всё равно стоит, хотя бы просто потому, что все любят злые шутки о Microsoft, разве нет?

ASP.NET asp прикол шутка fun joke suxx ацтой microsoft майкрософт обратная совместимость

1.

В 1973 году была создана операционная система CP/M. В ней не было директорий, все файлы были свалены в кучу на диске, и имена этих файлов соответствовали формату 8.3 (не больше 8 символов на имя и не больше трёх на расширение, помнишь эти времена?). Чтобы обеспечить ввод/вывод для пользовательских программ, в эту кучу были добавлены псевдофайлы COM1, COM2, COM3, COM4, LPT1, LPT2, CON, AUX, PRN и NUL , соответствующие ком-портам, принтерам, консоли и другой милой чепухе.

2.

В 1980 году фирма Seattle Computer Products, впечатлившись чужим успехом, очень быстро сделала свой дешёвый аляповатый клон CP/M и назвала его 86-DOS. Также, как и у её прародительницы CP/M, — 86-DOS сваливала все файлы в кучу, подчинялась формату 8.3 и, конечно, из соображений совместимости поддерживала все псевдофайлы COM1, COM2, COM3, COM4, LPT1, LPT2, CON, AUX, PRN и NUL .

Более того, любой файл с одним из перечисленных имён и произвольным расширением считался 86-DOS идентичным ему же без расширения, конечно, исключительно для сохранения совместимости с CP/M.

3.

В 1981 году малоизвестная фирма Microsoft Corporation сбагрила скупила за бесценок 86-DOS, переименовала её в MS-DOS и быстро, очень быстро начала это продавать.

4.

И вот в 1983 году корпорация Microsoft выпустила свою первую MS-DOS 2.0. Эта ОС поддерживала иерархическую структуру директорий. Естественно, чтобы сохранить обратную совместимость с приложениями, созданными для MS-DOS 1.0, в которой вообще не было директорий, инженеры Microsoft поместили псевдофайлы COM1, COM2, COM3, COM4, LPT1, LPT2, CON, AUX, PRN , и NUL , со всеми возможными расширениями, во все существующие в системе директории.

5.

В 1988 году Microsoft начала разработку современной (Ыыы!) многопользовательской системы, с вытесняющей многозадачностью и поддержкой защищённого режима x86, беспалевно позаимствованной у DEC VMS, по имени Windows NT. Эта Windows NT поддерживала новую файловую систему NTFS, главные фичи которой были нежно позаимствованы у OS/2 HPFS, и которая использовала Unicode UCS-2 для имён файлов.

Но! Чтобы сохранить обратную совместимость с приложениями для DOS, запускаемыми под новой ОС, некоторые из которых были написаны ещё до того, как в DOS были директории, Windows NT помещала псевдофайлы COM1...COM9, LPT1...LPT9, CON, AUX, PRN и NUL , со всеми возможными расширениями, во все возможные директории. Да, кстати, Windows NT вышла на рынок в 1993 году.

6.

В 1998 году Microsoft выпустила Option Pack к двухлетней давности Windows NT 4.0, содержащий принципиально новую технологию Active Server Pages, или ASP. ASP позволяла создание динамических вебсайтов с помощью скриптования через COM. (В существовавшем уже пять лет CGI, видимо, мелкомягкими был обнаружен некий фатальный недостаток.) Из-за того, что ASP основана на файлах, URL’ы здесь по определению не могли содержать подстроки /com1-9.asp, /lpt1-9.asp, /con.asp, /aux.asp, /prn.asp или /nul.asp из соображений совместимости.

7.

В 2002 году Microsoft анонсировала неизбежный релиз своего грандиозного фреймворка .NET. Одним из его компонентов должен был стать ASP.NET, огромный, а главное, принципиально новый шаг по сравнению с ASP. Несмотря на то, что ASP.NET предоставляет лучшие средства для написания веб-страничек, чем те, что предоставлял ASP, механизм был по-прежнему полностью основан на фейлах... простите, файлах.

И, хотя этот механизм мог быть переписан более чем 9000 способами, из соображений обратной совместимости ASP.NET всегда проверял наличие файла, прежде чем выполнять обработчик. Поэтому веб-страницы не могут содержать подстроки /com[1-9](\..*)?, /lpt[1-9](\..*)?, /con(\..*)?, /aux(\..*)?, /prn(\..*)? или /nul(\..*) ?.

8.

В 2009 году Microsoft выпускает ASP.NET MVC — принципиально новый веб-фреймворк, поддерживающий большинство практик построения гибких и масштабируемых веб-приложений. В ASP.NET MVC полностью отказываются от связи файлов со страницами, вместо этого вводится механизм обработки URL’ов с помощью регулярных выражений, сходный с механизмами в существовавших уже много лет нормальных фреймворках вроде Django, Ruby-on-Rails, Catalyst и проч. Ура, здесь эти URL’ы больше не привязываются к файлам; вместо этого они связаны с объектами, которые проектируются для обработки запроса. Благодаря этому, URL’ы могут быть построены исключительно с использованием здравого смысла, без каких-либо ограничений со стороны файловой системы на сервере.

Но... подождите, всё не так хорошо, как кажется. ASP.NET MVC основан на ASP.NET, который проверяет существование файла перед запуском любых CGI-скриптов. Что означает, что будет проверять, не имеют ли директории файлов с именем COM1...COM9, LPT1...LPT9, CON, AUX, PRN или NUL , с любым расширением. Да, да, это делается исключительно для обратной совместимости.

9.

Вот почему в 2009 году, при разработке сайта на ASP.NET MVC 1.0 с использованием новейшей Microsoft .NET 3.5 на моднявой Windows 7, вы не можете создавать страницы с URL вида: /com\d(\..*)?, /lpt\d(\..*)?, /con(\..*)?, /aux(\..*)?, /prn(\..*)?, или /nul(\..*) ? — из необходимости совместимости.

ASP.NET asp прикол шутка fun joke suxx ацтой microsoft майкрософт обратная совместимость

По мере развития продуктовой линии Microsoft, этот пост будет продолжен, для освещения удивительного примера в упорстве поддержки даже самой архаичной «обратной совместимости». А пока я предлагаю создание, изготовление баннеров, которые ещё пригодятся для интернет-рекламы новых, ещё более продвинутых продуктов от Microsoft (в том числе).

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , , , ,
Эта запись опубликована: Пятница, 21 сентября 2012 в рубрике Истории.

3 комментария

Следите за комментариями по RSS
  1. Маразм крепчал, но история их не забудет.

  2. Ну с OS/2 и HPFS - явное передергивание. Сама жа MS её и сотворила.

    Да и намек на родство VMS и Windows NT - это довольно смелое утверждение. MicroVMS не работала на x86 процессорах.

  3. "со всеми возможными расширениями, во все существующие в системе директории." - явно ошибочное утверждение...

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз