Успех приложений ASP обычно зависит от компромисса между архитектурой и дизайном. Учитывая широкий спектр технологии ASP и неотъемлемая сложность текущих применений, этот компромисс очень сложный. Вот краткое введение в принципы и использование ASP в неправильном новом технологическом канале.
Установление соглашений именования и стандартизация структуры каталога может помочь вам значительно улучшить читаемость и обслуживаемость ваших приложений ASP. Хотя в настоящее время нет формальных стандартов для приложений ASP, многие разработчики установили некоторые общие способы. Здесь я поделюсь с вами еще некоторыми общими способами.
Поскольку технология ASP опирается на работу сценариев для работы, а сценарии имеют характер не строги по типу, соглашения об именах также являются расплывчатыми. В языках с очень строгими типами переменные будут объявлены в соответствии с их фактическим типом. При использовании технологии ASP переменные обычно объявляются в коде ASP в том, как они обрабатывают переменные, а не их фактический тип данных. Например, при использовании «Visual Basic (R) Scripting Edition (VBScript)», хотя все переменные VBScript имеют вариант, вы объявляете флаг успеха как BSUCCESS (B для логического) вместо VSUCCESS (V для варианта).
Следующая таблица является некоторыми распространенными соглашениями об именах.
Переменный префикс:
| Префикс | Используются переменные | Переменный пример |
|---|---|---|
| B или Bln | Логический | BSUCCESS |
| c или cur | Валюта | размахивание |
| D или DBL | Двойной | dblquantity |
| DT или DAT | Дата и время | dtdate |
| f или flt | Плавать | Фрацио |
| L или LNG | Длинный | Lmilliseconds |
| я или инт | Целое число | Icounter |
| s или str | Нить | змея |
| или обр | Множество | Ausers () |
| o или obj | Com объект | Опиплин |
Префикс переменной для объектов базы данных:
| Префикс | Используются переменные | Переменный пример |
|---|---|---|
| CNN | Связь | Cnnpubs |
| перстю | Recordset | Rsstauthors |
| CMD | Командование | Cmdemployee |
| флд | Поле | fldlastName |
Использование диапазона и префикса:
| Префикс | иллюстрировать |
|---|---|
| g_ | Создан в Global.asa. |
| M_ | Для страниц ASP или в включении файлов, он локальный. |
| (Без префикса) | Нестатические переменные, префиксы являются локальными для процесса |
Пост в базе знаний (KB) «Q110264 Информация: Microsoft Consulting Services Services Seventions для Visual Basic» (на английском языке) дает представление о соглашениях об именах.
Используйте структуры каталогов, где это возможно, чтобы обеспечить постоянное место для ваших различных компонентов приложения. Фактическая структура каталогов вашего приложения, конечно, зависит от вас, но обычно она размещает изображения, документы, включать файлы и компоненты в отдельные каталоги. Ниже приведен пример простой структуры каталога приложений ASP.
Пример Структуры каталога:
/Simpleaspapp /docs /images /включает
Хорошая структура каталогов позволяет выборочно применять разрешения NTFS. Вы также можете использовать относительные пути из приложения ASP. Например, вы можете использовать следующий код для ссылки на include file top.asp в каталоге включения со страницы Default.asp, расположенной в каталоге SimpleAspApp:
./includes/top.asp
Обратите внимание, что расширение моего файла включения. Это делается по соображениям безопасности, и использует расширение .asp (а не .inc), а также позволяет кодировать цвет в Visual Interdev (R).
Для некоторых других советов и советов по структурированным приложениям ASP см. Статью «Конвенции ASP» (на английском языке).
ASP будет работать под службой. При разработке приложения ASP вы немедленно столкнетесь с средами безопасности и проблемами с потоком, с которыми вы не столкнетесь в своем настольном приложении. В среде рабочего стола обычно обрабатывается только однопоточное выполнение в качестве интерактивного пользователя и имеет доступ к текущей системе настольных компьютеров. В интернет -информационных службах (IIS) несколько клиентских потоков в разных пользовательских средах моделируются для вызова вашего приложения, и ваше приложение ограничено рабочим столом «Системной».
Что это значит для вас? Пожалуйста, изучите режим безопасности IIS. Также напоминайте вам: только потому, что что -то может правильно работать под визуальной базовой IDE, не означает, что оно может безопасно работать в технологии ASP. Visual Basic IDE не точно моделирует среду выполнения. Общие ошибки проектирования включают использование элементов управления .ocx, которые требуют пользовательских интерфейсов в технологии ASP, с использованием компонентов, которые небезопасны для потоков, и использование компонентов, которые требуют специальных пользовательских контекстов. Одной из самых простых проблем, которых следует избегать, является попытка получить доступ к реестре hkey_current_user (HKCU) из приложения (например, не вызывает функции GetSetting и Savesetting Visual Basic, оба из которых зависят от HKCU). Точно так же, не отображайте поля сообщений или другие диалоговые окна, которые требуют, чтобы пользователь взаимодействовал с человеком-компьютером.
Следующие статьи довольно хорошие вводные книги по вопросам безопасности и проверки в технологии ASP:
Технология ASP обеспечивает услугу представления, генерируя выход HTML. Короче говоря, он генерирует пользовательский интерфейс. Вам нужно отделить бизнес -логику от сценария представления ASP. Даже если вы не используете компоненты COM для отделения бизнес -логики от кода ASP, по крайней мере, разделяйте бизнес -логику в функции и включите файлы для улучшения обслуживаемости, читаемости и повторного использования. Вы также можете оценить преимущества модульных методов проектирования, когда необходимы проблемы с устранением неполадок и изоляции.
Вызовы функций и методов внутри скрипта могут не испортить код и добавлять структуры в приложения ASP. В следующем примере показано, как разделить логику на вызовы методов от кода ASP:
lt;% main () mybizmethod () ... sub main () getData () displaydata () end sub%>
Этот принцип может быть применен при использовании методов, которые включают функциональность ASP. Вот пример того, как использовать этот принцип при использовании Visual Basic Webclass:
Распространенной проблемой является переход от настольной системы к серверу. Многие разработчики с фоном настольных систем никогда не беспокоились о некоторых проблемах сервера и обмене ресурсами. В традиционных приложениях для настольных компьютеров подключение к серверу-это трудоемкий процесс. Чтобы улучшить пользовательский опыт, он обычно используется для досрочного приобретения ресурсов и задержки выпуска ресурсов. Например, многие приложения всегда будут подключены к базе данных на протяжении всего времени выполнения.
Этот метод работает правильно в традиционных настольных приложениях. Причина в том, что количество пользователей очень ясно, легко управлять, а бэкэнд и фронт тесно связаны. Тем не менее, для текущих веб -приложений этот подход больше невозможна, поскольку ограниченные ресурсы сервера сталкиваются с все большим количеством пользователей. Чтобы ваше приложение справилось с увеличением числа пользователей, вам необходимо получить ресурсы как можно ближе и выпустить ресурсы как можно раньше.
Обмен помогает повысить эффективность этого подхода. Благодаря обмену, несколько пользователей могут делиться ресурсами, с минимальным временем ожидания и минимальным влиянием на сервер. Например, при работе с базой данных, обмен подключением подключения ODBC и обмен ресурсами OLEDB могут позволить выбирать соединения из общего пула, минимизируя накладные расходы подключения к базе данных.
Для получения дополнительной информации о обмене ADO см. «Обмен в компонентах Microsoft Data Access».
Хотя протокол HTTP является без сохранения состояния, разработчики ASP часто используют механизм удержания состояний, встроенный в функции ASP. Например, используя объект приложения , встроенный в технологию ASP, ресурсы, сохраненные разработчиками, могут быть переданы всем пользователям приложения. Используя встроенные объекты сеанса ASP, разработчики сохраняют ресурсы только для одного пользователя.
Хотя это звучит так, будто сохранение информации в сессионном объекте технологии ASP - очень удобный способ сохранить состояние, этот подход слишком дорогой, и он также может быть одним из самых больших ограничивающих факторов по масштабируемости. Масштабируемость приложения - это, по сути, возможность продолжать сохранять свою производительность по мере увеличения количества пользователей. Для каждого пользователя объект сеанса потребляет ресурсы сервера до того, как сеанс истекло или был заброшен. Сеансы также связывают вас с сервером, ограничивая вашу способность воспользоваться веб -кластером. Пожалуйста, не используйте объекты сеанса ASP для управления государством как можно больше. Если вы вообще не используете сеанс, вы можете отключить статус сеанса вашего веб -приложения (см. Документацию IIS). В противном случае вы можете отключить статус сеанса для каждой страницы, используя следующее оператор:
< %@Enabsessestate = false %>
Для некоторых простых данных вы можете использовать файл cookie QueryString или домен скрытой формы для поддержания состояния между запросами ASP. Затем для более сложной информации обычно рекомендуется использовать базу данных. Общий подход заключается в создании уникального идентификатора, затем отправьте его каждому запрашивающему клиенту и сохраняет его в качестве поля скрытой формы. В последующих запросах этот уникальный идентификатор используется для поиска информации о состоянии, связанной с пользователем в базе данных. Этот подход обеспечивает более высокую масштабируемость и более краткий и четкий код.
Для получения дополнительной информации об использовании файлов cookie -файлов Querystring и скрытых форм см. В «Q175167 Howto: постоянные значения без сеансов».
При создании технологического объекта ASP вы можете выбрать
Вот возможное исключение: когда вы делаете звонок через брандмауэр, вам может потребоваться вызов CreateObject вместо server.createObject . Для получения дополнительной информации см. «Q193230 - PRB: Server.CreateObject не удается, когда объект находится за брандмауэром» (английский).
Убедитесь, что обработка ошибок включена во все ваши приложения ASP. И убедитесь, что вы предоставляете полезную диагностическую информацию. Я не встречал никого, кто жаловался, что сообщение об ошибке слишком объясняет. Обязательно включите следующую информацию в журнал ошибок:
Поскольку он будет работать под ASP, вы можете написать эту информацию в файл или журнал событий NT. Вы также можете создавать журналы событий приложения, которые войдут в систему критических приложений для использования при диагностике ошибок приложения.
В следующей статье содержится подробная информация о методах обработки ошибок:
Браузер - это не точный способ протестировать его, он может показать вам только возможное использование приложения. Пожалуйста, установите конкретные цели производительности для вашего приложения и используйте инструменты загрузки, такие как инструмент напряжения веб -приложений для тестирования стресса. Вы должны решить для себя, что может принять ваша среда, и вот несколько общих рекомендаций, которые помогут вам начать процесс тестирования:
Сопоставьте тестовую среду с фактической средой бега, и даже брандмауэр не является исключением. Это звучит дорого, но я слышал, как разработчики теряют свою работу, потому что они не принимают во внимание брандмауэр.
Для получения дополнительной информации о тестировании приложения ASP с использованием инструмента напряжения веб -приложений см. «Я не могу подчеркнуть его достаточно - загрузить приложение ASP».
Защита процесса подачи заявки с изоляцией может значительно повысить стабильность сервера. Когда дело доходит до интернет -приложений, последствия использования изоляции могут сильно различаться: один - это сбой приложения, а другой - сбой сервера. Защита первичного процесса IIS (inetinfo.exe) обычно находится в списке более высоких приоритетов. Это особенно заметно, когда вы используете компоненты.
Обычно используемый метод для защиты основного процесса ISS заключается в том, чтобы позволить веб -приложениям работать в своих соответствующих пространствах памяти. В Internet Services Manager вы можете установить эту опцию для каждой сети. Хотя системные ресурсы, которые перегружены процессами маршалирования, будут оказывать небольшое влияние на производительность, эффект защиты на приложения стоит затрат. В соответствии с IIS 4.0 вы можете запустить свое приложение в процессе и за пределами процесса (ООП). Приложение OOP работает в новом экземпляре mtx.exe. В соответствии с IIS 5.0 вы можете использовать другие варианты изоляции. Уровень изоляции может быть установлен на «низкий» (применение в процессе inetinfo.exe), «среда» (общий экземпляр dllhost.exe) или «Высокий» (не покрасный экземпляр dllhost.exe).
В дополнение к изоляции веб -приложений в их собственном пространстве памяти, вы также можете выделить ненадежные компоненты. Компоненты, которые не доверяют, обычно представляют собой компоненты, которые не проходят время теста в реальной среде. Вы можете запустить эти компоненты в пакете сервера, чтобы они работали в новом экземпляре dllhost.exe.
Вообще говоря, если вы хотите использовать умеренный подход между производительностью и защитой, приведен следующее: запустите веб -приложение в «высоком» состоянии изоляции и запустите компоненты в библиотечном пакете. Этот подход сводит к минимуму расходы на маршал, обеспечивая самую сильную защиту между процессами.
Для получения дополнительной информации см. Статью «Надежность сервера через изоляцию процесса».
Под IIS 4.0 общая группа ASP по умолчанию составляет 10 потоков для каждого управляемого MTS процессора. В IIS 5.0 значение по умолчанию составляет 20. Это означает, что каждый поток является потенциально ценным ресурсом, который может обрабатывать несколько запросов клиента. Вы также должны избегать методов блокировки, которые могут возникнуть, например, выполнение больших вызовов баз данных. Если у вас есть работа, чтобы сделать это, это помешает приложению ASP быстро вернуть ответ клиенту, рассмотрите возможность использования функции очереди. Например, в NT 4.0 можно использовать MSMQ. В Windows 2000 можно использовать компоненты в очереди.
Одним из распространенных недостатков не хранения компонентов однопоточной квартиры (STA) в сеансе является то, что они заполняют объекты Visual Basic в сессии. Он заблокирует пользователя на поток, который будет работать вопреки, чтобы делиться группой по потокам. Потенциальные пользователи будут заблокированы за другими пользователями, ожидая, когда потоки, которые создают их компоненты, станут действительными. Вы должны использовать другие способы разработки компонентов без сохранения состояния, которые могут быть созданы и уничтожены на основе каждой страницы.
Быстрые советы: убедитесь, что функция отладки сценариев ASP отключена на сервере (с помощью интернет -сервисного менеджера). Если отладка сценария ASP включена, выполнение ASP будет заблокировано в потоке.
Для получения дополнительной информации, пожалуйста, обратитесь к следующей статье:
Создание приложения ASP требует значительного диапазона знаний. Одной из проблем для приложений ASP является то, что в настоящее время нет общих правил (которые также являются частью веселья). Другая проблема заключается в том, что многие разработчики участвовали в разработке системы настольных компьютеров, прежде чем они вступили в контакт с разработкой Интернета. Применяя приведенные выше правила в ваших усилиях по разработке ASP, у вас есть надежда избежать дорогостоящих ошибок и иметь возможность разработать довольно хорошие приложения ASP.
JD Meier родился и вырос на восточном побережье Соединенных Штатов. Следуя советам Горация Грили, он стал инженером по поддержке разработчиков, сосредоточившись на компонентах на стороне сервера, включая MTS и ASP Technologies, а также приложения ДНК Windows.
Через контент, представленный редактором нового технологического канала, я считаю, что у каждого есть определенное понимание. Если вы хотите узнать больше технического контента, пожалуйста, продолжайте обращать внимание на 未分 New Technology Channel!