Asp введение в active server pages


Содержание

Asp введение в active server pages

ASP — это активные серверные страницы для Internet Information Services, ту бишь сервера IIS. Задумка от Мелкомягких. С ней умеют работать все окошки начиная с XP Pro и так далее. Для программирования с ASP используется VBS (Visual Basic Script) и JS (JScript). Понять эти скрипты сможет даже домохозяйка. Скрипты встраиваются в HTML страницу (HyperText Markup Language), а запросы ASP интерпретируются и выполняются на стороне сервера. ASP поддерживает связь с COM-компонентами и это может существенно сэкономить тебе время. Например, если тебе нужно написать программу для обработки каких-нибудь рисунков, а ты даже ещё и не начал разбираться в этой области, не паникуй, подключи нужный COM-компонент и вызывай его уже готовые функции там, где тебе это необходимо.

Наверное, ты уже сейчас думаешь, — «а на кой мне этот ASP дался?». И ты прав, ведь есть PHP, который уже давно служит народу. Это факт что php обычно работает быстрее asp, но скорость никогда не была сильной стороной Microsoft. Зато в работе с MS SQL ASP справляется намного быстрее, что определяет его применение в БД небольших предприятий. И не забудем сказать спасибо Билли за IIS, ведь это очень удобная штука. На нем можно тестить как php так и asp сразу. [p]Итак, как установить и настроить сервер IIS на твоей машинке? Здесь всё просто, заходим в «ПУСК» >> «Панель управления» >> «Установка и удаление программ» >> «Установка компоненков Windows» >> и ставим галочку на «Intenet Information Services (IIS)». После нажатия на кнопку «готово», всё действительно готово :) Это можно проверить если набрать в ослике http://localhost или http://127.0.0.1, он послушно откроет страницу http://localhost/iisHelp//iis/misc/default.asp. А чтобы IIS стал работал с твоим ASP файлом, его необходимо разместить в папку ..\Inetpub\wwwroot.

Вообщем то, всё готово. Эм.. Опробуем? Создадим в блокноте файл, назовем его test.asp, запишем в него:

Как ты уже успел заметить, синтаксис ASP похож на языки высокого уровня. И это не случайно, ведь сам ASP языком программирования не является, это внутренняя техноголия, позволяющая подключать программы к web-страницам. Что мне очень нравится в ASP так это то, как просто к нему подключаются БД. Ты ведь уже знаешь с чем «едят» БД Microsoft Access? Тогда давай научимся подключать их к web-страницам при помощи ASP. Итак, нам понадобится Бд Access, создадим её и назовем «UIN». Создадим в ней таблицу «uins» с полями «uin»[тип-числовой] и «price»[тип-числовой]. Не забудь сохранить файл в каталоге wwwroot и теперь создавай файл ASP:

Этого вполне хватит, для открытия своего маленького магазинчика по продаже UIN’ов. Но это уже совсем другая история :)

Технология активных серверных страниц ASP

ASP (англ. Active Server Pages — «активные серверные страницы») — технология, предложенная компанией Microsoft для создания Web-приложений в 1996 году вместо провалившегося проекта Dynamic HTML, в котором была сделана попытка «динамизировать» web-страницы за счет модернизации HTML, внедрением в него «динамических тэгов», то есть тэгов, имеющих алгоритмические свойства наподобие объектов в ООП. Но появление JavaScript от корпорации Netscape сделало это бессмысленным.

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

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

Для реализации приложений ASP используются языки сценариев (VBScript или JScript). Также допускается применение COM-компонентов.

Технология ASP разработана для операционных систем из семейства Windows NT/Server и функционирует под управлением веб-сервера Microsoft IIS.

Технология ASP получила своё развитие в виде ASP.NET — технологии создания веб-приложений, основанной уже на платформе Microsoft .NET.

Синтаксис

Страница на ASP — это обычная страница HTML, со вставками, обозначенными ограничителями :

То что находится внутри ограничителей — это текст программы, интерпретируемый при запросе страницы. VBScript является языком по умолчанию, хотя возможно использование и JScript[источник не указан 1108 дней] (или любого другого языка, если установлен соответствующий интерпретатор):

Версии

ASP в своём развитии прошёл через несколько версий:

  • ASP 1.0 (распространяется с IIS 3.0) в декабре 1996 года.
  • ASP 2.0 (распространяется с IIS 4.0) в сентябре 1997 года.
  • ASP 3.0 (распространяется с IIS 5.0) в ноябре 2000 года.

Apache::ASP

Apache::ASP (англ.) предоставляет функциональность ASP на основе веб-сервера Apache, со скриптами на основе Perl.

ASP в Sambar Server

На сервере Sambar Server используется функциональность ASP, которая использует язык CScript в качестве основного языка программных вставок.

Обзор технологии Active Server Pages (ASP)

Сергей Верязов, Microsoft Special Interest Group «Neva»

Active Server Pages это среда программирования, которая обеспечивает возможность комбинирования HTML, скриптов и компонент для создания динамических Web-приложений. Возможность встраивания в Web-страницы скриптов (кода, написанного на языке программирования, например, VBScript или JScript) позволяет логичным образом объединить оформление с данными, полученными из различных источников, например, из БД.

Идеология создания современных Web-приложений заключается в инкапсуляции бизнес-логики в отдельные компоненты, написанные по технологии COM. Технология ASP в данном случае является связующим звеном между этими компонентами и интерфейсом Web-приложения.

Принципы функционирования

Использование Active Server Pages как бы не требует специфичных браузеров, но требует включения небезопасного ActiveX. Все ASP-скрипты запускаются и выполняются на Web-сервере, причем брaузер получает только результирующие HTML-файлы. Microsoft Internet Information Server, начиная с версии 3.0, поддерживает Active Server Pages.
Рассмотрим последовательность функционирования ASP. Клиент запрашивает ASP-страницу на Web-сервере. Сервер принимает запрос и начинает его обрабатывать. По расширению файла (.asp) определяет, что данный файл содержит ASP-скрипт, и начинает анализировать его содержимое, последовательно интерпретируя и выполняя вставки ASP-кода. ASP-код, в свою очередь, может содержать обращения к различным источникам данных, осуществлять обработку полученных данных и добавлять содержимое генерируемой страницы. В результате формируется обычная HTML-страница (уже не содержащая ASP-кода), которая и отправляется обратно клиенту.

Внешне ASP функционирует также, как CGI. Аналогичным образом передаются параметры (формат-строки запроса) и осуществляется вывод результатов. Однако производительность ASP оказывается гораздо выше, т. к. при каждом запросе не происходит отдельной загрузки ASP-интерпретатора. Использование компонент ActiveX также значительно повышает производительность Web-сервера.

Описание синтаксиса

ASP-код, который нужно выполнить на сервере, размещается внутри специальных тегов . Так как данный код обрабатывается на сервере, он не доступен пользователю. Сам код может быть написан с использованием Visual Basic Scripting Edition (VBScript) или JScript (JavaScript). Технология ASP позволяет использовать и другие языки программирования. По сути, нужно говорить не о синтаксисе ASP, а о том языке, который используется для написания ASP-кода. Синтаксис VBScript намного проще других языков, поэтому новичку будет легко в нем разобраться.

Объекты и компоненты

VBScript не является полнофункциональным языком программирования и использования встроенных в него средств явно недостаточно. Поэтому в ASP-страницах используются специальные объекты и компоненты ActiveX.

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

  • Объект Application позволяет создавать переменные, доступные всем пользователям Web-приложения.
  • Объект Session позволяет сохранять данные, связанные с отдельным пользователем.
  • Объект Request предоставляет параметры CGI-запроса, отправленные методом POST 99или GET.
  • Объект Response предоставляет методы для добавления информации, а также для формирования заголовков страницы ответа Web-сервера.
  • Объект Server содержит множество различных методов, одним из которых является метод CreateObject, позволяющий создавать экземпляры компонент ActiveX.

В отличие от встроенных ASP-объектов, ASP-компоненты явно необходимо создавать в коде скрипта. Существует огромное количество ActiveX-компонент, которые можно использовать в ASP-страницах, причем большинство из них распространяются бесплатно. Более того, разработчик может сам создавать ActiveX-компоненты в любой среде программирования, поддерживающей COM-технологию, например, Visual C++ или Visual Basic.

Следует уделить особое внимание объектам ADO (ActiveX Data Objects), которые представляют собой мощные интегрированные средства для создания приложений для работы с БД. Компоненты ADO обеспечивают быстрый и удобный интерфейс к БД на самом высоком уровне, при этом сохраняется переносимость разрабатываемых приложений для работы с другими БД. Использование компонент ADO значительно упрощает работу программиста, ему остается лишь правильно составить SQL-запросы к БД и позаботиться о выводе результатов.

В рамках функционирования Web-приложения существует возможность создания обработчиков основных событий, таких как запуск и остановка Web-приложения, а также открытие и закрытие пользовательской сессии. Эти события описываются в специальном ASP-файле global.asa. Обработчики данных событий можно использовать для инициализации объектов или установки значений глобальных переменных.

Средства разработки

Создавать ASP-страницы можно в любом текстовом редакторе, но это далеко не всегда удобно. Помимо написания кода на VBScript, необходимо осуществлять его отладку, что возможно только на функционирующем Web-сервере (IIS) и при наличии специальных средств.

Microsoft Visual InterDev 6.0 (входящий в состав Microsoft Visual Studio) является одним из лучших средств, которое позволяет не только быстро и эффективно создавать ASP-код, но и осуществлять расширенную отладку кода. Основные особенности этого продукта:

  • Просмотр списка используемых объектов, и возможность быстрого написания кода.
  • Подсветка синтаксиса кода (VBScript и JScript).
  • Автоматическое формирование содержимого global.asa.
  • При запуске в режиме отладки InterDev автоматически настраивает Web-сервер (IIS) в нужный режим, а по окончании отладки восстанавливает настройки.
  • Возможность установки точек прерывания (breakpoints).
  • Просмотр значений переменных (watches) и списка вызванных процедур (call stack).

Существуют также и другие специализированные редакторы, позволяющие разрабатывать ASP-приложения, например, Home Site 4.5, Macromedia UltraDev 4.0 или ASP Express. Однако эти средства не полностью охватывают возможности Visual InterDev.

Новые возможности в IIS 5.0

Последняя версия Web-сервера Internet Information Server (IIS) 5.0 значительно усовершенствована, благодаря чему повышена надежность и производительность ASP-приложений. Встроенные объекты ASP в Windows 2000 обладают новыми методами, которые расширяют возможности разработчика.
Появились новые средства обработки ошибок. С помощью нового объекта AppError теперь можно получать сведения об ошибках, происходящих как на стадии выполнения, так и на стадии разбора страницы.

В новой версии ядра управления сценариями Script Engine из состава Windows 2000 появились новые мощные средства поддержки языков VBScript и JScript. В сценариях на VBScript теперь можно пользоваться средствами проверки и разбора сложных выражений, а также создавать классы.
Средства доступа к данным также претерпели значительные изменения теперь в составе ОС поставляется ядро MDAC 2.5, которое, в частности, обеспечивает интеграцию со средствами XML.

Поддержка других языков программирования

Наравне с Visual Basic Scripting Edition (VBScript), IIS поддерживает обработку JScript (JavaScript). Вы можете использовать все те же объекты, при этом меняется только синтаксис связующих конструкций.
Преимущество технологии ASP в том, что она позволяет использовать и другие языки программирования. Для их поддержки необходимо установить соответствующие модули Script Engine. Например, поддержку языка Perl (а точнее ActivePerl) можно осуществить с помощью модуля от компании ActiveState (http://www.activestate.com/). Также существуют модули для поддержки REXX и Python.
Существуют продукты сторонних компаний, поддерживающие технологию ASP на других платформах. Например, Chili!Soft ASP, компании Chili!Soft, Inc., (http://www.chilisoft.com/) обеспечивает поддержку ASP на множестве Web-серверов, таких как: Apache, Lotus, Netscape, OReilly, которые могут функционировать под управлением различных ОС.

Достоинства и недостатки

Язык VBScript, обычно используемый в ASP, имеет менее удобный синтаксис, чем другие языки, например язык PHP. Однако основной недостаток VBScript — неприемлемо снижающаяся безопасность клиента, а в связке с ActiveX — практически нулевая. Не является компенсацией этого и то, что производительность интерпретатора VBScript значительно выше, чем PHP.

JScript от Microsoft лишен этого недостатка, но имеет другой, более серьёзный — неприятную обработку типов данных OLE Automation, что приводит к скрытым, трудным в обнаружении ошибкам.

ASP может использовать очень довольно набор классов для работы с SQL базами данных — ADO, который примерно аналогичен Perl DBI и лучше, чем вызовы mysql_xxx в PHP. Однако технология ADO тоже устарела.

ASP поддерживает объекты Session и Application, с которыми в PHP/Apache традиционно есть огромные сложности, связанные с архитектурой процессов Apache 1.x (а она восходит к нелюбви к потокам в мире UNIX и использованию fork() вместо них везде, где возможно).

Однако, так как объект Session ныне считается совершенно не удовлетворяющим требованиям безопасности, и зачастую вместо него все его содержимое помещают в один огромный cookie, и передают туда-обратно между клиентом и сервером. Такое легко реализуемо в PHP, этим пользуются, например, phpBB и его коммерческий дериватив vBulletin.

. Часть 1

Ты никогда не будешь знать достаточно,
если не будешь знать больше, чем достаточно.
Уильям Блейк

Введение

Еще совсем недавно, когда Интернет являл собой лишь роскошь для избранных, профессия разработчика интерактивных Web-приложений была сродни профессии шофера в начале XX века или космонавта — в середине века. Как и в большинстве профессий, поначалу был просто врач, просто инженер, просто разработчик гипертекстовых страниц. В настоящее время уже довольно сложно разобраться во всевозможных профессиях, связанных с Интернетом, и инструментах для решения самых различных Интернет-задач. Давайте попробуем разобраться в этом пестром мире средств, служащих в конечном счете для нас с вами — читателей занимательных, ярких и разнообразных страниц всемирной компьютерной сети, и рассмотрим одно из них — ASP.

Настоящая статья — попытка собрать воедино весь инструментарий, необходимый и достаточный для построения простейшего Web-интерфейса к базам данных. И хотя для простоты изложения и понимания материала рассматриваются примеры по работе с базами данных MS-Access, тем не менее, освоив их, для читателя не составит труда перейти к созданию аналогичных интерфейсов к другим базам.

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

Немного истории

Итак, проведем небольшой экскурс в историю развития и становления средств разработки содержания (content) и поведения (behavior) Всемирной паутины.

HTML (HyperText Markup Language)

HTML — язык разметки гипертекста — является приложением языка SGML (Standard Generalized Markup Language) — стандартный обобщенный язык разметки. Средствами HTML задаются синтаксис и размещение специальных встроенных указаний, в соответствии с которыми браузер отображает содержимое документа (текст, графика, мультимедиа, гиперссылки).

Базовый синтаксис HTML определяется стандартом HTML.

Говоря другими словами, HTML — язык компоновки документов и спецификации гиперссылок, используемый для кодировки документов в WWW.

Было время, когда знание HTML могло считаться необходимым и достаточным для владения профессией разработчика Web-страниц. Теперь же это только база — необходимая, но далеко не достаточная для создания подлинного интерактива (взаимодействия с читателем).

С течением времени страницы Всемирной компьютерной сети постепенно начали «оживать», если выражаться пользовательской терминологией, а по сути произошел переход от структурного предъявления гипертекстовой информации к событийному. Если быть точнее, то переходом это в полной мере называть нельзя, попросту HTML обогатился средствами динамической интерпретации, или Dynamic HTML (DHTML — Dynamic HiperText Markup Language).

DHTML (Dynamic HyperText Markup Language)

До недавнего времени информация в большинстве Web-документов была статической, что требовало реакции сервера на действия пользователя. С введением DHTML парадигма Web сместилась от взаимодействия с сервером в сторону создания интерактивных Web-узлов и Web-приложений. Основной отличительной особенностью DHTML от HTML является возможность взаимодействия DHTML-документов с пользователем на клиентском компьютере, что в значительной степени обогащает возможности создаваемых с их помощью Web-страниц и Web-приложений и в то же время сводит часть взаимодействия пользователя с сервером к взаимодействию пользователя с DHTML-документом. Таким образом, можно говорить о перенесении некоторой доли вычислений с серверной на клиентскую сторону, что, разумеется, сокращает объем передаваемой информации от клиента серверу и обратно и экономит время. Как следствие, страницы, разработанные с использованием модели DHTML, в отличие от HTML, работают значительно быстрее именно за счет снижения объема информации, передаваемой от клиента (браузера) серверу и обратно.


Языки сценариев (JavaScript и VBScript)

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

Компания Netscape разработала язык создания сценариев JavaScript, а компания Microsoft — VBScript. Эти языки используются на стороне клиента, то есть генерируют объекты на основании HTML-страницы на стороне клиента в окне его браузера.

Пример весьма полезного JavaScript сценария

Технологии Java и CGI

В 1994 году специалистами компании Sun Microsystems была разработана технология создания динамических интерактивных Web-страниц — Java. Программы на языке Java называются аплетами (little applications).

Аплеты пишутся на Java и посылаются по Web как HTML-файлы браузеру, где выполняются как HTML-документы. Существенным преимуществом Java является независимость программ от платформ, на которых программы выполняются. Хотя Java не обязательно выполняется в окне браузера, возможно создание независимых (stand-alone) Java-приложений, которые могут выполняться на компьютере независимо от Интернета.

Фактически программа на языке Java транслируется компилятором в специальный код, называемый байтовым (bytecode), а затем выполняется уже с помощью интерпретатора языка Java. Такое «разделение обязанностей» и позволяет обеспечивать полную независимость Java-кода от конечной платформы, на которой он будет выполняться. Разумеется, для каждой конкретной платформы имеется свой интерпретатор языка, называемый виртуальной машиной Java (Java Virtual Machine).

Много полезных Java-аплетов лежат здесь.

Сайт языка Java компании Sun Microsystem’s: http://java.sun.com/.

Схема исполнения аплетов коренным образом отличается от схемы выполнения CGI-скриптов. Последние, в частности, выполняются на стороне сервера, в отличие от Java-аплетов, которые выполняются, как правило, на стороне клиента.

Что же такое CGI (Common Gateway Interface), или интерфейс общего шлюза?

По сути CGI — способ взаимодействия Web-программ с браузером пользователя. Поэтому под CGI-программами понимают программы, написанные на любом языке программирования, способного выполняться на Web-сервере, включая C, C++, Visual Basic или даже командные языки операционных сред (например, C Shell). Но большинство CGI-программ пишется на языке Perl.

Perl (Practical Extraction and Report Language) является одним из наиболее гибких языковых средств, служащих для программирования интерфейсов CGI. Изначально Perl предназначался для обработки больших объемов данных и генерации отчетов по обработке этих данных (как явствует из его названия). За последние несколько лет Perl превратился в полнофункциональный язык программирования. Изначально созданный исключительно для работы под управлением операционных систем семейства UNIX, Perl теперь совместим с такими ОС, как Amiga, MS-DOS, OS/2 Warp, VMS, Windows NT, Window 95 и Macintosh.

ASP и PHP

В последнее время все большую популярность получают эти два средства создания интерактивных Web-страниц. Основным их достоинством является возможность формирования страниц на основании интерактива «клиент-сервер». Сами же программы, написанные на ASP (Active Server Pages — активные серверные страницы) и PHP (Personal Home Page), настолько просты, что программирование с их помощью доступно даже неискушенным.

Пример PHP кода определяющего версию браузера

PHP часто еще называют препроцессором гипертекста (Hypertext Preprocessor). По сути PHP серверный (выполняющийся на стороне сервера) мультиплатформный язык описания сценариев, встраиваемый непосредственно в HTML-код. В настоящее время PHP интенсивно используют более полумиллиона доменов Всемирной компьютерной сети, он распространяется на правах freeware и его можно свободно скачать с сайта разработчика www.php.net. Основу синтаксиса PHP составляют язык программирования C, Java и Perl. Целью создания языка является разработка динамически генерируемых страниц в кратчайшие сроки.

Например, если Вы создаете online-каталог, вам скорее всего понадобится разрабатывать не сами HTML-страницы, а их шаблоны, по которым PHP будет формировать HTML-страницы исходя из ваших потребностей. Традиционно этот колоссальный объем работы выполняется вручную. С помощью PHP гораздо проще организовать интерфейс к базе данных и динамическое формирование страниц.

Несмотря на то что PHP — прекрасная альтернатива ASP, мы остановимся на последнем. Сравнивая эти два средства, решающие по сути схожие задачи, следует отметить переносимость первого (PHP) в отличие от второго (ASP) и специальную «заточку» ASP под создание гибких и удобных интерфейсов к базам данных. Это включает использование ActiveX Data Objects (ADO). Колоссальная поддержка структурированного языка запросов к базам данных SQL является мощнейшим средством, используя которое разработчик может не переучиваясь, работать напрямую с базами данных привычным образом. ASP поддерживает работу со всеми базами данных, соответствующими стандарту ODBC.

Говоря простыми словами, Active Server Pages — это обычные страницы, которые содержат скрипты, выполняющиеся на сервере наряду с обычным HTML-кодом (если вы посмотрите на строку адреса в окне браузера, то заметите довольно часто встречающееся расширение .asp). Если вы когда-нибудь программировали на Perl, то начать писать на ASP не составит для вас труда, ведь принцип почти один и тот же: после того как «серверный» код обработан сервером, результирующая страница, содержащая только клиентский код (HTML, JavaScript, VBScript), посылается клиенту. Код, выполнявшийся на стороне сервера, увидеть в окне браузера невозможно — вы видите лишь результат его работы.

ASP работает как под управлением Windows NT-сервера (необходимо установить Windows NT Server и Web-сервер с поддержкой ASP — Microsoft’s Internet Information Server [IIS]), так и под управлением других операционных систем. В последнее время компания Chili!Soft разработала версии ASP для следующих операционных систем:

  • Linux (Red Hat Linux 6.2, 6.1, Suse Linux 6.4, Linux-Mandrake 7.0, Slackware Linux 7.0)
  • Windows NT
  • Solaris (Solaris 2.7, Solaris 2.6, 2.5.1)
  • AIX
  • HP-UX

ASP становится совместимым со все большим числом операционных систем.

Еще пару лет назад процесс программирования Web-серверов был отнюдь не тривиальной задачей. Написание CGI (Common Gateway Interface)-программ требовало особой осторожности и весьма высокой квалификации от программистов и администраторов, возникали сложности при отладке большинства приложений написанных на C, C++ или Perl. Когда компания Microsoft выпустила 3-ю версию своего Web-сервера (Internet Information Server), в начале 1997 года был создан принципиально новый метод написания серверных приложений.

Зачем нужен ASP

Активные серверные страницы (Active Server Pages) и HTML взаимодействуют с базами данных совершенно по-разному. Принципиальное отличие состоит в том, что на HTML-странице строка с директивой, осуществляющей прямое соединение с базой данных, расположена непосредственно в исходном коде страницы в окне браузера на стороне клиента. В ASP-странице она заменена переменной Web-приложения, которая определена в специальном файле global.asa и доступна всем ASP-страницам Web-приложения.

Чем отличается ASP от других CGI

Как известно, CGI обеспечивает способ, посредством которого Web-браузер осуществляет запуск Web-приложения на стороне сервера, результатом работы которого является HTML-страница, посылаемая клиенту. Всякий раз, когда клиент инициирует выполнение CGI-приложения, Web-сервер выполняет отдельную его копию (instance). Проблема заключается в том, что для каждого запроса клиента запускается копия Web-приложения на сервере, что резко сокращает производительность сервера при больших и средних нагрузках. Совсем иначе обстоят дела в случае использования ASP. Предположим, одно и то же приложение выполняется двумя разными клиентами. Двух приложений не существует, существуют лишь две сессии одного и того же приложения. И всякий раз, когда новым клиентом осуществляется запрос, порождается новая сессия Web-приложения.

ASP позволяет перемешивать HTML-код с программным кодом, что, в свою очередь, позволяет легко и удобно встраивать серверные программы в страницы, причем первые будут выполняться только на стороне сервера. Еще одним мощным средством является поддержка ActiveX, так как ASP является языком, обеспечивающим полную поддержку ActiveX Scripting Interface. Итак…

Введение в ASP.NET

ASP.NET — это платформа веб-приложений, разработанная и разработанная Microsoft. ASP.NET представляет открытый источник и подмножество .NET Framework и преемник классического ASP (A ctive S ервере P возрастные категории ). С версией 1.0 .NET Framework она была впервые выпущена в январе 2002 года. Поэтому возникает вопрос: какую технологию мы использовали до 2002 года для разработки веб-приложений и сервисов? Ответ классический ASP . Так что до .NET и ASP.NET был классический ASP .

ASP.NET построен на CLR (Common Language Runtime), который позволяет программистам выполнять свой код, используя любой язык .NET (C #, VB и т. Д.). Он специально разработан для работы с HTTP и для веб-разработчиков для создания динамических веб-страниц, веб-приложений, веб-сайтов и веб-сервисов, поскольку обеспечивает хорошую интеграцию HTML, CSS и JavaScript.

.NET Framework используется для создания различных приложений и сервисов, таких как Console, Web, Windows и т. Д. Но ASP.NET используется только для создания веб-приложений и веб-сервисов. Вот почему мы назвали ASP.NET подмножеством .NET Framework.

Ниже таблица иллюстрирует историю версий ASP.NET:

Год Версия
2002 1,0
2003 1,1
2005 2,0
2006 3.0
2007 3,5
2008 3.5 SP 1
2010 4,0
2012 4.5
2013 4.5.1
2014 4.5.2
2015 4,6
2015 4.6.1
2020 4.6.2
2020 4,7
2020 4.7.1

Примечание. В 2015 году появилась версия 5 RC1, которая позже отделена от ASP.NET и превращается в новый проект ASP.NET Core Version 1.0 с некоторыми улучшениями.

Что такое веб-приложение?

Веб-приложение — это приложение, установленное только на веб-сервере, доступ к которому пользователи получают с помощью веб-браузера, такого как Microsoft Internet Explorer, Google Chrome, Mozilla FireFox, Apple Safari и т. Д. Существуют также некоторые другие технологии, такие как Java, PHP, Perl. Ruby on Rails и т. Д., Которые можно использовать для разработки веб-приложений. Веб-приложения предоставляют кроссплатформенную функцию. Пользователю нужен только веб-браузер для доступа к веб-приложению. Веб-приложения, разработанные с использованием платформы .NET или ее подмножеств, должны выполняться под управлением Microsoft Internet Information Services (IIS) на стороне сервера. Работа IIS заключается в предоставлении сгенерированного HTML-кода веб-приложения клиентскому браузеру, который инициирует запрос, как показано на диаграмме ниже.

Не путайте термины ASP.NET, ядро ASP.NET, ASP.NET MVC и т. Д. ASP (Active Server Pages) поддерживает множество моделей разработки, которые заключаются в следующем:

  • Классический ASP : это первый серверный язык сценариев, разработанный Microsoft.
  • ASP.NET : это фреймворк для веб-разработки и преемник Classic ASP. ASP.NET 4.6 является последней версией.
  • Ядро ASP.NET : В ноябре 2015 года Microsoft выпустила версию ASP.NET 5.0, которая позже была отделена и известна как ASP.NET. Ядро. Кроме того, это рассматривается как важный редизайн ASP.NET с возможностью использования открытого кода и кроссплатформенности. До этой версии ASP.NET рассматривается только как версия только для Windows.
  • Веб-формы ASP.NET . Это модель приложения, основанная на событиях, которая не считается частью нового ядра ASP.NET. Они используются для предоставления серверных событий и элементов управления для разработки веб-приложения.
  • ASP.NET MVC : это модель приложения Model-View-Controller, которую можно объединить с новым ядром ASP.NET. Он используется для создания динамических сайтов, поскольку обеспечивает быструю разработку.
  • Веб-страницы ASP.NET : это одностраничное приложение, которое может быть объединено с ASP.NET Core.
  • ASP.NET API : это интерфейс программирования веб-приложений (API).

Кроме того, для создания веб-приложений ASP.NET предоставляет 3 стиля разработки: веб-страницы ASP.NET, ASP.NET MVC, веб-формы.

Почему ASP.NET?

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

Расширение .NET Framework: ASP.NET является подмножеством .NET Framework, поскольку расширяет .NET Framework некоторыми библиотеками и инструментами для разработки веб-приложений. В платформу .NET Framework добавляются еще и библиотеки для общих веб-шаблонов, таких как MVC , расширения для редакторов , базовая структура для обработки веб-запросов и синтаксис шаблонов веб-страниц, например Razor и т. Д.

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

ВВЕДЕНИЕ В ASP.NET

Microsoft .NET Framework — это, как известно, платформа для создания, развертывания и запуска Web-сервисов и приложений. Именно Web-приложения, работающие интегрировано друг с другом и удобная коммуникация между, являлись основной целью создания Фреймворка, как сказал мне кто то из Microsoft :)

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

Динамическими принято называть 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:[img]imagesNewsASPNet01-1.jpg[/img]. Тег сигнализирует asp, что в нем находится код, который он должен обрабатывать на сервере. Выполняется скрипт на языке, который указан в директиве Language. Оператор Response.Write записывает текст в выходной поток сервера, таким образом, он становится частью HTML-страницы, отправленной пользователю.

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

Скриптовые языки не поддерживают строгую типизацию. Что это значит? Вы можете не описывать переменную до ее использования и можете присваивать ей значения разных типов. Это удобно, но создает почву для ошибок. Например, у вас есть переменная 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 5 Preview

В этой статье обсуждаются предварительные версии ASP.NET 5 и Visual Studio 2015. Любая изложенная здесь информация может быть изменена.

Продукты и технологии:

ASP.NET 5, Visual Studio 2015 Preview

В статье рассматриваются:

  • основы исполняющей среды ASP.NET 5;
  • работа с Entity Framework;
  • функциональность командной строки;
  • обновления Visual Studio для ASP.NET 5.

ASP.NET поставлялась как часть Microsoft .NET Framework 1.0, выпущенной в 2002 году наряду с Visual Studio 2002. Это был результат эволюции Active Server Pages (ASP), который принес нам объектно-ориентированное проектирование, .NET-библиотеки базовых классов (Base Class Libraries, BCL), более высокую производительность и многое другое. ASP.NET была разработана для того, чтобы разработчикам, привыкшим писать настольные приложения, было легче создавать веб-приложения на основе ASP.NET Web Forms. По мере развития Web в ASP.NET добавлялись новые инфраструктуры: MVC в 2008 году, Web Pages в 2010 году, а также Web API и SignalR в 2012 году. Каждая из этих новых инфраструктур опиралась на базу от ASP.NET 1.0.

В случае пятой версии ASP.NET подвергается переосмыслению по аналогии с тем, что случилось с ASP в 2002 году. Этот процесс дает многих новых средств.

  • Полная поддержка сосуществования разных версий (side-by-side support) Теперь приложения ASP.NET 5 можно устанавливать на компьютере, не влияя на другие установленные приложения.
  • Кросс-платформенная поддержка ASP.NET 5 выполняется и поддерживается в Windows, Mac и Linux.
  • Готовность к работе в облаке Такие средства, как диагностика, состояние сеанса, кеш и конфигурация рассчитаны на работу как локально, так и в облаке.
  • Ускорение разработки Этап сборки удален; просто сохраните файлы исходного кода и обновите браузер — компиляция будет выполнена автоматически.
  • MVC, Web Pages и Web API Все эти технологии объединены, что упрощает ряд концепций.
  • Гибкий хостинг Теперь вы можете разместить свое приложение ASP.NET 5 целиком в IIS или в собственном процессе.

Приступаем к работе с ASP.NET 5 Preview

В этой статье я дам обзор новшеств, введенных группой разработки ASP.NET (членом которой я являюсь) в ASP.NET 5 и Visual Studio 2015 Preview. С общими вопросами по созданию и выполнению приложений ASP.NET 5 обращайтесь на asp.net/vNext, где вы найдете пошаговые руководства и дополнительную документацию. Кроме того, мы регулярно публикуем обновления в blogs.msdn.com/b/webdev. Чтобы начать работу, скачайте и установите Visual Studio 2015 Preview.

Обзор исполняющей среды ASP.NET 5

ASP.NET 5 была полностью переделана для поддержки создания современных веб-приложений и сервисов. Это кросс-платформенная инфраструктура с открытым исходным кодом, способная работать как локально, так и в облаке. В настоящее время ASP.NET 5 находится на стадии Preview и активно разрабатывается на GitHub (github.com/aspnet). Я дам обзор нововведений в ASP.NET 5 Preview и подскажу, где можно узнать больше.

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

  1. Microsoft .NET Framework Вы можете выполнять свои приложения ASP.NET 5 в существующей .NET Framework. Это дает вам высший уровень совместимости для существующих двоичных файлов.
  2. .NET Core Переработанная версия .NET Framework, поставляемая как набор NuGet-пакетов, которые вы можете включать в свое приложение. Благодаря .NET Core вы получаете поддержку истинного сосуществования разных версий и свободу в использовании новейших средств .NET в имеющейся у вас инфраструктуре. Заметьте, что пока не все API доступны в .NET Core, и существующие двоичные файлы, как правило, придется перекомпилировать для выполнения в .NET Core.
  3. Mono Mono CLR позволяет разрабатывать и выполнять приложения ASP.NET 5 на устройствах Mac или Linux. Подробнее см. публикацию в блоге «Develop ASP.NET vNext Applications on a Mac» bit.ly/1AdChNZ.

ASP.NET 5 независимо от выбранной вами CLR использует общую инфраструктуру хостинга CLR и предоставляет приложению разнообразные сервисы. Эта инфраструктура называется K Runtime Environment (KRE). Хотя буква «K» в KRE весьма загадочна (в память Katana Project? Или это аббревиатура от Krazy или Kool?), KRE обеспечивает все, что нужно для хостинга и выполнения вашего приложения.

Новый HTTP-конвейер В ASP.NET 5 введен новый модульный конвейер HTTP-запросов, который можно размещать на любом выбранном вами сервере. Вы можете поместить свои приложения ASP.NET 5 в IIS, на любой сервер на основе Open Web Interface for .NET (OWIN) или в собственный процесс. Поскольку вам нужно точно подобрать, какое именно промежуточное ПО будет работать в конвейере для вашего приложения, вы можете отобрать минимально необходимую функциональность и использовать преимущества производительности чистого сервера (bare-metal performance). ASP.NET 5 включает промежуточное ПО для защиты, маршрутизации запросов, диагностики и поддержку пользовательского промежуточного ПО вашей разработки. Например, вот простая реализация промежуточного ПО для обработки заголовка X-HTTP-Method-Override:

ASP.NET 5 использует модель HTTP-конвейера, во многих отношениях похожую на OWIN-модель, введенную в Project Katana, но с несколькими значительными улучшениями. Как и Katana, ASP.NET 5 поддерживает OWIN, но упрощает разработку, включая облегченную и простую в использовании абстракцию HttpContext.

Для этого есть пакет Диспетчеры пакетов изменили то, как разработчики воспринимают установку, обновление и управление зависимостями. В ASP.NET 5 все ваши зависимости представлены в виде пакетов. NuGet-пакеты являются единицами ссылок. ASP.NET 5 упрощает создание, установку и использование пакетов из их каналов передачи, а также работу с пакетами от сообщества, применяя диспетчер пакетов узла (node package manager, NPM) и Bower. В ASP.NET 5 введен простой формат JSON (project.json) для управления зависимостями NuGet-пакетов и для обеспечения кросс-платформенной инфраструктуры сборки. Пример файла project.json показан на рис. 1 (более подробное объяснение каждого из поддерживаемых свойств см. в GitHub по ссылке bit.ly/1AIOhK3).

Рис. 1. Пример файла project.json

Лучшее из C# Компиляция этапов разработки и выполнения для приложений ASP.NET 5 обрабатывается с применением управляемой .NET Compiler Platform (кодовое название «Roslyn»). То есть вы получаете преимущества новейших языковых средств C#, в то же время используя компиляцию в памяти для предотвращения лишних операций дискового ввода-вывода. Проекты ASP.NET 5 основаны на новой системе проектов, которая динамически компилирует приложение по мере его кодирования, поэтому вы можете избежать прерывания из-за специфического этапа сборки. Это дает вам мощь .NET и C# со всей гибкостью интерпретируемого языка.

Изначальная поддержка встраивания зависимостей Все приложения ASP.NET 5 имеют доступ к общему сервису встраивания зависимостей (dependency injection, DI), который помогает упростить композицию и тестирование. Все инфраструктуры ASP.NET, опирающиеся на ASP.NET 5 (MVC, Web API, SignalR и Identity), используют этот общий сервис DI. Хотя ASP.NET 5 поставляется с минималистским контейнером Inversion of Control (IoC) для начального запуска системы, вы можете легко заменить изначальный контейнер IoC любым другим.

Знакомые веб-инфраструктуры ASP.NET 5 включает инфраструктуры для создания веб-приложений и сервисов, такие как MVC, Web API, Web Pages (появится в будущем выпуске), SignalR и Identity. Каждая из них портирована для работы в новом конвейере HTTP-запросов и поддерживает выполнение в .NET Framework, .NET Core или в кросс-платформенной исполняющей среде.

Сегодня существующие реализации MVC, Web API и Web Pages совместно используют многие концепции и дублируют абстракции, но имеют мало общего в фактической реализации. В процессе переноса этих инфраструктур в ASP.NET 5 Microsoft решила по-новому взглянуть на объединение этих инфраструктур в единый унифицированный веб-стек. ASP.NET MVC 6 использует лучшее от MVC, Web API и Web Pages и объединяет это в единую инфраструктуру для создания Web UI и Web API. Это означает, что из единого контроллера вы можете легко как выполнять рендеринг представления, так и возвращать отформатированные данные на основе согласования контента (content negotiation).

Помимо унификации, в ASP.NET MVC 6 введен целый набор новых средств:

  • встроенная поддержка DI;
  • возможность создания контроллеров из любого класса — базовый класс больше не требуется;
  • диспетчеризация запросов на основе операции (action-based request dispatching);
  • View Components — простая замена дочерних операций;
  • усовершенствования в маршрутизации, в том числе упрощенная маршрутизация по атрибутам (attribute routing);
  • асинхронные представления с точками сброса (flush points);
  • возможность встраивания серверов и вспомогательных конструкций в представления с помощью @inject;
  • наследование ViewStart;
  • поддержка TagHelper.

Более подробные сведения и примеры вы найдете на github.com/aspnet/mvc.

Web Forms недоступна в ASP.NET 5, но по-прежнему полностью поддерживается в .NET Framework. В предстоящей версии .NET Framework предполагается включение ряда важных новых возможностей в Web Forms, в том числе поддержки HTTP 2.0, асинхронного связывания моделей и провайдера CodeDom на основе Roslyn. Мы также работаем над разнообразными средствами, напоминающими Web Forms в MVC 6, в частности над TagHelper и другими улучшениями Razor.

Entity Framework

Данные являются важной частью многих приложений, и Entity Framework (EF) — популярная среди ASP.NET-разработчиков инфраструктура для доступа данных. Хотя EF7 не специфична для ASP.NET, эта новая версия EF играет ключевую роль в ASP.NET 5.

EF7 поддерживает новые платформы EF широко используется в клиентских и серверных приложениях, ориентированных на полнофункциональную .NET Framework. Основной акцент в EF7 — предоставить возможность работы с EF на остальных платформах, где распространена .NET-разработка. К таковым относятся приложения ASP.NET 5, Windows Store и Windows Phone, а также основанные на .NET приложения для Mac и Linux.

В случае приложений Windows Phone и Windows Store изначальная цель — предоставить локальный доступ к данным с помощью EF. SQLite — самая распространенная база данных на устройствах, и она будет основным хранилищем локальных данных на устройствах с EF7. Однако будет доступна полнофункциональная модель провайдеров, поэтому другие хранилища данных тоже будут поддерживаться.

EF7 поддерживает новые хранилища данных Хотя ряд частей EF со всей очевидностью связан с реляционными хранилищами данных, многое из предоставляемой EF функциональности также применимо ко многим нереляционным хранилищам данных. К примерам такой функциональности относятся отслеживание изменений, LINQ и единица работы. EF7 позволит работать с провайдерами, ориентированными на нереляционные хранилища данных, такими как Microsoft Azure Table Storage.

Мы специально не пытаемся создать уровень абстракции, который скрывает тип хранилища данных, на который вы ориентируетесь. Общие шаблоны/компоненты, применимые к большинству хранилищ, будут обрабатываться базовой инфраструктурой. Тогда как все, что специфично для конкретных типов хранилищ, будет доступно в виде расширений, специфичных для провайдеров. Например, концепция средства формирования модели (model builder), которое позволяет вам конфигурировать свою модель, станет частью базовой инфраструктуры. Но возможность конфигурирования таких вещей, как каскадное удаление по ограничению внешнего ключа, будет включаться в виде расширений в провайдер реляционной базы данных.

EF7 компактна и расширяема EF7 будет облегченной и расширяемой версией, в которой на первый план выведены некоторые широко используемые средства. Кроме того, мы включим некоторые часто запрашиваемые средства, которые было бы трудно реализовать на кодовой базе EF6, но в EF7 они могут быть введены с самого начала.

Группа сохранит шаблоны и концепции, к которым вы привыкли в EF, за исключением тех, где есть веские причины для изменений. Вы увидите тот же API на основе DbContext/DbSet, но он будет создан поверх компонентов — строительных блоков, которые легко заменить или расширить при необходимости; этот же шаблон применялся для некоторых изолированных компонентов, добавленных в недавних выпусках EF.

Подробнее о EF7 Более детальные сведения о EF7 см. на странице GitHub «What Is EF7 All About» по ссылке aka.ms/AboutEF7. Эта страница включает проектировочную информацию, ссылки на публикации в блогах и инструкции по работе с предварительными версиями EF7.

Средства командной строки в ASP.NET

Одним из основополагающих принципов ASP.NET 5 была возможность работы из командной строки. То есть почти все операции, которые вам нужно выполнять с приложением ASP.NET 5, можно осуществлять из командной строки. Основная причина этого заключалась в том, чтобы вы могли работать с ASP.NET 5 без Visual Studio, например на компьютерах под управлением Mac или Linux.

KVM Первая утилита, которая понадобится вам для того, чтобы получить полнофункциональную командную строку для ASP.NET 5, — это K Version Manager (KVM). Утилита командной строки KVM может скачивать новые версии KRE и позволяет переключаться между ними. KRE содержит другие утилиты командной строки, которые вы, возможно, будете использовать. Как реализована KVM и как получить ее, зависит от конкретной ОС. Вы можете скачать и установить KVM для своей платформы, выполнив соответствующую команду из github.com/aspnet/Home.

Получив KVM, вы должны иметь возможность открыть окно командной строки и выполнить команду kvm. Если вы введете kvm list, то увидите список всех версий KRE на своем компьютере (рис. 2).

Рис. 2. Команда kvm list позволяет получить список версий KRE на вашем компьютере

Если в списке нет элементов, значит, в вашем профиле пользователя нет никаких версий KRE. Чтобы исправить это, вы можете выполнить команду kvm upgrade. Эта команда определит самую новую доступную версию KRE, скачает ее и модифицирует переменную окружения PATH так, чтобы вы могли использовать другие утилиты командной строки в самой KRE.

Для установки конкретной версии без ее задания как версии по умолчанию используйте команду kvm install . Ключ –r позволяет указать, какая версия KRE вам нужна — для .NET Core или .NET Framework, а ключи –x86 и –amd64 — скачать 32- или 64-разрядную KRE. Ключи –r и разрядности можно предоставлять либо для установки, либо для обновления.

После вызова kvm upgrade вы сможете использовать команды K и KPM. K позволяет запускать приложения, а KPM — управлять пакетами.

Как работает KVM? По сути, KVM — это просто удобный способ для манипуляций над переменной окружения PATH. Все, что делает команда KVM use , — изменяет вашу PATH на папку bin той версии KRE, которую вы указали в своей PATH. По умолчанию KRE устанавливается копированием и извлечением ZIP-файла KRE в папку %USERPROFILE%\.kre\packages, поэтому, когда вы набираете KVM use 1.0.0-beta1, KVM удостоверится, что папка %USERPROFILE%\.kre\packages\KRE-CLR-x86.1.0.0-beta1\bin имеется в вашей переменной PATH.

KPM Следующая утилита, которая наверняка понадобится вам, — KRE Package Manager (KPM). KPM выполняет две главные функции.

  1. Вы можете ввести kpm restore в папке с файлом project.json, чтобы скачать все пакеты, необходимые вашему приложению.
  2. Команда упаковки (kpm pack) принимает ваше приложение и генерирует самодостаточный исполняемый образ вашего приложения. Здесь под образом имеется в виду структура папок, которая должна быть скопирована на сервер и выполнена. Он включает все пакеты, необходимые вашему приложению, а также (не обязательно) KRE, в которой вы хотите выполнять приложение.

Команда restore может быть выполнена в папке, содержащей файл project.json. Она проанализирует файл и, используя NuGet.config, соединится с каналом NuGet и попытается скачать все пакеты, нужные вашему приложению. По умолчанию эти пакеты будут установлены в %USERPROFILE%\.kpm\packages, поэтому на компьютере разработчика требуется лишь единственная копия любого пакета, даже если они задействованы в нескольких проектах.

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

Команда K Эта команда запускает приложение ASP.NET 5 из командной строки. Команда K включена в KRE, как и в KPM, и является входной точкой для запуска приложения поверх KRE.

Основной способ использования команды K — запуск одной из команд в вашем файле command project.json. Команды указываются по имени в файле project.json под свойством commands. По умолчанию шаблон ASP.NET 5 Starter Web включает команду web в project.json, который служит хостом вашего приложения и прослушивает порт 5000. Чтобы выполнить эту команду, просто введите k web.

Обновления Visual Studio для ASP.NET 5

Одной из начальных целей ASP.NET 5 было обеспечение удобства группам, члены которых используют разные инструменты. Например, часть группы применяет Windows и Visual Studio и работает с другими, которые используют Sublime Text на Mac (средства кросс-платформенной .NET-разработки см. на omnisharp.net). Для достижения этой цели нам пришлось сделать шаг назад и пересмотреть поддержку Visual Studio. В предыдущих версиях Visual Studio система проектов предполагала, что большая часть разработки будет проходить в Visual Studio. Но Visual Studio не слишком хорошо работает, когда в создании файлов или модификации проекта участвуют другие инструменты. Так, в файле .csproj Visual Studio поддерживал список файлов, из которых состоит проект. Если вы использовали инструмент, который создает новый файл для вашего проекта, вам приходилось редактировать файл .csproj для включения созданного файла.

Создавая новый проект ASP.NET 5 в Visual Studio 2015, вы получаете новые средства. Вы можете по-прежнему разрабатывать, отлаживать и запускать свой проект, как обычно, но в дополнение к стандартным средствам, известным вам в проектах ASP.NET, вы получаете некоторые новые средства, уникальные для ASP.NET 5. Теперь у вас есть свобода в разработке с использованием выбранной вами платформы и инструментария. Я рассмотрю некоторые из этих средств.

Поддержка для всех файлов в папке В ASP.NET 5 все файлы в каталоге проекта автоматически включаются в проект. Вы можете исключать файлы из компиляции или публикации в файле project.json. Подробнее о том, как исключить файлы в project.json, см. страницу GitHub (bit.ly/1AIOhK3). После загрузки проекта Visual Studio запускает средство наблюдения за файлами (file watcher) и обновляет окно Solution Explorer для отражения изменений. Поскольку Solution Explorer всегда следит за файлами в каталоге проекта, мы сменили место сохранения генерируемых файлов. Вместо хранения таких файлов в каталоге проекта (в папках bin\ и obj\) теперь они помещаются по умолчанию в папку artifacts наряду с файлом решения.

Просто внесите изменения, сохраните и обновите браузер В существующих приложениях ASP.NET, когда вы изменяете логику для серверной стороны (например, код MVC-контроллера или фильтр), вы должны заново скомпилировать и развернуть приложение, чтобы изменения отразились в браузере. Microsoft хотела сделать рабочий процесс веб-разработки максимально простым и гибким, как при работе с интерпретируемыми платформами (вроде Node.js или Ruby), в тоже время сохранив возможность использования мощи .NET. В проектах ASP.NET 5, когда вы редактируете и сохраняете свой код на C#, средство наблюдения за файлами обнаруживает изменение и перезапускает приложение. Приложение перекомпилируется в памяти, поэтому вы можете видеть изменения в браузере почти в режиме реального времени. Заметьте, что этот рабочий процесс поддерживается, только когда вы не ведете отладку, — чтобы избежать прерывания сеанса отладки.

Обновленная поддержка NuGet-пакетов В ASP.NET 5 все ваши зависимости находятся в NuGet-пакетах. Зависимости пакетов указываются в project.json, причем перечисляются только прямые ссылки. Исполняющая среда разрешает зависимости пакетов за вас, и вы можете просматривать и вести поиск по всему графу зависимостей пакетов в Solution Explorer.

Чтобы установить NuGet-пакет, просто добавьте его в свой файл project.json. Как только вы сохраняете файл project.json, инициируется команда package restore, и любые изменения в ваших зависимостях отражаются узлом References в Solution Explorer. Вы можете видеть результат команды package restore и любые ошибки, которые могли произойти, в журнале диспетчера пакетов в окне Output. Вы даже получаете поддержку IntelliSense для пакетов, установленных локально на компьютере с Visual Studio, и пакетов, имеющихся в общедоступном канале NuGet, как показано на рис. 3.

Рис. 3. IntelliSense для зависимостей NuGet-пакетов в project.json

В существующих проектах ASP.NET при установке NuGet-пакета в проект копия этого пакета (и все его зависимости) помещаются в папку packages. В ASP.NET 5 применяется кеш, поэтому NuGet-пакеты являются общими между проектами для каждого пользователя. Когда в ASP.NET 5 выполняется команда package restore, любые пакеты, уже установленные в кеше, просто используются повторно. Вы можете просматривать и модифицировать кеш пакетов в своем профиле в папке .kpm.

По умолчанию проекты ASP.NET 5 компилируются в памяти исполняющей средой, и никакие артефакты на диске не сохраняются. Однако вы можете легко разрешить компиляцию NuGet-пакетов для своих библиотек классов ASP.NET 5, установив флажок Produce all outputs on build на вкладке Build страницы Properties для проекта. После выбора этого параметра вы найдете скомпилированный NuGet-пакет в папке artifacts решения.

Компиляция и Combined IntelliSense для нескольких целевых инфраструктур В ASP.NET 5 целевые инфраструктуры перечисляются в project.json. Ваш проект компилируется для каждой из перечисленных целевых инфраструктур. Это намного ускоряет обнаружение проблем, потому что вам не приходится явно переключаться на нужную целевую инфраструктуру и вы можете выполнять кросс-компиляцию для нескольких целевых инфраструктур из одного проекта.

Мы также обновили IntelliSense для проектов ASP.NET 5, введя Combined IntelliSense. С помощью Combined Intellisense, когда средство автоматического завершение предлагает разные варианты применительно к одной или более инфраструктурам, вы увидите расширенную подсказку, поясняющую различия. Эта подсказка демонстрируется на рис. 4 для класса StringComparison.

Рис. 4. Подсказка, показывающая Combined IntelliSense для нескольких целевых инфраструктур


Как видно на рис. 4, значение InvariantCulture недоступно для перечисления StringComparison при использовании ASP.NET Core 5.0.

Публикация в Web В Visual Studio 2015 Microsoft работает над новым процессом публикации проектов ASP.NET 5. В выпуске Preview соответствующий функционал ASP.NET 5 поддерживает публикацию в Azure Websites и в файловой системе (например, в папке local/network). При публикации в Azure Websites вы можете выбрать желательную конфигурацию сборки и версию KRE. В последующих выпусках эта поддержка будет расширена на больший спектр целей.

Переход на ASP.NET 5

Перевод существующего веб-приложения на ASP.NET 5 включает как создание нового проекта ASP.NET 5 для существующего приложения, так и последующий перенос вашего кода и зависимостей для выполнения в новой инфраструктуре. Создать новый проект ASP.NET 5 для приложения сравнительно легко. Прежде всего добавьте файл project.json в свою папку project. Изначально файл project.json должен включать только пустой JSON-объект (например, <>). Затем выберите File | Open Project, чтобы открыть файл project.json в Visual Studio 2015 Preview. После этого Visual Studio создаст проект ASP.NET 5 с файлом .kproj и автоматически включит в проект все файлы и каталоги, которые она найдет наряду с файлом project.json. Вы должны увидеть свои файлы проекта в новом проекте ASP.NET 5 в Solution Explorer. Вот вы и создали проект ASP.NET 5 для существующего веб-приложения!

Перенос вашего кода и зависимостей так, чтобы новый проект ASP.NET 5 компилировался и выполнялся корректно, — процесс более сложный. Вам нужно обновить свой project.json зависимостями пакетов верхнего уровня, ссылками на сборки инфраструктуры и ссылками проекта. Вы должны так перенести свой код, чтобы использовать новые абстракции HTTP, новое промежуточное ПО и новые версии веб-инфраструктур ASP.NET. Вам понадобится перевод кода под новую инфраструктуру для обработки таких задач, как конфигурирование, протоколирование и DI. Перенос вашего приложения для выполнения в .NET Core требует дополнительных изменений под платформу и учета ее ограничений. Полностью описать это в данной статье не удастся, но мы работаем над тем, чтобы предоставить полное руководство по миграции в будущей статье. Хотя усилия по переносу в ASP.NET 5 могут оказаться значительными, Microsoft считает, что преимущества кросс-платформенной, готовой к работе в облаке инфраструктуры с открытым исходным кодом, отслеживаемой сообществом, стоят этих усилий.

Где узнать больше?

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

На сайте ASP.NET имеется специальный раздел по ASP.NET 5 на странице asp.net/vnext. Эта страница постоянно обновляется новостями по выпускаемым средствам, документации, учебным пособиям ресурсам сообщества.

ASP.NET vNext Community Standup — открытая еженедельная онлайновая встреча с группой ASP.NET. Она проводится каждый вторник; ее время варьируется между утром и полднем по тихоокеанскому времени, и в ней могут принимать участие разработчики со всего мира. Присоединяйтесь к нам, чтобы узнать о ближайших планах, задать вопросы и сообщить свои предложения и отзывы.

Вы можете получить помощь от разработчиков, сотрудничающих с нами, и членов группы ASP.NET на форуме ASP.NET vNext по ссылке bit.ly/1xOuQx9. Кроме того, на JabbR.net есть тематический чат по разработке ASP.NET 5/vNext bit.ly/1HDAGFX.

Поскольку ASP.NET 5 разрабатывается как проект с открытым исходным кодом, вы можете участвовать в процессе разработки. Репозитарии исходного кода на github.com/aspnet постоянно обновляются группой, и это не зеркала внутреннего репозитария. То есть вы можете видеть операции передачи кода в эти репозитарии по мере того, как они происходят, и получать «снимок» кода в любой момент. Репозитарии включают исходный код для инфраструктур (например, KRuntime, Razor и MVC), а также для функциональных тестов и примеров проектов. Мы призываем вас к обратной связи с нами (как по ошибкам в коде, так и предложения по функционалу), открывая или комментируя формы по проблемам в репозитариях GitHub.

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

В заключение хочу поблагодарить Гленна Кондрона (Glenn Condron), Джону Гэллоуэя (Jon Galloway), Саида Ибрагима Хашими (Sayed Ibrahim Hashimi), Скотта Хантера (Scott Hunter) и Роуэна Миллера (Rowan Miller) за их неоценимую помощь, выходящую далеко за рамки обычного рецензирования, и за реальный вклад в написание значительных частей этой статьи.

Дэниел Рот (Daniel Roth) — старший менеджер программ в группе ASP.NET, которая в настоящее время работает над ASP.NET 5. В сферу его интересов входят .NET-разработка и создание простых в использовании инфраструктур для корпоративных клиентов.

Выражаю благодарность за рецензирование статьи экспертам Microsoft Гленну Кондрону (Glenn Condron), Дэвиду Фаулеру (David Fowler), Джону Гэллоуэю (Jon Galloway), Саиду Ибрагиму Хашими (Sayed Ibrahim Hashimi), Скотту Хантеру (Scott Hunter), Роуэну Миллеру (Rowan Miller) и Прабураджу Тиагараджу (Praburaj Thiagaraj).

Введение в ASP.NET 5

Первый предварительный релиз ASP.NET 1.0 вышел практически 15 лет назад и с тех пор миллионы разработчиков использовали его чтобы создавать и запускать различные приложения., а мы на протяжении этих лет добавляли в совокупности колоссальное количество кода и возможностей.

Я сегодня сильно взволнован из-за того что пишу новость о новом релизе ASP.NET, над которым работает наша команда, и который называется ASP.NET 5. Этот релиз – одно из самых значимых обновлений архитектуры, которое мы делали когда-либо. В рамках этого релиза мы сделали ASP.NET более компактным, модульным и кросс-платформенным, а также ориентированным на облачные хостинги. ASP.NET 5 Preview доступна для скачивания в последнем Visual Studio 2015 CTP, которая стала доступна совершенно недавно.

ASP.NET 5 – web фреймворк с открытыми исходными текстами, который предназначен для создания современных web приложений и работы на Windows, Linux и Mac. Он включает фреймворк MVC 6 и Web API. ASP.NET 5 также станет базой для SignalR 3. Изначально ASP.NET 5 разработан для работы на .NET CoreCLR, но также может быть запущен и на полном .NET Framework.

C ASP.NET 5 мы внесли ряд архитектурных изменений, которые сделали ядро web фреймворка значительно более компактным (он более не нуждается в System.Web.dll) и модульным (теперь большинство функций сделано в виде NuGet пакетов, позволяя вам иметь в приложении только то, что вам необходимо). С ASP.NET 5 вы получаете следующие изменения:

  • Сборка и работа кросс-платформенных ASP.NET приложений на Windows, Linux и Mac.
  • Работа на .NET Core
  • Новый инструментарий, который упрощает разработку современных web приложений
  • Единый технологический стек для Web UI и Web APIs
  • Конфигурация, готовая для работы в облаке, и основывающаяся на окружении (Cloud-ready environment-based configuration)
  • Встроенная поддержка создания и использования NuGet пакетов
  • Встроенная поддержка Dependency Injection
  • Возможность хостироваться в IIS либо в вашем собственном приложении

И как конечный результат – ASP.NET, с которым вы хорошо знакомы, но который стал гораздо более хорошо подтюнен под современные реалии веб-разработки.

Гибкий, кросс-платформенный рантайм

ASP.NET 5 работает на двух рантаймах чтобы предоставить вам возможность выбора: где хостить ваше приложение. Выборы рантаймов следующие:

.NET Core – это абсолютно новый, кросс-платформенный рантайм, который практически ничего не весит. Когда вы выбираете .NET Core, то можете воспользоваться совершенно новыми преимуществами:
1) Вы имеете право поставлять .NET Core runtime прямо с вашим приложением, и это означает что ваше приложение будет работать именно на нем, а не на той версии, которая установлена в системе. Ваша версия rutime будет работать бок о бок с другими версиями, которые подтягивают другие приложения. Вы сможете обновить вашу версию runtime на более новую без страха что это отразится на работе других приложений. Это делает развертывание новых версий приложений и фреймворка намного более простым и делает возможным обновления во время работа других приложений.
2) Ваше приложение зависит только от тех фич, в которых оно реально нуждается. Таким образом, вас никогда не попросят обновить те сервисы, которые не относятся к вашему приложению. Это делает развертывание приложений гораздо быстрее и проще, не затрагивая работу других приложений.
3) Ваше приложение теперь может быть кросс-платформенным. Мы предоставим вам кросс-платформенную версию .NET Core для Windows, Linux и Mac OS X. Независимо от того, какую операционную систему Вы выберете для разработки и какую операционную систему вы выберете для развертывания, вы можете использовать .NET везде. Кросс-платформенная версия runtime еще не вышла в свет, однако мы активно работаем над этим и обещаем совсем скоро выкатить официальное Preview.

.NET Framework – API .NET Core на данный момент намного более ограничено, если сравнивать с полной версией .NET Framework, так что вам наверняка придется внести ряд изменений, чтобы ваше приложение заработало на .NET Core. Если вы не хотите обновлять ваше приложение, то можете запустить его на ASP.NET 5 на полной .NET Framework (версии 4.5.2 либо выше). Поступая таким образом, вы получаете полный набор .NET Framework APIs, а ваши приложения заработают без каких-либо изменений.

MVC 6 – унифицированная модель программирования.

MVC, Web API и Web Pages обеспечивают дополнительную функциональность и зачастую используются вместе при разработке решений (SLN). Тем не менее в ранних релизах ASP.NET эти фреймворки были разработаны раздельно, и потому содержали огромное количество дублирования и рассогласованности. С MVC 6 мы объединили все эти модели в единую модель программирования. Теперь вы имеете возможность создавать web приложения, которые содержат и Web UI и сервисы без необходимости «примирять» различия этих фреймворков. Также вы можете совершенно плавно перевести свое простое Web pages приложение на современный и надежный MVC.
Теперь вы можете возвращать Razor views данные с одного и того же контроллера и используя один и тот же MVC filter pipeline.
В дополнении к унификации существующих фреймворков мы добавляем новые возможности, которые делают серверную разработку проще. Например, Tag helpers. Они позволяют использовать HTML helpers в ваших представлениях просто расширяя семантику тэгов в разметке:
Т.е. вместо того чтобы писать так:

Вы будете писать так:

Tag helpers делают ваши представления более «натуральными» и читаемыми. Также они упрощают кастомизацию вывода HTML helpers.

Для ознакомления с прочими примерами MVC6 приложений, прошу пройти по ссылке: tutorials

Современная Web разработка

На этой неделе мы выпустили ASP.NET 5 preview, который помимо всего прочего включает в себя некоторые возможности, которые позволят вам делать приложения несколько лучше:

Динамическая Разработка
В Visual Studio 2015 мы воспользуемся динамической компиляцией. Вам более не придется перекомпилировать приложения каждый раз, чтобы увидеть изменения. Вместо этого просто (1) измените код, (2) сохраните изменения, (3) обновите браузер и (4) – вы увидите как ваши изменения автоматически обновят приложение.

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

Также вы можете воспользоваться и другими редакторами кода (например, Sublime Text 3 c надстройкой для работы с проектами C#) чтобы работать с ASP.NET 5 проектами. Любая функция Visual Studio может быть найдена в инструментах командной строки, которые тем временем являются кросс-платформенными (это означает что edit-in-place также доступна и на Mac OS X и на Linux).

Интеграция с популярными инструментами Web-разработки
Другая особенность будущей MS Visual Studio 2015 – встроенная поддержка Bower, Grunt и Gulp – популярных проектов с открытым исходным кодом, и которые, на наш взгляд, должны быть незаменимыми инструментами каждого разработчика.

  • Bower – это менеджер пакетов для клиентских библиотек (client-side), которые включают как JavaScipt так и CSS
  • Grunt и Gulp – раннеры задач, которые помогают автоматизировать workflow ваших приложений.Вы можете использовать Grunt или Gulp для таких задач как сборка LESS, CoffeeScript, TypeScript файлов. Запуска JSLint, минификации JS файлов.

Bower: чтобы добавить JavaScript библиотеку в ваш ASP.NET проект, добавьте ее прямо в файле конфигурации bower.json:

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

Для пакетов стороны сервера вы, конечно же, должны использовать NuGet.

Grunt: в современной Web разработке вы можете заметить за собой что занимаетесь огромным количеством различных и отличных от разработки задач только для того чтобы собрать ваше приложение: вы собираете LESS, TypeScript, CoffeeScript файлы, минифицируете JavaScript, запускаете unit тесты JS, и так далее, и тому подобное… При этом каждая команда имеет свой собственный набор требований, которые основываются на том инструментарии, который используется в проекте. Менеджеры задач (task runners) делают проще координирование и менеджмент этих задач.Visual Studio поддерживает два самых популярных раннера: Grunt и Gulp.

Вот пример: например, вам необходим Grunt чтобы собрать LESS файлы. Тогда вы должны открыть package.json и добавить grunt-contrib-less пакет, который является сторонним плагином к Grunt.

Используйте новый менеджер раннеров задач (Task Runner Explorer) в Visual Studo 2015 чтобы назначить задачу на определенный шаг сборки (pre-build, post-build, clean либо же, когда SLN файл открыт).

Это делает автоматизацию общих задач поистине постой операцией.

Упрощенное управление зависимостями
В ASP.NET 5 вы управляете зависимостями, добавляя/удаляя и обновляя пакеты NuGet. Вы можете использовать NuGet менеджер пакетов либо просто отредактировать JSON файл (project.json), который содержит список пакетов NuGet и список версий, которые используются в вашем проекте. С файлом project.json легко работать, и вы естественно, можете его отредактировать в любом редакторе файлов, что позволяет вам обновлять зависимости когда ваше приложение работает в облаке.
Project.json выглядит примерно так:

В Visual Studio 2015 IntelliSense помогает вам в поиске доступных пакетов NuGet, которые вы можете добавлять как зависимости:

IntelliSence также поможет вам со списком доступных версий:

Открытость исходных кодов

Хотите знать больше про внутренности .NET?

Глава 16

Для новичков в мире C# и .NET может показаться странным, почему в книгу включена глава, посвященная ASP.NET. Это совершенно новый язык, не так ли? Не совсем. Фактически, как мы увидим, можно использовать C# для создания страниц ASP.NET. Но мы забегаем вперед. Прежде всего необходимо обсудить, что же такое ASP.NET.

ASP.NET (Active Server Pages.NET — активные серверные страницы .NET), поставляется как часть платформы .NET и является технологией, которая позволяет динамически создавать документы на сервере Web, когда они запрашиваются через HTTP. Это в основном документы HTML, хотя в равной степени можно создавать, например, документы WML для использования в браузерах WAP или на самом деле что-то еще с помощью типа MIME.

Технология ASP.NET аналогична таким технологиям, как PHP, ColdFusion и другим, но между ними имеется одно существенное различие. ASP.NET, как предполагает ее название, была создана с целью полной интеграции в платформу .NET, часть которой включает поддержку C#.

Вполне возможно, что читатель обладает опытом работы с последней технологией компании Microsoft для получения динамической генерации содержимого — ASP. В этом случае, он должен, вероятно, знать, что программирование в этой технологии использует язык сценариев, такой как VBScript или JScript. Это работало, но некоторые вещи были затруднительны для тех программистов, которые привыкли использовать ‘правильные’ языки программирования, что приводило в результате к потере производительности.

Одним из основных отличий, связанных с использованием более развитых языков программирования, является обеспечение полной серверной объектной модели для использования во время работы. ASP.NET предоставляет доступ ко всем элементам управления на странице, как к объектам в обширном окружении. Также на стороне сервера мы имеем доступ ко всем другим требуемым классам .NET, позволяя интеграцию многих полезных служб. Элементы управления, используемые на странице, функциональны, фактически можно делать все то же, что и с классами форм в Windows, что дает большую гибкость. По этой причине страницы ASP.NET, создающие содержимое HTML, часто называют формами Web.

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

Введение в ASP.NET

ASP.NET пользуется Информационным сервером Интернета (Internet Information Server, IIS) для доставки содержимого в ответ на запросы HTTP. Страницы ASP.NET находятся в файлах с расширением

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

□ Обработка инструкций для сервера

□ Код на C#, VB.NET, JScript.NET или любом другом языке, который поддерживает платформа .NET сейчас или может поддерживать в будущем

□ Содержимое в любой ферме, подходящей для сгенерированного ресурса, такого как HTML

□ Встроенные серверные элементы правления ASP.NET Поэтому, фактически, можно иметь файл ASP.NET, состоящий просто из

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

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

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

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

По сути, информация, например, о состоянии элементов управления в форме Web (данные, введенные в текстовые поля, выбор из выпадающих списков и т.д.) хранится в скрытых полях представления состояния (viewstate), которые являются частью страницы, сгенерированной сервером и переданной пользователю. Если в дальнейшем требуется серверная обработка типа пересылки данных формы, то происходит возврат (postback) этой информации на сервер. На сервере эта информация используется для повторного заполнения объектной модели страницы, позволяя нам действовать на ней, как если бы изменения были бы сделаны локально.

Мы скоро увидим это в действии и укажем особенности.

Формы Web ASP.NET

Как упоминалось ранее, большая часть функциональности ASP.NET достигается с помощью форм Web. Скоро мы перейдем к этому вплотную и создадим простую форму Web, чтобы получить начальную точку для исследования этой технологии. Прежде всего, однако, мы должны взглянуть на особенности, имеющие отношение к созданию форм Web. Необходимо отметить, что многие разработчики ASP.NET используют для создания файлов просто текстовый редактор, такой как notepad. Дело облегчается тем, что можно, как отмечалось ранее, объединить весь код в одном файле. Код заключается между тегами

Если опустить атрибут

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


Рассмотрим пример. Создайте новый проект типа C# Type Web Application, как показано ниже:

По умолчанию VS будет использовать расширения FrontPage для настройки приложения Web в требуемом месте, которое может быть удаленным, если сервер Web находится на другой машине. Но и для этого существует альтернативный (и более быстрый) метод, использование файловой системы через LAN (что является, конечно, невозможным, если удаленный сервер Web находится не в той же LAN, что и сервер разработки). Если первый метод отказывает, то VS будет пробовать другой.

Независимо от используемого метода, VS поддерживает локальный кэш всех файлов проекта, причем в синхронизации с файлами на сервере Web.

Через какое-то время Visual Studio должна создать следующее:

Раздел 6. Основы создания Web сайтов на С# в Visual Studio 2005/2008

Материал следующих глав готовятся к печати

Глава 1. Методика создания Web сайтов

Параграф 1.1. Краткое введение в ASP.NET

Создание Web приложений и Web-сервисов в Visual Studio 2005 основано на использовании технологии ASP.NET, прообразом которой была технология ASP. Технология ASP появилась в 1997 году и предназначалась для построения web-страниц в Internet Information Server(IIS). В сценариях ASP HTML-код объединялся со сценарным кодом, интерпретируемым IIS в ответ на запросы со стороны клиента. В результате строилась страница HTML, которая возвращалась клиенту.

Технология ASP.NET (Active Server Pages .NET) позволила устранить ряд недостатков, присущих ASP (ровно, как и многим другим технологиям создания Web приложений), прежде всего, за счет вывода кода из HTML-страницы в отдельный исполняемый модуль, откомпилированный для среды .NET.

Если ASP представляла собой ISAPI DLL, с набором компонентов и несколькими системными файлами, то ASP.NET — стала частью платформы .NET. Напомним, что в NET используется Intermediate Language — общий промежуточный язык, в который компилируется любой код, независимо от исходного языка программирования. Это готовый к выполнению в среде .NET Framework код. Платформа .NET интерпретирует Intermediate Language и обеспечивает взаимодействие с операционной системой. Кроме того, .NET предоставляет интерфейс приложениям ASP.NET. ASP.NET, в свою очередь, предоставляет интерфейс Web-формам (страницам ASP.NET) и Web-службам. Такое многоуровневое построение позволяет стандартизировать обращение к системным вызовам для Windows и Web, что позволило создать единую методику и среду для разработки Windows программ, Web сайтов, сервисов, библиотек и т.п.

Таким образом, вторым преимуществом ASP.NET стало объединение методики разработки приложений для Web и для Windows. А унификация используемых языков разработки Web сайтов и Windows программ, применение единой среды разработки и отладки, во многом единых или схожих по свойствам элементов управления (controls или контролов), пространств имен (библиотек) и т.д. — сделало новую технологию самой популярной на данный момент.

С точки зрения работы сети обмен данными с web-сервисами проходит по TCP через 80 порт и с использованием стандартного метода POST протокола http.

Параграф 1.2. Где и как разрабатывать Web сайты

Web приложение ASP.NET выполняется на специальных Web серверах, на которых функционируют встроенные информационные службы Интернета — Internet Information Services (IIS). IIS поддерживают доступ по протоколам FTP и HTTP и все, что необходимо клиенту для доступа к Web содержимому сервера.

IIS, получив запрос, «смотрит», к какому типу этот запрос относится (*.asp, *.shtml, *.aspx. ). Если IIS не способен самостоятельно обработать запрос (например, *.html или *.htm он может обрабатывать самостоятельно), то он передает его соответствующему ISAPI-расширению. Чтобы увидеть все доступные расширения и библиотеки, связанные с ними, необходимо:

запустить IIS Manager (как правило, в группе Administrative Tools);

в контекстном меню узла «Web Sites» («Web узел по умолчанию») выбрать пункт меню «Properties»;

в появившемся окне свойств выбрать закладку «Home Directory» («Домашний каталог»);

в группе «Application Settings» нажать кнопку «Configurations:» («Настройка»);

перейти на закладку «Mappings» («Сопоставления»).

В списке «Application Extensions» («Расширения») будут указаны все ISAPI-расширения IIS, установленные на текущий момент. Для расширения .aspx и нескольких других (.asax, .ascx, .ashx, .asmx, .axd, .config, .cs, .csproj, .java, .jsl, .licx, .rem, .resources, .resx, .soar, .vb, .vbproj, .vsdisco, .webinfo), зарегистрирован один исполняемый файл aspnet_isapi.dll. Предполагается, что на компьютере установлен IIS, а после него — .NET Framework, при другой последовательности установки ISAPI-некоторые расширения, возможно, не будет зарегистрированы.

aspnet_isapi.dll обеспечивает обработку запросов ASP.NET и создания рабочих процессов aspnet_wp.exe, выполняющих запросы (aspnet_wp.exe — процесс, в котором, собственно, и работает ASP.NET, в Windows 2003 этот процесс носит имя — w3wp.exe).

Получив такой запрос, расширение проверяет настройки в секции

конфигурационного файла machine.config, находящегося в каталоге «%SystemRoot%\Microsoft.NET\Framework\v%CLRVersion%\CONFIG. Если уже существующий процесс aspnet_wp.exe не удовлетворяет хотя бы одному требованию, указанному в настройках, то aspnet_isapi.dll создает новый процесс с требуемыми настройками. При этом старый рабочий процесс продолжает существовать до окончания обработки выполняемых запросов, после чего удаляется. Таким образом, в любом случае, выполнение Web приложения будет осуществляться в среде IIS.

В ASP.NET 1.0 разработчик сайта, использующий ASP.NET, должен был иметь непосредственный доступ к серверу приложений и его файловой системе. Эта же возможность осталась и в ASP.NET 2.0, хотя стала наименее используемой разработчиками. Для обеспечения доступа к нужному каталогу файловой системы требовалось создать сетевое подключение, например, так. Откроем на панели Windows службу «Мой компьютер», в меню «Сервис» выберем пункт «Подключить сетевой диск». Найдем свободную букву, например «W», нажимаем кнопку «Обзор». Выбираем сетевое имя каталога сервера приложений, в котором будем вести разработку (естественно он должен быть открыт для Вас), ставим галочку «Восстанавливать при входе в систему» и нажимаем кнопку «Готово». Пусть каталог разработки будет:

В любом файловом менеджере (Проводник, Far, Windows Commander ..) в Frameworks\dev (на нашем диске «W») создаем директорию с именем нашего будущего решения, например «MySite1».

Далее, нам потребуется превратить реальный каталог в виртуальный и создать пул для приложения (поскольку эта часть не утратила актуальности, речь об этом пойдет ниже в параграфе «Развертывание Web сайтов на сервере»). С этого момента можно стартовать Visual Studio 2005 и приступать к созданию сайта на сервере.

В Visual Studio 2005 описанный выше путь стал не единственным, и, мало того, новая студия позволила создавать Web приложения вообще без использования IIS и на локальном компьютере (к IIS мы вернемся только при развертывание Web сайта, но это будет после того, как сайт создан и полностью отлажен). Иными словами, при разработке Web сайта на сервере мы предварительно выполняем настройку каталога сайта, а при разработке на локальном компьютере — при развертывании сайта.

Параграф 1.3. Создания Web сайта на локальном компьютере

Для обеспечения возможности создания сайтов на локальном компьютере без использования IIS в Visual Studio 2005 имеется собственный Web-сервер (версия бесплатного сервера Cassini).

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

Запустим Microsoft Visul C# Net и создадим новый Web сайт, как показано это на Рис.1. (Fole/New/Web Site).

В окне Templates диалогового окна «New Web Site» задаем «ASP.NET Web Site». В окне» Location» выбираем File System, с помощью кнопки Browse определяем папку, где будем создавать все наши сайты. В выбранной папке будет создана новая папка с именем нашего сайта (WebSite1 для Рис.1.). Не забудем выбрать Language и нажимаем «OK». Сайт создан

Рис.1. Создание ASP.NET Web сайта

Сайт на данном этапе представляет собой два файла (Рис.2.): Default.aspx и Default.aspx.cs. Файл Default.aspx определяет HTML содержимое сайта, а Default.aspx.cs — программный код, который отделен от HTML содержимого и предназначен для программного формирования данного содержимого или выполнения каких либо иных действий на сервере. Эта связь определена в директиве Page через свойство CodeFile.

Рис.2. ASP.NET решение Web сайта

Рассмотрим связанный код файла Default.aspx.cs:

Код состоит из одного класса _Default, наследника класса System.Web.UI.Page. Имя класса также присутствует в директиве Page файла Default.aspx — Inherits=»_Default»;

Для того, чтобы убедиться, что это Web сайт, нажмем кнопочку F5(меню Debug\Start Debugging). Отладчик предложит создать файл Web.config, после подтверждения согласия стартует локальный Web Server, иконка которого помещается в системный трэй, а решение отобразится в Web Browser(Рис.3.).

Рис.3. Выполнение ASP.NET сайта

Параграф 1.4. Жизненный цикл страницы

И хотя наш сайт пуст, но он уже «ведет насыщенную жизнь». Для того, чтобы убедиться в этом, добавим в директиву Page свойство Trace=»true» (Директива Page имеет множество свойств, о которых мы будем вести речь по мере их востребования). Вновь нажимаем F5. Результат показан на Рис.4.

Рис.4. Жизненный цикл страницы

Мы видим множество событий, которые произошли при отображении даже пустой страницы. При создании страницы одно из событий (Load) оформляется как метод класса (Page_Load). Однако разработчику доступны и еще четыре события: PreInit, Init, PreRender, Unload. Для каждого из них в класс может быть включен метод его обработки. Кроме того, разработчику будут доступны и события дочерних элементов управления, которые возникают между событиями Load и PreRender страницы. Это следует хорошо запомнить (к этому мы вернемся в следующем параграфе).

Параграф 1.5. Добавление функциональности сайту

На данном этапе наш сайт работоспособен. Добавим на сайт несколько контролов. В окне дизайнера формы (вкладка Designe файла Default.aspx) или на вкладку Source (в отличие от Visual Studio 2003) мы можем перетащить доступные визуальные контролы из окна Toolbox с любой его вкладки, например, Button и Label с вкладки Standart(Рис.5.).

Рис.5. Добавление контролов на сайт

После добавления контрола можно посмотреть и установить его свойства, воспользовавшись его контекстным меню и вызвав окно свойств (пункт Properties) или задать события для обработки, перейдя на вкладку Events окна Properties и кликнув мышкой в окошечке рядом с именем события. Напомним, что двойной клик по самому контролу вызывает его наиболее часто (по мнению разработчиков) востребованное событие (для кнопки это OnClick и обработчик события Button_Click).

В файле Default.aspx.cs добавим (напишем по образцу метода Page_Load) методы Page_PreInit, Page_Init, Page_PreRender, Page_Unload. Создадим событие Button1_Click, Button1_Init, Button1_Load, Button1_PreRender, Button1_Unload (методы для обработки событий пишутся для страницы, а для контролов создаются, а не пишутся, иначе в файле Default.aspx контрол будет не связан с событием).

Файл Default.aspx (его содержимое между тэгами Body) примет вид:

Наполним содержанием методы событий. Поставим целью показать не только возможности вывода текста на страницу, но и возможности изменения свойств элементов управления на различных этапах жизненного цикла страницы. Будем исследовать свойство Text элемента управления Label. Для контрола Label сначала установим свойство EnableViewState в true (по умолчанию), а затем в false и проанализируем результаты функционирования кода.

Свойство страницы IsPostBack равно false только при первом вызове страницы.

Выполним решение (F5), результат показан на Рис.6.

Рис.6. События жизненного цикла страницы и их влияние на свойства элементов

Из анализа функционирования данного кода видно:

Событие PreInit фиксирует этап начала персонализации и формирования страницы в целом. У дочерних элементов это событие не возникает. В обработчике Page_PreInit можно устанавливать шаблоны и темы оформления, изменять свойства элементов. При повторном вызове страницы обработчик данного события также вызывается, но его действие не изменит свойства элементов, у которых установлено свойство EnabledViewState в true.

Событие Init — начало рекурсивной инициализации содержания дочерних элементов страницы. Событие Init дочерних элементов вызывается ранее события Init страницы. Для событий Init дочерних элементов могут быть созданы собственные обработчики события (например, Button1_Init). В Page_Init возможно считывать и инициализировать свойства всех дочерних элементов. При повторном вызове страницы обработчики данного события также вызывается, но их действие, как и в PreInit, не изменит свойства элементов, у которых установлено свойство EnabledViewState в true.

Событие Load возникает как для страницы, так и для дочерних элементов. События дочерних элементов возникают позже чем событие загрузки страницы (в отличии от событий Init). На этом этапе доступны все свойства элементов управления, не зависимо от свойства EnableViewState.

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

Событие Unload — начало освобождение занятых ресурсов (закрытие файлов, открытых соединений с базой и т.п.). Свойства страницы на данном этапе недоступны.

Параграф 1.6. Установка Web сайта на сервер

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

Настройка функционирования сайта на локальном компьютере во многом схожа с настройкой его функционирования на сервере приложений и проходит ряд этапов.


Этап 1. Публикация сайта

Сайт перед развертыванием должен быть опубликован — то есть, исполняемый модуль должен быть превращен в dll, а файл странички Default.aspx получить ссылку на эту dll. Сайт перед развертыванием должен быть опубликован — то есть, исполняемый модуль превращен в dll, а страничка aspx получить ссылку на эту dll. Для публикации сайта создадим какой либо каталог (поближе к корню жесткого диска, например C:\MySite_1). Последовательно выполним в меню Visual Studio подпункт Rebuild Web Site пункта Build, а затем подпункт Publish Web Site. В появившемся окне Publish Web Site (Рис.7.) пишем или выбираем C:\MySite_1. Нажимаем кнопочку OK. Сайт опубликован (Рис.7.). Он состоит из нашего файла Default.aspx, файла Web.config (к этому файлу мы не раз еще вернемся), необязательного для сайта файла PrecompiledApp.config и библиотеки со случайным именем.

Рис.7. Публикация Web сайта

Обратим внимание на то, что файл Default.aspx остался таким же, как мы его создали. Изменилась только директива Page — в ней добавилась ссылка на библиотеку класса.

Этап 2. Настройка IIS для работы с сайтом

Для функционирования Web сайтов на Вашем локальном компьютере (не только данного сайта) должна быть установлена служба IIS. Если для выхода в Интернет используется прокси-сервер (на домашних компьютерах прокси для этого никогда не используется), может потребоваться настроить Internet Explorer так, чтобы обходить прокси-сервер (например, так, как показано на Рис.8.).

Рис.8. Настройка Internet Explorer

IIS при установке Windows обычно по умолчанию не устанавливаются. Установить IIS или выбрать дополнительные компоненты можно с помощью приложения «Установка и удаление программ» панели управления Windows. Чтобы установить IIS, добавить или удалить компоненты, нажимаем кнопку «Пуск», «Настройка», выбираем «Панель управления», «Установка и удаление программ». Открываем вкладку «Добавление и удаление компонентов Windows» и ставим галочку напротив Internet Information Serveces (IIS) — Рис.9.

Рис.9. Установка IIS

Далее следуем появляющимся на экране инструкциям для установки, удаления или добавления компонентов IIS.

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

Вы работаете в Visual Studio и на Вашем компьютере Net Framework был установлен вместе со студией.

Если Вы устанавливаете сайт на другом компьютере, то вам придется выполнить установку Net Framework. В Windows Vista Net Framework должен быть предустановлен, ровно как и в Widdows XP с Servis Pak 2, для остальных Windows потребуется установить дистрибутивный пакет Microsoft .NET Framework 2.0, который устанавливает среду .NET Framework и связанные с ней файлы, необходимые для запуска приложений, созданных для работы в среде выполнения .NET Framework 2.0.

Все необходимое можно скачать бесплатно с сайта Microsoft и более близких ссылок: Ссылка 1, Ссылка 2, Ссылка 3. В любом поисковике наберите «Microsoft .NET Framework скачать» и Вы найдете еще множество ссылок и инструкций по установке (хотя они и не требуются, пакет устанавливается как обычная программа).

Этап 3. Проверка работоспособности

Для проверки работоспособности IIS набираем в браузере (в Explorer):

Если все настройки Windows правильны, то в браузере должны отобразиться страницы:

Теперь можно страницы ASP просто копировать в папку.

Доступ к файлу из браузера

Если проверка пройдет неудачно, проверьте настройки ISS (кнопка «Пуск», «Настройка», выбираем «Панель управления», «Администрирование», «Internet Information Services», развертываем в дереве компьютера «Веб-узел по умолчанию») и, в контекстном меню «Веб-узел по умолчанию», выбираем пункт «Свойства». На вкладке «Домашний каталог» и

Рис.10. настройки ISS

вкладке ASP.NET (Рис 2.4) устанавливаем настройки, показанные на рисунках.

Рис.11. настройки ISS

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

Этап 4. Установка сайта на локальный сервер

Скопируйте всю директорию C:\MySite_1 с нашим сайтом в каталог C:\Inetpub\wwwroot\ (именно сюда).

Вновь запустите IIS (кнопка «Пуск», «Настройка», выбираем «Панель управления», «Администрирование», «Internet Information Services», развертываем в дереве компьютера «Веб узел по умолчанию»). В его дереве появилась папка MySite_1. Осталось превратить ее в виртуальный каталог. На вкладке «Каталог», даем права данному приложению и нажимаем кнопку «Создать».

Рис.12. Создание виртуального каталога

При создании виртуального каталога следует продумать и определить права доступа (В разных версиях IIS список прав может отличаться от приведенного на рисунке):

Доступ к тексту сценариев (Scripts Source Access) — разрешает выполнение ASP.NET файлов.

Чтение (Read) — IIS дает доступ пользователю к запрошенному ASP файлу каталога. Предоставление этого права не дает пользователю права на чтение конфигурационных файлов ASP NET, а отсутствие этого права запрещает доступ и к другим типам файлов (например, HTML и любым не ASP NET файлам).

Запись (Write) — разрешение на запись в каталог.

Выполнение (Execute) — разрешение на запуск других исполняемых файлов (например, ISAPI и CGI).

Запись в журнал (Log Visits) — разрешение на запись в журнал.

Обзор каталогов (Directory Browsing) — разрешение на просмотр файлов каталога.

Индексация каталога (Index this resource).

Проверяем установки на вкладках «Каталог», «Документы» и «ASP.NET» (Рис.13.) и нажимаем кнопку «OK».

Рис.13. Создание виртуального каталога для папки MySite_1

Обратим внимание на изменившийся вид папки MySite_1 — этот вид соответствует виртуальным каталогам и к ним можно обращаться по URL (Рис.14.).

Рис.14. Виртуальный каталог MySite_1.

Набрав в Explorer следующую строку, мы вызываем программу, она выполняет то, что презентовано выше.

Этап 5. Установка сайта на сервер приложений

Установка сайта на сервер приложений практически нечем не отличается от установки приложения на локальную машину. Скопируйте всю директорию C:\MySite_1 с нашим сайтом в каталог Веб узла по умолчанию сервера приложений. Для этого у вас должен быть соответствующий доступ к этому каталогу и IIS удаленного сервера. После этого сделайте каталог MySite_1 виртуальным, как мы делали выше. Единственное отличие на серверах приложений обычно требуется выбрать Application pool, который должен быть ASP.Net.2 (Рис.15.). Если вы сами разворачиваете сервер приложений, то возможно Вам придется его создать через контекстное меню узла Application Pools (Рис 16).

Рис.15. Виртуальный каталог MySite_1 на сервере приложений

Рис.16. Создание Application Pool для приложения

Глава 2. Подготовка setup файлов и инсталляция web сайтов

На данном этапе у нас есть решение, созданное на локальной машине в директории C:\SamplesASP\WebSite1, виртуальная директория для решения MySite_1 (C:\Inetpub\wwwroot\MySite_1). Мы можем воспользоваться заделом или создать новый сайт.

Изменим решение, убрав из него все лишнее, и вновь поместим на форму контрол Label и Button:

Наполним сайт содержанием:

Вызываем для решения Solution Explorer (View/Solution Explorer) и в самой верхней строчке решения вызываем контекстное меню пункт Add, выбираем пункт New Project. В открывшемся окне Add New Priject выбираем Project Types Setup and Deployment Projekts и Templates Web Setup Project, Name выбираем любое. Location также не имеет существенного значения — это где будут находиться файлы Setup (Рис.17,18.).

Рис.17. Создание проекта инсталляции

Рис.18. Создание проекта инсталляции

В окне File System (MySite1) добавляем через контекстное меню Web Application Folder, пункт Add/Project Output Content Files (рис 19.).

Рис.19. Создание проекта инсталляции

Для Web Application Folder вызываем контекстное меню, выбираем пункт Properties Window и можем поменять директорию установки на сервере — пункт Virtual Directory — изменим на созданную нами виртуальную директорию MySite_1 (Рис.20.).

Рис.20. Создание проекта инсталляции

Вызываем контекстное меню в Solution Explorer для узла MySite1 и выполняем пункт Rebuild (Перед этим необходимо выполнить Build/Rebuild Solutation в режиме Release).

Инсталляционные файлы находятся по адресу заданному нами в Location (Рис.18.) в директории Release. Это файлы MySite1.msi и setup.exe.

Стираем все из директории C:\Inetpub\wwwroot\MySite_1\ и выполняем установку, запустив на выполнение файл setup.exe. Согласившись со всеми настройками, мы закончим установку приложения. Вызываем сайт:

Аналогично можно поступить и на сервере приложений. Копируем файлы MySite1.msi и setup.exe. в любую директорию сервера приложений и выполняем установку, запустив на выполнение файл setup.exe (естественно на сервере) или MySite1.msi. Согласившись со всеми настройками, мы закончим установку приложения. Вызываем страничку из браузера:

Глава 3. HTML и Web контролы и их использование

3.1. HTML и Web контролы

Для уяснения разницы в использовании контролов вкладок HTML и Standart добавим в созданный выше проект два контрола Button — один с вкладки HTML, другой с вкладки Standart. Зададим соответствующие надписи на кнопках, чтобы можно было их различить, и рассмотрим HTML код в файле .aspx. Кнопка с вкладки Standart (Button1), в отличие от кнопки с вкладки HTML, имеет в задании кода также говорит о ее назначении для серверной обработки событий. Кнопка с вкладки HTML является аналогом кнопки HTML документа и может быть использована соответствующим образам (например для запуска скриптов формы и т.п.).

HTML контролы могут быть преобразованы в так называемые, серверные элементы управления (HTML Server Controls) — серверные аналоги стандартных элементов HTML. Для преобразования достаточно вызвать контекстное меню для этого контрола и указать для него режим «Run as Server Control».

Серверные контролы — уже имеют все для выполнения функций серверных или, как принято в данном случае говорить, сетевых элементов управления. Сетевые элементы управления в отличии от серверных имеют множество свойств и событий и отвечают требованиям стандартов разработки приложений Windows, (например, выше, мы использовали обработчик события нажатия кнопки, созданный как для обычного Windows приложения). Кроме того, несмотря на возможность преобразований, между двумя вариантами контролов остаются различия:

В большинстве HTML-редакторов, например, FrontPage, серверные элементы управления будут не видны. Перед Web-дизайнерами встает вопрос: воспользоваться средствами программирования NET или средствами Web-дизайна HTML-редакторов, к которым они привыкли. В тоже время Microsoft, в настоящее время, создала свои средства визуальной разработки (Visual Web Developer 2005), а, учитывая, что продукты фирмы имеют один из самых больших секторов на компьютерном рынке, то следует ожидать и поддержку Net от разработчиков других фирм.

Серверные элементы управления могут быть представлены множеством тегов (например DataGr ).

Если серверный и HTML контрол выполняют одинаковую функцию отправки информации на сервер (например, из текстового поля), то серверный контрол сохранит эту информацию (если обработчик какого либо события не изменит ее), а информация в HTML контроле будет стерта после отправки.


Серверные элементы имеют возможность корректировать код (подстраиваться) под тип браузера.

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

Перечисленное выше говорит о предпочтительности использования серверных контролов.

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

Данный код, в отличии от исходного в файле aspx, не имеет уже выражения runat=»server» (браузеру нет смысла его интерпретировать), но появилось дополнительное скрытое поле (input type=»h ) всех серверных элементов управления.

3.2. Динамическое создание таблиц и работа с ними

Как пример использования серверных Web контролов имеющих аналог среди HTML контролов, рассмотрим динамическое создание таблиц. Этот пример призван показать богатство возможностей серверных контролов по сравнению с их «младшими братьями».

Для динамического создания таблиц в пространстве имен System.Web.UI.WebControls имеются ряд классов, основные из которых: HtmlTable, HtmlTableRow, HtmlTableCell, HtmlTableCellCollection, HtmlTableRowCollection

В Visual Studio реализована поддержка простой модели таблицы. Это означает, что нельзя динамически создать , , ,

, , элементы.

Обратим внимание, что создавать контролы придется каждый раз при перезагрузке страницы так как элемент Таблица добавляется в экземпляр класса страницы, который формируется заново при каждой загрузке страницы. Однако содержимое ячеек таблицы и состояние контролов восстанавливается (используется встроенный механизм ViewState).

Ниже приведен пример динамического создания таблицы, вывода в ячейки созданной таблицы информации и элементов управления, которые так же создаются динамически. Кроме того, показан пример использования событий динамически созданных и добавленных в ячейки таблицы элементов управления. На форме решения web сайта размещены три контрола: PlaceHolder, Label ( >

Рис.21. Пример работы с динамически созданной таблицей

Глава 4 Управление состоянием Web приложений

Параграф 4.1. Использование VIEWSTATE

Ранее мы отмечали, что код файла aspx. после первого вызова страницы с сервера, в отличии от исходного, уже не имеет свойства runat=»server» (браузеру он не нужен), но содержит дополнительное скрытое поле (input type=»h , то можно просмотреть вид и объем информации, передаваемой сервером (Рис.22.).

Рис.22. VIEWSTATE и объем передаваемой информации

Имеется возможность запретить использование __VIEWSTATE как для страницы целиком, так и для отдельных элементов, используя свойство EnableViewState, которое имеется и у директории Page, и у многих контролов.

Разработчик может хранить в VIEWSTATE и свою информацию, например, число ошибок допущенных при тестировании (в директиве Page EnableViewState должно быть true).

В приведенном примере значение переменной viNumError после отсылки страницы на сервер и ее возврата клиенту не сохраняется. VIEWSTATE помогает поместить ее значение в поле сохранения и восстановить при загрузке страницы. Этот механизм достаточно удобен при работе на одной страницы. Переход на другую страницу сайта (например, Response.Redirect(«Default2.aspx»)) и последующий возврат на исходную, ведет к потере сохраненных значений. Кроме того, VIEWSTATE текущей страницы недоступно странице, на которую будет выполнен переход.

Параграф 4.2. Передача информации между страницами сайта

4.2.1. Использование URL

Существует несколько способов передачи данных между страницами. Самый простой — включить значение переменной в URL(строку запроса) вызываемой страницы. Передаваемые данные должны следовать за URL вызываемой страницы после вопросительного знака. Данные включаются по принципу «имя-значение» и разделяются знаком &.

Для демонстрации данной возможности, добавим в решение еще одну Web страничку ()

URL вызова будет:

Этот метод имеет как свои преимущества (нет дополнительной нагрузки на сервер, высокая скорость передачи данных), так и недостатки (открытость и незащищенность информации, ограниченность объема — предельная длина URL обычно 1-2кб и ограниченный набор символов, допустимых в URL.

Для приема данных используется метод QueryString класса Request.

Для демонстрации использования этой возможности добавим еще одну кнопку в решение предыдущего параграфа. Запишем следующий код обработчика нажатия кнопки:

Кликнем правой кнопкой мышки на имени решения в SolutionExplorer и, выбрав пункт контекстного меню Add, подпункт Add WebForm, добавим к решению еще одну форму, которая по умолчание будет иметь имя WebForm2. На форму поместим контрол Label и в Page_Load запишем следующий код:

По нажатии кнопки 2 будет не только вызвана страничка WebForm2.aspx, но и передан наш текст в Label.

Еще одна возможность передачи данных в URL — передача и получение информации о контроле, который вызвал Redirect на страницу. Пусть у нас несколько событий нажатия кнопок замкнуты на один обработчик, например Button1_Click. Тогда мы можем передать информацию страничке на которую переходим следующим образом:

На страничке WebForm2.aspx мы легко можем узнать по какой кнопке выполнен Redirect:

Cookie(печенье) — небольшие файлы, создаваемые на жестком диске или в памяти браузера машины клиента, позволяющие Web серверам хранить в них информацию.

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

Для получения доступа к cookie в приложении должна быть подключено пространство имен:

Для работы с cookie используется классы Request и Response. Следующий пример демонстрирует создание и использование cookie. На форме решения поместим три контрола: Button, Label и TextBox. В обработчиках событий запишем следующий код:

Результат работы показан на Рис.23.

Рис.23. Пример использования cookie

В файле C:\Documents and Settings\Имя_Компьютера\Cookies\, найдем наше «печенье». Имя cookie включает имя_пользователя_компьютера@имя_сервера[1] (где имя_сервера localhost, yandex и т.п.) при старте будет записано:

После регистрации и второго вызова:

Параграф 4.3. Сеансы и их использование

4.3.1. Понятие сеанса в ASP.NET

Необходимость использования сеансов возникла из за потребности хранения больших объемов информации, хранение которых уже рассмотренными нами способами либо невозможно, либо нецелесообразно.

Сеанс (сессия) объединяет некоторую информацию серии запросов с одного адреса (одного клиента) в течении определенного времени. Каждый клиент, который получает доступ к сайту, получает свой сеанс и, как следствие, свою коллекцию данных. Сеанс начинается, когда пользователь в первый раз запрашивает страницу сайта, и заканчивается, когда приложение явно закрывает сеанс или когда превышено заданное время ожидания.

ASP.NET содержит необходимую структуру данных состояния каждого сеанса, позволяющую:

Автоматически определять и классифицировать запросы, приходящие от клиента.

Хранить данные с ограниченной областью действия на сервере.

Создавать соответствующие события управления жизненным циклом сессии (Session_OnStart, Session_OnEnd и т. д.).

Автоматически освобождать данные сеанса, если клиент не посещает сайт определенный период времени.

Каждый активный сеанс ASP.NET имеет идентификатор, представляющий собой 120-разрядную строку — SessionID, состоящую из допустимых в URL-адресах знаков ASCII. Алгоритм генерации значений SessionID гарантирует уникальность (во избежание совпадений идентификаторов сеансов) и случайность. Нельзя воспользоваться значением SessionID для вычисления значения идентификатора сеанса. В зависимости от параметров приложения строка SessionID передается между сервером и клиентом посредством файлов cookie или с помощью включения значения SessionID в URL-адрес. Этот идентификатор является единственным фрагментом информации сессии, которая передается между сервером и клиентом.

Когда клиент предъявляет идентификатор сеанса, то сервер находит соответствующий сеанс, извлекает данные, преобразует их в объекты и помещает в коллекцию данных, откуда данные становятся доступны программному коду страницы запроса. Идентификаторы у разных клиентских запросов различны, как результат — доступ возможен только к своей коллекции данных. До тех пор, пока клиент не использует сеанс для сохранения данных, идентификатор сеанса при каждом запросе генерируется вновь (иначе, сеанс сохраняется только если было сохранение данных). Это позволяет сократить затраты памяти и время на сохранение данных и идентификатора сеанса.

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

4.3.2. Свойства и методы объекта Session

Для организации работы с сеансами используется класс System.Web.SessionState.HttpSessionState, который на web странице приложения доступен как встроенный объект Session.

Перечислим основные свойства и методы HttpSessionState:

Основные свойства

CodePage — возвращает или задает идентификатор кодовой страницы для текущего сеанса.

Contents — возвращает ссылку на текущий объект состояния сеанса. Иначе, семейство Contents объекта Session содержит все хранящиеся переменные сеанса.

Count — возвращает число элементов в коллекции состояния сеанса.

IsCookieless — возвращает значение, показывающее, был ли идентификатор сеанса внедрен в URL-адрес или сохранен в файле cookie.

IsNewSession — возвращает значение, показывающее, был ли создан сеанс с текущим запросом.

IsReadOnly — возвращает значение, показывающее, доступен ли сеанс только для чтения.

IsSynchronized — возвращает значение, показывающее, синхронизирован ли доступ к коллекции значений состояний сеанса (потокобезопасный доступ).

Item — возвращает или устанавливает индивидуальные значения сеанса. (в C# является индексатором класса HttpSessionState).

Keys — возвращает коллекцию ключей всех значений, сохраненных во время сеанса.

LCID — возвращает или задает идентификатор языка и стандартов (LCID) текущего сеанса.

Mode — возвращает текущий режим состояния сеанса.


SessionID — возвращает уникальный идентификатор сеанса, применяемый для определения сеанса.

StaticObjects — возвращает коллекцию объектов, объявленных тегами файла приложения ASP.NET: global.asax.

SyncRoot — возвращает объект, который можно использовать для синхронизации доступа к коллекции значений состояния сеанса.

Timeout — возвращает и задает допустимое время ожидания (в минутах) между запросами перед завершением сеанса провайдером состояния сеанса.

Основные методы

Abandon — уничтожает все объекты, хранимые в объекте Session и освобождает их ресурсы. Если метод Abandon не вызван явно, сервер уничтожит объекты при истечении времени ожидания сеанса. При вызове метода Abandon запрашивается удаление текущего объекта Session, но он не удаляется до тех пор, пока не будут обработаны все команды сценария на текущей странице. (можно обращаться к переменным, хранимым в объекте Session, с той же страницы, где расположен вызов Abandon, но не с любой последующей веб-страницы).

Add — добавляет новый элемент в состояние сеанса.

Clear — удаляет все значения из состояния сеанса.

CopyTo — Копирует коллекцию значений состояния сеанса в одномерный массив, начиная с заданного индекса массива.

Equals — (унаследовано от Object)- определяет, равны ли два экземпляра Object.

GetEnumerator — возвращает перечислитель всех значений состояния сеанса для текущего сеанса.

GetHashCode — (унаследовано от Object) — служит хеш-функцией для конкретного типа, пригоден для использования в алгоритмах хеширования и структурах данных, например в хеш-таблице.

GetType (унаследовано от Object) — возвращает Type текущего экземпляра.

Remove — удаляет элемент из коллекции состояний сеанса.

RemoveAll — удаляет все значения состояния сеанса.

RemoveAt — удаляет элемент по заданному индексу из коллекции состояний сеанса.

ToString (унаследовано от Object) — возвращает строку, которой представлен текущий Object.

4.3.3. Пример использования сеанса

Рассмотрим пример хранения некоторого класса RegInfo с использованием сессии. Для этого объявим класс в, котором пользователь будет накапливать некоторую регистрационную информацию:

Несколько примеров использования свойств и методов Session:

Использование метода IsCookieless:

При значении свойства cookieless=»true», URL запроса будет выглядеть примерно так:

С помощью метода Remove семейства Contents можно выборочно или полностью удалить ссылки на переменные, которые добавлялись при соответствующем состоянии сеанса:

4.3.4. Настройка состояния сеанса

Конфигурационные данные хранятся в текстовом файле Web.config (в Visual Studio .Net генерируется автоматически), находящемся в каталоге приложения. Этот файл определяет условия выполнения приложений ASP .NET — такие как параметры отладки и системы безопасности. Состояние сеанса также хранится в файле Web.config.

Пример фрагмента файла Web.config:

Параметр mode может иметь значения: «InProc» — (по умолчанию) внутренний режим состояния сеанса (информация хранится в том же процессе, где и рабочие потоки), «off» — отключено управление состоянием сеанса, «StateServer» — использование отдельной службы сервера для управления сеансом, «SqlServer» — использование базы данных SQL для хранения состояния сеанса.

Если в приложении не используются сеансы, то для некоторого повышения производительности целесообразно задать mode=»Off», mode=»InProc» обеспечивает высокую производительность, но не сохраняет сеанс при перезапуске страницы.

При использовании mode=»StateServer», служба управления состоянием сеанса (служба ASP.NET State Server), запущенная на сервере, дает базовый уровень защиты при перезапуске процесса, что, естественно, влечет дополнительные временные издержки. В этом случае обязательно указание параметра stateConnectionString (TCP/IP компьютера — служба может быть запущена и на другом компьютере). Служба запускается из Administrative Tools панели управления, пункт Services, найти ASP.NET State Server и через контекстное меню строки с именем сервера выполнить пункт меню Start. Через контекстное меню, пункт Properties, выполняется и установка Startup Type (например, на автоматический запуск — выбрать Automatic).

При использовании mode=»SqlServer», Sql сервер обеспечивает самый надежный, но и самый медленный метод хранения данных. Метод требует задания параметров sqlConnectionString, включая пароль доступа (явно нежелательно при неиспользовании интегрированных методов доступа), установку специальных хранимых процедур для сохранения и извлечения информации о сеансе, и временных баз данных для сеансов.

ASP.NET включает для этой цели сценарий Transact-SQL с именем InstalSqlState.Sql (каталог Winnt\Microsoft.Net\Framework\номер_версии, сценарий можно запустить используя утилиты SQL Server OSQL.exe или Query Analyzer). После выполнения сценария средства все указанные средства, обеспечивающие работу с сессией и хранения данных в Sql БД становятся доступными, в том числе и после перегрузке компьютера.

Значении параметра cookieless=»true» означает, что идентификатор сеанса внедряется в URL-адрес.

Значение timeout устанавливает время жизни сеанса.

Глава 5. Класс — HttpApplication и состояние приложения

В ASP.NET есть специальный класс — HttpApplication (System.Web.HttpApplication), представляющий все приложение. Он контролирует его общее состояние, и обрабатывает глобальные события. В основном этот класс используется для хранения объектов уровня приложения, к которым может получить доступ любой клиент.

Класс HttpApplication предоставляет программный доступ к методам HttpApplication.Init и HttpApplication.Dispose и событиям Application_OnStart и Application_OnEnd и др. Кроме того, из него есть доступ ко всем public свойствам и событиям во всех модулях приложения.

Глава 6. Новые возможности передачи данных между формами в ASP.Net 2.0

В ASP.NET 2.0 появилась возможность непосредственно передавать данные, введенные на одной странице в некоторой вводной форме (в поле элемента управления) другой странице формы одного решения. Причем, данный механизм позволяет получать в вызываемой форме значения свойств элементов из вызывающей формы. Для этого в ASP.NET 2.0 для ряда контролов введено дополнительное свойство — PostBackUrl, позволяющие указать какой именно странице решения должна быть передана информация из элементов управления вызывающей страницы, если обращение к серверу инициировано этим элементом управления.

Например, создадим решение, имеющее две формы (Default и WebForm2). Разместим на форме Default контролы TextBox и Button. Для контрола Button установим свойство PostBackUrl в значение WebForm2 (Рис.24, 25).

Рис.24. Решение сайта

Рис.25. Решение сайта

Выполним решение сайта. Убедимся, что даже при отсутствии обработчика нажатия кнопки, сервер, при нажатии кнопки «Передать», выполнит редирект на WebForm2. Но не только пользователь будет переадресован на страницу WebForm2.aspx, но и вся информация об элементах управления формы Default.aspx, будет также передана форме WebForm2.aspx. Для реализации этой возможности, ASP.NET 2.0 проверяет формы на наличие в них элементов управления с атрибутом PostBackUrl и, при их наличии, создает для страницы дополнительное скрытое поле __PREVIOUSPAGE, которое и содержит информацию о состоянии элементов формы. Эта информация может быть извлечена на вызываемой странице через свойство PreviousPage.

Для демонстрации возможности передачи информации (из контрола TextBox формы Default.aspx в форму WebForm2.aspx) на странице WebForm2 разместим контрол Label и контрол TextBox.

В файле WebForm2.aspx.cs напишем следующий код:

Теперь, при нажатии в форме Default.aspx кнопки «Передать» будет вызвана форма WebForm2, и в ней отобразится информация, введенная в textBox1 формы Default.aspx (Рис.26.).

Рис.26. Выполнение решения сайта

Другая возможность получения доступа с использованием PreviousPage показана на Рис.27. В форме Default мы объявили public переменную viI и при загрузке присвоили ей значение 10.

Далее, используя приведение PreviousPage к странице родителю мы можем получить доступ к public свойствам и переменным вызвавшей страницы.

Рис.27. Выполнение решения сайта

Отметим, что PreviousPage содержит информацию практически обо всей вызвавшей странице: Title, Header, IsVal >

Образовательный блог — всё для учебы

1) Общие сведения об ASP
ASP (Active Server Pages) – это технология программирования, позволяющая создавать на Web-сервере (с IIS, 1997 г.) динамические интерактивные Web-страницы. ASP представляет собой файлы с расширением *.Asp, содержащие смесь кода HTML, кода сценариев на языке VBScript или JavaScript, средств доступа к БД (ADO), управления внешними COM-объектами и внутренних объектов ASP. Эта технология впервые была реализована в Web-сервере IIS фирмы Microsoft и фактически является интерпретируемым вариантом ISAPI-расширения сервера.

2) Встроенные объекты
ASP включает семь встроенных (не требующих создания и инициализации) объектов, используемых для пересылки HTML-страниц и данных браузеру, извлечения данных, обмена данными с сервером и т.д. среди них:
Response – пересылает данные клиенту
Request – обрабатывает данные, поступающие с запросом от клиента.
Server – обеспечивает взаимодействие с сервером.
Application – кэширует данные о приложении.
Session – кэширует данные о браузере.
ObjectContext – запускает транзакции и управляет их выполнением.
ASPError – поддерживает работу с ошибками.

3) Особенности ASP
Помимо встроенных, в комплект ASP входит ряд устанавливаемых объектов, часть из которых бывает полезна, а часть незаменима. Так COM объект Dictionary незаменимый.

В отличие от CGI, ASP-сценарий выполняется как внутренний процесс сервера, кроме того, он многопоточен и оптимизирован для работы с большим количеством пользователей. ASP-сценарий начинает выполняться после того, как браузер запросит файл с расширением *.Asp с Web-сервера. Web-сервер посылает вызов встроенному в IIS ASP-механизму обработки (..\System\InetSrv\Asp.Dll), который считывает сценарий и выполняет все встретившиеся команды. В результате генерируется HTML-страница, которая посылается браузеру.

Для того, чтобы с помощью ASP сделать что-либо серьезное на Web-сервере, необходимо создать COM-объекты и использовать их службы (методы). Компоненты ASP Должны использовать модель потоков STA – каждый объект выполняется в контексте собственного потока и защищен от конкурирующих потоков.

4) Доступ к встроенным объектам
Для доступа от создаваемых COM-объектов ко встроенным необходимо использовать интерфейсы:
a) С помощью функции GetObjectContext получить указатель на интерфейс IObjectContext;
b) С помощью указателя следует получить указатель на интерфейс IGetContextProperties;
c) Вызвав метод GetProperties() и передав ему имя встроенного объекта, например, Request или Response, и вариантную переменную, можно получить через нее указатель на IDispatch интерфейс запрашиваемого объекта;
d) Далее можно вызывать методы встроенного объекта.

5) Недостатки ASP
• Программы ASP не компилируются, а интерпретируются. Следовательно, они исполняются медленнее компилируемых.
• ASP не имеет развитых средств определения типов. Все переменные имеют тип Variant (16 байт). Это удобно, но не способствует повышению скорости работы.
• Внешние файлы приходится включать (include) при каждом обращении.
• ASP трактует все объектные (object) переменные как объекты с поздним связыванием. При каждом обращении к свойству или методу запрашиваются все данные об объекте, что увеличивает время отклика.

6) Пример реализации ASP
— Необходимые настройки и установки
На сервере необходимо установить IIS (каталог WEB5), ADO, ODBC (System DSN – SLS), InterBase (FireBird). В качестве источника данных воспользуемся БД Sales.Gdb.

— Структура программы доступа к БД

HTML-заголовок:

Демонстрация ASP

Подключение к БД



Подключение к БД:

HTML-подвал:

Цикл считывания данных:


Fields.Count-1 %>


Fields.Count-1 %>

— Работа с программой
Для запуска программы следует в браузере набрать: http://localhost/web5/sales/php

7) ASP клоны и аналоги
Chili!Soft
Chili!Soft, продукт одноименной компании, — достаточно гибкий клон ASP, способный работать на разнообразном оборудовании, операционных системах и Web-серверах. Считается, что Chili!Soft и ASP совместимы на 90%.

Java Server Pages
Java Server Pages (JSP) – технология, напоминающая ASP, но в которой используется только язык Java в сочетании с HTML, для поддержки динамического формирования страниц на любой платформе с поддержкой Java. Аналогом COM-объектов являются объекты JavaBeans.

Apache::ASP
Apache::ASP на основе PerlScript от Apache Perl International Project работает на множестве операционных систем, но только с Web-сервером Apache.

PHP
Похожими возможностями обладает язык с открытой лицензией PHP. Правда технология PHP базируется на классических библиотеках объектных модулей, а не на использовании модели компонентного объекта COM и элементов управления ActiveX.

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