История технологий, работающих с динамическим содержимым Web
Фильтры и расширения интерфейса прикладного программирования Internet-сервера (ISAPI) прекрасно подходили для создания высокопроизводительных Web-приложений, однако требовали от программистов достаточно высокой квалификации. Этим специалистам нужно было не только знать C++, но также понимать и использовать организацию пула с помощью процессов, синхронизацию, обработку транзакций и безопасность. Помимо этого, программисту требовалось быть очень осторожным и перед размещением динамически подсоединяемой библиотеки (DLL) интерфейса прикладного программирования Internet-сервера (ISAPI), приходилось проводить большое количество испытаний.
Дело в том, что любая достаточно серьезная ошибка в такой библиотеке, работающей в рамках того же процесса, что и информационный сервер Internet, привела бы к аварийному завершению всего процесса (то есть к аварийному завершению работы Web-сервера OS). И, наконец, большинство программистов возненавидело интерфейс прикладного программирования Internet-сервера (ISAPI). Причина здесь в том, что фильтры и расширения интерфейса прикладного программирования Internet-сервера (ISAPI) труднее поддаются отладке, чем другие программы, написанные на C++, так как необходимо подсоединяться к работающему процессу, в рамках которого выполняется информационный сервер Internet (IIS).
Что касается технологии ASP, то для разработки на высоком уровне динамического Web-содержимого она является достаточно удобным средством. Эта технология использует интерфейс прикладного программирования Internet-сервера (ISAPI), но при этом не столь эффективна, как интерфейс прикладного программирования Internet-сервера (ISAPI) в чистом виде. ASP фактически реализована в виде заранее подготовленной, достаточно универсальной динамически подсоединяемой библиотеки (DLL) интерфейса прикладного программирования Internet-сервера (ISAPI), которая реализует машину сценариев. В свою очередь машина сценариев потом интерпретирует ASP-страницу. Такая страница похожа на обычную HTML-страницу, за исключением того, что содержит встроенные фрагменты ASP-кода, написанные в виде сценария. Этот код не компилируется, а интерпретируется машиной сценариев.
Для интерпретации можно использовать любой язык подготовки сценариев, который установлен на Web-сервере, поддерживающем ASP. По умолчанию информационный сервер Internet (IIS) автоматически поддерживает VBScript и JScript. Недостатком ASP является то, что интерпретируемый код, естественно, работает медленнее, чем выполняющий те же действия скомпилированный код, в котором используется интерфейс прикладного программирования Internet-сервера (ISAPI).
Другим недостатком ASP является то, что языки подготовки сценариев не обеспечивают типовую безопасность, что может привести к ошибкам времени выполнения, которые было бы лучше предотвратить еще во время компиляции. Ну и, наконец, языки подготовки сценариев не являются объектно-ориентированными и потому не могут служить в качестве языков программирования высокого уровня, используемых для программирования больших систем. А вот огромным преимуществом ASP является то, что языки подготовки сценариев обычно очень легкие для1 изучения. В частности, VBScript известен огромному числу людей.
То, что языки подготовки сценариев, подобные VBScript, не являются объектно-ориентированными, частично компенсируется их способностью вызывать серверные СОМ-компоненты. Дело в том, что эти компоненты можно писать на мощных объектно-ориентированных языках, таких, как C++. Другое преимущество ASP перед интерфейсом прикладного программирования Internet-сервера (ISAPI) состоит в том, что ASP прекрасно подходит для работы с сервером транзакций корпорации Microsoft (Microsoft Transaction Server, MTS). Это дает возможность автоматизировать организацию поточной обработки, а также управление синхронизацией, обработкой транзакций и безопасностью.
Технология ASP.NET, к счастью, сохраняет все преимущества традиционной ASP и избавлена от большинства ее недостатков, в том числе и снижения производительности. Вместо интерпретатора языков подготовки сценариев ASP.NET использует компилируемые языки платформы .NET, такие, например, как С#, VB.NET и даже управляемый C++.
Таким образом, теперь уже можно выбирать из нескольких технологий. Это общий шлюзовой интерфейс (CGI), интерфейс прикладного программирования Internet-сервера (ISAPI), ASP и ASP.NET. Ну да, есть еще и библиотека шаблонных классов ATL. Так же, как и ASP.NET, библиотека шаблонных классов ATL дает возможность разрабатывать как Web-узлы, так и Web-службы. Впрочем, серверы и службы на основе библиотеки шаблонных классов ATL создаются с помощью библиотеки шаблонов для C++, разработанной на основе технологии ISAPI (интерфейс прикладного программирования Internet-сервера).