Asp управление метабазой

Путь метабазы ​​IIS для aspnet_compiler в IIS7

Я пытаюсь использовать aspnet_compiler через командную строку для создания и публикации веб-приложения, которое выполняется на веб-сайте IIS7 по умолчанию. Я пытаюсь найти правильный синтаксис аргумента -m для указания пути метабазы ​​IIS.

Вся документация относится к маршрутам метабазы ​​IIS6, которые имеют формат «LM/W3SVC/1/Root». Я столкнулся с этой информацией, которая указывает, что путь метабазы ​​IIS7 должен выглядеть так: «MACHINE/WEBROOT/APPHOST/Default Web Site».

Фактическая команда выглядит следующим образом:

Это, однако, приводит к следующей ошибке: ошибка 1002: «MACHINE/WEBROOT/APPHOST/Веб-сайт по умолчанию /» не является хорошо сформированным метабазой IIS.

Мой веб-сайт по умолчанию называется «Веб-сайт по умолчанию». Я также изучил использование синтаксиса указания виртуального пути и физического пути вместо пути метабазы, например:

(этот командный файл существует в подпапке папки проекта веб-сайта)

Это приводит к следующей ошибке: error ASPCONFIG: Ошибка использования раздела, зарегистрированного как allowDefinition = ‘MachineToApplication’, превышающего уровень приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS.

Программирование на ASP

С помощью ASP программист может быстро создавать веб-приложения на сервере Windows , использующем IIS третьей версии (или выше). ASP вышла в свет в то время, когда между собой соперничали технологии программирования Common Gateway Interface (CGI) и Perl, используемые многими программистами для разработки веб-приложений. ASP прекрасно вписывается в стратегию Microsoft ActiveX, поскольку обеспечивает функциональность, инкапсулированную в компоненты COM , и позволяет разработчикам реализовывать n-звенные решения с помощью ASP и COM .

Примечание. Листинги кода в этой лекции доступны на веб-сайте автора http://mapobject.com/iis6/.

Общая архитектура ASP

Файлы ASP представляют собой сценарии, интерпретируемые по мере поступления запросов. Расширение ISAPI по имени ASP.DLL связано в IIS с файлами, имеющими расширения .asp или . asa (см. рис. 12.1). ASP.DLL просматривает файлы . asp на предмет наличия тегов, обозначающих внедренный код для выполнения на сервере. ASP.DLL передает код сценария в Windows Script Host (WSH). WSH выполняет этот код и возвращает ответ файлу ASP.DLL , который, в свою очередь , передает IIS результат выполнения сценария и содержимое самого файла ASP . IIS возвращает ответ программному обеспечению, от которого поступил запрос . ASP.DLL не выполняет обработку функций подтверждения, написанных на JavaScript, которые имеются в ASP и предназначены для выполнения в веб-браузере или программе, запрашивающей файл ASP .

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

В стандартных отношениях сервер / браузер браузер является клиентом. Клиент отсылает запросы на веб- сервер , который возвращает запрошенный файл . Если это файл ASP , то веб- сервер выполняет некоторые действия перед тем, как возвратить ответ клиенту. Работа технологии ASP , как правило, изменяет возвращаемый клиенту ответ.

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

Предлагаемые ASP классы обеспечивают хороший уровень абстракций HTTP — и веб-сервера, что отличает данную технологию от таких конкурентов, как Perl и CGI .

В некоторых случаях бизнес-логика инкапсулируется в объекты COM . Если COM — объект предоставляет интерфейс , доступ к которому осуществляется при помощи VBScript или Jscript, то ASP функционирует как механизм управления. В лекции 1 курса » Программирование в IIS » подробно рассказывается о работе с COM -объектами в ASP .

metabase path in iis

I am working on creating virtual directories for a website through a programmatic way. I couldn’t get the concept of metabase- what is metabase path and need of it in IIS. thanks !

1 Answer 1

The MetaBase is IIS. It holds every configurable element of IIS and is stored in XML form, it is in the windows folder (i.e. \windows\system32\inetsrv\MetaBase.xml).

You can amend this file manually or programmatically but special care should be taken when doing so.

Asp управление метабазой

В процессе разработки нередко приходится производить определение метаданных дважды: при создании серверной части информационной системы и при создании клиентских приложений, что потенциально является источником ошибок и несогласованности метаданных серверной и клиентских частей информационной системы. Кроме того, такие системы сложно модернизировать и сопровождать, особенно в случае изменения структуры базы данных. Разработка интерфейсов пользователя для приложений, основанных на сложных структурах данных, предъявляет к разработчику высокие требования даже при использовании таких совершенных инструментов, как Borland Delphi.

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

Проблема использования созданной с помощью CASE-средства модели данных в системах с так называемым «толстым» клиентом может быть решена по-разному. Наприме , некоторые CASE-средства (ERwin, S-Designer) позволяют генерировать формы при ожения SQL Windows или PowerBuilder на основе модели данных (как правило, стан артного внешнего вида). В случае Delphi эта проблема решается несколько иным способом — в данном случае используется тот факт, что формат словаря данных Delphi известен, так же как и форматы словарей данных (или непосредственно ER-диаг амм) CASE-средств, что должно позволить осуществлять перенос данных между ними. На этом принципе основано действие включенного в комплект поставки Delphi 2.01 CASE Expert-а, осуществляющего односторонний перенос расширенных атрибутов из ER-диаграмм популярных CASE-средств в словарь данных Delphi 2.01, что позволяет в какой-то степени использовать серверные бизнес-правила при проектировании клиентского приложения. Однако у этого инструмента есть свои недостатки. Во-первых, невозможен перенос метаданных обратно из словаря данных в ER-диаграмму. Во-вторых, это средство с ERwin работает некорректно. В-третьих, проблемы проекти ования пользовательского интерфейса в случае сложной модели данных решаются лишь частично.

Еще одним способом решения проблемы доступа к метаданным из клиентского приложения является создание чувствительных к метаданным компонентов. Эта проблема ешается с помощью описываемого ниже инструмента MetaBASE (Erwin for Delphi).

MetaBASE как средство доступа к метаданным

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

Составные части MetaBASE

MetaGen также может осуществлять перенос измененных объектов MetaBASE обратно в модель данных. Иными словами, это полноценный инструмент two-way-tool.

Metamodel — объект, который содержит всю информацию об объектах модели данных — сущ остях, индексах, атрибутах, доменах и связях. Кроме того, Metamodel содержит расширенные атрибуты типа масок, меток и т.д., которые могут быть изменены в редакторе MetaBASE Editor.. Все объекты модели данных доступны при создании приложения.

MetaBASE Editor- иерархическое окно просмотра метамодели, позволяющее редактировать модель анных, изменять расширенные атрибуты, синхронизировать модели данных в ER-диаг амме и в словаре данных, выбирать интерфейсные элементы для отображения таблиц и полей, выбирать способ доступа к данным (таблица или запрос). Этот редактор метаданных используется в среде разработки в качестве редактора свойств компоне т, входящих в комплект поставки MetaBASE (рис.1). Рис.1. Просмотр и редактирование метаданных с помощью MetaBASE Editor

Библиотека визуальных компонентов MetaBASE, имеющих прямой доступ к словарю данных.. Эти VCL-компоненты существуют в 16- азрядном и 32-разрядном вариантах.

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

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

TQueryGS — наследник стандартного компонента TQuery Delphi. Однако этот компо ент непосредственно связан с Metamodel . Все поля, содержащиеся в TQueryGS, автоматически используют бизнес-правила, определенные в TMetaBaseGS. Кроме стандартных функций, TQueryGS поддерживает асширенные функции QBE (Query By Example — запрос по образцу).

TTableGS — наследник стандартного компонента TTable Delphi’s, также непосре ственно связанный с Metamodel. Все поля, содержащиеся в TTableGS, автоматически подчиняются бизнес-прави ам, определенным в TMetaBaseGS. Кроме стандартных функций, TTableGS поддерживает асширенный поиск и функции индексирования.

TDataSourceGS — интерфейс между компонентами набора данных (TTableGS, TQueryGS) и визуальными компонентами форм. TDataSourceGS — наследник TDataSource Delphi, способный использоваться в качестве переключателя между обычным режимом визуального отображения данных, режимом запроса по образцу или режимом поиска в таб ице и режимом индексации.

TDBGridGS — многофункциональный компонент, который может отобразить данные в виде «интеллектуальных» таблиц (наподобие DBControlGrid). При этом TDBGridGS ото ражает поля с помощью тех интерфейсных элементов, которые определены в словаре данных Metamodel (например CheckBox, Search Table и т.д.). TDBGridGS может также быть испо ьзован для режима Query By Example.

TDBFieldGS — центральный компонент для отображения данных.. Он отоображается самостоятельно в виде того интерфейсного элемента, который определен в словаре анных Metamodel (например как check-box или lookup field)

TLabelGS связан с TDBFieldGS и представляет собой метку, определенную в в с оваре данных Metamodel

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

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

TIdxDBFieldGS используется для определения значения поиска в индексированной таблице.

TIdxControllerGS используется для активизации процесса поиска (возможно, пос едством диалога)

TQbeDBFieldGS похож на компонент TIdxDBFieldGS.. Он используется для ввода з ачений Query By Example. Компоненты TQbeDBFieldGS могут быть скомбинированы для выполнения запроса к нескольким полям.

Илон Маск рекомендует:  Что такое код ncurses_slk_restore

TQbeControllerGS из всех значений, записанных в компонентах TQbeDBFieldGS, создает команду SQL и выполняет запрос. При объединении этого компонента с TDBGridGS, можно переключаться между режимом визуального отображения данных и режимом Query By Example.

TDBIndexComboGS предназначен для изменения индекса таблицы, отображаемой с помощью компонента TTableGS.

TDBEntityComboGS позволяет выбрать таблицу из словаря данных во время выполне ия.

TDBAttributComboGS позволяет изменить атрибут DBFieldGS во время выполнения.

Создание приложений с помощью MetaBASE

Первым этапом создания информационной системы является анализ предметной области, проектирование на его основе логической схемы будущей базы данных (определение сущностей, атрибутов и связей), создание соответствующей физической схемы и, наконец, генерация объектов базы данных (таблиц, индексов, триггеров). Для этой цели используется ERwin (в нашем случае версии 2.6 beta). Центральная сущ ость Objects1 связана с другими сущностями посредством внешних ключей. Структура модели данных выглядит следующим образом (рис.2): Рис.2. Структура модели данных, используемой в качестве тестового примера

Соответствующая физическая структура была сгенерирована на сервере Personal Oracle 7.2 for Windows 95, и в таблицы был занесен тестовый набор данных.

Так как приложение должно иметь доступ к модели данных во время выполнения, с едующим шагом является перенос метаданных в словарь данных MetaBASE (рис.3) и создание соответствующих BDE-алиасов (псевдонимов), при этом имя проекта в ути ите MetaGen и имя соответствующего алиаса должны совпадать. Для простоты будем хранить словарь данных и саму базу данных под одними тем же псевдонимом. Рис.3. Управление проектами с помощью MetaGEN

Далее выбираем нужный нам файл ER-диаграммы формата .erx, выбираем BDE-алиас для хранения словаря данных и осуществляем перенос метаданных в созданный слова ь данных. Рис.4. Синхронизация метаданных в ER-диаграмме и в словаре данных

После переноса метаданных можно отредактировать их с помощью MetaBASE Editor (рис.1).

Теперь можно приступить к созданию клиентского приложения. Для этого нужно создать в Delphi новый проект и поместить на пустую форму компонент MetaBaseGS (именно он отвечает за бизнес-правила и связь с метаданными) со страницы MetaBASE палитры компонентов.

Далее нужно присвоить свойству DataBaseName в инспекторе объектов Delphi имя соответствующего BDE-алиаса (в нашем случае NUCLEAR), а свойству Connected значение ‘true’. С этого момента среде разработки станут доступны метаданные, перенесенные анее на сервер.После двойного щелчка мышью на этом компоненте появится окно MetaBASE Editor (рис.5).

Для начала создадим броузер для просмотра и редактирования списка предприятий. Для этой цели нажмем в окне MetaBASE Editor кнопки G и T , что соответствует использованию по умолчанию компонентов TableGS и DBGridGS Рис.5. Вид MetaBASE Editor как редактора свойств в среде разработки.

Возьмем объект OBJECTS1 и переместим его на нашу форму . На форме появится сетка, отображающая данные из этой таблицы, а также все MetaBASE-компоненты, необходимые для ее функционирования, например, компонент DataSourceGS и компонент TableGS . (рис.6) Рис.6. Внешний вид формы с “интеллектуальной” сеткой в процессе разработки

После компиляции проекта можно исследовать функционирование полученного приложения. Следует обратить внимание на то, что все поля, имеющие связи с помощью внешнего ключа, отображаются в виде так называемых полей помощи (assist field в терминологии авторов продукта). При нажатии на кнопку с многоточием появляется вспомогательная таблица (assist table), связанная с исходной по данному полю (рис.7). Рис.7. Автоматическое отображение вспомогательной таблицы, связанной с помощью внешнего ключа с основной, при выборе ключевого атрибута.

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

При необходимости отсортировать таблицу в порядке возрастания или убывания какого-либо атрибута достаточно выбрать раздел Indexes в MetaBASE Editor, выбрать атрибут для сортировки и перенести его на существующую сетку формы (рис.8). Рис.8. Выбор атрибута для сортировки таблицы

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

Для управления данными в таблице полезно поместить на форму компонент DBNavigatorGS и установить свойство DataSource этого компонента равным dsOBJECTS1. Затем можно скомпилировать приложение (рис.9): Рис.9. Вид полей редактирования зависит от типа атрибута (например, ключевой атрибут или нет)

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

Теперь добавим в наше приложение возможности поиска. С этой целью добавим компонент IdxControllerGS на форму и установим свойство DataSource для этого компонента равным равным dsOBJECTS1. Скомпилируем приложение (рис.10): Рис.10. Форма приложения с возможностью поиска

При нажатии кнопки поиска появляется диалог поиска, похожий на показанный ниже При этом можно использовать вспомогательные таблицы для облегчения процесса поиска (рис.11). Рис. 11. Диалог для осуществления поиска с расширенными возможностями.

Теперь попробуем отобразить в приложении связь (master-detail). Для этого нуж о из MetaBASE Editor выбрать сущность DEVICE и переместить ее на форму. Для установления связи меж у таблицами DEVICE и OBJECTS1 возьмем отношение OBJECTS1 сущности DEVICE и поместим его на таблицу OBJECTS1. В этом случае таблица DEVICE будет являться master-таблицей, а OBJECTS1 — detail-таблицей. Далее следует выбрать нужные строки в появившемся диалоге (рис.12): Рис.12. Выбор невизуальных компонент для установки связи между таблицами.

После компиляции можно убедиться, что таблица OBJECTS1 связана с таблицей DEVICE (рис.13): Рис.13. Реализация связи master-detail

Теперь создадим проект, основанный на запросах (что более удобно в случае большого объема данных). Для этой цели создадим новый проект и поместим на пустую форму компонент MetaBaseGS. Далее переключим кнопки в окне MetaBASE Editor, выбрав кнопку G и кнопку Q, что соответствует использованию по умолчанию компонента QueryGS

Далее переносим на форму сущность OBJECTS1 и, как и в предыдущем проекте, получаем в результате броузер с данными из этой таблицы. После этого добавим на форму компонент QbeControllerGS (рис.14). Рис.14. Форма запроса в процессе разработки.

После компиляции проекта получим броузер для таблицы OBJECTS1 (рис.15). Рис.15. Стандартный вид формы запроса в процессе выполнения приложения

При нажатии на кнопку, в виде которой отображается QbeControllerGS, можно осуществить запрос по образцу с использованием вспомогательных таблиц и выпадающих меню для знаков операций отношения: (рис.16) Рис.16. Вид формы в режиме запроса по образцу

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

Некоторые выводы

Задать вопросы о MetaBASE и получить trial-версию этого продукта можно в компании Interface Ltd.

Технология ASP+

В обзоре платформы Microsoft .NET (см. статью «Microsoft .NET — сервисы Windows нового поколения» в этом номере) мы упомянули о Web-формах и программной модели, основанной на ASP+ — новом поколении активных серверных страниц, представляющем собой эволюцию технологии ASP, знакомой многим Web-разработчикам. Здесь мы хотим остановиться на технологии ASP+ более подробно.

Эволюция ASP

Active Server Pages — технологии создания активных серверных страниц, позволяющей писать скриптовые (JavaScript, JScript, VBScript) программы, выполняемые на сервере, — чуть более трех лет. Объявленная в середине 1996-го (кодовое название Denali) и выпущенная в виде дополнения к Microsoft Internet Information Server 3.0 в декабре того же года, эта технология сразу же привлекла внимание Web-разработчиков.

ASP 2.0 увидела свет в составе Windows NT 4 Option Pack, выпущенного в декабре 1997 года, а ASP 3.0 стала частью Microsoft Internet Information Server 5.0, входящего в состав операционной системы Microsoft Windows 2000, и, таким образом, представляет собой полноценный компонент операционной системы. Отметим, что технология ASP успешно используется и на других платформах (Solaris, Apache — благодаря семейству продуктов Chili!ASP) и послужила основой для создания Java Server Pages и подобных технологий.

Естественно, что технология ASP была разработана не на пустом месте. Для создания динамических Web-страниц традиционно использовались серверные программы на базе серверного интерфейса Common Gateway Interface (CGI). Такие программы могут получать запросы от пользователей и генерировать HTML- и скриптовый код и отсылать его Web-клиенту. Вместо написания исполняемых программ часто используются интерпретируемые языки типа Perl — в этом случае программист составляет последовательность команд, а Web-сервер выполняет ее, используя интерпретатор.

Для своего Web-сервера Internet Information Server Microsoft предложила интерфейс Internet Server Application Programming Interface (ISAPI), который отличался от CGI тем, что позволял выполнять на Web-сервере откомпилированный код, помещенный в DLL. Как и в случае с CGI, программы могут получать запросы от пользователей и генерировать HTML- и скриптовый код и отсылать его Web-клиенту.

Для связи с данными и обеспечения возможности их публикации на Web-страницах сначала был выпущен продукт под названием dbWeb, затем появилась более совершенная технология — Internet Database Connector (IDC), с помощью которой можно было использовать шаблоны для публикации извлекаемых из СУБД данных.

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

По мере развития ASP приобрела такие возможности, как использование сторонних серверных компонентов, создание приложений, интеграция с Microsoft Transaction Server (MTS), а в версии 3.0 — интеграция с сервисами COM+.

Таким образом, сегодня ASP представляет собой технологию создания динамических страниц, поддерживающую публикацию данных и возможность использования сторонних серверных компонентов. Для написания скриптового кода используются языки JScript, VBScript или PerlScript. (Практические вопросы использования технологии ASP рассматриваются в статье «ASP на блюдечке», публикуемой в данном номере.)

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

Ограничения ASP

Можно выделить несколько типов существующих в настоящее время ограничений ASP. Первым из них является то, что скриптовый код располагается между HTML-элементами, а потому дизайнер, отвечающий за представление страницы, может легко нарушить ее функциональность. Одним из решений этой проблемы стало введение в Visual Basic 6 понятия Web Classes. Но поскольку эта технология была недостаточно совершенной, она не получила широкого распространения.

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

Внедрение таких объектов на Web-сервере подводит нас к третьему существенному ограничению — для того чтобы заменить DLL, нам требуется остановить Web-сервер, а нередко и перезагрузить компьютер. Теперь представьте себе, что будет, если внедрить обновления, например, для Hotmail, где используется около 5000 серверов!

Илон Маск рекомендует:  Что такое код asp hcsendcacheheaders

И наконец, четвертое ограничение ASP — поддержка состояний. В настоящее время не существует простого встроенного механизма для передачи данных между страницами.

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

Технология ASP+

ASP+ разработана таким образом, что ее возможно использовать «параллельно» с традиционными ASP-страницами. ASP+-страницы имеют расширения .aspx, Web-сервисы — .asmx, а новые страничные компоненты (pagelet) — расширение .aspc. Бета-версия ASP+ поддерживает только IIS5 на платформе Windows 2000, финальная версия сможет работать и под IIS4 на платформе Windows NT 4.0, и с Internet Explorer 5.5 (офлайновая версия My Web). Также будут поддерживаться персональные серверы на базе Windows 95/98.

Как мы отмечали выше, ASP+ поддерживает откомпилированный код. Это означает, что код может быть написан на любом языке, поддерживаемом в Microsoft .NET, — Visual Basic, Visual C++, C#, Perl, Pyton, Eiffel, COBOL и т.п. В ASP+ поддерживаются языки со строгой типизацией и ранним связыванием — больше нет необходимости в использовании только вариантных переменных. Поскольку код является откомпилированным, мы получаем более высокую производительность — в среднем на 250%.

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

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

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

В случае использования ASP+ мы более четко отделяем программную логику от HTML-элементов:

Обратите внимание на атрибут RUNAT=SERVER у элемента . Он указывает на то, что интерфейсный элемент (комбинированный список) располагается на сервере. В ASP+ реализованы серверные версии всех HTML-элементов управления, а также дополнительные элементы управления. Всего в состав ASP+ входит 45 встроенных серверных интерфейсных элементов. Ниже показаны HTML-элементы, реализованные на сервере, и встроенные элементы:

HTML-элементы Встроенные элементы
, ,

Если ввести свое имя и нажать кнопку Submit, содержимое формы отправится на сервер, будет обработано и возвращено клиенту. Поле «Имя» будет пустым. Для того чтобы сохранить введенное значение при передаче его назад, с сервера клиенту, нам придется написать ASP-код. В ASP+ введена технология под названием ViewState, позволяющая сохранять введенные значения. Это достигается простым изменением элемента

Если мы посмотрим на HTML-код этой формы, то обнаружим, что ядро ASP+ автоматически вставило скрытое поле, в котором сохраняется содержимое формы.

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

Говоря о серверных элементах, следует упомянуть и о возможности отделения кода от самой страницы. Например:

Оптимизация ASP.NET — практические советы по работе с IIS

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

Введение

Приходилось ли вам когда-нибудь самим настраивать производственные веб-сервера (production servers) под управлением ОС Windows Server 2008 R2/IIS 7.5 и выше? Для системных администраторов, имеющих большой опыт работы с IIS, скорее всего, это тривиальная задача, но вот для веб-разработчиков, которым по различным причинам порой приходится самим участвовать в настройке «боевых» серверов, данная информация может оказаться весьма полезной.

Предыстория

В конце прошлого года в одной крупной организации мы столкнулись с проблемами производительности веб-серверов при резко увеличившейся пользовательской нагрузке. В веб-приложении на тот момент было зарегистрировано более 200 000 клиентов. В обычном режиме одновременно работает около 1000 пользователей, за день примерно 10-15% уникальных посетителей от общего числа зарегистрированных, поэтому нагрузка относительно невысокая. Однако существуют пиковые нагрузки, при которых система оказывается практически неработоспособной.

Веб-администаторы проверили всё, что можно, и никак не могли понять, в чём дело. Ведь несмотря на то, что по всем основным параметрам системы на физическом уровне с производительностью было всё хорошо, возникали сбои с доступностью сервисов, а в пуле собиралась огромная очередь запросов. В организации используется NLB-кластер на 4 узла (Windows Server 2008 R2 + IIS 7.5 + .NET 4.5), есть запас по загрузке ЦП и памяти, сетевые каналы большие, количество используемых портов достаточное. Все проверки указывали на то, что проблемы кроются в недрах IIS и настройке пула ASP.NET. Живой пример, когда администраторам не помешала бы помощь опытных веб-разработчиков…

1. Параметры конфигурации IIS

Начиная с IIS 7, все настройки конфигурации ASP.NET хранятся в XML-файлах (*.config). Они заменили метабазу, которая использовалась в IIS 6.0 и более ранних версиях.

Схема конфигурационных файлов для IIS 7.x и выше выглядит так:

Рис. 1. Схема конфигурационных файлов

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

Здесь же находится файл machine.config.comments, который позволяет узнать, какие параметры используются по умолчанию. С помощью этих данных в machine.config можно добавить параметры с переопределенными значениями.

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

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

  • для 32-битной — %WINDIR%\System32\inetsrv\config\
  • для 64-битной — %WINDIR%\SysWOW64\inetsrv\config\

Каждый локальный файл web.config применяет параметры конфигурации для каталога, в котором он расположен, а также для всех дочерних каталогов. Настройки вложенных каталогов могут быть переопределены собственными “конфигами”.

Прежде чем начинать настройку конфигурации IIS, обратите внимание на счетчики производительности ASP.NET, оцените текущую и пиковую загрузки системы, зафиксируйте имеющиеся показатели. Проверьте логи на наличие ошибки “HTTP Error 503.2 — Service Unavailable”. Постарайтесь определить, не блокируется ли часть запросов в очереди.

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

При конфигурации IIS можно выделить два основных параметра, влияющих на доступность приложения и его производительность.

1. Параметр appConcurrentRequestLimit — максимальное количество одновременных запросов в приложении. Увеличение числа одновременных запросов IIS расширит доступные ресурсы веб-сервера для обслуживания запросов. Значение по умолчанию — 5000.

Наиболее быстро изменить параметр appConcurrentRequestLimit можно утилитой appcmd.exe через командную строку. Сделать это можно как глобально для всех сайтов IIS через файл ApplicationHost.config, так и для отдельного сайта (приложения).

Выполняем команду, затем открываем в IIS раздел «Configuration Editor» для корневого каталога и проверяем новое значение установленного параметра appConcurrentRequestLimit. Причём здесь же можно вручную изменить это значение.

Рис. 2. Установка параметра appConcurrentRequestLimit

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

2. Параметр QueueLength — максимальное количество запросов, которые драйвер Http.sys размещает в очереди пула приложений. Когда очередь заполнена, новые запросы получают ошибку «503.2 — Service Unavailable». Значение по умолчанию — 5000.

Данный параметр можно настроить несколькими способами:

  • глобально для .NET на уровне сервера через machine.config, секция processModel/requestQueueLimit;
  • на уровне IIS через ApplicationHost.config: system.web/httpRuntime -> appRequestQueueLimit;
  • задать значение параметра queueLength для конкретного пула.

В качестве примера изменим данный параметр для пула «DefaultAppPool» через командную строку:

Выполняем команду, затем открываем в IIS раздел «Application Pools», выбираем в списке пул «DefaultAppPool », заходим в меню «Advanced Settings» и проверяем.

Рис. 3. Установка параметра queueLength

В диспетчере IIS выберите узел сервера в дереве, затем нажмите на иконку «Worker Processes»:

Рис. 4. Меню Worker Processes в диспетчере IIS

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

Рис. 5. Просмотр работающих пулов через Worker Processes

При нажатии “View Current Request” появляется таблица со списком адресов обрабатываемых страниц и другими полезными параметрами. Для обновления списка можно нажимать F5 на экране. Таким образом, вы сможете найти «подвисшие» запросы:

Рис. 6. Список текущих запросов в пуле

Для просмотра показателей производительности, конечно, лучше использовать счётчики Performance Monitor, но они не покажут вам, как Requests Monitor, URL-адреса текущих запросов.

2. Настройка ASP.NET

ASP.NET ограничивает число рабочих потоков и потоков портов завершения вызова, используемых для выполнения запросов. Если веб-приложение на стороне сервера активно использует вызовы внешних веб-сервисов, стандартные классы из пространства имён System.NET для организации запросов по сети, то могут возникнуть конфликты низкой производительности и взаимоблокировок. Вначале часть запросов может просто “подвисать”, время выполнения будет значительно возрастать. В худшем случае, если используется классический режим настройки пула (classic pipeline), это вообще может привести к перезагрузке пула (recycle). Обнаружение взаимоблокировки ASP.NET не выполняется для пула, запущенного в integrated mode (по умолчанию в IIS 7 и выше).

Работа пулов приложений в интегрированном режиме имеет несколько преимуществ по сравнению с работой в классическом режиме. Рекомедуется запускать пулы приложений в integrated mode.

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

Рис. 7. Процесс обработки запросов в ASP.NET

Для оптимальной работы веб-приложений по умолчанию включен режим автоконфигурации настроек пула. В этом случае, cвойство autoConfig равно «true» для секции в файле machine.config, а другие ключевые параметры не заданы вообще.

Хорошенько “покопавшись” в MSDN и файле machine.config.comments, я нашёл описание базовой конфигурации пула. Есть 7 основных параметров, влиящих на работу ASP.NET с сервисами и сетью:

  • maxConnection
  • maxWorkerThreads / minWorkerThreads
  • maxIoThreads / minIoThreads
  • minFreeThreads
  • minLocalRequestFreeThreads

Параметр maxconnection определяет максимальное количество одновременных запросов с одного IP-адреса. При включенной по умолчанию автоконфигурации пула этот параметр определяется по формуле:
maxConnection = 12 * cpuNum, где cpuNum — это количество ядер процессора

Таким образом, на сервере с 4-х ядерным процессором максимальное кол-во одновременных подключений к конечному IP-адресу равно 48=12*4 (по умолчанию).

Самый простой способ обойти данное ограничение — это прямо в коде своего ASP.NET приложения в методе Application_Start в файле global.asax указать следующее:

Более гибко настраивать maxconnection лучше через конфигурационные файлы на уровне домена приложения (web.config) или веб-сервера (applicationHost.config). Секция содержит параметры, которые определяют, как .NET Framework подключается к сети.

Важно: Схема для адреса параметра maxconnection должна быть такой:

Увеличение maxconnection позволяет делать больше одновременных вызовов к удаленным сервисам. Этот атрибут не влияет на локальные вызовы веб-служб! Необходимо понимать, что недостаточно только обойти ограничение на количество одновременных подключений к сервису. Так как увеличение числа одновременных вызовов приводит к увеличению использования потоков CLR, которые используются для создания удаленных и обработки обратных вызовов.

ASP.NET через параметр maxWorkerThreads устанавливает ограничения потоков на рабочем процессе w3wp.exe (начиная с IIS 7). В связи с тем, что ASP.NET встроена в IIS, процессы ASP.NET формируют запросы на рабочих потоках. Из-за недостаточного количества потоков в CLR ThreadPool запросы будут становиться в очередь и “подвисать”.

Аттрибуты, заданные в секции :
1. Параметр maxWorkerThreads — указывает максимальное количество рабочих потоков для каждого процессора в пуле потоков среды CLR. Значение по умолчанию — 20. Максимальное значение — 100.

2. Параметр maxIoThreads — указывает максимальное количество потоков ввода/вывода для каждого процессора в пуле потоков среды CLR. Значение по умолчанию — 20. Максимальное значение — 100.

3. Параметр minWorkerThreads — указывает минимальное количество рабочих потоков для каждого процессора, которые могут быть предоставлены немедленно для обслуживания удаленного запроса. Значение по умолчанию — 1.

4. Параметр minIoThreads — указывает минимальное количество потоков ввода/вывода для каждого процессора, которые могут быть предоставлены немедленно для обработки обратного вызова. Значение по умолчанию — 1.

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

Аттрибуты, заданные в секции :
1. Параметр minFreeThreads — определяет количество потоков, которые могут быть использованы для работы, кроме обработки входящих запросов к рабочему процессу. Этот параметр не дает процессу ASP.NET использовать потоки из пула для обработки нового HTTP-запроса, если общее число потоков в пуле опустится ниже этого предела. Значение по умолчанию — 8.

2. Параметр minLocalRequestFreeThreads — определяет минимальное количество свободных потоков, которые ASP.NET держит доступными для выполнения новых локальных запросов. Значение по умолчанию — 4.

Обратите внимание, параметры maxWorkerThreads, minWorkerThreads, maxIoThreads, minIoThreads неявно умножаются на число процессоров, а параметры minFreeThreads и minLocalRequestFreeThreads — нет.

ASP.NET не будет выполнять более, чем следующее количество одновременных запросов:
(maxWorkerThreads * число ЦП) — minFreeThreads

Обратите внимание: на весь пул приложения, то есть на каждый рабочий процесс w3wp.exe, обслуживающий пул, имеется один пул потоков CLR ThreadPool. Для всех доменов приложений (сайтов), настроенных на один пул, используется общий набор потоков. Следовательно, для требовательных к ресурсам приложений лучше использовать отдельные пулы.

3. Рекомендации по оптимизации базовой конфигурации

Прежде всего, необходимо точно определить количество процессоров на веб-сервере. Как вариант, можно посмотреть TaskManager -> вкладка «Performance». Если процессор поддерживает режим HyperThreadingTechnology (HTT), значит половина ядер логические (Logical processors), а не физические (Cores). Например, при включенном режиме HTT процессор с 4-мя физическими ядрами будет работать как 8 логических ядер:

Рис. 8. Окно загрузки процессоров в TaskManager

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

или
Например, на сервере с 4-мя процессорами и свойством autoConfigtrue» ASP.NET будет иметь следующие параметры по умолчанию:
maxConnection – 48; maxWorkerThreads – 80; maxIoThreads – 80, minFreeThreads – 8, minLocalRequestFreeThreads – 4.

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

  1. maxWorkerThreads = 100 | minWorkerThreads = maxWorkerThreads / 2 = 50
  2. maxIoThreads = 100
  3. maxConnection = 12 * N
  4. minFreeThreads = 88 * N
  5. minLocalRequestFreeThreads = 76 * N, где N — количество процессоров.

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

Изменения в секцию разрешено вносить только в файле machine.config из-за установленного там же атрибута allowDefinitionMachineOnly» при добавлении секции processModel.

Чтобы иметь возможность устанавливать значения секции processModel для каждого приложения в отдельности через web.config, необходимо установить свойство allowDefinitionEverywhere«.

Важно: после внесения изменений требуется обновить Application pools.

Помните, что увеличивать данные параметры нужно только в случае необходимости при наличии достаточного количества ресурсов ЦП.

Для анализа производительности веб-серверов рекомендую настроить счётчики ASP.NET через Performance Monitor:

  • ASP.NET Applications\Requests/Sec
  • Web Service\ISAPI Extension Requests/sec
  • ASP.NET\Requests Current
  • ASP.NET\Requests Queued
  • ASP.NET\ Requests Rejected
  • ASP.NET Applications\Requests Executing
  • ASP.NET Applications\Requests Timed Out
  • ASP.NET\ Request Execution Time

Для более глубокого анализа процесса w3wp.exe, обслуживающего пул приложений IIS, можно попробовать отладчик WinDbg из Windows Software Development Kit.

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

Дополнительно

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

Если вы используете IIS8 — не будет лишним обратить внимание на «Полноценное регулирование нагрузки CPU (CPU Throttling)».

Заключение

Для сайтов, которые не совершают частые сетевые запросы на стороне сервера, стандартных настроек пула должно хватать (processModel/autoConfig=“true”). При этом IIS выставит ограничение в 20 рабочих потоков и 12 удаленных соединений на ядро. При превышении этих значений запросы начнут становиться в очередь и производительность веб-приложения упадёт.

Если ваш сайт работает хорошо и вы можете оценить предполагаемую нагрузку на систему, то не стоит ничего менять. Если же у вас начинаются “зависания” при обработке запросов к различным сервисам — не следует сразу винить во всем железо! Лучше внести изменения в базовую конфигурацию ASP.NET. Имейте в виду, что изменение базовых параметров пула приложений непременно приведёт к увеличению загрузки процессора. Оптимальная балансировка всех параметров системы — ключ к стабильной и производительной работе оборудования. Как говорится, “предупрежден — значит вооружен”.

Приглашаю всех поделиться вашим опытом настройки и оптимизации работы производственных веб-серверов на платформе Windows Server.

ArcGIS Enterprise

В этом разделе

Для ArcGIS Web Adaptor необходимо включение IIS и определенных компонентов IIS в Windows 7. Установка не будет продолжена, если IIS не обнаружен или не включены его отдельные компоненты.

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

Более подробно о том, как включить IIS и обязательные компоненты IIS в Windows 7, описано ниже.

Выберите Панель управления (Control Panel) > Программы и компоненты (Programs and Features) > Включение или отключение компонентов Windows (Turn Windows Features on or off) .

Разверните узел Службы IIS .

Убедитесь, что компоненты IIS, перечисленные ниже, включены. Если эти компоненты не активированы, программа установки завершит работу.

Обязательные компоненты IIS

Компоненты IIS, указанные ниже, соответствуют минимальным требованиям для запуска Web Adaptor. Если установлены другие компоненты IIS, их не нужно удалять.

  • Средства управления веб-сайтом (Web Management Tools)
    • Совместимость функций управления IIS 6
      • Совместимость конфигурации метабазы IIS и IIS 6
    • Консоль управления IIS
    • IIS скрипты и инструменты управления
    • Служба управления IIS (IIS Management Service)

    Интернет веб-сервисы

      Компоненты разработки приложений
    • .NET расширяемость
    • ASP.NET
    • Дополнительные модули ISAPI
    • Фильтры ISAPI
  • Общие HTTP-компоненты
    • Документ по умолчанию
    • Статическое содержание
  • Безопасность
    • Базовая аутентификация
    • Фильтрация запросов
    • Аутентификация Windows

1Gb.ru: Доступны новые возможности

1Gb.ru — Новые возможности хостинга
Уважаемый пользователь хостинга 1Gb.ru,

Обращаем ваше внимание на следующие приятные новости и изменения, прошедшие в августе и сентябре.

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

Пользователям хостинга во всех тарифных планах бесплатно доступна автоматическая установка программных компонентов (скриптов). В настоящий момент доступны следующие компоненты:
форум phpBB2 — мощный современный форум, обладающий огромным количеством возможностей.
стандартная гостевая книга
Вы можете задать базовые настройки и установить выбранный компонент в указанный каталог вашего сайта — всё остальное будет сделано автоматически. Мы будем постоянно расширять библиотеку компонентов.
Возможность доступна из личного кабинета, страница » Установка компонентов, скриптов».

Также опытным администраторам предлагается автоматизированный редактор метабазы IIS. Метабаза IIS — возможность изменять настройки индивидуального сайта: управлять страницами ошибок, документами по умолчанию, устанавливать флаги автоматического обзора каталогов (списки файлов), управлять параметрами ASP, и многое другое.
Возможность доступна из личного кабинета, страница «Управление метабазой IIS».

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

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

asp.net — путь метабазы в iis

Я работаю над созданием виртуальных каталогов для веб-сайта программным способом. Я не мог понять концепцию metabase-, что такое путь метабазы и потребность в ней в IIS. благодаря !

    2 1
  • 26 мар 2020 2020-03-26 01:56:07
  • dotnetrocks

1 ответ

MetaBase — это IIS. Он содержит каждый настраиваемый элемент IIS и хранится в форме XML, он находится в папке Windows (например,windowssystem32inetsrvMetaBase.xml).

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

путь метабазы в IIS

Я работаю над созданием виртуальных каталогов для сайта программным способом. Я не мог понять концепцию метабазы — что такое путь метабазы и необходимость его в IIS. Спасибо !

1 ответ

MetaBase — это IIS. Он содержит каждый настраиваемый элемент IIS и хранится в форме XML, он находится в папке Windows (т.е. \ windows \ system32 \ inetsrv \ MetaBase.xml).

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

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