Asp важные изменения в asp


Содержание

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

Особенности ASP.NET MVC. Что нового в MVC 5

Платформа ASP.NET MVC представляет собой фреймворк для создания сайтов и веб-приложений с помощью реализации паттерна MVC.

Концепция паттерна (шаблона) MVC (model — view — controller) предполагает разделение приложения на три компонента:

Контроллер (controller) представляет класс, обеспечивающий связь между пользователем и системой, представлением и хранилищем данных. Он получает вводимые пользователем данные и обрабатывает их. И в зависимости от результатов обработки отправляет пользователю определенный вывод, например, в виде представления.

Представление (view) — это собственно визуальная часть или пользовательский интерфейс приложения. Как правило, html-страница, которую пользователь видит, зайдя на сайт.

Модель (model) представляет класс, описывающий логику используемых данных.

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

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

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

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

Свою реализацию паттерна представляет платформа ASP.NET MVC. 2013 год ознаменовался выходом новой версии ASP.NET MVC — MVC 5, а также релизом Visual Studio 2013, которая предоставляет инструментарий для работы с MVC5.

Хотя во многих аспектах MVC 5 не слишком сильно будет отличаться от MVC 4, многое из одной версии вполне применимо к другой, но в то же время есть и существенные отличия:

В MVC 5 изменилась концепция аутентификации и авторизации. Вместо SimpleMembershipProvider была внедрена система ASP.NET Identity, которая использует компоненты OWIN и Katana.

Для создания адаптивного и расширяемого интерфейса в MVC 5 используется css-фреймворк Bootstrap

Добавлены фильтры аутентификации, а также появилась функциональность переопределения фильтров

В MVC 5 также добавлены атрибуты маршрутизации

Это наиболее важные нововведения в MVC 5. Кроме того, есть еще ряд менее значимых, например, использование по умолчанию Entity Framework 6, некоторые изменения при создании проекта (концепция One ASP.NET), дополнительные компоненты и т.д.

В любом случае все полученные при работе с MVC 4 навыки можно успешно применять при использовании MVC 5, учитывая, конечно, нововведения.

Asp важные изменения в asp

Этот текст предназначен для тех, кто никогда не имел дела с ASP и вообще смутно себе представляет возможности программирования на стороне сервера. Я ставил себе задачу создать у читателя общее представление о предмете. Отдельные неточности при этом менее важны — пожалуйста, громко не ругайтесь.

Общие сведения

ASP (Active Server Pages) – это мощная технология от Microsoft, позволяющая легко разрабатывать приложения для WWW. ASP работает на платформе Windows NT и IIS (Internet Information Server), начиная с версии 3, хотя вроде есть реализации на других платформах. ASP – это не язык программирования, это внутренняя технология, позволяющая подключать программы к Web-страницам. Основа успеха ASP – простой скриптовый язык (Visual Basic Script или Java Script) и возможность использования внешних COM-компонент.

Как это все происходит?

Вы пишете программу и складываете в файл на сервере. Браузер клиента запрашивает файл. Файл сначала интерпретируется сервером, на выходе производится HTML-код. Этот HTML посылается клиенту. Файлы с программами имеют расширение .asp. Файлы asp – это обычные текстовые файлы, содержащие исходные тексты программ. Файлы делаются с помощью любого текстового редактора. Каталог, в котором размещены файлы asp должен иметь права на выполнение, так как сервер исполняет эти файлы, когда браузер их запрашивает. Собственно программы пишутся на любом скриптовом языке, который установлен в системе. По умолчанию поддерживаются VBScript и JavaScript. Можно доустановить другие (например, Perl). Если ничего специально не указывать используется VBScript. В дальнейшем будем ссылаться только на него. Программные фрагменты заключаются в скобки . Можно ставить открывающую скобку в начале файла, закрывающую – в конце, все что между ними – программа на Visual Basic’е.

Какие средства есть для программирования?

Web – нормальная среда программирования, если правильно понять, что есть что. В VBScript есть все нормальные конструкции структурного программирования (if, while, case, etc). Есть переменные (описывать не обязательно, тип явно не задается). Поддерживаются объекты. Работа с ними обычная – Object.Property, Object.Method. Есть ряд встроенных объектов (Request, Response, Session, Server, Connection, Recordset). Можно доустанавливать другие компоненты (скачивать, покупать, программировать), например для работы с электронной почтой.

Вывод

Понятия «экран», куда можно выводить данные нет. Все, что надо показать пользователю, выбрасывается в выходной поток на языке HTML. Браузер пользователя интерпретирует этот HTML. Для упрощения вывода существует объект Response . Вывод осуществляется с помощью метода Write .

Так производится запись во внутренний буфер объекта Response. Когда скрипт заканчивает работу, весь буфер выдается клиенту. Надо заметить, что клиент получает «чистый» HTML, таким образом программы на ASP не зависят от клиентского ПО, что очень важно. Если внутри выводимой строки нужно использовать кавычку, кавычка удваивается. Другие методы и свойства Response позволяют управлять выводом. Так Response.Buffer регулирует, получает ли клиент данные по мере из записи в Response, или все сразу по завершении исполнения страницы. Метод Response.Redirect перенаправляет браузер на другую страницу. Чтобы им пользоваться, нельзя до него на странице использовать Response.Write.

Программа на ASP не может явно спросить пользователя о чем-то. Она получает данные из других страниц, либо через URL. Передаваемые параметры помещаются во входной поток и доступны через объект Request . Чтобы передать переменную var в программу test.asp , надо написать:

Чтобы из программы получить значение этой переменной, надо написать:

Несколько переменных разделяется знаком &:

Кроме того, чтобы задавать параметры в URL, можно воспользоваться формами HTML. В вызывающей странице пишем так:

Так это выглядит:

При этом пользователь увидит форму из одного поля ввода (var1), в нем будет значение по умолчанию «default». Второе поле (var2) будет невидимо и будет передавать всегда фиксированное значение «var2value». Кнопка «Submit Form» завершает заполнение формы и передает все переменные на test.asp (action). Если method=»get», переменные передаются через URL (test.asp?var1=default&var2=var2value). Если method=»post», передаются вместе с запросом так, что внешне передача переменных не заметна. В вызываемой программе безразлично, какой метод изпользовался (почти). Если у вас нет специальных аргументов за метод GET, используйте метод POST.

Формы

Формы HTML используются для организации диалога с пользователем. Поддерживаются стандартные элементы управления. Все многообразие задается немногими тэгами:

  • INPUT (с параметром TYPE=)
  • SELECT
  • TEXTAREA

Описание – в документации по HTML.

Взаимосвязь между отдельными страницами

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

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

ASP, используя cookies, предоставляет программисту более простое средство — объект Session (сессия). Сессия стартует, когда новый пользователь обращается к любому asp-файлу приложения. Сессия заканчивается при отсутствии активности пользователя в течение 20 минут, либо по явной команде. Специальный объект Session хранит состояние сессии. Туда можно записывать переменные, которые доступны из любой страницы в этой сессии. Записать данные в этот объект можно просто:

Считать потом еще проще:

Сессия, таким образом, – это еще один метод передачи данных между страницами. Одна страница пишет данные в сессию, другая – берет потом оттуда.

Наряду с объектом Session существует объект Application . Если сессия создается для каждого нового пользователя, до Application существует в единственном экземпляре, и может использоваться всеми страницами приложения.


Управление приложением

Программисту предоставляется возможность реагировать на 4 события: старт/стоп приложения и старт/стоп каждой сессии. Для реализации этих событий предназначен файл global.asa , который должен располагаться в корневом каталоге приложения. Вот его примерный скелет:

Нужно «просто» вписать Ваш код на соответствующее место. Нужно заметить, что отлаживать код для global.asa довольно непросто, так как он выполняется при очень специфических обстоятельствах (к примеру при старте или остановке сервера).

Использование внешних компонент

Если на сервере установлены дополнительные компоненты, их можно использовать из ASP. Стандартные объекты (например из библиотек ADO (Connection и Recordset) и Scripting (Dictionary, FileSystemObject)) доступны всегда. Установка новой компоненты обычно состоит в копировании dll-файла в каталог на сервере и ее регистрации с помощью программы regsvr32.exe. [В COM+ используется своя процедура инсталляции объектов, это однако не влияет на использования объектов.]

Создать экземпляр объекта можно так:

Class.Object указываются в документации на компоненту. В переменной var запоминается ссылка на созданный экземпляр объекта. Когда объект не нужен, ссылку нужно обнулить с помощью команды:

Пожалуйста всегда обнуляйте все ссылки на объекты, когда они больше не нужны. Теоретически это должно происходить автоматически при завершении процедуры/страницы, однако в стандартной сборке мусора есть определенные «проблемы».

В остальном использование компоненты зависит от самой этой компоненты.

Работа с базами данных

Из ASP можно легко и просто работать с любыми базами данных. Это делается через две промежуточные технологии: ODBC и ADO.

ODBC позволяет организовать доступ к любым базам данных через унифицированный интерфейс с помощью языка SQL. Специфика конкретных СУБД учитывается при помощи специальных драйверов БД. Такие драйверы существуют для всевозможных СУБД (в частности SQL Server, Oracle, Access, FoxPro). Поддержка ODBC обеспечивается на уровне операционной системы Windows (NT). Настройка – через Control Panel/ODBC. Базовым понятием является источник данных или data source. Источник данных – это совокупность сведений о базе данных, включая ее драйвер, имя компьютера и файла, параметры. Чтобы пользоваться базой надо создать источник данных для нее. Важно, чтобы источник данных был «системным», в отличии от «пользовательского». После этого надо лишь знать имя источника данных. [В настоящее время ODBC отступает перед натиском технологии OLE DB. На практике это однако практически ничего не изменяет. Вместо имени источника данных нужно использовать Connection String, в которой указывается имя ODBC-драйвера и все его параметры.]

ADO – это совокупность объектов, доступных из ASP, позволяющих обращаться к источнику данных ODBC [или OLE DB]. Фактически нужны лишь 2 объекта – Connection , представляющий соединение с базой данных и Recordset , представляющий набор записей, полученный от источника. Сначала необходимо открыть соединение, потом к нему привязать Recordset, потом, пользуясь методами Recordset’а, обрабатывать данные. Вот пример:

Если команда SQL не возвращает данных, recordset не нужен, надо пользоваться методом Conn. Execute (SQL_COMMAND).

Если Вы хотите вызывать хранимые процедуры сервера БД с параметрами, нужно воспользоваться объектом Command , который в свою очеред содержит объекты Parameter .

Методики программирования, советы


Описание переменных

VBScript — очень нетребовательный к программисту язык. Так он не требует описывать переменные и не содержит явных типов данных. Все переменные принадлежат одному типу Variant . Из-за отсутствия описаний могут произойти очень трудно обнаруживаемые ошибки. Одна опечатка может стоить полдня поисков.

Однако, есть возможность явно потребовать описания переменных. Для этого первой строкой в ASP-файле нужно написать Option Explicit . После этого обращение к переменной, которая не была объявлена с помощью Dim , вызывает ошибку с указанием номера строки.

Кстати, где расположены описания Dim в процедуре — совершенно не важно. Они могут стоять как до использования переменной, так и после, и даже в цикле. Видимо они отрабатываются препроцессором. Явно задать тип переменной с помощью Dim Var as Typ , как в Visual Basic, все равно нельзя.

Чередование ASP/HTML

Если нужно выдать большой кусок HTML, можно не пользоваться Response.Write. Если в asp-файле встречается кусок текста вне скобок , он трактуется просто как HTML, который надо вывести. Пример:

Обработка ошибок

Для отслеживания ошибок используется специальный объект Err . Он устанавливается в ненулевое значение, если предыдущая команда породила ошибку. Ее можно проверять с помощью If, и таким образом реагировать на ошибки. Чтобы из-за ошибки не прерывалось выполнение программы, в начале нужно включить команду

Включение других файлов

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

Важно: все includes в тексте отрабатываются до исполнения файла. Т.е. даже если include стоит внутри if, то сначала будут включены все includes во всех ветках, и только потом, во время исполнения, будет принятно решение, какую ветку выполнять. Т.е. следующий код не дает условного включения файлов:

Обработка форм

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

Рекурсивная обработка форм

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

Переменные HTTP

Запрос от браузера, кроме запрашиваемой страницы несет еще некоторые данные. Эти данные, например, IP-адрес клиента, доступны через специальные переменные объекта Request. IP-адрес – Request(«REMOTE_ADDR»). Другие — см.документацию (ASPSamp\Samples\srvvar.asp).

Переадресация

Очень легко написать на ASP скрипт, который будет производить некоторые расчеты, и в зависимости от результатов переадресовывать браузер на разные URL (например, подставлять нужный баннер). Делается это так:

Только надо следить, чтобы до выполнения команды redirect ничего не было записано в Response (даже коментарии HTML).

Электронная почта

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

Asp важные изменения в asp

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

Dotnetfx.exe /c:»install /noaspupgrade»

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

Примечание.

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

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

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

Примечание.

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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


Dotnetfx.exe /c:»install /noaspupgrade»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

. Часть 1

Интерфейс к базе данных с помощью ASP

Постановка задачи

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

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

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

Что нам понадобится

Для реализации вышеизложенной задачи нам потребуется персональный компьютер с Microsoft Windows NT или Windows 2000 (можно и Workstation, и Server), установленный IIS (Internet Information Server), какой-нибудь HTML-редактор (советую использовать Macromedia Dreamweaver), Microsoft Access (версии 95, 97 или 2000) и самый обычный текстовый редактор.

Создание и подготовка базы данных

Прежде всего создадим базу данных статей, для чего:

  • запустим приложение Microsoft Access;
  • любым из известных способов создадим новую базу данных. Назовем ее «Articles»;
  • в созданной базе данных создадим таблицу с именем, например «Articles»;
  • пользуясь инструментом «Конструктор», определим поля нашей таблицы и типы принимаемых ими значений (рис. 1);
  • заполним таблицу несколькими статьями в соответствии с созданными полями (рис. 2);
  • сохраним базу данных в файле «ArticlesDB.mdb».

Далее необходимо прописать нашу базу данных в соответствующем разделе источников данных системы, для этого:

  • запустим программу-конфигуратор источников данных (Data Sources ODBC) — Start->Settings->Control Panel->Administrative Tools->Data Sources ODBC;
  • перейдем во вкладку «System DSN» и создадим новый источник данных, нажав на «Add…»;
  • в появившемся списке драйверов выберем драйвер баз данных Microsoft Access — «Microsoft Access Driver (*.mdb)» и нажмем на «Finish»;
  • в строке «Data Source Name» зададим имя нашей базы данных, например «Articles» (это то имя, по которому мы в дальнейшем будем обращаться к ней);
  • нажмем на «Select…», выберем подготовленный нами файл «ArticlesDB.mdb» и нажмем «OK».

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

Оформляем главную страницу (index.asp)

С ASP работать очень просто. Для этого надо всего лишь вставить текст скрипта ASP в пару тэгов . В остальном ASP-файл ничем не отличается от HTML-файла (за исключением, пожалуй, расширения). Комментарии в HTML, как известно, вставляются в пару тэгов , в ASP же закомментировать строку можно при помощи символа ‘ (апостроф) в ее начале.

Теперь давайте разберемся. Во-первых, как вы наверняка заметили, ASP-код легко сочетается с HTML-тэгами; в этом его достоинство. Так, к примеру, строка Response.Write Link & «
» отображает на экране браузера клиента подготовленное сервером значение переменной Link и HTML-тэг
, то есть перевод строки. Особый интерес вызывает переменная rs. Для искушенных программистов сразу скажу — это указатель. Однако в ASP с целью облегчения работы начинающих указатели маскируются. Здесь не встретишь громоздких С’шных конструкций, типа «я знаю, что ты знаешь, что я знаю», или, выражаясь программистским языком, указатель на указатель… Однако сделано это так искусно, что гибкость программирования при этом не теряется, нет лишь прямой работы с указателями, а только работа с помощью специальных функций, скрывающих от программиста рутину и защищающих указатели от некорректных действий. Таким образом, выражение rs.Fields («Article»).value означает значение поля «Article» текущего значения указателя на элемент базы данных (в нашем случае статей) и содержит текст статьи, которая соответствует текущей позиции указателя на все статьи. Переход к следующему элементу базы (смещение указателя) выполняется с помощью инструкции Rs.MoveNext. В приведенном выше примере это не делается, а попросту формируется ссылка на текст статьи в виде ее названия и отображается комментарий самой первой статьи, соответствующей результату запроса. Давайте попробуем отобразить все статьи нашей базы данных на главной странице в виде HTML. И еще, обратите особое внимание на директиву:

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

Первая строчка скрипта шаблона HTML присваивает переменной TheID значение, переданное ссылкой с использованием метода Request.QueryString. Далее открывается база данных, из которой читается статья (запись), соответствующая идентификатору, переданному из главного скрипта (index.asp).

Создаем главную страницу

Таким образом в таблицу в цикле будут добавляться ряды со ссылками на статьи и с аннотациями, пока не будут отображены все статьи из базы данных. Следует обратить внимание на переменную Cnt. По окончании цикла она будет содержать число обработанных статей (рядов таблицы).

Язык структурированных запросов — SQL

Настала пора разобраться с тем, что таится за строчками:

По сути, именно за этими двумя строчками кроется работа с нашей базой данных: первая представляет собой текстовую строку с запросом к базе данных (текстовые строки в ASP записываются в двойных кавычках); вторая — содержит директиву выполнения этого запроса с одновременным присвоением результата переменной (указателю на записи в базе данных). В рамках настоящей статьи мы не будем рассматривать SQL (Structured Query Language) во всех деталях, а остановимся лишь на тех его операторах, без понимания которых дальнейшая работа будет невозможна. Для тех, кому этого покажется недостаточным, советую посетить отобранные мною сайты с детальной документацией по SQL.

Для полноценной работы нам необходимо познакомиться с четырьмя операторами этого мощного языка, предназначенного специально для работы с базами данных.

DELETE удаляет те ряды из «Имя Таблицы», которые удовлетворяют условию, определенному в «Определении», и возвращает число удаленных рядов. Если выполнить команду DELETE без условия WHERE, то все ряды указанной таблицы будут удалены. В этом случае DELETE возвратит 0. Ключевое слово LOW_PRIORITY откладывает выполнение операции DELETE до завершения работы чтения из таблицы других клиентов.

SELECT используется для извлечения рядов (записей) из одной или более таблиц. Выражение_Select определяет столбцы таблицы, значения которых необходимо извлечь. Все ключевые поля должны быть заданы в строгой последовательности. К примеру, выражение HAVING должно следовать за любым выражением GROUP BY и до любого выражения ORDER BY.

Выражение_Select можно заменить псевдонимом (alias) с помощью ключевого слова AS. Псевдоним используется в качестве идентификатора имени столбца и может быть использован наряду с ключевыми словами ORDER BY или HAVING.

Выражение HAVING может относиться к любому столбцу или псевдониму в Выражении_Select. Оно применяется к запросу в последнюю очередь, непосредственно перед посылкой данных клиенту. SELECT . INTO OUTFILE ‘имя_файла’ заносит отобранные записи в файл. Файл создается непосредственно на сервере и не может «уже существовать» (одна из основных причин такого механизма заключается в предотвращении случайного «затирания» различных важных файлов).


INSERT используется для добавления новых записей в существующую таблицу. Допустимо две формы использования INSERT.

Первая форма — INSERT . VALUES — вставляет ряды на основании заданных значений. Вторая форма — INSERT . SELECT — вставляет ряды, выбранные из другой таблицы.

Ключевое слово LOW_PRIORITY откладывает выполнение операции до завершения работы чтения из таблицы других клиентов. Ключевое слово IGNORE в команде INSERT позволяет избегать вставки повторяющихся строк (используется в сочетании с ключевыми словами PRIMARY или UNIQUE). Для второй формы INSERT INTO . SELECT операция не может содержать выражения ORDER BY. Таблица, в которую производится добавление записей, не может присутствовать в выражении FROM части SELECT запроса потому, что запрещено производить выделение из той же самой таблицы, в которую производится вставка.

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

UPDATE обновляет поля существующей таблицы новыми значениями. Выражение SET показывает, какие поля (столбцы) должны быть изменены, и значения, которые должны быть им присвоены. Выражение WHERE, если оно есть, указывает, какие ряды должны быть обновлены. В противном случае операция применяется ко всем рядам таблицы. Ключевое слово LOW_PRIORITY откладывает выполнение операции до завершения работы чтения из таблицы других клиентов. Выражения UPDATE выполняются слева направо.

Обновляет значение поля Password в таблице WAPassword, записывая в поле, чей идентификатор ID равен 1 значение ‘passw’.

Увеличивает значение поля counter таблицы Счетчик на 1.

Удваивает поле age, а затем прибавляет 1 к его значению в таблице persondata.

Что такое Global.asa

Global.asa позволяет выполнять определенные скрипты в начале работы клиентской сессии или при инициализации IIS. Примером тому может служить простейший счетчик числа посещений сайта. Более того, допустимо использовать множественные файлы Global.asa. Однако следует помнить, что ASP-скрипт ищет самый близкий (расположенный в том же каталоге) файл Global.asa и использует именно его.

По сути, этот файл может содержать четыре скрипта: первый будет выполняться при инициализации службы IIS/PWS (Application_OnStart), второй — при остановке службы IIS/PWS (Application_OnEnd) (обычно эти первые два скрипта отрабатывают в процессе перезагрузки компьютера), и еще два скрипта выполняются дополнительно при инициализации сессии пользователя (Session_OnStart) и по ее окончании (Session_OnEnd). Данная схема очень сильно напоминает пары «конструктор-деструктор». Неспроста всякая переменная, которая должна быть использована (например, в текущей сессии), может быть инициализирована в Session_OnStart с тем, чтобы быть использованной в процессе работы сессии, она же уничтожается (обнуляется) в Session_OnEnd.

Global.asa не может содержать тэгов HTML. Недопустимо использование JavaScript. Не рекомендуется писать файл Global.asa с помощью каких-либо HTML-редакторов, для этого гораздо лучше использовать NotePad. И еще один совет: прежде чем вставлять скрипт в файл Global.asa, попробуйте его в работе в обычном ASP-файле.

Пример файла Global.asa

Добавляем новую статью (UploadForm.asp и Upload2DBS.asp)

Теперь, когда мы разобрались с SQL, можно приступать к добавлению новой статьи, причем делать мы это будем прямо с сайта, а если быть точнее — непосредственно с HTML-формы. Для этого сначала создадим файл с самой формой и определим скрипт-реакцию на подтверждение (кнопку «Publish the article!»). (Предполагается, что читатель знаком с азами построения HTML-форм, поэтому мы рассмотрим этот процесс, не вдаваясь в детали построения форм.)

Прежде всего следует уточнить задачу на этом этапе. Итак, очевидно следующее:

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

Как видим, передача управления осуществляется благодаря директиве ACTION=»http://localhost/Upload2DBS.asp»> в тэге формы. Тем самым указывается скрипт-ответ на реакцию пользователя после нажатия на кнопку «Publish the article!». Теперь остановимся на селекторе рубрик. Как уже отмечалось, желательно перевести его содержимое в базу данных. Для этого в нашей базе данных (файл ArticlesDB.mdb) создадим новую таблицу с именем, к примеру «Topics», в которой с помощью конструктора определим всего одно поле — «Topic» типа «текст». Далее заполним эту таблицу произвольными значениями нашего рубрикатора и отсортируем полученный список в алфавитном порядке. После чего следует заменить тэг

Теперь давайте разберемся с самой сутью дальнейшей работы. Что же должен делать наш скрипт-реакция?

Во-первых, следует позаботиться о том, чтобы все обязательные поля (а они отмечены звездочкой) были введены. Наиболее правильным способом проверки этого является скрипт, написанный на любом языке описания скриптов (например, JavaScript), который будет проверять, введены ли значения обязательных полей. Для этого достаточно добавить в определение тэга формы параметр onsubmit=»preprocess();», где preprocess() — имя функции-скрипта, который и будет осуществлять проверку. Здесь как нельзя кстати видно преимущество языков описания сценариев (JavaScript, Jscript, VBScript) перед ASP. ASP выполняется на стороне сервера, а перегружать связь «клиент-сервер» простой проверкой типа «введены ли значения», согласитесь, неправильно. Однако специально в целях обучения мы будем делать это с помощью ASP.

И еще. Прежде чем приступить к выполнению нашей задачи, следует сказать еще об одной небольшой проблеме: когда мы будем вставлять в ячейку базы данных текст, его форматирование (даже самое простое) не сохранится, и в дальнейшем его невозможно будет корректно отобразить на HTML-странице, поскольку поле Memo хранит неформатированную строку текста. Чтобы избежать этого, следует написать функцию, которая позволит производить примитивное HTML-форматирование введенного текста статьи, перед тем как записать его в базу данных. Другими словами, в самом примитивном случае (хотя бы для того, чтобы сохранить исходную разбивку на строки) функция должна вставлять символы конца строки там, где во входном потоке имеются символы переноса строк.

Удаляем статью (RemoveForm.asp и Rem.asp)

Было бы неплохо предусмотреть возможность удаления статьи с нашего сайта: во-первых, она может устареть, а во-вторых, в процессе ее подготовки не исключены ошибки или опечатки. Останавливаться на форме удаления статьи не будем, скажем лишь, что она содержит единственные элементы с запросом пароля и кнопкой удаления (см. файл RemoveForm.asp), и сразу перейдем к рассмотрению непосредственно процесса удаления:

Особое внимание следует уделить первым двум строкам. Они получают значение глобальной переменной текущего сеанса (сессии) работы со значением идентификатора текущей статьи (в нашем случае удаляемой), которая была инициализирована (файл ArtTmp.htm) следующей строкой:

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

Организуем поиск (SearchForm.asp и SearchDBS.asp)

Как известно, без поиска навигация в сколь-нибудь солидной базе данных невозможна в принципе. Попробуем организовать поиск статьи по ее реквизитам, причем постараемся организовать булев (логический) поиск, соединяя отдельные значения критериев поиска с помощью логики «И/ИЛИ».

Опять же не заостряя внимание на поисковой форме (файл SearchForm.asp), перейдем непосредственно к самому процессу поиска:

Самое интересное происходит при формировании запроса к базе из составляющих:

В зависимости от введенной пользователем комбинации исходных полей из этих компонентов формируется окончательный запрос, в частности для полей «Author» и «Title». Возможны четыре случая: оба поля пусты, пусто первое поле, пусто второе поле и оба поля не пусты. Соответствующая строка SQL-запроса в каждом из этих случаев формируется по-своему. То же самое относится к состоянию селекторов рубрик статей и порядку их сортировки. При добавлении той или иной подстроки учитывается состояние «радиокнопок» И/ИЛИ и соответствующая подстрока добавляется в SQL-запрос, предваряясь логическим элементом «and» или «or» соответственно. После того как окончательный запрос сформирован, он выполняется, а результирующая страница формируется исходя из списка статей, удовлетворяющих критериям.

Полный код приведенных в статье примеров, включая файл базы данных, находится на нашем CD-ROM.

И в заключение

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

Среди множества инструментальных средств, служащих для облегчения создания ASP-приложений, выделяются два: Easy ASP © Eric Banker, 2000 и Microsoft InterDev из комплекта Microsoft Visual Studio 6.0. Первый — очень удобное, несложное и небольшое средство для быстрого создания ASP-приложений. Второй представляет собой мощный, тяжеловесный интегрированный пакет в духе Microsoft для разработки всевозможных Web-приложений.

Временная версия EasyASP 4.0 находится на нашем CD-ROM.

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

http://www.15seconds.com/issue/000210.htm — создание динамичных JavaScript-скриптов с помощью ASP и интерфейсов к базам данных

http://www.alphasierrapapa.com/iisdev/ — сайт, посвященный разработке серверов IIS с помощью ASP

http://www.websiteresources.com/ — огромная база исходных текстов всевозможных Web-программ

Примеры ASP-кода для профессионалов

http://www.asptoday.com/search.asp?category=ASP Tricks — масса полезных советов для начинающих программировать на ASP

http://www.oreilly.com/catalog/aspnut/ — замечательная книга популярнейшей серии «In a Nutshell» всемирно известного издательства O’REILLY «ASP in a Nutshell A Desktop Quick Reference». На сайте бесплатно размещена одна из глав книги

http://www.chilisoft.net/ — версии ASP для различных платформ можно скачать с этого сайта

http://www.willcam.com/sql/ — введение в структурированный язык запросов SQL

SQL Reference and Example Site — хорошо структурированный материал по SQL


ASP.NET — что это такое?

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

ASP.NET: что это такое?

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

Сам же инструментарий содержит специализированные средства в виде веб-сервисов, программной инфраструктуры и модели программирования.

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

Для чего используется ASP.NET на практике?

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

При всем этом нужно четко понимать, что все это очень сильно взаимосвязано именно с платформой Microsoft. NET Framework и работает исключительно в исполняемой среде (CLR Environment) на основе компилируемых языков. Чтобы было понятнее, попробуем посмотреть, что собой представляют статические и динамические страницы, а также особое внимание уделим вопросам безопасности.

Основные отличия динамических веб-страниц от статических

Итак, говоря о том, что это, ASP.NET можно охарактеризовать как расширенный набор инструментов, модулей и форм, позволяющий очень быстро создавать такие серверные веб-приложения, которые могли бы осуществлять динамическое взаимодействие между самим сервером, на котором расположена страница или сервис, и браузером, с которого пользователь входит в интернет. Но в чем отличие динамических и статических страниц? Статическая страница, написанная на HTML, изначально содержит только те элементы, которые были указаны непосредственно в ее коде, то есть во времени не изменяется. Но что делать, если вам потребовалось разработать страницу или приложение, в котором, например, будет заложено отображение каждодневного курса валют?

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

История создания

Первые упоминания об ASP.NET относятся к 1997 году, когда корпорацией Microsoft была реализована первая версия сервера IIS, что касалось исследований возможности своеобразного отделения содержания от оформления с целью написания, так сказать, «чистого» кода. Изначально проект носил название XSP, но что значила литера «Х» в сокращении, для многих до сих пор остается загадкой. Но тут нужно понимать, что сама технология базировалась в то время на запатентованной компанией Sun Microsystems общей среде программирования Java, поэтому нет ничего удивительного в том, что и сама платформа была написана именно на этом языке. зато с выходом исполняемой среды CLR (Common Language Runtime) и фреймворка .NET исходные принципы стали совершенствоваться, что и привело в конечном итоге к появлению инструментария ASP.NET, которым, невзирая на лица, пользуются многие современные программисты, кто бы там что ни говорил об устаревании платформы.

Принципы использования и безопасности

Что касается основных составляющих данной платформы, она позволяет писать «чистые» коды на любом языке программирования, входящем в состав фреймворка .NET (например, C#, J#, Script .NET, VB .NET и др.). При этом частично реализация исполняемого кода в процессе формирования страницы возложена на так называемую абстрактную программную модель Web Forms. Кроме того, при использовании IIS-авторизации в ASP.NET существенно повышается и безопасность взаимодействия сервера и клиента на основе протокола HTTP.

Применение архитектуры Membership API позволяет управлять даже данными пользователей из других источников вроде SQL Server или Active Directory. Сама же аутентификация производится либо за счет специальных форм, либо прямо через Windows IIS.

Преимущества перед ASP

В смысле превосходства над своей предшественницей эта платформа действительно имеет ряд неоспоримых преимуществ. Так, например, ускорено выполнение компилированного кода, а все ошибки исправляются еще на стадии первичной разработки, улучшена обработка ошибок в готовой программе, быстрая разработка веб-приложений стала возможной за счет использования множества выделяемых пользовательских шаблонов, библиотек классов и элементов управления, появилась возможность написания исходного кода на любом языке, поддерживающем .NET и т. д. Кроме того, отдельно можно отметить, что теперь стало возможным кэшировать страницу целиком или частично для увеличения производительности и скорости ее загрузки в браузерах, использовать master-страницы и расширяемые модели событий, элементы управления и обработки запросов, а также применять встроенную поддержку AJAX.

ASP.NET Core

Эта ветвь в разработке основной платформы, по сути своей, сохранила те же принципы, которые был заложены в ASP.NET. Что это, с точки зрения улучшений?

Только то, что Core является практически полным аналогом ASP.NET, но с открытым исходным кодом и базируется на паттерне MVC. Кроме того, сама платформа стала более унифицирована по отношению к другим приложениям, отпала необходимость жесткой привязки к System.Web.DLL и IIS, и в ней появился собственный встроенный инструментарий для обеспечения внедрения зависимостей. А вот унификация позволила оптимизировать использование метода Main и запуск веб-части приложений.

Связь между ASP.NET и Framework

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

Некоторые нюансы установки

Что касается установки платформы и ускорения разработки веб-приложений на основе .NET, большинство специалистов рекомендует для начального ознакомления устанавливать ASP.NET версии 2.0. Эта модификация может использоваться практически во всех десктопных и серверных версиях Windows с сопутствующими сервис-паками, начиная с Windows 2000. Но сами готовые страницы желательно размещать исключительно на Windows Server.

Можно ли обойтись без ASP.NET?

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

В этом наборе имеется специальный компонент Visual Web Developer Express Edition, для которого достаточно наличия только основного фреймворка .NET. Системные требования выглядят весьма скромными (ЦП 600 МГц 128 Мб ОЗУ), не говоря уже о том, что на установку всех компонентов, включая документацию, потребуется порядка 1,3 Гб свободного места на диске, но в процессе инсталляции VWD самостоятельно догрузит из интернета еще около 120 Мб.

Эволюция веб-фреймворков Microsoft. ASP.NET vNext (ASP.NET 5)

Рубрика: 1. Информатика и кибернетика

Дата публикации: 30.09.2015

Статья просмотрена: 216 раз

Библиографическое описание:

Михайлова А. Е., Дошина А. Д., Карлова В. В. Эволюция веб-фреймворков Microsoft. ASP.NET vNext (ASP.NET 5) [Текст] // Современные тенденции технических наук: материалы IV Междунар. науч. конф. (г. Казань, октябрь 2015 г.). — Казань: Бук, 2015. — С. 16-19. — URL https://moluch.ru/conf/tech/archive/163/8851/ (дата обращения: 12.11.2020).

Данная статья рассказывает о платформе Microsoft.NET Frameworkи технологии создания веб-приложенийи веб-сервисов от вышеупомянутой компании — ASP.NET. Описывается история развития данной технологии и последние новшества, такие как ASP.NET vNext.

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

В конце прошлого века компания Microsoft занимала ведущее положение в области программного обеспечения. В связи с развитием компьютерных технологий, даже в то время было уже понятно, что значительную часть вычислительной нагрузки необходимо переносить с персональных компьютеров на сервер. При этом все больше ускорялось развитие Интернета. На тот момент предлагалось множество различных языков и сред разработки для создания веб-приложений. Очевидно, что большое разнообразие приводило к большим затратам времени и сил разработчиков. В силу этих причин в Microsoft приняли решение разрабатывать собственный язык программирования и собственный набор программных библиотек, позволяющих облегчить разработку разнообразных приложений, в том числе и распределённых. В результате был разработан язык программирования C#, а также среда исполнения программ (виртуальная машина) и набор библиотек. Совокупность этих элементов получила название платформа Microsoft.NET Framework.

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

— Common Language Runtime (CLR);

— Framework Class Library (FCL).

Common Language Runtime (CLR) — это исполняющая среда, которая предназначена для выполнения, как обычных программ, так и для сервисных приложений. Framework Class Library (FCL) — это библиотека классов, которая содержит в себе множество компонентов для работы с базами данных, вводом/выводом, сетью, файлами, пользовательским интерфейсом и т. д. Это облегчает работу программисту, так как можно использовать уже готовые классы.

В 1996 году компания Microsoft предложила технологию — Active Server Pages (ASP) для создания Web-приложений. Принцип работы приложения ASP был такой: веб-страница на сервере содержала серверные скрипты на VBScript или JScript и при запросе страницы происходил запуск и выполнение кода скриптов с последующей генерацией HTML. В 2002 году вышла новая платформа для разработки веб-приложений ASP.NET, и в 2003 году она была обновлена до версии ASP.NET 1.1. Это было огромным прорывом в мире веб-разработки. Тогда и началась история ASP.NET. Это была новая технология, у которой было масса преимуществ перед ASP. Это был уже полноценный фреймворк для разработки веб-приложений. В 2005 году было выпущено крупное обновление ASP.NET. Основными нововведениями были: темы, мастер-страницы, глобализация. В 2007 году было выпущено ещё одно масштабное обновление — ASP.NET 3.5. Именно тогда появилась поддержка таких мощных средств как: ASP.NET AJAX, LINQ, Dynamic Data. С выпуском ASP.NET 3.5 SP1 в 2009 году был добавлен новый подход для обработки запросов веб-страниц на основе шаблона MVC.

С обновлением до ASP.NET 4.5, появились такие средства как Web API и SignalR. С выходом Visual Studio 2013 появилась новая концепция — «Единый ASP.NET».

ASP.NET(Active Server Pages)- это технология, которая была разработана компанией Microsoft для создания WEB-приложений и WEB-сервисов. Она облегчает процесс создания динамических страниц HTML. Динамические страницы отличаются от просмотра к просмотру, и содержание ее зависит от того, кому она предназначена. Это среда программирования, которая обеспечивает возможность комбинирования HTML, скриптов и компонент для создания Web-приложений. В данной технологии содержится огромное количество готовых элементов управления, использование которых позволяет быстро создавать самые разнообразные интернет-сайты. Приложения могут быть написаны на любом языке, совместимом со средой CLR, включая VisualBasic и C#. Актуальным для написания приложений является язык C#, так как он позволяет в полной мере использовать концепции, методы и паттерны объектно-ориентированного программирования. Также она позволяет использовать сторонние сервисы, которые предоставляются другими сайтами, не нагружая функциями свой проект.

Одним из актуальных вопросов разработчиков веб-приложений является необходимость в обеспечении поддержки множества различных браузеров. В разных браузерах технологии HTML, CSS и JavaScript поддерживаются по-разному. В ASP.NET эта проблема решена.

В итоге были обновлены все компоненты платформы, а также появилась новая спецификация OWIN — открытый интерфейс веб-сервера для.NET (Open Web Server Interfacefor.NET), которая стала основой ASP.NET vNext. В 2014 году была выпущена предварительная версия кардинально переработанной технологии для разработки веб-приложений от Microsoft, которая получила официальное название — ASP.NET 5.


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

— открытый исходный код;

— использование нового Roslyn компилятора;

— кроссплатформенность (Поддерживает работу с Mono на Mac и Linux);

— в MVC6 объединены MVC, WebPages и WebAPI;

— Dependency Injection встроен внутрь фреймворка;

— отсутствие зависимости от веб сервера и платформы для хостинга.

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

Рассмотрим подробно ключевые нововведения, такие как модульность и кроссплатформенность. Используя фреймворк как часть пакета для развертывания, устраняется проблема конфигурации среды хостинга для приложения. Каждое приложение будет иметь независимую платформу. Стоит обозначить, что вся платформа написана с нуля. Весь исходный код новой платформы открыт и доступен на GitHub. ASP.NET MVC технология и WebAPI объединены в одну. ASP.NET vNext. ОС Windows будет работать используя одну из двух версий.NET Framework:.NET 4.6 и.NET Core. На Linux и Mac OS X будет использоваться только.NET Core.

Также стоит отметить новый Roslyn компилятор для динамической компиляции. Первая версия была выпущена в 2011 году. С тех пор он значительно изменился. Для начала стоит отметить, что он с открытым кодом (под лицензией ApacheLicense 2.0). Во-вторых, компилятор поддерживает скриптовые сценарии. Что касается работы, стоит отметить, что время ожидания компиляции и обновления страницы при внесенных изменениях существенно сократится. В нем присутствуют множество функциональных дополнений, таких как IntelliSence, переформатирование кода и т. д. Компилятор Roslyn обеспечивает совместимость языков. Это предоставляет множество возможностей для инноваций в мета-программировании, генерации кода и его преобразование, интерактивное использование языков C# и VisualBasic.

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

Платформа ASP.NET стоит на пороге глобальных изменений, которые сильно повлияют на процесс разработки веб-приложений.

Познакомившись с alpha версией ASP.NET MVC vNext очно можно сделать выводы, что разработчиков ждут кардинальные перемены. Они связаны не только с рефакторингом ASP.NET, но и с адаптацией фреймворка под обновленный Runtime.

Измененные внутренние концепции будут легко изучаемым для разработчиков, имевших дело с OWIN и предыдущими версиями ASP.NET MVC.

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

Добавление элементов навигации

Приложение SportsStore будет намного более удобным, если мы позволим пользователям просматривать каталог по категориям. Мы выполним эту работу в три этапа:

  • Расширим модель действия List в классе ProductController так, чтобы она могла фильтровать объекты Product в хранилище.
  • Пересмотрим и улучшим нашу схему URL и исправим стратегию изменения маршрута.
  • Создадим список категорий, который будет размещен в боковой панели сайта, подсветку текущей категории и ссылки на другие категории.

Фильтрация списка товаров

Мы начнем с расширения класса модели представления, ProductsListViewModel , который мы добавили в проект SportsStore.WebUI в предыдущей главе. Мы должны обеспечить связь выбранной на данный момент категории с представлением, чтобы визуализировать боковую панель, так что начнем с этого. Изменения показаны в листинге 8-1.

Листинг 8-1: Расширяем класс ProductsListViewModel

Мы добавили новое свойство под названием CurrentCategory . Далее мы обновим класс ProductController , чтобы метод действия List отфильтровывал объекты Product по категориям и использовал новое свойство, которое мы добавили к модели представления, чтобы указывать выбранную категорию. Изменения показаны в листинге 8-2.

Листинг 8-2: Добавляем поддержку категорий в метод действия List

Мы сделали три изменения в методе действия. Во-первых, мы добавили новый параметр под названием category . Этот параметр используется вторым изменением, которое представляет собой расширение запроса LINQ: теперь если category не содержит null , будут выбраны только те объекты Product , которые соответствуют свойству Category . Последнее изменение заключается в том, что мы установили значение свойства CurrentCategory , добавленного в класс ProductsListViewModel . Однако, эти изменения означают, что значение PagingInfo.TotalItems рассчитываются неправильно, что мы скоро исправим.

Модульный тест: обновление существующих модульных тестов

Мы изменили сигнатуру метода действия List , из-за чего некоторые из наших существующих модульных тестов не будут скомпилированы. Чтобы решить эту проблему, передайте null в качестве первого параметра в метод List в те модульные тесты, которые работают с контроллером. Например, в тесте Can_Paginate раздел действия станет таким:

Используя null , мы получаем все объекты Product , которые контроллер получает из хранилища, что полностью повторяет ситуацию, которая была раньше, пока мы не добавили новый параметр.

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

Вы увидите только товары в категории Soccer , как показано на рисунке 8-1.

Рисунок 8-1: Использование строки запроса для фильтрации по категориям

Модульный тест: фильтрация категорий

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

Этот тест создает имитированное хранилище, содержащее объекты Product , которые принадлежат к различным категориям. С помощью метода Action запрашивается одна определенная категория, и, мы проверяем результаты, чтобы убедиться, что получаем правильные объекты в правильном порядке.

Уточняем схему URL

Никому не нужны страшные URL вроде /?category=Soccer . Чтобы это исправить, мы вернемся к схеме маршрутизации и изменим ее таким образом, чтобы она лучше подходила нам (и нашим пользователям). Для реализации нашей новой схемы, измените метод RegisterRoutes в файле App_Start/RouteConfig.cs так, чтобы он соответствовал листингу 8-3, заменяя содержимое метода, который мы использовали в предыдущей главе.

Листинг 8-3: Новая схема URL

Важно добавлять новые роуты из листинга 8-3 по очереди, как они показаны в листинге. Роуты применяются в том порядке, в котором они определены, и если вы его измените, то получите другой результат.

Таблица 8-1 описывает схему URL, которую представляют эти роуты. Мы расскажем о системе маршрутизации подробно в главе 13.

Таблица 8-1: Информация о роутах

Внимание!
URL Результат
/ Выводит список товаров из всех категорий для первой страницы.
/Page2 Выводит список товаров из всех категорий для указанной страницы (в данном случае страницы 2).
/Soccer Показывает первую страницу товаров из определенной категории (в данном случае категории Soccer ).
/Soccer/Page2 Показывает указанную страницу (в данном случае 2) товаров из указанной категории (в данном случае Soccer ).
/Anything/Else Вызывает метод действия Else контроллера Anything .

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

Мы покажем, как создавать модульные тесты для конфигурации маршрутизации в главе 13.

Метод Url.Action является наиболее удобным способом генерации исходящих ссылок. В предыдущей главе мы использовали этот вспомогательный метод в представлении List.cshtml , чтобы отображать ссылки на страницы. Теперь, когда мы добавили поддержку фильтрации по категориям, мы должны вернуться к нему и передать эту информацию, как показано в листинге 8-4.

Листинг 8-4: Добавляем информацию о категории к ссылкам на страницы

До этого изменения ссылки на страницы выглядели так:


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

Когда пользователь переходит по такой ссылке, текущая категория будут передана в метод действия List , и фильтрация будет сохранена. После внесения этих изменений, вы можете перейти по таким ссылкам, как /Chess или /Soccer , и увидите, что ссылка внизу страницы включает в себя правильную категорию.

Создаем меню навигации по категориям

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

В ASP.NET MVC Framework есть концепция дочерних действий, которые идеально подходят для создания таких элементов, как элемент управления навигацией многократного использования. Дочернее действие полагается на вспомогательный метод HTML под названием RenderAction , который позволяет включить вывод из произвольного метода действия в текущее представление. В этом случае мы можем создать новый контроллер (назовем его NavController ) с методом действия (в данном случае Menu ), который визуализирует меню навигации и внедряет вывод из данного метода в макет.

Такой подход дает нам реальный контроллер, который может содержать любую необходимую нам логику приложения, и который может быть протестирован, как и любой другой контроллер. Это действительно хороший способ создания небольших сегментов приложения, при котором сохраняется общий подход MVC Framework.

Создаем контроллер навигации

Щелкните правой кнопкой мыши папку Controllers в проекте SportsStore.WebUI и выберите пункт Add Controller из контекстного меню. Назовите новый контроллер NavController , выберите опцию Empty MVC controller из меню Template и нажмите кнопку Add to create the class .

Удалите метод Index , который Visual Studio создает по умолчанию, и добавьте метод действия Menu , показанный в листинге 8-5.

Листинг 8-5: Метод действия Menu

Этот метод возвращает статическую строку сообщения, но, пока мы интегрируем дочернее действие в приложение, этого для нас достаточно. Мы хотим, чтобы список категории появлялся на всех страницах, так что мы собирается визуализировать дочернее действие в макете, а не в определенном представлении. Отредактируйте файл Views/Shared/_Layout.cshtml так, чтобы он вызывал вспомогательный метод RenderAction , как показано в листинге 8-6.

Листинг 8-6: Добавляем вызов к RenderAction в макет Razor

Мы удалили замещающий текст, который добавили в главе 7, и заменили его на вызов метода RenderAction . Параметрами этого метода являются метод действия, который мы хотим вызвать ( Menu ), и контроллер, который мы хотим использовать ( Nav ).

Метод RenderAction записывает свое содержание непосредственно в поток ответа, как и метод RenderPartial , о котором мы упоминали в главе 5. Это означает, что метод возвращает void , и поэтому его нельзя использовать с регулярным тегом Razor @ . Вместо этого мы должны заключить вызов метода в блок кода Razor (и не забудьте поставить точку с запятой в конце оператора). Если вам не нравится синтаксис блока кода, можно использовать метод Action в качестве альтернативы.

Если вы запустите приложение, то увидите, что вывод метода действия Menu включен в каждую страницу, как показано на рисунке 8-2.

Рисунок 8-2: Отображение результата метода действия Menu

Создаем списки категорий

Теперь мы можем вернуться к контроллеру и создать реальный набор категорий. Мы не хотим генерировать категории URL в контроллере. Для этого мы собираемся использовать вспомогательный метод в представлении. В методе действия Menu нужно только создать список категорий, что мы сделали в листинге 8-7.

Листинг 8-7: Реализация метода Menu

Сначала мы добавляем конструктор, который принимает реализацию IProductRepository как аргумент — после создания экземпляра контроллера ее предоставит Ninject, используя привязки, которые мы создали в предыдущей главе.

Далее мы изменяем метод действия Menu , который теперь использует запрос LINQ, чтобы получить список категорий из хранилища и передать их в представление. Обратите внимание, что, так как в этом контроллере мы работаем с частичным представлением, здесь мы вызываем метод PartialView , и что результатом является объект PartialViewResult .

Модульный тест: создание списка категорий

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

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

Создаем частичное представление

Так как список категорий является всего лишь частью страницы, имеет смысл создать частичное представление для метода действия Menu . Кликните правой кнопкой мыши метод Menu в классе NavController и выберите Add View из контекстного меню.

Оставьте представлению имя Menu , отметьте флажком опцию Сreate a strongly typed view , и введите IEnumerable как тип класса модели, как показано на рисунке 8-3.

Рисунок 8-3 : Создаем частичное представление Menu

Отметьте флажком опцию Create as a partial view и нажмите кнопку Add , чтобы создать представление. Измените содержание представления так, чтобы оно соответствовало листингу 8-8.

Листинг 8-8: Частичное представление Menu

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

Затем мы перечислили имена категорий и создали ссылки на каждую из них с помощью метода RouteLink . Он похож на ActionLink , но позволяет нам поставлять набор пар имя/значение, которые учитываются при генерации URL на основе конфигурации маршрутизации. Не беспокойтесь, если вы еще ничего не знаете о маршрутизации – мы подробно объясним все в главе 13.

Генерируемые ссылки будет выглядеть не очень симпатично с настройками по умолчанию, поэтому мы определили код CSS, который улучшит их внешний вид. Добавьте стили, показанные в листинге 8-9, в конец файла Content/Site.css в проекте SportsStore.WebUI .

Листинг 8-9: CSS для ссылок на категории

Если вы запустите приложение, то увидите ссылки на категории, как показано на рисунке 8-4. Если вы кликните по категории, список элементов обновится и будет отображать только элементы из выбранной категории.

Рисунок 8-4: Ссылки на категории

Подсветка текущей категории

Сейчас мы не подсказываем пользователям, какую категорию они просматривают. Хотя пользователь может понять это по элементам в списке, мы все же предпочитаем обеспечить надежный визуальный индикатор. Для этого мы могли бы создать модель представления, которая содержит список категорий и выбранную категорию; в самом деле, именно это мы бы обычно и сделали. Но для разнообразия мы будем использовать ViewBag , о которой говорилось в главе 2. Этот объект позволяет передавать данные из контроллера в представление, не используя модель представления. Листинг 8-10 показывает изменения в методе действия Menu контроллера Nav .

Листинг 8-10: Использование ViewBag

Мы добавили в метод действия Menu параметр под названием category . Значение этого параметра будет предоставлено автоматически конфигурацией маршрутизации. В теле метода мы динамически создали свойство SelectedCategory в объекте ViewBag и приравняли его значение к значению параметра category . Как мы уже объясняли в главе 2, ViewBag является динамическим объектом, и мы создаем новые свойства, просто устанавливая для них значения.

Модульный тест: Указание выбранной категории

Чтобы проверить, что метод действия Menu правильно добавляет информацию о выбранной категории, проверим в модульном тесте значение свойства ViewBag , которое доступно через класс ViewResult . Вот этот тест:

Обратите внимание, что мы не должны приводить значение свойства из ViewBag . Это одно из преимуществ использования объекта ViewBag перед ViewData .

Теперь, когда мы предоставляем информацию о выбранной категории, можно обновить представление и добавить класс CSS к якорному HTML-элементу, который представляет выбранную категорию. Листинг 8-11 показывает изменения в частичном представлении Menu.cshtml .

Листинг 8-11: Подсветка выбранной категории

Мы воспользовались перегруженной версией метода RouteLink , что позволяет нам предоставить объект, свойства которого будут добавлены в якорный HTML-элемент как атрибуты. В этом случае ссылке, которая представляет выбранную категорию, присваивается CSS-класс selected .

Обратите внимание, что мы использовали @class в анонимном объекте, который мы передали как новый параметр в вспомогательный метод RouteLink . Это не тег Razor. Мы используем стандартную функцию языка C#, чтобы избежать конфликта между ключевым словом HTML class (используется для присвоения стиля CSS к элементу) и того же слова C# (используется для обозначения класса .NET). Символ @ позволяет нам использовать зарезервированные ключевые слова C#, не запутывая компилятор. Если мы просто вызовем параметр class (без @ ), компилятор будет считать, что мы определяем новый тип C#. Когда мы будем использовать символ @ , компилятор поймет, что мы хотим создать параметр в анонимном типе под названием class , и мы получим нужный нам результат.


При запуске приложения будет виден эффект подсветки категории, которую вы также можете видеть на рисунке 8-5.

Рисунок 8-5: Подсветка выбранной категории

Корректируем количество страниц

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

Рисунок 8-6: Отображение неправильных ссылок на страницы, когда выбрана категория

Мы можем исправить это, обновив метод действия List в ProductController так, чтобы к информации о нумерации страниц были добавлены сведения о категории. Необходимые изменения показаны в листинге 8-12.

Листинг 8-12: Объединяем данные о нумерации страниц и категории

Если категория выбрана, мы возвращаем количество товаров в этой категории, если нет, мы возвращаем общее количество товаров.

Модульный тест: подсчет товаров по категориям

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

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

Теперь, когда мы просматриваем какую-либо категорию, ссылки в нижней части страницы отражают правильное количество товаров в ней, как показано на рисунке 8-7.

Рисунок 8-7: Отображается правильное количество страниц в категории

Ведущий переход от классического ASP к ASP.NET, любой совет?

Итак, я только начал работать в новой компании, на которой 99% кода написано в классическом ASP (большинство из них плохо написано), и часть причин, по которым они меня наняли, состояла в том, что я работал с ASP и ASP.NET в прошлое. Опыт ASP.NET был VB.NET, но я работал с С# в колледже, но я предпочитаю его только потому, что в прошлом я много работал с PHP, и когда я не фокусируюсь, я просто начинаю набирать синтаксис Си и было много случаев здесь, в ASP, где я заканчиваю строки в полуколонке только по привычке и должен вернуться и удалить ее.

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

  • Контроль версий — правда, я сказал, что никогда не использовал его. Сам по себе я просто никогда не имел, что кричит момент, чтобы заставить меня использовать его, и магазины, в которых я работал, всегда просто бросали осторожность в ветер. Хотелось бы знать, что вы все думаете, что я должен использовать на стороне сервера и
  • Локальная среда для защиты от вирусов. Возможно, что-то я просто быстро сделаю Google, но я хочу настроить локальную среду для разработчиков, чтобы я мог протестировать материал, не имея FTP сначала где-нибудь.
  • Нажатие изменений Live. Я никогда не понимал шаг между проверкой чего-то в контроле версий и наблюдением за ним вживую, есть ли какая-то автоматическая система, которая может пойти «эй, я вижу, дайте мне посмотреть, что отличается от этой и живой версии и нажать на затронутые файлы» — возможно, просто отсутствие понимания vc все вместе: (
  • IDE — Загрузка VS2010 Beta 10 сейчас, надеясь, что она стабильная
  • MVC.NET — Легко подбирать? Я всегда ненавидел целую концепцию веб-форм, казалось, что она не в конечном итоге соответствует интернету, который развивает остальная часть мира.
  • Anything Else. Как я уже сказал, я относительно новичок в этом стеке, поэтому мне бы хотелось, чтобы любой совет, который я могу получить на раннем этапе, чтобы избежать любого «дерьма», мне жаль, что я не знал, что 3 месяца назад «моменты

РЕДАКТИРОВАТЬ: Принимать советы и делать это сообщество wiki

Ого. здесь много вопросов:

Контроль версий. Посмотрите на Subversion и Git. Они представляют два вида контроля версий, вам может понравиться один другой, чем другой. Git является бесплатным для проектов с открытым исходным кодом.

Local Dev Environment. Я бы рекомендовал использовать встроенный веб-сервер в Visual Studio. Вы можете щелкнуть правой кнопкой мыши страницу в своем браузере решений и сказать «просмотр в браузере». Затем он просто скомпилирует его прямо там и откроет экземпляр локального веб-сервера.

Нажатие изменений Live. Я не собираюсь давать советы здесь. Кто-то умнее меня, безусловно, сделает это.

IDE. Да, просто придерживайтесь текущей версии Visual Studio. Если у вас нет активных (для оплаты) проектов, я думаю, что VS2010 — хорошая идея, потому что он поддерживает новейшие предстоящие функции asp.net, и к тому моменту, когда вы их узнаете, это, вероятно, будет выпущено публике в любом случае.

Anything Else. Стоит (с точки зрения работы) знать WebForms. Но я настоятельно рекомендую изучить ASp.Net MVC (если не по какой-либо другой причине, «это более интересно» ).

После прочтения ответа Марка Редмана это вызвало что-то для меня. Я бы рекомендовал (как он), что вы исследуете какой-то ORM. Я использую SubSonic и действительно люблю его. Там есть много вариантов.

Это мои 2 цента.

Контроль версий:

Определенно взгляните на SubVersion, бесплатно, мы используем платный сервисный сайт под названием Assembla (www.assembla.com), но вы можете установить сервер в своей сети. Самый популярный клиент называется TortoiseSVN (http://tortoisesvn.tigris.org/), он также бесплатный. Вы также можете взглянуть на VisualSVN (http://www.visualsvn.com/), которые интегрированы в VS IDE, их сайт также имеет удобную установку SVN-сервера.

Локальная среда разработки

Локальный IIS или встроенный VS-сервер VS в VS оба хороши, это действительно так, я думаю. Открытие веб-сайта (основанного на файловой системе), а не основанного на IIS, кажется, работает для нас хорошо.

Нажатие изменений Live

ASP очень развит по страницам и не требует компиляции, копирования файлов на тестовый или производственный сайт довольно просто. В зависимости от того, как вы компилируете/публикуете свой сайт asp.net, вам необходимо подумать о том, как вы компилируете библиотечный код и публикуете веб-приложение/веб-сайт.

Я бы рекомендовал начать с использования SVN для фиксации изменений и для обновления тестовых/производственных сайтов.

IDE:

Я бы рекомендовал обновить последнюю версию версии VS2010 и использовать ее.

Что-нибудь еще:

Рассмотрим развертывание, замените ли вы все перед тем, как начать жить?

Рассмотрите возможность использования существующей структуры, использования ORM или инфраструктуры Business Objects, возможно, даже с использованием Code-Generation. Посмотрите на CodeSmith, у него есть различные связанные с ним ORM/Business Object Framework. (они будут использовать различные технологии и технологии в инфраструктуре .net, которые вам нужно будет изучить)

Посмотрите на основную структуру сайта:

Рассмотрим asp.net WebForms (приложения) или MVC (веб-сайты) [да, это очень простой анализ различий]

Членство в сайте и разрешения: посмотрите на MembershipProvider, RoleProvider и создайте свои собственные.

Файловая система: рассмотрите, как и где вы будете загружать файлы.

Разделите пользовательский интерфейс на повторно используемые UserControls.

Asp важные изменения в asp

Новые возможности ASP.NET 2.0, сервер разработки (ASP.NET Development Server), мастер-страницы, адаптеры


В этом разделе представлены новые возможности, которые появились в ASP . NET 2.0:

  • в ASP . NET 2.0 представлены более гибкие возможности по созданию Web -сайтов. В предыдущих версиях Web -приложения нужно было создавать в виде каталогов на локальном или удаленном сервере Internet Information Server . При этом разработчику фактически было необходимо представить административные права на Web -сервер (что на многих предприятиях могло стать проблемой). В ASP . NET 2.0 в добавление к традиционным методам приложения можно создавать и другими способами, например, просто в каталоге на локальном компьютере. Для отладки приложений Internet Information Server теперь не нужен: в среду разработки встроен свой собственный специальный Web -сервер (он называется ASP . NET Development Server );
  • в ASP . NET 2.0 необязательно использовать файлы проектов и решений. Основной единицей для работы с приложением является каталог, в котором находятся файлы данного приложения. Однако полного отказа от файлов проектов и решений также нет: вы вполне можете использовать традиционный подход. Например, файлы проектов можно использовать для хранения информации о настройках интегрированной среды разработки. Возможность работы без файлов проектов и решений упрощает внесение изменений в Web -сайты и работу с Visual Source Safe .
  • в предыдущих версиях ASP . NET весь код проекта компилировался в одну сборку . NET . Поэтому недописанные синтаксически неверные страницы оставлять было нельзя. В ASP . NET 2.0 компилируется только код, относящийся к вызываемой вами Web -странице. Это упрощает, например, работу над большим Web -сайтом одновременно несколькими разработчиками. Кроме того. при компиляции Web -сайта выводятся ошибки и предупреждения не только о проблемах с программным кодом, но и о проблемах с кодом HTML и в тексте файла Web . config .
  • в предыдущих версиях разработка производилась на Web -сервере, поэтому исходный программный код неизбежно попадал на Web -сервер (обычно, конечно, на сервер, специально предназначенный для разработки). В ASP . NET 2.0 можно вообще избежать попадания исходного кода на какой-то Web -сайт. Для этого достаточно создать Web -сайт локально, затем полностью его откопилировать при помощи команды Build Web Site , а затем уже развертывать приложение ASP . NET на Web -сервере. В этом случае на Web -сервер попадет только откомпилированный программный код.
  • одна из самых важных новых возможностей ASP . NET 2.0, которой очень не хватало в предыдущих версиях — мастер-страницы ( master pages ). Мастер-страницы — это аналоги шаблонов в Macromedia DreamViewer . При помощи мастер-страниц можно определить единообразное оформление и общие элементы для других страниц HTML . При внесении изменений в мастер-страницы изменяются те страницы, которые были созданы на их основе. При работе с Web -сайтами, для которых предусмотрено большое количество статических страниц, без мастер-страниц обычно не обойтись;
  • весь генерируемый код HTML по умолчанию соответствует стандарту XHTML 1.1;
  • по другому реализована работа со страницами кода ( code — behind pages ). В предыдущих версиях ASP . NET в коде описывался весь класс Page для соответствующей страницы. При этом значительная часть кода могла не использоваться разработчиками. В ASP . NET 2.0 в страницу кода помещается только действительно используемый код, такой, как код обработчиков событий. При этом при необходимости можно работать и с любыми другими объектами, связанными со страницами. За счет этого упрощается поиск нужной информации на странице кода и снижается количество ошибок (например, за счет того, что большое количество автогенерируемого кода, который разработчик может случайно изменить, уже не отображается на странице).
  • в ASP . NET 2.0 появился новый класс элементов управления: адаптеры. При помощи адаптеров вы можете определить отображение ваших Web -сайтов в зависимости от того, из какого Web -броузера или мобильного устройства к нему производится обращение. Такой подход позволяет быстро создавать Web -сайты, которые будут правильно отображаться в самых разных броузерах и мобильных устройствах.
  • появилось большое количество новых элементов управления для сопряжения Web -сайтов с базами данных:
    • DataSource — этот элемент управления предназначен для хранения информации о подключении к источнику данных;
    • GridView — этот элемент управления расширяет функциональность элемента управления DataGrid из предыдущих версий (элемент DataGrid также можно использовать). Он позволяет стандартными способами решать задачи, для которых раньше приходилось создавать свой собственный программный код (например, по изменению данных на источнике, по сортировке, по разбиению на страницы и т.п.);
    • DetailsView — специальный элемент управления, который предназначен для отображения одной записи в один момент времени;
    • FormView — элемент управления, очень похожий по функциональности на DetailView , однако предоставляющий больше свободы с точки зрения размещения полей на странице. Он используется для создания форм для работы с записями в базе данных;
  • для централизованного управления подключениями к источникам данных информацию о подключениях можно помещать в файл Web . config . Предусмотрена также возможность шифровать в нем информацию о подключениях.
  • для взаимодействия с бизнес-логикой приложения предусмотрен новый объект ObjectDataSource . Он может использоваться для вызова методов программных объектов, например, для внесения изменений на источник данных в соответствии с логикой приложения.

Переходим от VBScript к ASP и ASP.NET. Безопасность и синтаксис

Архив номеров / 2006 / Выпуск №1 (38) / Переходим от VBScript к ASP и ASP.NET. Безопасность и синтаксис

Переходим от VBScript к ASP и ASP.NET

Безопасность и синтаксис

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

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

От VBScript к ASP

У вас может возникнуть вопрос: «Зачем мне переходить на ASP, когда я просто могу использовать DHTML с VBS вставками?» Использовать DHTML или HTA для этих целей не получится, поскольку они основаны на HTML, который действительно позволяет делать вставки на VBScript, однако не поддерживают работу с OLE-объектами. Для программиста, создающего приложения для обслуживания серверов, поддержка OLE-объектов используемой им средой – основное требование, поскольку формирование отчетов, доступ к Active Directory и др. базируется на их использовании.

ASP представляет собой решение, которое поддерживает HTML, OLE-объекты и позволяет делать вставки на различных скриптовых языках: VBScript, JScript.

Переход от VBScript к ASP достаточно прост и безболезнен: исходный код на VBScript остается практически без изменений.

ASP-страницы – это сценарии, программный код которых выполняется при их запросе. Результатом действия скрипта является DHTML-страница, которая формируется на сервере, а затем отображается в браузере клиента. Структура документа на ASP проста: в первой строке всегда указывается язык, с помощью которого созданы скриптовые вставки ASP-страницы. Первая строка любого из сценариев на ASP выглядит следующим образом:

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

Листинг типовой ASP-страницы выглядит следующим образом:

‘ отображение на экране содержимого переменной

После обработки интерпретатором IIS программного кода и преобразования результатов его работы в HTML/DHTML необходимо дать команду на отображение страницы в браузере клиента. Такой командой является «Response.Write q», где q – имя переменной, содержащей фрагмент HTML-кода.

Необходимо отметить, что ASP имеет свою, хотя и скромную объектную модель, описание которой можно найти практически в любой книге, посвященной программированию на ASP в разделе «Приложения».

Настройка IIS для ASP

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

Первая особенность: поскольку код ASP-страниц исполняется на сервере и только результат в виде HTML-страницы пересылается на клиентскую машину, то для успешного запуска приложения на сервере пользователь должен обладать соответствующими правами. IE, IIS и запускаемые им сервисы представляют собой трехзвенную систему (см. рис. 1).

Рисунок 1. Трехзвенная система

Пусть IIS имеет настройки по умолчанию. В этом случае при загрузке любой ASP-страницы она стартует от имени встроенного пользователя (см. рис. 2). Если страница работает с некими базами данных, например с Active Directory, то пользователь, запускающий данную страницу, должен обладать соответствующими правами системного администратора.

Рисунок 2. Настройка безопасности IIS

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

Поэтому разумно использовать другой способ, с помощью которого можно ограничить доступ к ресурсам. В настройках IIS необходимо сбросить флажок (см. рис. 2) с Enable anonymous access и установить его напротив Basic Authentication. Также следует изменить права на файловую структуру используемого сайта, исключив оттуда группу Everyone и добавив соответствующие группы безопасности и назначить им соответствующие права. При такой настройке IIS только системные администраторы получат доступ к данной странице. При попытке любого пользователя, не являющегося администратором сети, получить доступ к странице, IIS будут запрошены имя и пароль пользователя.

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

Только что мы рассмотрели механизм взаимодействия первого и второго звена в трехзвенной системе. Первым звеном является рабочая станция пользователя, вторым –сервер, на котором установлен IIS. Взаимосвязь этих звеньев осуществляется с помощью одного пользователя. Между вторым и третьим звеном (сервер iis-процессы, порождаемые из asp-процесса) взаимодействие осуществляется с помощью другого пользователя.

Рассмотрим взаимодействие второго и третьего звена подробнее.

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

Рисунок 3. Настройка безопасности IIS

Переход от VBScript и ASP к ASP.NET

Теперь, когда мы знакомы c ASP и разобрались с настройкой IIS для ASP-проектов, подведем промежуточный итог, а он не утешителен! Дело в том, что в построенной системе большая брешь в безопасности; поскольку для доступа к АD в ASP-файле в явном виде надо указать имя и пароль системного администратора, еще одним недостатком является указание пароля в разделе «Аnonymous Аccess» вместо встроенной учетной записи указать имя и пароль системного администратора. Конечно, системный администратор постарается защитить файловую систему соответствующим распределением прав, однако принятых мер недостаточно. Необходимо сделать так, чтобы система сама определяла и подставляла имя и пароль пользователя между вторым и третьим звеном, т.е. запускала сервисы от имени пользователя, который вошел на сайт. Поставленная задача успешно решается переходом с помощью ASP.NET и включением режима имперсонализации.

Установка Visual Studio

Перед установкой Visual Studio .NET должен быть предварительно установлен пакет программ, необходимых для ее установки:

  • Microsoft IIS 5/6
  • Microsoft .NET Framework 1.1/2.0
  • Microsoft FrontPage Server Extensions 2000/2002
  • Microsoft Visual J# .Net Redistributable Package 1.1/2
  • Microsoft Windows Installer 2/3(.1)

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

Таблица 1. Необходимые компоненты для установки Visual Studio

Microsoft IIS 5

Входит в состав Windows 2000 – ver 5.0, XP – ver 5.1

Илон Маск рекомендует:  Что такое код biosprint
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Рубрика: Программирование / Веб-программирование