Asp использование устанавливаемых компонентов


Содержание

Дополнительные сведения

Дополнительные сведения о настройке функции смены пароля в веб-клиенте Outlook см. в статье 297121 базы знаний Майкрософт Implementing the Change Password feature with Outlook Web Access (на английском языке).

При настройке возможности смены пароля в Windows Server 2008 необходимо учитывать ряд важных факторов. Например, нужно знать, как устранить следующие проблемы:

    срок действия пароля истек;

учетная запись настроена на запрос смены пароля при следующем входе пользователя в систему.

Дополнительные сведения об этих проблемах см. в статье блога группы разработчиков сервера Exchange Server What you need to know about the OWA Change Password feature of Exchange Server 2007 (на английском языке).

Запуск ASP на вашем компьютере

Вы можете запустить ASP на вашем компьютере.

Ваш ПК с Windows в качестве веб-сервера

  • Ваш собственный компьютер может выступать в качестве веб-сервера, если вы установите IIS или PWS
  • IIS или PWS превращает ваш компьютер в веб-сервер
  • Microsoft IIS и PWS компоненты бесплатный веб-сервер

IIS — Internet Information Server

IIS представляет собой набор интернет-сервисов для серверов, созданных Microsoft для использования с Microsoft Windows.

IIS поставляется с Windows 2000, XP, Vista и Windows 7. Она также доступна для Windows NT.

IIS проста в установке и идеально подходит для разработки и тестирования веб-приложений.

PWS — Personal Web Server

PWS для старой системы Windows, как Windows 95, 98 и NT.

PWS проста в установке и могут быть использованы для разработки и тестирования веб-приложений, в том числе ASP.

Мы не рекомендуем использовать PWS что-нибудь еще, чем обучение. Он устарел и имеет проблемы с безопасностью.

Версии Windows Web Server

  • Windows 7 (all editions) поставляются с IIS 7.5
  • Windows Vista Business, Enterprise и конечной приходят с IIS 7
  • Windows Vista Home Premium поставляется с IIS 7
  • Windows Vista Home Edition не поддерживает PWS или IIS
  • Windows XP Professional поставляется с IIS 5.1
  • Windows XP Home Edition не поддерживает IIS или PWS
  • Windows 2000 Professional поставляется с IIS 5.0
  • Windows NT Professional поставляется с IIS 3, а также поддерживает IIS 4
  • Windows NT Workstation поддерживает PWS и IIS 3
  • Windows ME не поддерживает PWS или IIS
  • Windows 98 поставляется с PWS
  • Windows 95 поддерживает PWS

Как установить IIS на Windows 7 и Windows Vista

Выполните следующие действия для установки IIS:

  1. Откройте панель управления из меню Пуск
  2. Дважды щелкните Программы и компоненты
  3. Нажмите «Turn Windows features on or off» для «Turn Windows features on or off» (a link to the left)
  4. Установите флажок для Internet Information Services (IIS) и нажмите кнопку ОК

После установки IIS, убедитесь, что вы установили все патчи для ошибок и проблем безопасности. (Run Windows Update) .

Как установить IIS на Windows XP и Windows 2000

Выполните следующие действия для установки IIS:

  1. В меню Пуск выберите пункт Параметры и выберите Панель управления
  2. Дважды щелкните значок Установка и удаление программ
  3. Нажмите кнопку Добавить / Удалить компоненты Windows
  4. Нажмите Internet Information Services (IIS)
  5. Нажмите кнопку Подробности
  6. Установите флажок для World Wide Web Service, и нажмите кнопку ОК
  7. При выборе компонентов Windows, нажмите кнопку Далее, чтобы установить IIS

После установки IIS, убедитесь, что вы установили все патчи для ошибок и проблем безопасности. (Run Windows Update) .

Проверьте свой веб


После установки IIS или PWS выполните следующие действия:

  1. Ищите новую папку под названием Inetpub на жестком диске
  2. Откройте папку Inetpub, и найти папку с именем wwwroot
  3. Создать новую папку, например «MyWeb» под Wwwroot
  4. Пишут некоторый ASP — код и сохраните файл как «test1.asp» в новой папке
  5. Убедитесь , что веб — сервер работает (see below)
  6. Откройте браузер и введите «http://localhost/MyWeb/test1.asp» , чтобы просмотреть первую веб — страницу

Note: Посмотрите на IIS (or PWS) символ в вашем стартовом меню или панели задач. Программа имеет функции для запуска и остановки веб-сервера, отключить и включить ASP, и многое другое.

Как установить PWS на Windows 95, 98 и Windows NT

Для Windows 98: Откройте Add-ons папку на компакт — диске Windows, найдите PWS папку и запустите setup.exe для установки PWS.

Для Windows 95 или Windows NT: Скачать «Windows NT 4.0 Option Pack» от Microsoft, и установить PWS.

Как установить Asp.Net и как зарегистрировать Asp.Net в IIS

Сегодня мы поговорим о том, как перенести Asp.Net-приложение из среды разработки Visual Studio на веб-сервер IIS.

При запуске в Visual Studio веб-приложение разворачивается на Visual Studio Development Server. Это внутренний веб-сервер, работающий локально в операционной системе. Он создан специально для запуска сайтов на локальной машине и не обслуживает запросы с других компьютеров. Иными словами, другой пользователь со своего компьютера не будет видеть наш сайт.

Чтобы сайт стал доступен другим пользователям, нужно разместить его на веб-сервере IIS. Это один из основных веб-серверов, использующихся на данный момент, и позволяющий запускать веб-сайты на платформе Asp.Net.

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

Установка Asp.Net

На сервере, где будет располагаться сайт, необходимо установить .Net Framework. Это набор файлов и утилит, позволяющие выполнять и разрабатывать приложения, написанные в среде разработки Ms Visual Studio. Устанавливать нужно ту версию .Net Framework, с помощью которой разрабатывался наш сайт.

Как установить Asp.Net правильной версии? Проверить ее можно следующим образом: открыть проект в Visual Studio, зайти в свойства проекта (меню Проект->Свойства…). На вкладке «Построение» в поле «Требуемая версия .Net Framework» будет указана версия, под которую написано приложение.

Скачать .Net Framework можно с официального сайта Microsoft. Будем считать, что наш сайт написан на .Net 4.0. Скачать установщик можно здесь.

Качаем нужную версию .Net Framework, устанавливаем на сервере. Все, установка Asp.Net завершена!

Как зарегистрировать Asp.Net в IIS

В составе пакета .Net Framework есть утилита aspnet_regiis.exe, с помощью которой мы, собственно, и сможем зарегистрировать Asp.Net в IIS.

Отдельная статья посвящена тому, как установить и настроить IIS. Здесь будем считать, что IIS у нас уже установлен.

Asp использование устанавливаемых компонентов

Обновлен: Ноябрь 2007

На платформе .NET Framework поддерживается установка нескольких версий среды CLR на один компьютер. По умолчанию при установке платформы .NET Framework на компьютер с уже установленной средой выполнения все приложения ASP.NET автоматически обновляются для использования этой версии платформы .NET Framework. Несмотря на то, что более поздние версии платформы .NET Framework разработаны как обратно совместимые, существует возможность настроить приложение ASP.NET для использования более ранней версии среды выполнения.

В этом разделе рассматриваются следующие темы:

Традиционно в ходе обновления приложения или компонента старая версия удаляется и заменяется на новую. Если новая версия несовместима с предыдущей, это приводит к сбою в работе других приложений, использующих данный компонент или приложение. .NET Framework поддерживает параллельное выполнение, что позволяет устанавливать на один компьютер одновременно несколько версий сборки или приложения. Поскольку версии могут устанавливаться одновременно, управляемые приложения могут выбирать версию для использования, не влияя на работу приложений, использующих другие версии.

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

На платформе .NET Framework поддерживается установка нескольких версий среды CLR на один компьютер. По умолчанию при установке .NET Framework на компьютер с уже установленной средой выполнения все приложения ASP.NET автоматически обновляются для использования этой версии .NET Framework. Единственное исключение — приложения, привязанные к несовместимой или к более поздней версии среды выполнения. (Совместимость обычно определяется номером версии платформы .NET Framework. Среды выполнения с разными основными номерами версий обычно несовместимы, если же отличаются дополнительные номера версий и номера построений, то такие среды выполнения совместимы. Несмотря на то, что более поздние версии .NET Framework разработаны как обратно совместимые, существует возможность настроить приложение ASP.NET для использования более ранней версии среды выполнения.

Карты сценариев в приложениях ASP.NET

Когда на одном компьютере установлено несколько версий .NET Framework, каждая установка имеет свою собственную версию расширения ISAPI ASP.NET (Aspnet_isapi.dll). Расширение ISAPI ASP.NET определяет, какую версию .NET Framework будет использовать приложение. Можно настроить приложение ASP.NET для использования любого расширения ISAPI ASP.NET. Чтобы указать, какое расширение ISAPI ASP.NET следует использовать приложению ASP.NET, в службах IIS для приложения регистрируется карта сценариев (иногда называемая картой приложения).

Карта сценариев сопоставляет расширение файла (например ASPX) и команду HTTP (например GET или POST) с соответствующим расширением ISAPI. Например, когда служба IIS получает запрос на ASPX-файл, карта сценариев приложения дает IIS команду направить этот ASPX-файл подходящей версии расширения ISAPI ASP.NET. Карта сценариев для каждого приложения ASP.NET обычно задается в консоли управления служб IIS и может применяться непосредственно к приложению или наследоваться от родительского приложения. По умолчанию при установке .NET Framework карты сценариев всех приложений компьютера автоматически обновляются, чтобы использовать новое расширение ISAPI ASP.NET, за исключением случаев, когда приложение использует более позднюю или несовместимую версию.

Чтобы упростить настройку карты сценариев для приложения ASP.NET, каждая установка .NET Framework имеет свою собственную версию инструмента регистрации IIS для ASP.NET (Aspnet_regiis.exe). По умолчанию этот инструмент устанавливается в следующую папку:

%корневая_папка_системы% \Microsoft.NET\Framework\ Номер_версии

Администраторы могут использовать этот инструмент, чтобы сопоставить приложение ASP.NET со связанной с данным инструментом версией ISAPI ASP.NET.

Поскольку программа Aspnet_regiis.exe связана с определенной версией .NET Framework, для перенастройки карты сценариев приложения ASP.NET следует применять соответствующую версию программы. Программа Aspnet_regiis.exe перенастраивает карту сценариев приложения ASP.NET в соответствии с версией ISAPI ASP.NET, соответствующей этой программе.

Этот инструмент можно также использовать для отображения состояния всех установленных версий ASP.NET, регистрации связанной версии ASP.NET, создания папок клиентских сценариев и выполнения других операций настройки.

Дополнительные сведения о картах сценариев и о настройке IIS см. в разделе Установка сопоставлений приложений в IIS 6.0 (IIS 6.0). Дополнительные сведения об обновлении карт сценариев для приложения ASP.NET см. в разделе Программа регистрации IIS для ASP.NET (Aspnet_regiis.exe) .

Счетчики производительности ASP.NET

Счетчики производительности позволяют контролировать работу ASP.NET с помощью консоли Windows «Производительность». Каждая версия .NET Framework устанавливает свой набор объектов счетчиков производительности для контроля как приложения ASP.NET, так и ASP.NET в целом. Эти объекты используют соглашения об именах «ASP.NET Apps v. X.X.XXXX.X » и «ASP.NET v. X.X.XXXX.X » соответственно, где v. X.X.XXXX.X обозначает версию ASP.NET.

Кроме того, .NET Framework также устанавливает счетчики производительности системы ASP.NET и приложения ASP.NET, которые можно использовать с любой установленной версией ASP.NET. Хотя эти счетчики годятся для любых версий ASP.NET, они всегда соответствуют последней установленной версии. Если старшая версия ASP.NET удаляется, счетчики автоматически переключаются на ставшую старшей версию ASP.NET.

Служба состояний ASP.NET

Служба состояний ASP.NET может использоваться для управления состоянием сеанса на компьютере. Все версии ASP.NET, которые установлены на одном компьютере, пользуются одной и той же службой состояний, установленной с самой старшей версией ASP.NET. Эта версия регистрируется с именем службы aspnet_state . Таким образом, когда последняя версия ASP.NET удаляется, вместо нее регистрируется и используется та версия, которая стала старшей. Дополнительные сведения о службе состояний ASP.NET см. в разделе Режимы состояний сеанса .

Сервер состояний SQL Server ASP.NET

Сервер состояний SQL Server ASP.NET используется для управления состоянием сеанса SQL на компьютере. Все версии ASP.NET, которые установлены на одном компьютере, пользуются одним и тем же сервером состояний SQL Server, установленным с самой старшей версией ASP.NET. Когда последняя версия ASP.NET удаляется, вместо нее регистрируется и используется ставшая старшей версия. Дополнительные сведения о сервере состояний SQL Server ASP.NET см. в разделе Режимы состояний сеанса .

Управление несколькими версиями ASP.NET

.NET Framework позволяет устанавливать на компьютер несколько версий среды CLR. Это позволяет приложению ASP.NET использовать нужную версию, не влияя на работу других приложений. В следующих разделах объясняется, как устанавливать, удалять и распространять несколько версий ASP.NET на одном компьютере.

Установка нескольких версий ASP.NET

Чтобы добавить на компьютер версию ASP.NET, следует выполнить программу установки распространяемого пакета .NET Framework (Dotnetfx.exe) для версии, которую необходимо установить. По умолчанию все имеющиеся приложения ASP.NET автоматически перенастраиваются в ходе установки на устанавливаемую версию среды выполнения, если удовлетворены следующие требования:

Устанавливаемая версия .NET Framework является более новой, чем версия, сопоставленная с приложением в настоящий момент.


Устанавливаемая версия .NET Framework совместима с версией, сопоставленной с приложением. Как правило, совместимость определяется номером версии. Версии, у которых различаются дополнительные номера редакций или номера построений, совместимы, в то время как версии, у которых различаются основные номера редакций, являются несовместимыми.

Примечание.

Несмотря на то, что при соблюдении вышеуказанных условий приложения ASP.NET автоматически обновляются для использования устанавливаемой версию ASP.NET, пользовательские параметры конфигурации в текущем файле Machine.config не передаются в устанавливаемый файл Machine.config. Если в приложении применяются пользовательские параметры конфигурации, следует либо вручную обновить файл Machine.config, либо с помощью инструмента регистрации IIS ASP.NET (Aspnet_regiis.exe) вернуть сопоставление этого приложения с предыдущей версией ASP.NET.

Чтобы предотвратить автоматическое сопоставление всех приложений с устанавливаемой версией .NET Framework, необходимо использовать параметр командной строки /noaspupgrade в программе установки Dotnetfx.exe. В следующем примере показан синтаксис команды:

Dotnetfx.exe /c:»install /noaspupgrade»

Дополнительные сведения о распространяемом пакете .NET Framework см. в разделе Распространение .NET Framework .

Примечание.

Если платформа .NET Framework устанавливается с помощью элемента Установка и удаление программ в панели управления Windows или с помощью мастера настройки сервера Windows, ASP.NET включается в консоль управления безопасностью по умолчанию. Если же платформа .NET Framework установлена с помощью Microsoft Visual Studio, программы обновления Windows или распространяемого пакета .NET Framework (Dotnetfx.exe), то ASP.NET по умолчанию отключена.

Удаление версии ASP.NET

Если на компьютере установлено несколько версий ASP.NET, можно удалить любую из них. Удаление ASP.NET обычно выполняется путем удаления .NET Framework с помощью элемента Установка и удаление программ в панели управления Windows. В процессе удаления программа установки вызывает инструмент для регистрации IIS ASP.NET (Aspnet_regiis.exe) с параметром -u (флаг удаления).

Примечание.

Если требуется удалить только версию ASP.NET, не удаляя связанную с ней .NET Framework, можно использовать непосредственно программу Aspnet_regiis.exe. Каждая установка .NET Framework содержит соответствующую версию этого инструмента. Чтобы удалить только ASP.NET, необходимо использовать параметр -u инструмента той же версии, что и подлежащая удалению версия ASP.NET. Дополнительные сведения см. в разделе Программа регистрации IIS для ASP.NET (Aspnet_regiis.exe) .

Параметр -u инструмента Aspnet_regiis.exe выполняет следующие действия:

Все приложения ASP.NET, в настоящий момент сопоставленные с удаляемой версией ASP.NET, сопоставляются повторно с самой поздней совместимой версией ASP.NET, доступной на компьютере. Если совместимой версии нет, карта сценариев для приложения удаляется полностью.

Примечание.

Удаление карт сценариев заставит IIS обрабатывать страницы ASP.NET как обычный текст. В результате клиент может получить исходный код.

Если удаляемая версия ASP.NET является самой старшей версией, то служба состояний ASP.NET сопоставляется с самой старшей совместимой версией. Если совместимых версий не осталось, служба состояний ASP.NET удаляется. (Служба состояний ASP.NET, используемая всеми совместимыми версиями ASP.NET, всегда сопоставляется с самой старшей установленной версией ASP.NET.)

Объекты производительности и соответствующие им счетчики производительности, относящиеся к удаляемой версии, также удаляются. Универсальные объекты производительности и счетчики, применяемые ко всем установленным версиям ASP.NET и приложениям ASP.NET, направляются к самой новой из оставшихся на компьютере версий.

Если на компьютере не осталось установок ASP.NET, учетная запись ASPNET и связанные с ней списки управления доступом удаляются.

Дополнительные сведения о других следствиях установки нескольких версий ASP.NET см. в разделе Общие сведения об одновременном выполнении в ASP.NET .

Распространение .NET Framework третьей стороной

Сторонние приложения могут упаковывать и устанавливать .NET Framework как часть собственной установки в соответствии со специальной лицензией на распространение. Это позволяет приложению устанавливать определенную версию .NET Framework, которая необходима ему для работы. Распространяемый пакет .NET Framework (Dotnetfx.exe) предоставляется приложению для развертывания вместе со средой выполнения. Стандартный сценарий установки Dotnetfx.exe может не подойти приложению. Если это так, то разработчик стороннего приложения может использовать описанные ниже параметры при установке .NET Framework как части приложения.

Дополнительные сведения о распространяемом пакете .NET Framework см. в разделе Распространение .NET Framework . Дополнительные сведения о пользовательском лицензионном соглашении распространяемого пакета см. в разделе Местонахождение свободно распространяемого пакета .NET Framework .

Отключение автоматического обновления карты сценариев

По умолчанию при установке .NET Framework на компьютер с уже имеющейся установкой все приложения ASP.NET автоматически обновляются для использования этой новой версии .NET Framework, если только приложение не привязано к несовместимой или более новой версии среды выполнения. Обычно этот тип установки может быть выполнен только системным администратором. Когда .NET Framework устанавливается как часть установки приложения, она не должна заставлять другие приложения на компьютере использовать эту версию среды выполнения.

В качестве части сценария установки программа Dotnetfx.exe обычно вызывает инструмент регистрации IIS ASP.NET (Aspnet_regiis.exe) с параметром -i для установки ASP.NET. Этот параметр пытается обновить карты сценариев всех установленных на компьютере приложений ASP.NET. Чтобы предотвратить автоматическое сопоставление всех приложений с устанавливаемой версией .NET Framework, необходимо использовать параметр командной строки /noaspnetupgrade в программе установки Dotnetfx.exe. Этот параметр заставляет программу установки использовать параметр -ir программы Aspnet_regiis.exe, что приводит к пропуску этапов автоматического обновления карт сценариев, стандартной документации и подкачки MIME. В следующем примере показан синтаксис команды:

Dotnetfx.exe /c:»install /noaspupgrade»

Обновление карт сценариев вручную

Иногда необходимо установить карты сценариев для приложения вручную. Если приложению необходима собственная виртуальная папка, предназначенная для устанавливаемой версии .NET Framework, следует убедиться, что программа установки приложения явным образом вызывает программу Aspnet_regiis.exe с параметром -s или -sn для установки карт сценариев.

В следующем примере показан образец командной строки, которая обновляет карты сценариев для приложения с именем SampleApp1 .

Aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

.Унификация сборок .NET Framework

При параллельном выполнении приложение может состоять из компонентов, построенных с использованием разных версий .NET Framework. Это может вызвать конфликты между зависимостями компонентов. Например, предположим, что компонент А построен с использованием .NET Framework версии 1.1, и ему необходима версия 1.1 сборки System.Data. А компонент В построен с использованием .NET Framework версии 1.1, и ему необходима версия 2.0 сборки System.Data. Если эти версии сборок несовместимы, но загружаются одновременно, это может привести к неожиданным несоответствиям типов или к другим проблемам.

Способы определения необходимой приложению версии .NET Framework

Чтобы разрешить использование разных версий одной и той же сборки, когда приложение использует компоненты, созданные в разных версиях .NET Framework, связанная с приложением версия среды выполнения определяет, какие версии сборок .NET Framework используются приложением и всеми его компонентами. В случае предыдущего примера, если приложение связано с версией 2.0 .NET Framework, то загружается сборка System.Data версии 2.0, которая и используется всеми компонентами приложения. Ссылка компонента А на версию 1.1 сборки System.Data во время выполнения заменяется ссылкой на версию 2.0.

Если получена обновленная версия конкретной сборки, то можно связать приложение с этой сборкой, независимо от версии .NET Framework, с которой сопоставлено приложение. Чтобы сделать это, можно добавить элементы в файл Machine.config или Web.config. Эти элементы связывают приложение с обновленной сборкой, заменившей существующую сборку для определенных типов приложения. Например, если в будущем появится новая версия библиотеки System.Web.Service.dll, которая будет поддерживать SOAP версии 1.2, может понадобиться, чтобы приложение использовало именно эту версию вместо версии, которая была первоначально установлена с .NET Framework.

Это поведение можно также переопределить в файле конфигурации основного приложения ASP.NET (Aspnet.config). ASP.NET использует этот файл, чтобы обеспечить соответствие версий System.Web.dll и System.Web.RegularExpressions.dll с версией, связанной с приложением, независимо от каких-либо переопределений в файле Web.config.

Иногда может потребоваться использовать компонент, построенный с помощью более новой версии ASP.NET, в приложении, созданном в более ранней версии. Связанная с приложением версия ISAPI ASPNET всегда определяет используемую для приложения версию среды выполнения. Если приложение настроено для использования более ранней версии .NET Framework, то во время выполнения компонент будет автоматически перенаправлен на использование этой версии.

При использовании компонента, созданного с помощью более поздней версии .NET Framework, в приложении, построенном в более ранней версии, следует обратить внимание на следующие моменты.

Необходимо убедиться, что компонент не использует функциональные возможности и поведение, относящиеся к более поздней версии .NET Framework. Они могут быть недоступны в более ранней версии среды выполнения.

ASP.NET использует карты сценариев в IIS, чтобы привязать приложение к версии среды выполнения. Элементы конфигурации и не применимы к приложениям ASP.NET.

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

Лекция 1. Что такое ASP.NET. Инсталляция и тестовый проект.

Введение

Microsoft .NET Framework — это платформа для создания, развертывания и запуска Web-сервисов и приложений. Она предоставляет высокопроизводительную, основанную на стандартах, многоязыковую среду, которая позволяет интегрировать существующие приложения с приложениями и сервисами следующего поколения, а также решать задачи развертывания и использования интернет-приложений. .NET Framework состоит из трех основных частей — общеязыковой среды выполнения (common language runtime), иерархического множества унифицированных библиотек классов и компонентной версии ASP, называемую ASP.NET.

ASP.NET – это часть технологии .NET, используемая для написания мощных клиент-серверных интернет приложений. Она позволяет создавать динамические страницы HTML. ASP.NET возникла в результате объединения более старой технологии ASP (активные серверные страницы) и .NET Framework. Она содержит множество готовых элементов управления, используя которые можно быстро создавать интерактивные web-сайты. Вы также можете использовать сервисы, предоставляемые другими сайтами, прозрачно для пользователей вашего сайта. В общем, возможности ASP.NET ограничены только вашим воображением.

Давайте обсудим, что такое динамические страницы HTML и чем они отличаются от статических. Статическая страница содержит код на языке гипертекстовой разметки HTML. Когда автор страницы пишет ее, он определяет, как будет выглядеть страница для всех пользователей страницы. Содержание страницы будет всегда одинаковым независимо от того, кто и когда решит ее просмотреть. Языка HTML вполне достаточно для отображения информации, которая редко изменяется и не зависит от того, кто ее просматривает. Страница HTML — простой ASCII-текст, следовательно, клиент может работать в любой операционной системе.

Совершенно понятно, что если сформировать web-страницу, описав ее структуру средствами HTML, она будет совершенно статична в смысле содержимого. То есть при просмотре в браузере она будет нести в себе точно ту же информацию, что была в нее записана в момент создания, и переданные пользователем данные не могут быть использованы для модификации содержимого отображаемых ему страниц: он сможет увидеть только то, что предварительно было записано в конечный набор файлов.

Но что, если мы хотим отобразить на странице текущий курс евро или прогноз погоды? Если мы написали страницу HTML вчера, сегодня она уже устареет. Следовательно, мы должны уметь создавать динамические страницы. Динамическое наполнение страницы – это информация, содержание которой определяется тем, кому она предназначена, и которая отличается от просмотра к просмотру. Оно позволяет обеспечить двусторонний обмен информацией – от клиента к серверу и обратно.


Динамическими принято называть web-страницы, которые перед отправкой клиенту проходят цикл обработки на сервере. В самом простом случае это может быть некоторая программа, которая модифицирует запрашиваемые клиентом статические страницы, используя параметры полученного запроса и некоторое хранилище данных. Даже при такой примитивной организации «неразрешимая» задача из предыдущего абзаца обретает очевидное решение: достаточно подготовить всего одну статическую страницу – шаблон – и перед отправкой страницы программно подставлять в него значение, полученное сегодня из банка или метеобюро.

Большинство страниц на ранних стадиях развития интернета были статическими. Последние 10 лет растет количество динамических страниц. И это понятно, пользователи интернет хотят не только читать готовую информацию, а быть активными действующими лицами. Например, они заказывают товары в интернет-магазине, пишут дневники, участвуют в конкурсах. Информационные порталы обновляют новости каждую минуту. Динамические страницы могут подстраиваться под конкретного пользователя, а также реагировать на его действия в браузере. Каким же образом? Для этого придумано множество технологий. Например, того, чтобы идентифицировать пользователя и сохранить его настройки для данного сайта, применяются файлы-cookies.

Существуют языки, способные динамически изменять содержимое веб-страницы. С одной стороны, это языки скриптов, выполняющиеся непосредственно у клиента. Примеры скриптовых языков — JavaScript и VBScript. Скрипты на этих языках встроены в код HTML, который сервер посылает браузеру. Сценарии, выполняемые на стороне клиента, выделяются тегами и . Браузер интерпретирует этот код и показывает пользователю результат. Сам код можно просмотреть через View Source браузера. Естественно, эти программы не могут быть большими. Например, если нужно выполнить поиск в базе данных, мы не может отправить пользователю все ее содержимое. Но скрипты могут проверить правильность запроса, введенного в форму, тогда не придется перезагружать сервер обработкой неправильных запросов. Некоторые программисты создают на JavaScript анимационные эффекты. Одна студентка intuit.ru желала найти скрипт, который бы отправлял SMS-сообщения. Увы, это невозможно. Выполняемых на стороне клиента сценариев недостаточно для создания полноценных динамических страниц. Даже если на странице используется JavaScript, анимированные картинки .gif, она называется статической.

Динамическая веб-странице должна быть создана «на лету» программой, исполняющейся на интернет-сервере. Широко применяются механизм шлюзов CGI(Common Gateway Interface). Вначале пользователь получает статическую страницу с формой. Вам известно, что в теге FORM существует атрибут ACTION. Именно он задает адрес (URL) исполняемого приложения. На сервере находятся исполняемые файлы программ, написанных, например на C/С++ или Дельфи, которые по протоколу HTTP принимают данные из входного потока или из переменных окружения и записывают в стандартный выходной поток готовую страницу.

Пользователю в ответ на запрос посылается HTML код, который был специально сгенерирован для него. Это может быть, например, результат поиска в поисковой системе. CGI -скрипты могут быть написаны на интерпретируемом языке (Perl) или даже скрипте командной строки. Входной и выходной потоки переназначаются. На вход интернет-сервер принимает данные, введенные пользователем. После обработки полученных данных, пользователю возвращается результирующая страница. При исполнении cgi-программа загружается в память сервера, а при завершении – удаляется. Когда 100 клиентов одновременно обращаются к серверу, в памяти создаются 100 процессов, для размещения кода каждого из которых нужна память. Это отрицательно сказывается на масштабируемости. Напомним, что масштабируемость — это возможность плавного роста времени ответа программной системы на запрос с ростом числа одновременно работающих пользователей.

Для решения это проблемы Microsoft была предложена альтернатива – ISAPI(Internet Server Application Programming Interface)-расширения и фильтры. Вместо исполняемых файлов используются DLL – библиотеки. Код DLL находится в памяти все время и для каждого запроса создает не процессы, а нити исполнения. Все нити используют один и тот же программный код. ISAPI –приложение выполняется в процессе IIS-сервера. Это позволяет повысить производительность и масштабируемость.

ISAPI-расширения можно создавать в Visual Studio C++ 6.0, пользуясь мастером.

У ISAPI тоже есть недостатки, относящиеся к разработке. Если мы меняем исходный код dll, мы должны его откомпилировать и поместить в исполняемую директорию сервера. Но так как предыдущий вариант dll находится в памяти, необходимо остановить сервер, чтобы получить доступ на изменение файла. В это время клиенты не смогут получить в сервера ни один документ, и, конечно, будут не удовлетворены.

Скриптовые языки, исполняющиеся на стороне сервера – php и asp. Технология asp была разработана Microsoft в 90-х годах.

Выполнение кода asp поддерживается ISAPI-расширением сервера. В диалоге конфигурации сервера IIS определяются способы обработки файлов с различными расширениями. Для обработки URL-адреса с расширением в установках сервера определен файл asp.dll. Файлы asp отправляются к нему на обработку. На вход поступает asp, а на выходе имеем поток HTML-кода.

Пример файла asp:

Тег сигнализирует asp, что в нем находится код, который он должен обрабатывать на сервере. Выполняется скрипт на языке, который указан в директиве Language. Оператор Response.Write записывает текст в выходной поток сервера, таким образом, он становится частью HTML-страницы, отправленной пользователю.

Технология asp была ограничена по своим возможностям. Он использовал скриптовые языки, которые имеют меньше возможностей, чем полнофункциональные языки программирования. Код asp был встроен в HTML в виде специальных тегов, что создавало путаницу. Кусочки asp были разбросаны по нему, как изюм в булке. Но HTML код обычно создают дизайнеры, которые умеют «делать красиво», а asp – программисты, которые заставляют все это работать. В ASP.NET вы можете держать код asp и HTML в разных файлах.

Скриптовые языки не поддерживают строгую типизацию. Что это значит? Вы можете не описывать переменную до ее использования и можете присваивать ей значения разных типов. Это удобно, но создает почву для ошибок. Например, у вас есть переменная x1, и вы присваиваете ей значение 1, но вы сделали опечатку и по ошибке написали x2=1. Будет создана новая переменная x2, а значение x1 не изменится. В языке со строгой типизацией компилятор заметит, что переменная x2 не описывалась, и выдаст ошибку.

В 2000 году на конференции разработчиков в качестве части новой технологии .NET Microsoft представила ASP+. С выходом .NET Framework 1.0 она стала называться ASP.NET.

ASP.NET — это не продолжение ASP. Это концептуально новая технология Microsoft, созданная в рамках идеологии .NET. В ASP.NET заложено все, для того, чтобы сделать весь цикл разработки веб-приложения более быстрым, а поддержку более простой. ASP.NET основана на объектно-ориентированной технологии, но сохранила модель разработки asp: вы создаете программу и помещаете ее в директорию, выделенную сервером, и она будет работать. В ASP.NET появилось много новых функций, а существовавшие в asp значительно усовершенствованы.

В ASP.NET используются компилируемые языки. Во время компиляции проверяется синтаксическая корректность исходного текста. Скомпилированный в промежуточный язык код выполняется быстрее, и он будет таким же независимо от языка, который мы используем. Компилируемые языки поддерживают строгую типизацию.

Компиляция происходит на сервере в момент первого обращения пользователя к странице. Если программист изменил текст страницы, программа перекомпилируется автоматически. При написании кода можно использовать набор компонентов, поставляемых с .NET.

Платформа .NET Framework предоставляет приложениям среду выполнения, сама непосредственно взаимодействуя с операционной системой. Выше лежит интерфейс ASP.NET приложений, на котором в свою очередь базируются веб-формы (ASP.NET страницы) и веб-сервисы. Интерфейс .NET Framework позволяет стандартизировать обращение к системным вызовам и предоставляет среду для более быстрой и удобной разработки. CLR обеспечивает единый набор сервисов для всех языков.

ASP.NET использует технологию доступа к данным ADO.NET, которая обеспечивает единый интерфейс для доступа к базам данных SQL Server и файлам XML. Кроме того, усиленная модель безопасности позволяет обеспечивать защиту клиента и сервера от несанкционированного доступа.

В 2004 году появилась версия ASP.NET 2.0(бета-версия, окончательный выход – конец 2005-начало 2006). Как утверждается, эта версия позволяет сократить объем кодирования на 70%. Новые возможности версии 2.0 – например, использование шаблонов дизайна страниц(Master Page), упрощенная локализация Web-приложений, более 50 новых серверных элементов управления. Цели, которые преследовали разработчики новой версии – повысить скорость разработки сайтов, масштабируемость, легкость поддержки и администрирования сайтов, скорость работы сервера. Появилась панель остнастки MMC (консоль управления Microsoft), предоставляющая графический интерфейс для управления настройками ASP.NET. Изменять настройки проекта теперь можно и через web-интерфейс. ASP.NET 2.0 поддерживает работу на 64-битных процессорах. Сервис персонализации (personalization) предоставляет готовое решение для хранения персональных данных, непосредственно характеризующих пользователя сайта, так называемого профиля пользователя (Profile).

Шаблоны дизайна, темы и скины позволяют независимо дизайн всего сайта отдельно от его функциональности, темы включают графику и каскадные таблицы стилей.

Предыдущие версии Visual Studio для проектов ASP.NET требовали наличия на машине разработчика сервера IIS. Теперь сервер встроен в среду разработки.

ASP.NET 2.0 и Visual Studio 2005 предоставляют инструменты для легкого построения локализируемых сайтов, которые определяют предпочитаемый язык пользователя и посылают ему страницы на его языке.

Возможность прекомпиляции позволяет обнаружить ошибки до загрузки страниц на сервер. Можно не хранить на сервере исходные страницы aspx, тем самым защищая свою интеллектуальную собственность.

В ASP.NET 2.0 встроена технология автоматического обновления кэширования баз данных. Данные, полученные из базы, хранятся на сервере и он не обращается к базе для обработки повторного запроса. При изменении базы данных кэш обновляет свое содержимое.

ASP.NET — это технология, а не язык, и позволяет программировать на разных языках – С#, Visual Basic, J#. В платформе .NET все языки равны, но некоторые равнее(Дж. Оруэлл). Вот таким языком и является С#, потому что он был специально создан для этой платформы. Программирование C# позволяет в полной мере использовать концепции, методы и паттерны объектно-ориентированной разработки. Язык Visual Basic 8.0 наделен почти теми же возможностями. Чтобы научиться ASP.NET, вам нужно знать основы HTML, а знание asp не обязательно. Оно может даже помешать, так как придется менять образ мышления. Также для понимания многих желательно знать CSS и JavaScript.

Процесс инсталляции

ASP .NET 2.0 можно установить на компьютерах с ОС Windows 2000 с Service Pack 4, Windows XP с Service Pack 2 и более поздними версиями Windows. Готовые сайты предпочтительно устанавливать на Windows Server 2003.

Для разработки приложения можно использовать любую среду разработки или даже текстовый редактор, при условии, что у вас есть доступ к IIS. Если же вы хотите воспользоваться всей мощью Microsoft .NET Framework и ASP.NET и при этом, затратить как можно меньше усилий, то нужно воспользоваться средой разработки, специально разработанной для программирования ASP.NET 2.0.

Если вы приобретете Visual Studio .NET 2005, то для работы достаточно будет только его. .NET Framework содержится на дисках. В его состав входит Visual Web Developer, который позволяет создавать профессиональные веб-приложения, а также desktop-приложения на разных языках программирования. Продукты Microsoft выпускаются на DVD, но есть набор из двух CD от «Мегасофт». Visual Studio .NET 2005 требует около 2 Гигабайт дискового пространства. При этом инсталлируется ASP.NET 2.0, среда разработки, SQL Server Express, встроенный веб-сервер, Crystal Reports со специальными элементами управления для ASP.NET 2.0.
Бесплатно распространяемое программное обеспечение.

Visual Web Developer 2005 Express Edition – свободно распространяемая среда предназначенный для новичков и студентов, доступная по адресу http://msdn.microsoft.com/vstudio/express/vwd/. Список отличий VWD от Visual Studio.NET 2005 невелик и для начинающих несущественен, он приведен здесь: http://msdn.microsoft.com/vstudio/products/compare/default.aspx

Инсталлятор VWD имеет объем 2,8 Мб, но в процессе инсталляции он загрузит еще 40 Мб и 80 Мб, если захотите установить документацию. При этом также будет установлен .NET Framework с ASP.NET 2.0.

Системные требования – процессор с минимальной скоростью 600 МГц, 128 МБ памяти и 1.3 ГБ дискового пространства. После инсталляции нужно будет зарегистрировать свою установку, это совершенно бесплатно.

В качестве среды разработки вы можете выбрать WebMatrix. Эта программа совмещает в себе редактор и http-сервер. Ее можно загрузить на http://www.asp.net/WebMatrix.

У WebMatrix инсталлятор размером всего 1.2 Мб, но у него меньше возможностей, чем у VWD. Но, в общем, эти среды разработки похожи. У WebMatrix есть неприятная особенность – она дает запрос на сохранение во время закрытия файлов, которые не редактировались. VWD Express позволяет одним нажатием кнопки открыть Web-интерфейс конфигурирования проекта. В VWD работает технология IntelliSense, которая автоматически предлагает возможные в данном месте элементы кода.

Если вы решили работать с WebMatrix, вы должны установить на своей машине .NET Framework 2.0 и ASP.NET 2.0.

Если у вас операционная система Windows Server 2003, то .NET Framework уже предустановлен. Вы можете проверить, есть ли вас директория %WINSDIR%Microsoft.NETFramework. Если нет, вы можете ее загрузить на сайте Microsoft. Последние версии находятся по адресу http://msdn.microsoft.com/netframework/downloads/updates

На данный момент это .NET Framework 2.0, но к моменту, когда вы будете читать эту лекцию, могут появиться более новые версии. Вы можете скачать новую версию, даже если у вас уже есть другая. Они будут существовать на компьютере одновременно в поддиректориях %WINSDIR%Microsoft.NETFramework, с именем, соответствующим номеру версии. Можно сказать, что каждая версия представляет собой сборку. Система версий поддерживается для всех приложений, созданных с использованием .NET Framework.

Там вы увидите ссылки на .NET Framework для разных архитектур компьютера.

При желании загрузите .NET Framework Version 2.0 SDK, которая содержит наряду с .NET Framework Version 2.0 SDK документацию и примеры, которые могут оказаться полезными.

По адресу http://asp.net/default.aspx можно найти много полезных для разработчиков программных продуктов, примеров кода и статей.

IIS(Internet Information Server) находится на инсталляционном диске Windows 2000/XP, но предустановлен только на серверах. Его можно установить, зайдя в Control Panel->Add or Remove Programs->Add/Remove Windows Components. Компьютер попросит вас вставить инсталляционный диск.

IIS может понадобиться, если вам нужен полноценный сервер для работы в интернет, а не просто на своем компьютере или в локальной сети или вы решили набирать текст в обычном редакторе. Для работы на своем компьютере во все эти среды разработки встроен сервер Cassini, который первоначально появился как часть WebMatrix. Символ WebMatrix – планета Сатурн, а Кассини — известный исследователь Сатурна. Предыдущие версии Visual Studio требовали наличия IIS, но теперь Cassini встроен и в Visual Studio 2005, что позволяет работать даже в Windows XP Home Edition.

Примеры будут даваться как для WebMatrix, так и Visual Studio. Некоторые примеры требуют VWD Express или Visual Studio.
Сообщества разработчиков.

Через меню помощи Visual Web Developer Express можно зайти на сайты форума по ASP.NET. А вот адреса сайтов на русском языке:

* http://www.aspnetmania.com
* http://www.gotdotnet.ru/
* http://www.sql.ru/
* http://dotsite.ru/
* http://www.rsdn.ru/

Вы можете завести пробный хостинг на http://europe.webmatrixhosting.net/russia/default.aspx.

Первый проект


Вначале решите, в какой директории будете создавать страницы. Все файлы, находящиеся в одной директории, считаются единым проектом.Запустите выбранную вами среду разработки. Выберите пункт меню File-New-Website. Появится диалоговое окно. Назначьте в нем имя проекта и выберите язык программирования С#.

По умолчанию проект создается в файловой системе. По желанию его можно создать на HTTP или FTP-сервере. Из файловой системы проект всегда можно скопировать на сервер нажатием одной кнопки в заголовке Solution Explorer.

В проекте будет создана страница default.aspx. Выберите ее, и появится окно редактирования с закладками Design и Source. Не меняя ничего, щелкните на кнопке со стрелкой, чтобы просмотреть страницу в браузере. Появится окно, котором спрашивается, нужно ли добавить в файл web.config возможность отладки. Нажмите OK. На панели задач должен появиться значок веб-сервера. Откроется браузер, показывающий страницу по адресу http://localhost:номерпорта/Website1/default.aspx. localhost обозначает сервер, работающий на вашем компьютере. Встроенный сервер Cassini сам назначает себе номер порта – для каждого проекта он разный. Сервер IIS обычно работает через порт 80(или 8080, если тот занят), и для него номер порта указывать не нужно. При этом ваша страница будет скомпилирована.

Пока что страница в бразере пустая.

Но исходный код этой страницы не пустой. Программа сгенерировала код для вас.

ПРИМЕНЕНИЕ ASP-ЗАВОДНЕНИЯ

студент Тюменского Индустриального университета,

В настоящее время многие месторождения находятся на завершающей стадии добычи и с большой обводненностью. Для продления жизни таких месторождений необходимо применение современных методов увеличение нефтеотдачи (МУН). Одним из таких методов является ASP-заводнение.

ASP-заводнение – один из методов повышения нефтеотдачи, в основе которого стоит закачка раствора, содержащего 3 основных компонента: щелочной агент, поверхностно-активное вещество (ПАВ) и полимер (alkaline/surfactant/polymer — ASP).

Щелочной агент помогает защитить раствор ASP от двухвалентных ионов, снижает адсорбцию ПАВ на породе и образует при контакте с «активной» нефтью дополнительные поверхностно-активные компоненты, которые снижают межфазное натяжение. К тому же он регулирует соленость и изменяет смачиваемость породы. В качестве щелочного агента обычно используют гидроксид и карбонат натрия, силикат натрия, фосфат натрия и гидроксид аммония.

ПАВ – химические соединения, молекулы которых являются амфифильными, т.е. обладают одновременно гидрофильными и гидрофобными свойствами. Благодаря этим уникальным свойствам молекулы адсорбируются на поверхности раздела нефть-вода, и таким образом величина межфазного натяжения достигает сверхнизких значений, что способствует снижению остаточной нефтенасыщенности при вытеснении.

Полимер попав в раствор начинает набухать, что приводит к загустению раствора, т.е. увеличивается вязкость раствора ASP. Из-за увеличения вязкости повышается эффективность вытеснения. В итоге при том же объеме закачивания получается более высокий уровень добычи нефти. В основном используются два типа полимеров: полиакриламид, частично гидролизованный (HPAM), и полисахарид – ксантановая смола.

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

  • Изменение смачиваемости породы пласта;
  • Увеличение pH и регулирование уровня минерализации;
  • Взаимодействие с нефтью, с образованием мыл;
  • Изменение химического состава породы пласта, с уменьшением адсорбции.
  • Образование эмульсий;
  • Изменение смачиваемоти породы пласта;
  • Уменьшение межфазного натяжения между нефтью и водой.

В результате действия данных компонентов повышается эффективность вытеснения нефти, которая поступает в добывающие скважины. При этом общее количество добываемых флюидов остается на прежнем уровне, однако уменьшается количество добываемой воды и увеличивается количество нефти.

Первые экспериментальные исследования по применению ПАВ при заводнении нефтяных пластов были проделаны в США в 1940-х годах. В СССР изучения по применению различных активных примесей начали проводить в 1960-х, в качестве агентов для этих примесей были щелочи, кислоты, углеводородный газ, ПАВ и др.

На Западе технология ASP появилась в 1980-х годах. На данный момент технологию применяют в таких странах как Канада, США, Китай и некоторые страны Ближнего Востока и Европы.

Наибольшее применение технология нашла в Китае, там активно используют ASP-заводнение на месторождениях Дацин, Карамай и Шенгли. На Дацинском месторождении в компании CNPC действует около 80 площадок по закачке полимеров и около 40 по закачке ASP. С использованием различных химических МУН добывается 10% всей нефти на данном месторождении. Благодаря этой технологии прирост нефтеотдачи составил примерно 20%. В таблице 1 представлены результаты испытаний на месторождении Дацин.

Таблица 1.

Результаты испытаний технологии ASP на месторождении

Система размещения скважин

Мощность пласта, м

Эффективная проницаемость, Д

В России ASP-заводнение не является популярным. Первый опыт применения ASP был проделан в Западной Сибири компанией «Салым Петролеум Девелопмент» на Западно-Салымском месторождении.

В первую очередь было подобрано ПАВ, подходящее для данных условий. После испытаний на керне и полевых испытаниях, было принято решение о запуске пилотного проекта по применению ASP-заводнения. Для этого были построены добывающая, нагнетательные и наблюдательные скважины, была смонтирована установка смешения компонентов раствора ASP.

Итогом стало увеличение коэффициента извлечения нефти (КИН) на пилотном участке до 67% (прирост от МУН 15%) и добыча составила 3 тыс. тонн нефти. Обводненность добывающих скважин снизилась с 98% до 92%.

Однако в процессе реализации проекта встала необходимость в новой рецептуре ПАВ. Подходящие для заводнения ПАВ в России не производятся, ранее применяемые вещества от компании Shell являются дорогостоящими. В данный момент идут исследования по созданию отечественных поверхностно-активных веществ.

Совместными усилиями «Газпром нефть», «Салым Петролеум Девелопмент» и «Норкем» уже синтезировали 11 новых веществ, способные заменить зарубежные аналоги. Некоторые из них уже переданы для исследований на керне.

Месторождения Салымской группы, как и многие месторождения Западной Сибири, характеризуются осложненными физико-геологическими условиями (многопластовость, низкопроницаемые коллекторы, высокая неоднородность и высокая вязкость нефти). В данных условиях необходимо применение современных методов. Опыт применения на Западно-Салымском месторождении показал эффективность применения данной технологии. Хоть и на данный момент технология ASP-заводнения является дорогостоящей, чтобы использовать ее на постоянной основе, она точно является перспективной.

Практическое применение в России только начинается и при дальнейшем изучении данного метода нефтеотдачи возможно массовое внедрение данной технологии на месторождениях-аналогах.

Плюсы ASP-заводнения исходя из международного опыта применения данной технологии:

  • Снижение обводненности продукции;
  • Увеличение дебита;
  • Прирост КИН;
  • Возможность применение в осложненных физико-геологичеких условиях.

PROИТ

Office 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.

ASP.Net Не запускается приложение. Регистрация компонентов в IIS 8.5

Дано: Windows Server 2012 R2, IIS 8.5, на нем установлен сайт — приложение ASP.Net.
Проблема: при запуске сайта выдается ошибка 404.3.

HTTP Error 404.3 — Not Found
The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.
Error Code 0x80070032

Т.е. это означает, что в IIS не зарегистрированы компоненты ASP.Net и отсутствуют его handlers.
Предположим, что всё необходимое уже сделано, т.е. установлены компоненты .Net Framework и ASP.Net:

В большинстве случаев помогала перерегистрация компонентов ASP.NET при помощи команды aspnet_regiis.exe с ключом «-i» (под администратором). Найти ее можно по пути C:\Windows\Microsoft.NET\Framework64\v4.
Обычно после ее выполнения все необходимые компоненты в IIS появляются и дальнейшие действия не требуются.
Однако, с недавнего времени, данная регистрирующая утилита перестала поддерживаться и при запуске выдается следующее сообщение:
This option is not supported on this version of the operating system. Administrators should instead install/uninstall ASP.NET 4.5 with IIS8 using the «Turn Windows Features On/Off» dialog,
the Server Manager management tool, or the dism.exe command line tool. For more
details please see go.microsoft.com/fwlink/?Link >

Как говорилось выше компонент ASP.NET 4.5 уже был установлен, однако IIS по-прежнему его не видит. Все инструкции по приведенной ссылке были выполнены.

Чтобы решить данную проблему и перерегистрировать компоненты ASP.NET 4.5, необходимо выполнить следующую dism команду:

Результат ее работы:

Теперь можно проверять, компоненты должны появиться.

Для использования возможностей WCF, возможно потребуется выполнение следующих команд:

Основы архитектуры IIS, или запросопровод для ASP.NET


В прошлом году мне пришлось отсобеседовать около 10-15 кандидатов на должность веб-программиста на ASP.NET средней квалификации. В качестве вопросов «на засыпку», или «со звёздочкой», я просил рассказать, что происходит с HTTP-запросом от момента его поступления на 80-й порт сервера до передачи управления коду aspx-страницы. Статистика была удручающей: ни один из кандидатов не смог выдать хоть что-нибудь внятное. И этому есть своё объяснение: ни в MSDN с technet, ни на специализированном ресурсе iis.net, ни в книгах a-la «ASP.NET для профессионалов», ни в блогах данной теме не уделяется должного внимания – информацию приходится собирать чуть ли не по крупицам. Я даже знаю людей, которые решили написать свой собственный веб-сервер (Игорь, Георгий, привет!), чтобы не разбираться в работе IIS. Единственная толковая статья – «Introduction to IIS Architectures» Риган Темплин (Reagan Templin). Но и она остаётся на периферии интересов аспнетчиков.

Хотя мне лично уже не так интересны чисто технические вопросы, я решил собрать в кучу свой накопленный опыт, раскопать на просторах Сети любопытные детали и передать сие сакральное знание массам, пока оно ещё не устарело. Сразу оговорюсь, что статья ориентирована в большей степени на IIS 7.x, иногда будут ответвления про 6-ку. С 8-й версией в работе не сталкивался, поэтому решил обойти её в этой статье стороной. Но, уверен, читатель без труда разберётся с восьмёркой, освоив изложенный ниже материал.

1. Общий план
2. Крупный план
2.1. HTTP.SYS
2.2. World Wide Web Publishing Service (W3SVC)
2.3. Windows Process Activation Service (WAS)
2.4. Пул приложений
2.5. Домен приложения, приложение
3. Что дальше?
Источники

1. Общий план

Итак, начнём с конца, а потом рассмотрим отдельные аспекты чуть более пристально.
В англоязычной литературе процесс обработки запроса в IIS называется «request processing pipeline» — что-то вроде «конвейера обработки запроса». В общих чертах он представлен на рисунке ниже для http-запроса.

Рис. 1. HTTP request processing pipeline (IIS 7.x).

Таким образом, http-запрос проходит по «сборочной ленте конвейера» через следующее:

1. Браузер обращается к веб-серверу по определённому URL, на стороне сервера запрос перехватывает драйвер HTTP.SYS.
2. HTTP.SYS стучится к WAS для получения информации из хранилища конфигурации.
3. Служба WAS запрашивает конфигурацию из хранилища — из файла в папке IIS (applicationHost.config).
4. Поскольку данный запрос получен по протоколу HTTP конфигурационную информацию получает служба W3SVC (она же WWW Service на картинке), эта информация содержит в себе данные о пуле приложений (application pool) и прочих параметрах сайта.
5. Служба W3SVC использует эту информацию для кофигурации HTTP.SYS.
6. Служба WAS запускает процесс W3WP.exe для пула приложений, если он ещё не был запущен.
7. В процессе W3WP.exe работает приложение веб-сайта, которое, собственно, формирует и возвращает ответ драйверу HTTP.SYS.
8. HTTP.SYS отправляет ответ браузеру.

В принципе уже этой схемы достаточно для прохождения интервью в большинстве компаний и получения общего представления об архитектуре IIS. Но если вы не для галочки сюда зашли, то прошу следовать далее.

2. Крупный план

2.1. HTTP.SYS

На транспортном уровне IIS использует прослушивателей протоколов (protocol listeners), которые располагаются поверх стека TCP/IP. Наиболее интересный нам такой компонент – это системный драйвер HTTP.sys, который встроен в ядро ОС и работает с протоколами HTTP и HTTPS, регистрирующийся самостоятельно на прослушку всех портов, на которые будут приходить запросы к сайтам в IIS.

Встроенный в ядро HTTP.sys стал нововведением в IIS 6, заместив собой Windows Socket API – компонент перехвата HTTP- и HTTPS-запросов на пользовательском уровне в IIS более ранних версий. Вероятно, интеграция драйвера в ядро является той самой причиной, по которой версия IIS жёстко привязана к версии Windows.

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

Ещё HTTP.sys умеет кешировать ответы (более подробно — Instances in which HTTP.sys does not cache content), поэтому некоторые запросы обрабатываются без передачи на уровень приложения, а также проводит первичный разбор URI запроса и его валидацию в соответствии с RFC 2396 (кое-что можно почерпнуть отсюда — Use of special characters like ‘%’ ‘.’ and ‘:’ in an IIS URL) и журналирование запросов/ответов.

Некоторые настройки HTTP.sys вынесены в системный реестр Windows (более подробно — Http.sys registry settings for Windows). Кстати, там же – в реестре – можно подсмотреть обычное место прописки нашего гражданина: %SystemRoot%\system32\drivers\http.sys.

Признаться, в процессе написания данной статьи я сам открыл для себя некоторые детали. Например, кэширование ответов на уровне драйвера HTTP.sys. Это помогло мне объяснить один случай странного, как мне тогда казалось, феномена в поведении IIS. Маркетологи выложили на сайт swf-открытку перед очередным праздником, но потом им что-то не понравилось в названии файла и они его переименовали. Однако сайт продолжал выдавать открытку по старому URL и даже очистка браузерного кэша не помогала. Тут уже подключился я, но ни перезапуск веб-сайта и всего пула приложений, ни обращение к сайту в обход корпоративного прокси-сервера не дали ожидаемого результата. Но теперь-то мы знаем, кто виноват.

2.2. World Wide Web Publishing Service (W3SVC)

Данная служба (сокращённо именуемя в спецификациях WWW service) была представлена в IIS 6 в качестве отдельного компонента для работы с протоколами HTTP/HTTPS и управления рабочими процессами приложений и выполняла следующие функции:

  • Администрирование драйвера HTTP.sys.
  • Управление рабочими процессами.
  • Мониторинг показателей производительности веб-сайтов.

Эта служба функционирует в Windows Server 2003 в контексте процесса Svchost.exe (настройки можно посмотреть в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3Svc) в отличие от всех остальных служб IIS, которые исполняются в контексте процесса Inetinfo.exe, и реализована в Iisw3adm.dll.

В IIS 7.x функция управления процессами была вынесена в отдельную службу – WAS (см. п.2.3) в целях универсализации архитектуры. Теперь WWW-служба стала по своей сути одним из адаптеров, специализируясь на протоколах HTTP/HTTPS – работа поверх драйвера HTTP.sys. Однако WWW-служба остаётся краеугольным компонентом IIS, поэтому её настройка отличается от настройки адаптеров к другим протоколам (чуть подобнее здесь); она функционирует в том же рабочем процессе, что и WAS, и реализована в той же самой библиотеке (рис. 2).

Рис.2. Рабочий процесс со службами W3SVC и WAS.

Раз уж зашла речь об адаптерах к прослушивателям протоколов (protocol listener adpater), то давайте чуть задержимся и посмотрим, какие они бывают. В принципе IIS 7.x можно настроить для обработки запросов по любым протоколам помимо типовых HTTP и FTP, например, POP3, SMTP, Gopher. Вы даже вольны придумать свой протокол для своей веб- или WCF-службы и реализовать для него все нужные компоненты, если не жалко своего времени. Скорее всего, адаптеры и прослушиватели для наиболее распространённых протоколов доступны для свободного и коммерческого скачивания – этого я не проверял. Но прежде всего стоить обратить внимание на стандартные службы (рис. 3), поставляемые с .NET Framework и интегрированные с IIS:

  • NetTcpActivator для протокола TCP;
  • NetPipeActivator для Named Pipes;
  • NetMsmqActivator для Message Queuing (ака MSMQ).

Рис. 3. Перечень стандартных не-HTTP-адаптеров в оснастке Служб Windows.

Но всё-таки наиболее важным для нас адаптером является именно WWW-служба, т.ч. остановимся чуть подробнее на двух оставшихся от IIS 6 функциях.

Администрирование и конфигурирование HTTP(S). В момент обновления конфигурации веб-сайтов, служба WAS передаёт эту информацию WWW-службе, а та уже, в свою очередь, настраивает HTTP.sys на прослушку конкретных портов, разбор IP и заголовка запрашиваемого сайта и, возможно, других параметров драйвера. В обратную сторону W3SVC обращается к WAS, когда в очередь запросов в HTTP.sys поступает новый, – для получения рабочего процесса-обработчика данного запроса.

Отслеживание показателей производительности. WWW-служба ведёт счётчики производительности, используя для этого драйвер HTTP.sys, и предоставляет их показатели веб-сайтами и кэшу IIS. Более подробной информации по этому вопросу мне найти не удалось.

2.3. Windows Process Activation Service (WAS)

Итак, WWW-служба в IIS 7.x, как и в IIS 6, продолжает выполнять задачи по администрированию HTTP.sys и управлению показателями производительности веб-сайтов. А вот задача управления рабочими процессами вынесена в отдельную службу – WAS. Она запускается системой в единственном экземпляре, считывает конфигурацию из файла %SystemRoot%\System32\inetsrv\Config\ApplicationHost.config и настраивает через соответствующие адаптеры прослушивателей протоколов в соответствии с указанной в нём информации. Напомним, что для протоколов HTTP/HTTPS адаптером является служба W3SVC, а прослушивателем – драйвер HTTP.sys. При перехвате прослушивателем запроса он через свой адаптер обращается к службе WAS для получения рабочего процесса приложения, которому будет передан запрос для обработки и формирования ответа клиенту.

При активации нужного для обработки пользовательского запроса приложения задействуются следующие компоненты:

  • Адаптеры прослушивателей (Listener adapters) – специальные службы Windows, работающие с конкретным протоколом и взаимодействующие с WAS для направления запросов к правильному рабочему процессу.
  • Собственно WAS. Она ответственна за создание рабочих процессов и управление их временем жизни.
  • Исполняемый файл w3wp.exe – шаблон рабочего процесса.
  • Менеджер приложений управляет созданием и утилизацией доменов приложений (application domains), которые хостятся внутри рабочего процесса.
  • Обработчики протоколов – протоколозависимые компоненты внутри рабочего процесса, ответственные за обмен данными между конкретным адаптером и рабочим процессом. Есть 2 типа обработчиков протоколов: у процесса (process protocol handler — PPH) и у домена приложения (AppDomain protocol handlers — ADPH).

Ниже на рисунке представлен пример схемы компонентов внутри некоего экземпляра рабочего процесса приложения. Когда служба WAS запускает рабочий процесс, она загружает в него согласно конфигурации приложения требуемые обработчики протоколов процессов (PPH) и посредством менеджера приложений создаёт внутри рабочего процесса домен приложения, в котором будет хоститься приложение. Менеджер приложений загружает код приложения в домен приложения и требуемые обработчики протоколов уровня приложения (ADPH) для обработки сообщений по соответствующим сетевым протоколам.

Рис. 4. Компоненты w3wp.exe для взаимодействия с внешними компонентами.

Как отмечалось выше, .NET Framework несёт в себе реализацию компонент для протоколов HTTP/HTTPS (наш любимый ASP.NET), net.tcp, net.pipe и MSMQ. Стеки протоколов HTTP/HTTPS и FTP всё-таки более тесно интегрированы в IIS и ОС, поэтому настройку для нового протокола лучше продемонстрировать на примере менее популярных дотнетовских протоколов. Итак, после установки фреймворка в файле конфигурации IIS ApplicationHost.config появляется записи:

А соответствующие компоненты PPH и ADPH настраиваются в дотнетовском machine.config:

В конфигурационном файле веб-сервера ApplicationHost.config вместе с настройками приложений хранятся связки (bindings), определяющие параметры входящих запросов, которые будут направляться данному приложению. Такими параметрами являются название сетевого протокола, IP-адрес сервера, доменное имя и порт сайта. Эти параметры должны быть уникальными среди работающих приложений для однозначной идентификации целевого приложения. Служба WAS отслеживает это ограничение и не даст вам запустить сайт, у которого это условие не соблюдено, либо предложит остановить сайт с такой же связкой.

Обратите внимание, что в стандартном режиме эксплуатации IIS служба WAS, служба-адаптер для каждого прослушивателя протокола (в т.ч. W3SVC) и сами драйверы/прослушиватели каждого из протоколов (в т.ч. HTTP.sys) запущены в ОС в единственном экземпляре. Но отдельные запросы могут направляться разным приложениям в разных рабочих процессах. С другой стороны, отдельно взятому приложению могут направляться запросы по разным протоколам через соответствующие адаптеры. Видимо, для корректной реализации такого поведения и была придумана архитектурная связка драйвер протокола – адаптер драйвера протокола – служба активации (своеобразный регулировщик, точнее — маршрутизатор) – рабочий процесс.

2.4. Пул приложений

При конфигурации веб-приложения помимо привязок (binding) к параметрам запросов и прочих настроек указывается принадлежность к пулу приложений. Пул приложений стал нововведением в IIS 6 и был призван обеспечить изоляцию веб-приложений друг от друго и тем самым повысить стабильность работы веб-сервера в целом. Суть заключается в том, что код приложения выполняется внутри специального процесса Windows – w3wp.exe. Поэтому исключение внутри веб-приложения приведёт к краху только этого процесса и никак не повлияет на доступность веб-приложений в других пулах и работу служб IIS. Более того, служба WAS попытается заново запустить упавший сайт, и внешние клиенты могут даже не заметить проблем в работе сервера.

Для управления некоторыми параметрами отдельно взятого рабочего процесса w3wp.exe в IIS используется пул приложений. Наиболее часто используемыми из них являются учётная запись, под которой будет запущен процесс, ограничения для очереди запросов, различные таймеры и счетчики для автоматического перезапуска процесса, архитектура x86/x64 (в IIS 7.x) и некоторые другие (рис. 5), о чём любопытный читатель может с лёгкостью прочесть в MSDN и любимом поисковике. Т.о. можно говорить (с определёнными оговорками, см. тж. последний абзац в 2.5) о тождественности процесса w3wp.exe и пула приложений.

Рис. 5 Дополнительные настройки пула приложений

Ключевым нововведением в концепции пулов приложений в IIS 7.x стал новый параметр – модель управления контейнером, который может принимать 2 значения: классическая (Classic mode) и встраиваемая модель (Integrated mode).
Чтобы объяснить разницу между этими режимами работы, потребуется знакомство с понятием «модуль» (Module) в IIS 6/7.x и событийной моделью обработки запросов в связке IIS + ASP.NET. Тема эта достойна отдельной статьи, но меня на неё уже, увы, не хватит, судя по всему. Здесь же представлю вашему вниманию лишь общие, ключевые моменты.

Итак, IIS при обработке запроса пропускает его внутри рабочего процесса через последовательность специальных компонент – модулей. Например фильтрация, перенаправление, кэширование, аутентификация, авторизация. Каждый такой модуль ассоциируется с определённым событием, а их последовательность составляют событийную модель обработки запросов. Модули делятся на нативные (Native) и управляемые (Managed). Нативные модули поставляются вместе с IIS, а управляемые – в составе .NET Framework (ASP.NET). В общем-то, вы можете управлять ими в определённой степени на уровне конфигурации веб-приложения, но взаимодействовать из кода своего ASP.NET-сайта вы можете только с управляемыми модулями.

Рис. 6. Идеология модулей в IIS.

Классическая модель управления контейнером обеспечивает обратную совместимость с режимом изоляции рабочих процессов в IIS 6 – запросы к ASP.NET-сайту сначала проходят через нативные модули, а затем передаются в Aspnet_isapi.dll для обработки модулями в управляемой среде. Такое разделение между IIS и ASP.NET приводит к дублированию некоторых функций, например, аутентификации и авторизации. И вы не имеете возможности управлять программно поведением нативных модулей (пример хоть и не самый животрепещущий, но всё же – раздел «Убираем заголовок Server» в этой статье).

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

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

2.5. Домен приложения, приложение

Непосредственными контейнерами веб-приложения являются приложение и домен приложения (Application Domain, AppDomain). Зачастую эти два понятия отождествляются, но всё-таки это немного разные вещи. Приложение – это понятие IIS, а домен приложения – из ASP.NET. Причём в общем случае в приложении может быть несколько доменов. Приложением вы можете управлять из консоли IIS, а доменом приложения – в основном программно. Так, например, перезапускается приложение из консоли. А когда мы пересохраняем web.config, то перезагружается именно домен приложения, не трогая IIS-приложение.

Более важным с практической точки зрения является то, что приложение/домен приложения является sandbox-ом для кода вашего ASP.NET-сайта (не с такой надёжной изоляцией, как в случае с пулом, но всё же). Приведу один из моих любимых вопросов, которые я задавал соискателям на собеседованиях. Пусть имеются веб-сайт-1 и веб-сайт-2, а также некая библиотека MyLib.dll, в которой определён класс My >
Рис. 7. Рисунок для задачки.


Ещё один важный момент, который хотелось бы здесь отметить. По умолчанию каждый отдельный рабочий процесс может использовать все имеющиеся на сервере процессоры/ядра, а пул приложений работает на одном рабочем процессе и, следовательно, веб-приложение работает внутри одного IIS-приложения. Тем не менее, вы можете настроить web garden, увеличив кол-во рабочих процессов на пул и, следовательно, число IIS-приложений на одно веб-приложение. Вы без труда сможете найти на просторах интернета информацию о web garden, поэтому опускаю здесь подробности. Единственное, хотелось бы предупредить, что данное средство не является инструментом увеличения производительности, т.к. по умолчанию и так используются все вычислительные мощности сервера. Наоборот, на синхронизацию работы 2+ рабочих процессов уходил «лишнее» время CPU. Делается это в основном для увеличения доступности веб-приложения. Нельзя здесь также не упомянуть о веб-ферме (web farm), как о простейшем средстве балансировки нагрузки в IIS – об этом тоже достаточно статей в Сети. Это другой пример распределённого веб-приложения. Впрочем, с тем же nginx встроенная балансировка нагрузки в IIS конкуренции не выдерживает, и в реальных высоконагрузочных системах вам придётся изобретать свой велосипед или задействовать продукты сторонних производителей.

3. Что дальше?

Дальше нужно разбираться в работе модулей (в терминах IIS) и событийной модели, в которых уже происходит собственно обработка запроса, о чем упоминалось в разделе 2.4. Вообще говоря, эта тема заслуживает отдельной статьи, на которую, боюсь, меня уже не хватит. Но без этого нельзя сказать, что мы рассмотрели весь конвейер обработки запросов. Поэтому кратко пройдёмся здесь по основным моментам, которые любопытствующий читатель может проработать самостоятельно.

Как отмечалось выше в разделе 2.4 модули IIS содержатся внутри рабочего процесса. Через них последовательно пропускается запрос (в отличие от HttpHandler-ов). Их набор и порядок определяется конфигурацией сервера и/или конкретного веб-приложения. Модули предназначены для отдельных, узконаправленных задач, таких как авторизация, кэширование, кастомное логгирование, сжатие, возврат статического контента и, конечно же, формирование HTML-страниц по заданному URL.

ASP. Основы. Объекты и компоненты. Доступ к базам данных

Dynamic HTML представляет собой основное средство программирования клиента для Microsoft Internet Explorer 4.0 и выше, но такие программы просмотра Web, как Netscape Navigator, не поддерживают Dynamic HTML. На самом деле очень малая часть функциональности клиентской части, поддерживаемой различными программами просмотра, может рассматриваться как действительно кросс-платформенная.

Если Вы хотите разработать Интернет-узел, открытый для доступа самым различным программам просмотра, то должны перенести программирование с клиента на сервер. Такую возможность предоставляют Microsoft ASP (Active Server Pages — активные серверные страницы). По сути ASP не что иное, как сценарий на VBScript, который исполняется на сервере. Когда запрашивается страница, этот сценарий порождает HTML-текст. Это ключевая особенность ASP — клиент никогда не видит вашего кода, а только результирующий HTML, который воспринимает любая программа просмотра.

Листинг 4.1 демонстрирует простую ASP-страницу, которая создает приветствие в соответствии со временем суток. В нем текущий час определяется при помощи кода Hour(Now), где Now — функция VBScript, возвращающая текущий момент времени и дату. Если текущий час меньше 12, то приветствие задается в форме «Доброе утро!» От полудня до шести вечера сообщение имеет вид «Добрый день!», а после шести — «Добрый вечер!»

Листинг 4.1.Простой пример ASP.

Simple ASP Example

11 And Hour(Now) 17 Then

strGreeting = «Добрый вечер!»

Обратите внимание на код в листинге, окруженный специальными символами: угловыми скобками и знаками процента ( ). Такие символы означают, что это серверный код, который выполняется перед тем, как страница будет на самом деле послана программе просмотра. Если бы Вы посмотрели в Internet Explorer на результирующий HTML-текст, то увидели бы следующее (в предположении, что сейчас еще не вечер, но уже не утро):

Simple ASP Example

В этом-то и состоит суть ASP. Результат исполнения кода — обыкновенный HTML! Эту страницу можно просматривать любой программой просмотра: не только Internet Explorer, но и, например, Netscape Navigator. Иными словами, ASP предоставляет разработчику подлинную платформенную независимость

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

Скорее всего, Вы будете писать свои сценарии на VBScript, но ASP поддерживает и JavaScript. В отличие от сценариев на клиентской стороне, здесь выбор языка абсолютно не создает проблем совместимости с различными программами просмотра, поскольку весь код исполняется на сервере.

А теперь обратите внимание на ту строку, где и происходит генерация HTML-текста. Здесь для вывода приветствия используется переменная:

Переменная strGreeting заключена в угловые скобки со знаками процента, как и весь остальной серверный код, но, кроме того, ей предшествует знак равенства. Такая конструкция играет важную роль в ASP, указывая, что в данное место HTML-страницы нужно вставить текущее значение этой переменной.

Объекты и компоненты.На самом простом уровне создание ASP-страницы — это ни что иное, как написание серверного кода для получения ожидаемого результата. Но VBScript не является полнофункциональным языком и, как только Вы приступаете к построению более сложных страниц, его выразительных средств начинает не хватать. Так, в VBScript нет встроенных функций доступа к данным; не умеет он и открывать текстовые файлы. Собственно говоря, в VBScript отсутствуют какие-либо встроенные средства доступа к каким бы то ни было внешним источникам данных. Так как же в таком случае при помощи ASP выполняются такие сложные действия, как доступ к данным? Ответ будет таким: нужно дополнить VBScript объектами и компонентами ASP.

ASP-объекты и компоненты — это не что иное, как компоненты ActiveX, подобные обычным DLL ActiveX, с которыми Вы наверняка работали в Microsoft Visual Basic. Различие между объектами и компонентами ASP состоит в том, каким образом они появляются в программе. ASP-объекты — это элементы управления ActiveX, которые в коде на VBScript доступны всегда: их не нужно создавать явно. В число объектов ASP входят Application, Session, Request, Response и Server. А вот ASP-компоненты представляют собой DLL, существующие вне структуры ASP. Эти компоненты могут быть написаны на любом языке, а некоторые по­лезные ASP-компоненты просто поставляются в комплекте с Visual InterDev. ASP-компо­ненты нужно явно создавать в коде. ASP поддерживает компоненты Database Access, File Access, Browser Capabilities, Ad Rotator и Content Linking.

Файл GLOBAL.ASA.Одна из главных трудностей разработчика для Интернета, независимо от того, какую технологию он использует, состоит в том, как сложно создать в Интернете настоящее приложение. Взаимодействие программы просмотра и Web-сервера представляет собой по сути лишенную состояния транзакцию, в ходе которой сервер посылает клиенту Web-страницу и затем забывает о его существовании. Когда клиент запрашивает другую Web-страницу, сервер ничего не помнит о предыдущем запросе. Коренная проблема для всех Web-приложений такова: как показать, что это именно приложение?

Определить приложение в среде Microsoft Windows довольно просто. Приложение запуска­ется двойным щелчком значка и завершается, когда в меню File выбран пункт Exit. В проме­жутке между двумя этими событиями данные хранятся в переменных. Но для Интернет-при­ложений это не так. Как определить, когда приложение начинается, а когда заканчивается? Можно сказать, что приложение начало работу, если пользователь зашел на узел и просмат­ривает одну из его страниц. Но что если он переходит к другому узлу, а через пять минут возвращается? Приложение все еще активно? А если пользователь отсутствовал час или два?

Проблема определения моментов запуска и завершения приложения оказывает серьезное влияние на правильное управление переменными и последовательностью выполнения. К счастью, ASP предлагает решение. Оно состоит в том, что для определения начала и завер­шения — как всего приложения, так и отдельных пользовательских сессий — используется специальный файл под названием GLOBAL.ASA. На этот файл возложено реагирование на четыре ключевых события узла: Application_OnStart (запуск приложения), Application_OnEnd (завершение приложения), Session_OnStart (начало сессии) и Session_OnEnd (завершение сессии). В листинге 4.2 приведен типичный файл GLOBAL.ASA.

Листинг 4.2.Файл GLOBAL.ASA.

Для обозначения разделов сценария GLOBAL.ASA содержит теги

Хотя GLOBAL.ASA отмечает начало и завершение приложения при помощи событий, оста­ется неясным, что же все-таки составляет собственно приложение. Одна из рабочих форму­лировок, предложенная Microsoft, определяет Интернет-приложение как виртуальный ката­лог со всеми его файлами. Если пользователь запрашивает Web-страницу из виртуального каталога под названием Bookstore, то тем самым он запускает приложение Bookstore, и в GLOBAL.ASA возбуждаются события Application_OnStart и Session_OnStart.

Согласно этому определению с приложением одновременно могут работать несколько про­грамм просмотра. Но событие Application_OnStart происходит только один раз: когда первый пользователь запрашивает Web-страницу из виртуального каталога. Когда затем страницы из этого ката­лога запрашивают другие пользователи, возбуждается только событие Session_OnStart.

В то время как приложение может относиться к нескольким программам просмотра, обра­щающимся к одному и тому же множеству Web-страниц, сессия касается какой-то одной программы просмотра, обращающейся к тем же Web-страницам. Для конкретной программы просмотра сессия длится, пока программа продолжает запрашивать страницы виртуального каталога. Если же пользователь не запрашивает Web-страницы (из данного виртуального каталога) на протяжении 20 минут (по умолчанию), сессия завершается, и возбуждается событие Session_OnEnd. Когда в данном виртуальном каталоге завершаются все сессии, возбуждается событие Application_OnEnd.

В качестве примера рассмотрим следующий сценарий. Два пользователя намереваются посе­тить на Web-узле приложение Magazine. Пользователь 1 оказывается проворнее и быст­ренько запрашивает Web-страницу DEFAULT.ASP. Тут же возбуждаются события Application_OnStart и Session_OnStart. Буквально пятью минутами позже к приложению обращается пользователь 2. Поскольку пользователь 1 как-то проявлял себя в течение последних 20 минут, приложение Magazine активно. Следовательно, возбуждается только событие Session_OnStart, сигнализируя о начале новой сессии. Кроме того, теперь для завершения приложения необходимо, чтобы завершились обе сессии.

В течение следующих 15 минут пользователь 1 не запрашивает ни­каких страниц приложе­ния Magazine. Поскольку он не проявлял активности на протяжении 20 минут, ASP приходит к выводу, что пользователь 1 закончил свою работу с приложением, и возбуждает событие Session_OnEnd. Но приложение все еще активно, поскольку в течение последних 20 минут к нему обращался пользователь 2.

Пользователь 2 работает с приложением еще час, то и дело запрашивая новые Web-страницы. Но в конце концов он отключается, а через 20 минут после того, как он покинул узел (точнее, в последний раз запросил Web-страницу приложения), возбуждается событие Session_OnEnd. Поскольку пользователь 2 был последним пользователем данного приложения, оно завершается, и возбуждается событие Application_OnEnd.

В ASP есть несколько встроенных объектов, которые доступны разработчику. Эти объекты помогают управлять многими вещами: от переменных, до передачи форм. Работать с ними легко, они вызываются из кода напрямую без какого-то особого синтаксиса.

Объект Application.Объект Application (приложение) позволяет создавать переменные приложения (application variables) — переменные, доступные всем пользователям данного приложения. Все, кто обращается к Web-страницам данного виртуального каталога, могут совместно использовать любую переменную приложения определенную для этого каталога.

В листинге 4.3 приведен пример программы, которая использует Объект Application. В нем переменная приложения служит для отслеживания времени последнего обращения к страницам приложения.

Листинг 4.3.Объект Application.

Эта страница последний раз посещалась:

Создание переменной приложения сводится к адресации объекта Application именем новой переменной, которую вы хотите создать. Например, следующий код создает новую переменную приложения с именем Company и присваивает ей значение NewTech.

Имя может быть произвольным, а переменная может содержать любую информацию, будь то число или текст.

Поскольку такие переменные доступны нескольким пользователям одновременно, вы не сможете гарантировать, что два пользователя не попытаются одновременно присвоить одной и той же переменной разные значения. Для разрешения подобных коллизий объект Application поддерживает методы Lock и UnLock. Метод Lock блокирует весь объект Application, а не только переменную, вы хотите изменить, поэтому сразу же после изменения значения переменной разблокируйте объект:

Несмотря на то, что переменные приложения пригодны для временного хранения данных, их нельзя использовать для долговременного хранения. Все данные в переменных приложения уничтожаются, когда происходит событие Application_OnEnd. Так что, если вы хотите, чтобы они сохранились после завершения приложения, позаботьтесь о их переносе в файл или базу данных.

Объект Session.Зачастую разработчиков меньше интересуют данные, совместно используемые несколькими пользователями, зато гораздо больше — данные, связанные с конкретным пользователем. ASP поддерживает переменные для индивидуального пользователя при помощи объекта Session (сессия), который позволяет создавать переменные сессии (session variables).

Листинг 4.4 демонстрирует, как определить несколько переменных сессии в файле GLOBAL.ASA. Само по себе их определение так же просто, как и в случае переменных приложения. Все, что нужно сделать — это адресовать объект Session именем переменной, которую вы хотите создать. Основное различие между переменными этих объектов — их области видимости. Переменные сессии предназначаются для одного пользователя и живут, пока пользователь поддерживает сессию. Как только в течение 20 минут (по умолчанию) пользователь не обращается к страницам данного виртуального каталога, данные пропадают.

Листинг 4-..Создание переменных сессии.

Переменные сессии можно создавать на любой Web-странице или в файле GLOBAL.ASA, а доступны они на любой Web-странице приложения, в котором эти переменные были первоначально созданы. Получить значения переменных сессии можно, считывая их из объекта Session. Следующий фрагмент кода считывает переменные сессии, созданные в листинге 4.4, и выводит их в полях ввода:

Ранее мы определили Интернет-приложение как лишенные статуса транзакции между Web-сервером и программой просмотра. Как же тогда ASP запоминает переменные сессии для каждого пользователя приложения? Ответ будет таким: эти переменные сохраняются на сервере для каждого клиента. Программа просмотра получает от сервера уникальный идентификатор, позволяющий определить, какой набор переменных кому принадлежит. Клиент этот идентификатор (Globally Unique Identifier, GUID) сохраняет, а впоследствии посылает серверу и получает именно ему предназначенные данные. Таким образом каждый клиент может иметь свой набор данных в каждом Интернет-приложении.

Осталось сказать, что для установки или считывания впемени жизни сессии (в минутах) применяется свойство Timeout объекта Session:

Объект Request.Для передачи данные клиенту создается Web-страница, а для передачи данных в обратном направлении программа просмотра использует отправку формы (form submission). В форме содержатся текстовые поля, переключатели и т.п. Клиент размещает введенные данные в этих полях и пересылает пакет серверу. Процессом передачи формы управляют два атрибута тега

Элемент формы с типом SUBMIT — это кнопка, нажатие которой пользователем заставляет программу просмотра упаковать данные формы и отправить их. Формат пересылки данных определен строго и сервер знает, чего ожидать от клиента. Данные имеют вид пар Поле=Значение,отсылаемых серверу в формате открытого текста. Если в предыдущем примере ввести в поле Name NewTech и info@newtech.com в поле Email, то сценарию DATA.ASP будет послан следующий текст:


На сервере эти данные можно вновь разобрать по полям и использовать в любых целях. Вот тут-то и нужен объект Request. Он используется в ASP для разбора полученных от клиента данных. Для работы с объектом Request просто сообщите ему имя поля, значение которого хотите получить, и объект вернет вам это значение. Например, следующий код вернет вам значение поля Name:

Request.Form применяется, когда данные были отправлены методом POST и именно этому сценарию. Если для отправки данных используется метод GET или сценарий вызывается с передачей параметров прямо в гиперссылке

то для разбота данных применяют свойство Request.QueryString, который работает так же, как Request.Form. Следующий фрагмент кода вернет значение поля Name из гиперссылки:

Другое свойство — Request.Cookies используются для извлечения информации из кукисов (cookies), отосланных вместе с запросом строке пользовательского агента программы просмотра. А листинг 4.5 демонстрирует применение свойства ServerVariables для определения имени компьютера, с которого клиент вызвал сценарий.

Листинг 4.5.Определение компьютера пользователя.

Вы вошли с компьютера

Переменные сервера представляют широкий круг информации о клиенте и Web-сервере. Доступ к каждой конкретной переменной сводится к чтению соответствующей переменной.

Объект Response.Этот объект управляет содержимым страницы, которую ASP возвращает программе просмотра. Фактически в комбинации знак равенства представляет собой сокращенное обозначение метода Write объекта Response. Так что следующие две строки кода эквивалентны:

Поскольку объект Response используется очень часто, такое сокращение оправдано.

Полезное свойство объекта Response — Expires. Оно задает время (в минутах) за которое страница устаревает. Если установить его в нуль, то страница будет устаревать в момент загрузки и Internet Explorer не будет ее кэшировать. Кэширование сильно влияет на разработку и может привести к тому, что приложение будет функционировать неправильно. IE кэширует страницы двумя способами: на диске и в памяти. Рассмотрим такой фрагмент кода, показывающий текущее время и дату:

Когда IE запрашивают страницу с этим кодом, на сервере выполняется сценарий, и на странице появляется текущее время. Однако, если программа просмотра переходит к другой странице, а затем возвращается к этой, со временем, то время не изменится, поскольку IE не запрашивает ее повторно. В листинге 4.6 приведена исправленная версия примера, устаревающая уже в момент загрузки.

Листинг 4.6.Страница, устаревающая уже в момент загрузки.

Forcing a Page to Expire

Еще один полезный метод объекта Response — Redirect, перенаправляющий программу просмотра на указанный URL:

Объект Server.Объект Server (сервер) представляет собой в некотором роде свалку — в том смысле, что предоставляемые им функции никак не связаны между собой, за тем исключением, что все они полезны разработчику для Интернета. Пожалуй, самая важная из всех функций объекта Server — это метод CreateObject, который создает экземпляр компонента ActiveX. Причем это может быть как встроенный компонент, входящий в комплект поставки, так и тот, который написали Вы сами на любом языке. В любом случае использование компонента ActiveX на сервере требует вызова метода CreateObject.

Аргументом метода CreateObject служит ProgID (программный идентификатор) требуемого компонента ActiveX. ProgID — это содержательное имя компонента, такое как Excel.Sheet или Word.Basic. Следующая строчка показывает, как при помощи CreateObject создать экземпляр компонента с ProgID Excel.Sheet.

Set MyObject = Server.CreateObject(«Excel.Sheet»)

Другим полезным методом объекта Server является MapPath, возвращающий фактический путь, соответствующий заданному виртуальному каталогу.

Компоненты ASP — это на самом деле просто компоненты ActiveX, наподобие тех, что Вы можете сами создать на Visual Basic или Visual C++. Но эти компоненты написаны Microsoft и поставляются вместе с Visual InterDev. Они предназначены для выполнения полезных для Web-узлов задач общего характера, включая доступ к данным. Создать их на своей странице Вы можете при помощи метода CreateObject объекта Server, а как только они созданы, смело обращайтесь к их свойствам и методам для выполнения нужных Вам задач.

Компонент ActiveX Data Objects.Самым полезным изо всех компонентов ASP следует признать компонент доступа к базам данных, называемый также ActiveX Data Objects, или сокращенно ADO. Он и содержащиеся в нем объекты применяются для чтения и записи данных в источники данных ODBC при публикации в Web информации из баз данных.

Объект Connection (подсоединение) создается методом CreateObject объекта Server, и ссылка на него помещается в переменную. Когда объект создан, его можно использовать для открытия подсоединения к любому источнику данных ODBC. Следующий фрагмент кода устанавливает подсоединение к источнику данных ODBC с названием Publications:

‘ Создаем объект Connection

Set objConnection = Server.CreateObject(«ADODB.Connection»)

‘ Открываем подсоединение к источнику данных

objConnection.Open «Publications», «sa», «» %>

Здесь objConnection — переменная для объектной ссылки на экземпляр объекта Connection. Метод Open устанавливает подсоединение, принимая в качестве аргументов имя источника данных, идентификатор пользователя и пароль.

Когда подсоединение установлено, получать информацию из источника данных можно при помощи объекта Recordset (набор записей). Этот объект умеет выполнять оператор SELECT языка SQL и возвращать набор записей, удовлетворяющих этому запросу. Как и объект Connection, Recordset создается методом CreateObject. В следующем примере программа выполняет оператор SELECT над источником данных, представленным переменной objConnection:

После того, как записи получены, для передвижения по ним можно обращаться к методам MoveFirst, MoveLast, MoveNext и MovePrevious. Затем метод Write объекта Response помещает данные на Web-страницу, которая и посылается программе просмотра. В листинге 4.7 приведен полный пример ASP-страницы, которая строит список пользователей, со­держащихся в источнике данных Data.

Листинг 4.7.Построение списка при помощи ADO.

Одна из основных задач в управляемом данными Web-приложении — управление информацией в объекте Recordset. Очень часто простой запрос возвращает гораздо больше данных, чем имеет смысл показывать. Давайте, например, посмотрим, что происходит, когда Вы обращаетесь к какой-либо поисковой системе в Интернете. Поисковая машина, получив ключевое слово, возвращает ссылки на узлы, где это ключевое слово встречается. Но зачастую обнаруживаются тысячи узлов, содержащих данное ключевое слово. Совершенно очевидно, что показать все эти узлы на одной Web-странице совершенно невозможно.

Выход состоит в разбиении на страницы (paging). Этот механизм реализован во всех поисковых системах для передачи за один раз некоей порции результатов запроса, скажем, из 10 записей. Теперь пользователь может эффективно работать с полученной информацией. Поддерживает разбиение на страницы и ADO — посредством нескольких свойств объекта Recordset: PageSize, PageCount и AbsolutePage.

При получении набора данных можно указать, что записи следует разбить на страницы. Количество строк набора данных, составляющих страницу, задается значением свойства PageSize. Затем можно определить общее количество страниц в наборе данных посредством свойства PageCount. А доступ к заданной странице обеспечивает свойство AbsolutePage.

В листинге 4.8 приведен полный пример, в котором пользователь может просматривать 10 записей за раз. Переменная сессии CurrentPage отслеживает текущую страницу. Пользователь может перейти к предыдущей порции данных или к следующему набору из 10 записей, выбрав одну из двух гипертекстовых ссылок на странице.

Листинг 4.8.Разбиение набора данных на страницы средствами ADO.

Запуск ASP на вашем компьютере

Вы можете запустить ASP на вашем компьютере.

Ваш ПК с Windows в качестве веб-сервера

  • Ваш собственный компьютер может выступать в качестве веб-сервера, если вы установите IIS или PWS
  • IIS или PWS превращает ваш компьютер в веб-сервер
  • Microsoft IIS и PWS компоненты бесплатный веб-сервер

IIS — Internet Information Server

IIS представляет собой набор интернет-сервисов для серверов, созданных Microsoft для использования с Microsoft Windows.

IIS поставляется с Windows 2000, XP, Vista и Windows 7. Она также доступна для Windows NT.

IIS проста в установке и идеально подходит для разработки и тестирования веб-приложений.

PWS — Personal Web Server

PWS для старой системы Windows, как Windows 95, 98 и NT.

PWS проста в установке и могут быть использованы для разработки и тестирования веб-приложений, в том числе ASP.

Мы не рекомендуем использовать PWS что-нибудь еще, чем обучение. Он устарел и имеет проблемы с безопасностью.

Версии Windows Web Server

  • Windows 7 (all editions) поставляются с IIS 7.5
  • Windows Vista Business, Enterprise и конечной приходят с IIS 7
  • Windows Vista Home Premium поставляется с IIS 7
  • Windows Vista Home Edition не поддерживает PWS или IIS
  • Windows XP Professional поставляется с IIS 5.1
  • Windows XP Home Edition не поддерживает IIS или PWS
  • Windows 2000 Professional поставляется с IIS 5.0
  • Windows NT Professional поставляется с IIS 3, а также поддерживает IIS 4
  • Windows NT Workstation поддерживает PWS и IIS 3
  • Windows ME не поддерживает PWS или IIS
  • Windows 98 поставляется с PWS
  • Windows 95 поддерживает PWS

Как установить IIS на Windows 7 и Windows Vista

Выполните следующие действия для установки IIS:

  1. Откройте панель управления из меню Пуск
  2. Дважды щелкните Программы и компоненты
  3. Нажмите «Turn Windows features on or off» для «Turn Windows features on or off» (a link to the left)
  4. Установите флажок для Internet Information Services (IIS) и нажмите кнопку ОК

После установки IIS, убедитесь, что вы установили все патчи для ошибок и проблем безопасности. (Run Windows Update) .

Как установить IIS на Windows XP и Windows 2000

Выполните следующие действия для установки IIS:

  1. В меню Пуск выберите пункт Параметры и выберите Панель управления
  2. Дважды щелкните значок Установка и удаление программ
  3. Нажмите кнопку Добавить / Удалить компоненты Windows
  4. Нажмите Internet Information Services (IIS)
  5. Нажмите кнопку Подробности
  6. Установите флажок для World Wide Web Service, и нажмите кнопку ОК
  7. При выборе компонентов Windows, нажмите кнопку Далее, чтобы установить IIS

После установки IIS, убедитесь, что вы установили все патчи для ошибок и проблем безопасности. (Run Windows Update) .

Проверьте свой веб

После установки IIS или PWS выполните следующие действия:

  1. Ищите новую папку под названием Inetpub на жестком диске
  2. Откройте папку Inetpub, и найти папку с именем wwwroot
  3. Создать новую папку, например «MyWeb» под Wwwroot
  4. Пишут некоторый ASP — код и сохраните файл как «test1.asp» в новой папке
  5. Убедитесь , что веб — сервер работает (see below)
  6. Откройте браузер и введите «http://localhost/MyWeb/test1.asp» , чтобы просмотреть первую веб — страницу

Note: Посмотрите на IIS (or PWS) символ в вашем стартовом меню или панели задач. Программа имеет функции для запуска и остановки веб-сервера, отключить и включить ASP, и многое другое.

Как установить PWS на Windows 95, 98 и Windows NT

Для Windows 98: Откройте Add-ons папку на компакт — диске Windows, найдите PWS папку и запустите setup.exe для установки PWS.

Для Windows 95 или Windows NT: Скачать «Windows NT 4.0 Option Pack» от Microsoft, и установить PWS.

Илон Маск рекомендует:  Что такое код isgraph
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Внимание!