ASP.NET ИЛИ ВСЕ-ТАКИ ЕСТЬ? - Что ждать от M$?

Pony (pony@xakep.ru)

Спецвыпуск Xakep, номер #028, стр. 028-024-1

Шубись, народ! В середине 2003 года Micro$oft собирается презентовать миру новую серверную ось - Windows.NET. Эта оса слеплена на ядре WindowsXP. Но только WindowsXP чего-то уже год как глючит на наших компах, а в серверной операционке продолжается отлов багов... Ну, да не суть. Ведь с дот нетом на горизонте замаячили кое-какие интересные фичи для веб-строительства. Что же даст web-кодеру ASP.NET?

Во-первых, поддержку разных языков: VisualBasic.NET и C# (читается как си-шарп). И если VisualBasic.NET просто новая версия (пусть и существенно переколбашенная) задолбавшего всех глюкозавра VB, то C# - совершенно новый язык. И кодить на нем можно не только web-приложения, но и обычные проги для Windows (правда, с небольшими оговорками). По синтаксису и возможностям C# очень близок к C++, который так любят квел программеры.

Во-вторых, ASP.NET даст нам web-формы с новыми возможностями проверки кода на сервере.

В-третьих, у нас будет новая модель доступа к данным - ADO.NET. Полная интеграция с XML и возможность создания web-сервисов. Ну а теперь обо всем по порядку.

НОВЫЕ ЯЗЫКИ

Сначала глянем, что там случилось со старым добрым Васиком, попрыгаем на недостатках VB Scripting Edition по сравнению с другими (старыми или новыми) языками. Первая и самая большая лажа - отсутствие поддержки типов переменных. Все переменные имеют один тип - Variant. Для ламаботов - это гуд: не надо следить за типом переменной, в одну и ту же переменную можно запихивать разные данные. А уж если не использовать команду option explicit, то вообще не жизнь, а сказка: переменные не надо объявлять - они создаются при первом упоминании.

Но расплата за бакланизм суровая: При работе с SQL серваком лезут непонятные ошибки - это ты пытаешься в поле int засунуть строковую переменную. Сервант тормозит, как ржавый якорь, - это под все переменные бухается одинаковое количество места, и под логическую (0 или 1) и под строковую. Ограниченные возможности самого языка: например, поддержка регулярных выражений осуществляется с помощью COM объекта. А теперь, юмор от M$, в VBScript есть поддержка классов (ООП, елки-палки!), но нет поддержки наследования :). И, наконец, самая большая лажа: asp-код и html-код свалены в один файл. Если хочешь более или менее структурировать свой сайт, то приходится извращаться. Например, на xakep.ru заюзали сложную систему инклудов (около 30 файлов и 4 уровня вложенности).

Еще один недостаток, общий для всех скриптовых языков: все они интерпретируемые, то есть код считывается, интерпретируется и выполняется построчно. И так происходит каждый раз, когда юзер лезет на пагу. Естественно, происходит неоправданный жор ресурсов на выполнение кода.

Новые языки от M$ C# и VB.NET пашут более грамотно. И все благодаря .NET Framework. Как же будет работать код в этой среде? При компиляции кода в .NET Framework код, написанный на языке программирования, колбасится в MSIL (Microsoft Intermediate Language) - промежуточный псевдокод. Он содержит набор инструкций, не зависимых от конкретного процессора. То есть, можно сказать, что MSIL - это переносимый ассемблер. А исполняется он в CLR (Common Runtime Language) - независящая от языка среда исполнения. CLR транслирует промежуточный код в исполняемый непосредственно при запуске приложения - JIT (just in time компиляция). В общем, не грузись. Главное, что при открытии паги, написанной на ASP.NET, в первый раз происходит компиляция кода. Причем, чтобы сэкономить время, компилируется только та часть кода, которая будет непосредственно заюзана в генерации страницы. Откомпиленный код валяется в кэше и при необходимости может быть оттуда повторно вызван. Но можно откомпилировать код и в принудительном порядке. В любом случае, такой подход обставит в производительности и с классическими asp-приложениями (выполняется уже откомпилированный код), и с CGI-приложениями (не надо тратить ресурсы на создание процесса).

Содержание  Вперед на стр. 028-024-2
Выпуски журнала "СПЕЦ Xakep"
Cпец Хакер #01Cпец Хакер #02Cпец Хакер #03Cпец Хакер #04Cпец Хакер #05Cпец Хакер #06Cпец Хакер #07Cпец Хакер #08Cпец Хакер #09Cпец Хакер #10Cпец Хакер #11Cпец Хакер #12Cпец Хакер #13Cпец Хакер #14Cпец Хакер #15Cпец Хакер #16Cпец Хакер #17Cпец Хакер #18Cпец Хакер #19Cпец Хакер #20Cпец Хакер #21Cпец Хакер #22Cпец Хакер #23Cпец Хакер #24Cпец Хакер #25Cпец Хакер #26Cпец Хакер #27Cпец Хакер #28Cпец Хакер #29Cпец Хакер #30Cпец Хакер #31Cпец Хакер #32Cпец Хакер #33Cпец Хакер #34Cпец Хакер #35Cпец Хакер #36Cпец Хакер #37Cпец Хакер #38Cпец Хакер #39Cпец Хакер #40Cпец Хакер #41Cпец Хакер #42Cпец Хакер #43Cпец Хакер #44Cпец Хакер #45Cпец Хакер #46Cпец Хакер #47Cпец Хакер #48Cпец Хакер #49Cпец Хакер #50Cпец Хакер #51Cпец Хакер #52Cпец Хакер #53Cпец Хакер #54Cпец Хакер #55Cпец Хакер #56Cпец Хакер #57Cпец Хакер #58Cпец Хакер #59Cпец Хакер #60Cпец Хакер #61Cпец Хакер #62Cпец Хакер #63Cпец Хакер #64Cпец Хакер #65Cпец Хакер #66Cпец Хакер #67Cпец Хакер #68Cпец Хакер #69Cпец Хакер #70Cпец Хакер #71Cпец Хакер #72Cпец Хакер #73Cпец Хакер #74Cпец Хакер #75