Asp быстродействие доступа к данным


Содержание

ГЛАВА 11

Web-формы: приложения на основе ASP.NET для работы с базами данных

До сих пор демонстрировались различные способы работы с базой данных на разных этапах создания приложения и способы использования результатов выполнения приложения (на основе объектов DataSet, DataAdapter и Connection). В этой главе эти способы комбинируются для просмотра информации из базы данных в Web-среде с помощью Web-броузера. В контексте платформы.NET Framework Web-страница, которая применяется для извлечения или вставки данных, называется Web-формой (WebForm). Прежде, при создании приложения с помощью технологии ASP, единственным способом извлечения данных из реляционной базы данных было применение объектов ADODB.Connection и ADODB.Recordset. С появлением платформы .NET модель ADO.NET позволяет использовать не только новые классы и параметры, но и встроенную поддержку для работы с XML-данными так, как если бы они были элементами базы данных. Описание новых способов работы на основе технологии ASP .NET начинается с базовых сведений, а затем приводятся более сложные понятия.

Обзор технологии ASP.NET

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

Для организации такого взаимодействия с Web-узлом начали появляться разные языки и технологии создания сценариев. Одной из таких технологий является технология активных серверных страниц (Active Server Pages — ASP). Она предоставляет средства вставки в Web-страницу кода, который выполняется во время обработки Web-сервером поступившего запроса. В контексте разработки приложений эта новинка была революционной: по крайней мере теперь разработчики могли использовать сценарий на языке VBScript, который выполняется на сервере. Этот тип взаимодействия постепенно начал превосходить другие подходы на основе языков JavaScript и ActiveX. Кроме того, язык VBScript был расширен таким образом, чтобы вызывать компилированные COM-объекты на Web-сервере и включать их функции в Web-страницу. На этом этапе появился Microsoft Transaction Server, который теперь называется набором компонентных служб Component Services.

Итак, что же произойдет при смешении серверного кода, клиентских сценариев, а также кода, откомпилированного для обеспечения безопасности и масштабируемости. Именно эти компоненты и образуют основу технологии ASP.NET. Полученный в результате такой комбинации ASPX-файл позволяет использовать мощный серверный код, основанный на полноценном языке программирования, которым привыкли пользоваться разработчики. Теперь поддержка языков программирования С#, Visual Basic, C++, FoxPro, Perl, COBOL и Fortran осуществляется благодаря общеязыковой исполняющей среде (Common Language Runtime — CLR), и эти языки могут использоваться в специальных Web-страницах для более полного удовлетворения требований пользователей.

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

HTML-элементы управления и серверные элементы управления

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

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

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

Еще один интересный аспект использования серверных элементов управления связан с технологией ActiveX. Эта технология основана на использовании «толстого» клиента. («Толстый» клиент — это компьютер с богатыми функциональными возможностями и ресурсами, которые часто избыточны с точки зрения сетевых вычислений. — Прим.ред.) По причинам, полное описание которых выходит за рамки данной книги, использование вставленных в Web-страницу элементов управления ActiveX, которыми можно управлять через Internet, было крайне неудачной идеей. В отличие от элемента управления ActiveX, серверный элемент управления не содержит никакого кода, который выполняется на клиентской стороне. Клиент получает только HTML-код, а все операции взаимодействия с пользователям выполняются Web-сервером после получения соответствующего запроса от пользователя («posting back»). Далее на примере объекта DataGrid показан способ применения серверного элемента управления, который принимает набор данных, обрабатывает его и создает HTML-таблицу, которую можно отобразить в любом Web-броузере. Следует признать, что она несколько отличается от стандартной HTML-таблицы с данными.

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

Завершая сравнение HTML-элементов управления и серверных элементов управления, рассмотрим приведенный ниже фрагмент кода ASP.NET, предназначенного для представления серверного элемента управления, а именно текстового поля txtName.

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

Дополнительные преимущества технологии ASP.NET

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

Первый компонент связан со свойством IsPostBack. При создании ASPX-файла (или, иначе говоря, Web-формы) ему по умолчанию передаются данные. Свойство IsPostBack используется для того, чтобы избежать появления сообщений об ошибках при отсутствии таких данных на Web-странице, которую пользователь еще даже не успел увидеть. Свойство IsPostBack имеет значение true, если данная Web-страница запрашивается пользователем, либо значение false, если данная Web-страница загружается самостоятельно впервые. Ниже приводится фрагмент кода с примером использования этого метода.

Конечно, ASPX-файл или HTML-файл можно использовать для передачи данных другому ASPX-файлу. Это позволяет создать файл с нужной функциональностью, например переадресовать пользователя после проверки и исправления данных к другой Web-странице с помощью метода Response.Redirect.

Еще одно важное достоинство ASP.NET связано с процессом доставки готового приложения. Для этого достаточно скопировать все файлы с одного компьютера на другой. Конечно, на новом компьютере под управлением Web-сервера Internet Information Server (IIS) нужно также создать новый виртуальный каталог с помощью консоли управления IIS ММС. Для этого выберите команду Start→Settings→Control Panel Administrative Tools→Internet Services Manager (Пуск→Параметры→Панель управления→Административные инструменты→Менеджер Internet-служб), в появившемся окне Internet Information Services (Информационные Internet-службы) выберите узел Default Web Site (Web-узел по умолчанию) и щелкните правой кнопкой мыши на нужном каталоге. Выберите в контекстном меню команду Properties. Появится одноименное диалоговое окно; выберите в нем вкладку Virtual Directory (Виртуальный каталог) или Home Directory (Домашний каталог), в зависимости от используемой операционной системы. Если выбранный каталог не сконфигурирован, то в группе элементов управления Application Settings (Параметры приложения) будет присутствовать кнопка Create (Создать). (В противном случае этой кнопки не будет и тогда следует щелкнуть на кнопке Cancel.) После щелчка на кнопке Create и конфигурирования каталога щелкните на кнопке OK для закрытия диалогового окна. Теперь выбранный виртуальный каталог сконфигурирован как приложение.

Совсем необязательно инсталлировать интегрированную среду выполнения Visual Studio .NET на любом Web-сервере, на который нужно скопировать Web-приложение. Для работоспособности такого Web-приложения нужно только установить платформу .NET Framework, которую можно бесплатно скопировать с Web-узла компании Microsoft по адресу: http://www.microsoft.com.

Доступ к базе данных с помощью ASP.NET

Ядром любого приложения баз данных является база данных. Для использования базы данных необходимо иметь надежный и безопасный способ подключения. На платформе .NET этот способ реализуется с помощью пространства имен System.Data и одной строки подключения.

Учтите, что доступ к данным связан с рядом трудностей. Одна из них заключается в том, что пользователь может не иметь прав доступа к базе данных, включая выполнение запроса на выборку данных. Еще одна часто возникающая проблема связана с сохранением имен и паролей пользователей в простом текстовом файле, который обычно не отображается Web-сервером для внешних пользователей. Например, при просмотре кода ASP-страницы очень редко можно встретить следующие строки:

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

В примерах данной главы используется параметр TRUSTED_CONNECTION = YES, который означает применение надежного подключения, т.е. пользователь должен быть идентифицирован операционной системой Windows, а аутентифицирующая информация о нем должна храниться в SQL Server. В большинстве практических приложений в SQL Server не принято создавать отдельные учетные записи ASP.NET, если только не требуется ограничить возможности пользователя лишь операциями выборки данных.

Учетная запись ASP.NET используется по умолчанию при анонимных Web-запросах к Web-серверу с инсталлированной средой выполнения платформы .NET.

Включение учетной записи ASP.NET в состав учетных записей SQL Server

Для создания надежного подключения (на основе параметра TRUST необходимо иметь учетную запись операционной системы Windows, которую следует включить в состав учетных записей SQL Server. Кроме того, SQL Server должен быть сконфигурирован так, чтобы разрешалось использовать аутентификацию операционной системы Windows. Хотя большая часть этого процесса уже описана в предыдущей главе, он рассматривается здесь более подробно для демонстрации прямой связи между управлением учетной записью ASP.NET в SQL Server и использованием надежного подключения на основе параметра TRUSTED_CONNECTION. В данном примере рассматривается редкий случай создания отдельной учетной записи ASP.NET в SQL Server для ограничения возможностей пользователя только операциями выборки данных.

1. Откройте программу SQL Server Enterprise Manager, выбрав команду Start→Microsoft SQL Server→Enterprise Manager. Раскройте узел используемой базы данных и узел Security (Безопасность), как показано на рис. 11.1.

Рис. 11.1. Выбор узла Security в программе SQL Server Enterprise Manager

2. Щелкните правой кнопкой мыши на элементе Logins (Учетные записи) и выберите в контекстном меню команду New Login (Создать учетную запись). На экране появится диалоговое окно SQL Server Login Properties – New Login (Свойства учетных записей SQL Server – Создать учетную запись), как показано на рис. 11.2.

РИС. 11.2. Диалоговое окно SQL Server Login Properties – New Login

3. Во вкладке General (Общие свойства) в текстовом поле Name (Имя) укажите учетное имя пользователя, выбрав его с помощью щелчка на кнопке с многоточием либо введя в формате имя_компьютера/имя_пользователя или имя_домена/имя_пользователя. На рис. 11.3 показан пример выбора учетного имени пользователя после щелчка на кнопке с многоточием.

РИС. 11.3. Выбор учетного имени пользователя

4. Прокрутите список всех учетных записей для поиска учетной записи ASPNET и щелкните дважды на ней. Затем щелкните на кнопке OK для закрытия данного диалогового окна.

5. В нижней части вкладки General выберите в списке Database используемую базу данных Novelty (рис. 11.4).

РИС. 11.4. Выбор используемой базы данных Novelty в списке Database вкладки General

6. Далее выберите вкладку Database Access (Доступ к базе данных). Установите флажок только возле базы данных Novelty. Затем в списке Database Roles for ‘Novelty’ (Роли базы данных ‘Novelty’) установите флажок роли public (рис. 11.5).

РИС. 11.5. Выбор базы данных и роли пользователя

7. Выберите роль public и щелкните на кнопке Properties, чтобы открыть диалоговое окно, показанное на рис. 11.6.

РИС. 11.6. Свойства роли public

8. Щелкните на кнопке Permissions (Разрешения), чтобы открыть диалоговое окно, предназначенное для низкоуровневого указания разрешений пользователя (рис. 11.7).

РИС. 11.7. Диалоговое окно для низкоуровневого указания разрешений пользователя

9. Убедитесь в том, что выбран переключатель List all objects (Перечислить все объекты), и прокрутите список до конца, чтобы увидеть все таблицы из базы данных Novelty. Установите флажки всех таблиц в столбце SELECT (рис. 11.8). Флажок означает разрешение на выборку данных из данной таблицы, а крестик — запрет на выборку данных.

РИС. 11.8. Диалоговое окно для установления разрешений на основные операции с таблицами

10. На этом этапе установите также флажок в столбце INSERT для таблицы tblOrder, как показано на рис. 11.9. Это позволит покупателям создавать заказы.

РИС. 11.9. Установка разрешения на операции вставки в таблицу tblOrder

После выполнения этих действий для закрытия этого и двух других диалоговых окон щелкните на кнопке OK в каждом из них. После этого в списке учетных записей Logins в окне программы SQL Server Enterprise Manager появится пользователь ASPNEТ (рис. 11.10).

Рис. 11.10. Список учетных записей Logins в окне программы SQL Server Enterprise Manager

(Учтите, что в данном случае на рис. 11.10 показана учетная запись ASPNET, созданная на компьютере PRICEKW2KLT2 автора книги. — Прим. ред.)

Итак, учетная запись ASPNET включена в список учетных записей SQL Server. В следующем разделе показано, как ее использовать для подключения к базе данных без указания в строке подключения какой-либо информации об имени и пароле учетной записи.

Применение параметра TRUSTED_CONNECTION

Продемонстрируем теперь применение параметра TRUSTED_CONNECTION для подключения к базе данных и выполнения простого запроса с помощью технологии ASP.NET. Запустите интегрированную среду разработки приложений Visual Studio .NET и создайте новый проект ASP.NET Web Application. Для этого в диалоговом окне New Project (Новый проект) выберите тип проекта Visual Basic Project в области Project Types (Типы проектов) и шаблон ASP.NET Web Application (Приложение на основе ASP.NET Web-форм) в области Templates (Шаблоны).

Переименуйте автоматически созданный файл WebForm1.aspx и укажите для него новое имя default.aspx, щелкнув на имени правой кнопкой мыши и выбрав команду Rename (Переименовать) в контекстном меню, а затем отредактировав выделенное имя. Эта Web-форма будет используемой по умолчанию Web-страницей данного каталога. (Впоследствии в эту Web-форму будут постепенно вноситься другие изменения.)

Для начала рассмотрим код в листинге 11.1 с очень простым примером подключения к базе данных с помощью учетной записи ASPNET, выборки данных с помощью запроса на основе команды SELECT и отображения результатов запроса на Web-странице.

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

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

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

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

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

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


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

Синтаксис

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

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

Версии

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

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

Apache::ASP

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

ASP в Sambar Server

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Замена ASP

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

НОВОСТИ ФОРУМА
Рыцари теории эфира
01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]69vJGqDENq4[/Youtube][/center]
[center]14:36[/center]
Osievskii Global News
29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Ok]376309070[/Ok][/center]
[center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]VVQv1EzDTtY[/Youtube][/center]
[center]10:43[/center]

интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/

[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога — это что, военный объект?
— Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

Как сэкономить время и деньги при построении интерактивного
контента веб-сайта?
Сравнение технологии ASP с решениями Business Objects/Crystal Decisions

Введение

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

В этой статье показано, как веб-разработчики с помощью решений Business Objects/Crystal Decisions (далее — Crystal Decisions) могут передавать реляционные данные в Интернет более чем в 100 раз быстрее, чем при публикации информации с помощью отчётов, написанных на ASP. Построенные на стандартах XML, ADO, ActiveX, Visual Basic (VB) и Java Script, решения Crystal Decisions не только обеспечивают безопасность и масштабируемость, но и множество самых разнообразных функций, с помощью которых разработчики и профессионалы в информационных технологиях могут быстро передавать в Интернет информацию презентационного качества, и при этом не писать код.


Резюме

Многие разработчики знают о том, что Crystal Reports – это мировой стандарт представления реляционных данных в настольных компьютерах. Эти решения применимы не только на настольных компьютерах, но и в Интернете. Начиная с 7-ой версии, Crystal Reports имеет единый интерфейс конструирования для быстрого создания отчётов для Windows и Интернета. Созданные отчёты можно доставлять и контролировать с помощью Crystal Enterprise – надёжной платформы для работы с отчётами, анализа и передачи информации через Интернет. Продукт Crystal Decisions даёт разработчику среду, интерфейсы и инструменты, которые избавляют от необходимости писать для отчётов множество строк кода ASP. Не утруждая себя написанием кода, разработчики значительно быстрее могут компоновать профессиональные отчёты с помощью объектно-ориентированных интерфейсов конструктора.

В следующем примере приведён довольно простой отчёт о клиентах, который содержит следующее:

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

Отчёт (см. ниже) был создан за 1,5 минуты с помощью Crystal Reports. Затем всего за минуту он был опубликован в Интернете с помощью Crystal Enterprise как динамический отчёт, включающий расписание и возможности защиты. Те же действия, выполненные с использованием кода ASP, заняли у опытного разработчика 495 минут! Даже если не учитывать затраты времени на публикацию отчёта, разница получается впечатляющая – опытному программисту на ASP потребовалось потратить только на конструирование отчёта 210 минут.

Отчёт о клиентах, созданный с помощью Crystal Reports:

Отчёт о клиентах, созданный с помощью ASP:

Сравнение затрат времени при использовании ASP и Crystal

Ниже в таблице приведены затраты времени на каждый шаг процесса создания вышеупомянутого отчёта и его опубликование в Интернете с использованием кода ASP в одном случае и технологии Crystal Decisions – в другом.

Время на написание кода ASP Время при использовании Crystal Технология Crystal
Создание отчёта о клиентах— Подключение к базе данных- Выбор и размещение поля- Сортировка/группирование- Вставка адреса электронной почты- Ссылка на веб-сайт- Форматирование отчёта 210 минут(3,5 часа) 1,5 минуты Crystal Reports(указать и щёлкнуть мышью в конструкторе)
Загрузка страниц по запросу 45 минут 0 минут Crystal Enterprise(автоматически)
Добавление защиты 240 минут(4 часа) 1 минута Crystal Enterprise (указать и щёлкнуть на консоли Crystal Management Console)
Добавление функций расписания Не включено 0 минут
Обновление отчётов после обновления базы данных Не включено 0 минут Crystal Enterprise
Итого времени 495 минут 2,5 минуты

В приведённой таблице не учтено время, затрачиваемое на сопровождение и обновление приложения.

Опубликование реляционных данных на веб-сайте должно быть лёгким

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

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

Выбор правильного инструмента для максимального увеличения прибыли на инвестицию в веб-сайт

Для опубликования реляционных данных в Интернете существует большое разнообразие инструментов. Наиболее популярны отчёты с кодом ASP (такие инструменты как Macromedia Dreamweaver и Microsoft FrontPage.

Почему ASP?

Инструменты на основе кода ASP популярны по следующим причинам.

  • Привычность. VB Script похож на Microsoft Visual Basic (VB) , поэтому разработчики знакомы с этим широко известным стандартом. Многие разработчики считают, что этим языком легче пользоваться, чем JSP, JavaBeans, PHP и так далее.
  • Стандартность. Технология ASP содержит гибкие серверные компоненты, уже встроенные в продукты Microsoft, на которых установлен сервер IIS (Internet Information Server), с целью создания ASP-приложений.
  • ASP-разработчиков проще найти. Разработчиков, знающих ASP, довольно много, поэтому сложностей с их поиском нет.
  • Хорошая интеграция в другие продукты Microsoft. ASP, Internet Explorer, IIS и SQL-сервер хорошо взаимодействуют друг с другом.
  • Возможность многократного использования. Разработчики могут сэкономить время, копируя и вставляя строки кода, ранее написанные для других веб-страниц, а также создавая универсальные компоненты, которые годятся для многих веб-страниц.

Почему Crystal?

Технология Crystal имеет все преимущества технологии ASP, но значительно быстрее и дешевле.

  • Качество презентации, интерактивные отчёты. Интуитивно понятный интерфейс конструктора позволяет создать практически любой отчёт. Его можно превратить в интерактивные документы с развёрткой (переход по иерархии вниз), графиками, картами, оповещениями, параметрами, гиперссылками, возможностью вносить изменения и многими другими возможностями.
  • Использование уже знакомых стандартов. Используя общеизвестные стандарты для веб-сайтов, в том числе DHTML, VB Script, JavaScript, COM и XML, технология Crystal даёт компаниям полный контроль над всеми аспектами создания контента, интеграции и функциональности системы. VB Script был использован при разработке Crystal Server Pages (CSP) – веб-страниц, которые может видеть конечный пользователь.
  • Все возможности настройки. Мощные возможности настройки и полная поддержка стандартных языков создания сценариев (JavaScript и VBScript) позволяют разработчикам быстро строить нужные веб-приложения.
  • Мощная система управления контентом. Для управления информационной инфраструктурой достаточно нескольких щелчков мыши.
  • Практически отсутствует необходимость в написании кода. Предусмотрены почти все функции.

Максимизация отдачи от инвестиций в веб-сайты с помощью Crystal

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

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

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

Через неделю отдел маркетинга и отдел сбыта прослышали об этих отчётах и захотели такие же, но с небольшими изменениями. Отдел сбыта попросил, чтобы в отчёте о клиентах были номера телефонов. Отдел маркетинга попросил включить в отчёт ежемесячные ведомости доходов клиентов, сгруппированные по регионам, а не по названиям компаний. Бухгалтерский отдел также сообщил, что один из 5 отчётов выполняется слишком долго, поэтому его лучше выполнять раз в неделю, а не ежедневно. Кроме того, из бухгалтерии сообщили, что из-за того, что сотрудники информационного отдела вчера что-то делали с серверами, отчёты были недоступны 5 часов, и бухгалтеры не имели доступа к данным. Поэтому они не смогли во время выполнить пару важных задач для своих аудиторов. В результате вам приходится отложить свой текущий проект по крайней мере на неделю, чтобы выполнить просьбы отделов. Кроме того, вам приходится доказывать директору, что необходимо купить более мощное оборудование, чтобы удовлетворить дополнительные потребности пользователей.

Подводная часть айсберга тоже важна

Создание отчётов – не статичный проект. Приведенный выше пример показывает, что различные отделы предприятия по-разному смотрят на одни и те же данные.

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

Ниже приведены два отчёта, отображающие данные, описанные в вышеупомянутом сценарии; один из этих отчётов сделан и опубликован по технологии Crystal, а другой – по технологии ASP. Первый отчёт создан с помощью Crystal Reports (издание Developer или Professional), а опубликован с помощью среды Crystal Enterprise. Эти два отчёта похожи, но…

Рис. 1. Отчёт о клиентах, созданный с помощью Crystal Reports

Рис. 2. Отчёт о клиентах, созданный с помощью ASP

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

  • Презентационное качеств
  • Содержимое отчёта и удобство подачи информации
  • Параметры диапазона опций поставки контента
  • Быстродействие системы
  • Масштабируемость системы и постоянная доступность данных
  • Надёжность инфраструктуры защиты данны
  • Поддержка и рост системы по мере роста организации

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

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

1. Вопросы вывода отчёта

Представление отчёта

Отчёт со сводными, сильно уплотнёнными данными может существенно помочь пользователю лучше понять бизнес-процесс. Форматирование презентационного качества с использованием различных шрифтов, линий, рисунков и макетов с произвольной разметкой может помочь пользователю лучше и профессиональнее работать с информацией. В Crystal такая гибкость достигается всего лишь нажатием кнопки мастера. При написании кода ASP даже с помощью таких конструкторов как Dreamweaver и FrontPage, для добавления упомянутых функций требуются часы.

С помощью Crystal Reports можно легко представить информацию в той форме, к которой привыкли пользователи, какой бы она ни была – матричный отчет, счёт-фактура, заказ и так далее. Объектно-ориентированный конструктор поддерживает создание практически любых отчётов, любые стили и форматы. А при использовании ASP вы ограничены только выводом на основе таблиц. Произвольная компоновка в Crystal даёт возможность быстро извлекать нужную конечному пользователю информацию, и форматировать ее с целью выделения наиболее важных данных.

Удобство пользования отчётами и возможности доставки контента

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

При использовании ASP все эти функции отчёта приходится писать вручную. Во многих отношениях «комплексный отчёт» с упомянутыми функциями становится настоящим приложением. А при использовании Crystal Reports не нужно заботиться о написании кода для встраивания нужных функций – код создаётся автоматически всего несколькими щелчками мыши. Правда, один раз написанный код ASP можно многократно использовать для других отчётов, но если придётся вести более 10 отчётов, то усилий потребуется слишком много. Даже простое планирование выполнения отчёта потребует создание отдельного приложения.

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

  • Параметризованные отчёты для усложнённой сортировки, фильтрации и сведения данных, создания карт и графиков.
  • Система планирования выполнения отчётов в заданные промежутки времени или регулярно с заданным периодом.
  • Встроенные средства навигации, в том числе оглавление, гиперссылки, детализация по иерархии, поиск.
  • Экспорт в файлы форматов Acrobat (PDF), Microsoft Excel, Word (RTF) и собственный формат Crystal Reports.

Разделение создания отчёта от создания приложения

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

Crystal разделяет отчёты и приложения, поэтому изменение отчёта никак не влияет на приложение, и наоборот – изменение приложения не влияет на отчёт. Права на внесение изменение, планирование, добавление новых отчётов, переформатирование… Crystal выполняет эти функции универсально, поэтому разработчикам и ИТ-специалистам не приходится беспокоиться о том, что они могут повредить код при изменении отчётов и приложений. Новый репозитарий Crystal Decisions использует единое место для обмена, обновления и управления объектами всех отчётов. Например, десять отчётов могут иметь общий текстовый объект, хранящийся в репозитарии. Если необходимо внести изменение, разработчик может изменить объект в репозитарии, после чего изменение автоматически распространяется на все отчёты, содержащие указанный объект.

Ещё одно преимущество отделения разработки отчётов от разработки приложений – разработчик имеет возможность передать конструирование контента другому лицу.

2. Вопросы развёртывания и управления

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

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

Быстродействие


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

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

Crystal содержит серверный компонент, специально выделенный для кэширования отчётов. Этот серверный компонент может быть помещён на отдельный компьютер или несколько компьютеров, чтобы ускорить доставку часто выполняемых отчётов.

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

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

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

Масштабируемость и доступность

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

Разработчики, которые пишут отчёты на языке ASP, могут быть ограничены в масштабируемости, поскольку они всегда вынуждены использовать IIS. Чтобы получать информацию могло одновременно большое количество пользователей, разработчики могут повысить производительность своих ASP-приложений либо с помощью программного обеспечения, либо оборудования, но оба варианта имеют недостатки. Для распределения нагрузки по массиву (ферме) веб-серверов путем установки дополнительного оборудования требуются дорогостоящие ИТ-специалисты с сертификатами компании Cisco, а эти специалисты малочисленны и обычно постоянно заняты. Если же идти по пути установки дополнительного программного обеспечения, например, сервера MTS (Microsoft Transaction Server), который содержится в IIS, то при этом обычно необходима дополнительная работа по преобразованию всех сценариев в библиотеки DLL, которые должны стать компонентами MTS.

В основе Crystal лежит архитектура распределённых компонентов. Это означает, что отдельные компоненты системы могут быть «развязаны» (обработка плановых отчётов, управление системой, кэширование, обработка отчётов в реальном времени, доставки веб-данных) и распределены по множеству компьютеров. Благодаря этому увеличивается количество пользователей, которые могут иметь одновременный доступ к веб-сайту, повышается эффективность использования оборудования, быстрый рост возможностей системы, причём переписывать отчёты не требуется.

Crystal также распределяет нагрузку между всеми функциями управления системой и обработки отчётов. Кроме того, Crystal поддерживает кластеризацию и переключение ресурсов при сбое на уровне управления системой. Это значит, что к кластеру можно добавить несколько компьютеров, чтобы уменьшить время отклика и более эффективно распределять нагрузку, вызванную обращениями пользователей. Если какой-либо компьютер из кластера выйдет из строя, остальные компьютеры кластера автоматически возьмут на себя его функции, и нормальная работа кластера продолжится.

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

Когда речь идёт об отчётах, главные вопросы безопасности – кто имеет право просматривать отчёты и выполняемые ими операции. Может ли каждый пользователь планировать отчёты, просматривать их по запросу, вводить параметры отчётов, просматривать экземпляры отчёта за прошлые периоды и так далее? Все эти вопросы должны быть учтены в коде ASP каждого отчёта. И даже с учётом того, что некоторые компоненты кода ASP отчётов можно использовать многократно, контроль качества требует слишком много затрат времени.

Интерфейс Crystal позволяет вести функции защиты просто и удобно – всего лишь несколькими щелчками мыши. Все отчёты (объекты отчётов) хранятся в центральном репозитарии, благодаря чему управление функциями защиты отдельных объектов и папок ведётся просто нажатиями кнопки мыши. Кроме гибкости модели отдельных пользователей и групп пользователей, Crystal Enterprise поддерживает интеграцию с системами безопасности других производителей, в том числе LDAP и NT. Благодаря этому можно использовать существующую у вас инфраструктуру безопасности, чтобы ускорить развёртывание и администрирование.

Долгосрочная поддержка

Изменяющиеся потребности в отчётах. Как уже было показано в примере, в котором разработчик создал пять отчётов для бухгалтерии, требования к отчётам постоянно изменяются в различных отделах предприятия. Возможность вести и планировать обновления в системе отчётов критически важны при планировании ресурсов. Когда разработчик вносит изменения в код ASP, ему необходимо проанализировать, как эти изменения повлияют на остальные приложения, и протестировать код, чтобы убедиться в том, что отчёт или приложения по-прежнему работают без ошибок. Как правило, при внесении изменений требуются значительные трудозатраты на вопросы «подводной части айсберга», такие как масштабируемость, безопасность, которые при использовании Crystal решаются автоматически.

Использование результатов предыдущей работы. Более четырнадцати миллионов проданных лицензий, 300 OEM-партнёров показывают, что технология Crystal стала мировым стандартом в работе с отчётами. Crystal Reports применяется на многих передовых предприятиях, и наверняка вы сможете найти на своём предприятии хоть одного специалиста, знакомого с этими продуктами. Поэтому у вас есть возможность воспользоваться услугами своих специалистов, а не отправлять кого-нибудь на курсы по изучению ASP.

Техническая поддержка. Все продукты Crystal обладают возможностью доступа к различным уровням технической поддержки от самообслуживания до элитных персональных услуг, которые осуществляются круглосуточно (24 часа в сутки, 7 дней в неделю). Какой уровень поддержки может обеспечить ваш ASP-разработчик?

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

Поддержка будущих технологий. Crystal Decisions интегрирует в свои продукты новейшие веб-технологии, благодаря которым веб-контент предоставляет пользователям, разработчикам и администраторам максимальную эффективность и окупаемость инвестиций. Например, поскольку язык XML по-прежнему играет важную роль в опубликовании информации в сети, Crystal Decisions продолжат интегрировать в свои продукты последние достижения в области XML. При этом Crystal Decisions остаётся на передовых позициях во всех областях, от новых драйверов до Report Web Services – нового слова в технологии XML.

Краткий обзор вопросов, касающихся «подводной части айсберга», приведён в приложении № 3

Увеличение производительности веб-разработок в 180 раз с помощью Crystal

Сравним два отчёта, приведенных на рис. 1 и 2. Оба они представляют одну и ту же информацию, но один из них требует на создание и публикацию в сети существенно меньше времени.

  • Рис. 1. На создание и опубликование этого отчёта с помощью продуктов Crystal требуется 2,5 минуты. Обзор действий по созданию и публикации этого отчёта с помощью Crystal содержится в приложении 1.
  • Рис. 2. На создание этого отчёта с помощью кода ASP требуется 450 минут (7,5 часов), причём здесь не учтено время на опубликование и планирование отчёта. Обзор действий по созданию и публикации этого отчёта с помощью ASP содержится в приложении 2.

Расчёт окупаемости

  • 450 минут (ASP) – 2,5 минут (Crystal)
  • На 99% быстрее при использовании Crystal!
  • 450/2,5 = в 180 раз быстрее при использовании Crystal!

Выводы

  • Продукт Crystal Reports позволяет существенно быстрее публиковать данные на веб-сайте с качеством презентации с использованием легко управляемой веб-инфраструктуры под названием Crystal Enterprise.
  • С помощью технологии Crystal можно упростить весь процесс создания и опубликования отчётов. Разработчики могут сосредоточиться на разработке своих приложений, предоставив написание отчётов другим специалистам, а продукты Crystal обеспечат согласованность всех тех вопросов, которые раньше замедляли работу.
  • Кроме того, с помощью Crystal разработчики имеют доступ к полной модели COM (модель компонентных объектов), благодаря чему имеют возможность интегрировать свои отчёты в приложения нужным им способом.

Как найти дополнительную информацию

Дополнительная информация о Crystal Reports, Crystal Enterprise и семействе продуктов Crystal Decisions находится на следующих сайтах.

Приложение 1: Создание списка представителей клиентов с помощью Crystal Reports

Резюме

Данный пример был использован для определения времени, требуемого на создание отчёта с помощью Crystal Reports, опубликование его с помощью Crystal Enterprise и включение модели безопасности. Всего потребовалось 2,5 минуты. Этот пример был построен с помощью Crystal Reports Developer Edition и Crystal Enterprise Professional Edition. Вместо Developer Edition можно использовать Crystal Reports Advanced Edition.

Создание отчёта

Затраченное время: 1,5 минуты

Подключение к базе данных для получения доступа к данным

  1. Укажите на учебную базу данных Xtreme, выберите таблицу Customers (Клиенты).
  2. Заполните следующие поля: название компании-клиента, имя представителя, его фамилия, адрес электронной почты, веб-сайт.
  3. Вставьте имя и фамилию в текстовые поля, чтобы имя клиента было представлено как один объект.
  4. Сформатируйте текст так, чтобы он отображался шрифтом Arial Narrow размера 9.

Сортировка клиентов в алфавитном порядке с буквой в качестве заголовка группы клиентов

  1. В меню Insert (Вставка) выберите пункт Field Object (Объект поле). Появится диалоговое окно Field Explorer (Обозреватель полей).
  2. Выберите Formula Fields (Поля с формулами), затем New (Создать).
  3. В диалоговом окне Formula Name (Имя формулы) введите имя, которое хотите присвоить формуле, например, «Первая буква». Нажмите кнопку OK. Появится редактор формул (Formula Editor).
  4. В верхнем правом углу в раскрывающемся списке выберите пункт Crystal Syntax (Синтаксис Crystal). В поле Formula (Формула) ведите следующую формулу: <Клиент.Имя клиента>[1]. Нажмите кнопки Save (Сохранить) и Close (Закрыть). Имя указанной формулы появится в папке Field Objects.
  5. В меню Insert (Вставка) выберите пункт Group (Группировка). Появится диалоговое окно Insert Group (Вставка группировки). Выберите в раскрывающемся списке созданное поле с формулой в качестве поля, по которому будут группироваться данные. Во втором раскрывающемся списке выберите порядок сортировки. Нажмите кнопку OK.
  6. Теперь данные отчёта будут группироваться по первой букве названия компании.

Ввод адреса электронной почты, соответствующего имени клиента

  1. Щелкните правой кнопкой мыши по полю с именем клиента, выберите команду форматирования текста, затем перейдите на вкладку гиперссылки.
  2. В разделе типа гиперссылки выберите адрес электронной почты.

  3. Установите флажок «This Field contains an email address» (Это поле содержит адрес электронной почты).
  4. Перейдите на вкладку общих параметров, вызовите редактор формул. Введите <Клиент.Адрес электронной почты>.
  5. Перейдите на вкладку шрифта, выберите синий цвет ссылки и её подчёркивание.

Ввод ссылки на веб-сайт клиента

  1. Щелкните правой кнопкой мыши на поле веб-сайта клиента, выберите форматирование поля.
  2. Перейдите на вкладку гиперссылки, выберите текущее значение поля.
  3. Перейдите на вкладку Common (Общие), вызовите редактор формул, введите <Клиент.Веб-сайт>.
  4. Перейдите на вкладку шрифта, выберите синий цвет ссылки и её подчёркивание.

Форматирование с презентационным качеством

  1. Добавьте в заголовке страницы эмблему компании.
  2. Добавьте название (Список представителей клиентов), выберите жирный шрифт с размером 16.
  3. В разделе updated (обновление) добавьте поле обновления данных. Затем включите в текстовое окно поле Data date (Дата данных). Установите шрифт размера 8, курсив.
  4. В нижней части страницы (в её нижнем колонтитуле) добавьте синее поле.

Примечание: навигация генерируется автоматически – групповые деревья (оглавление, указатель), средство поиска и так далее.

Опубликование в сети

Выберите команду File (Файл), Save As (Сохранить как), затем выберите папку Crystal Enterprise.

Войдите в систему и выберите папку, в которой нужно сохранить отчёт.

Браузеры

Шесть просмотрщиков отчётов Crystal автоматически определяют тип браузера и представляют отчёты презентационного качества пользователям браузеров Internet Explorer и Netscape.

Экспорт

Crystal Reports позволяет пользователям автоматически экспортировать данные в файлы более 30 форматов, включая PDF, RTF, Excel и Word.

Печать

Возможна печать из любого браузера.

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

Затраченное время: 1 минута

Расписание

Администратор с помощью консоли Management Console продукта Crystal Enterprise может запланировать выполнение отчёта по ночам, чтобы днём пользователи могли просматривать в отчёте самые свежие данные. Кроме того, возможностью планировать автоматическое выполнение отчётов можно наделить конечных пользователей – они будут делать это через свои браузеры.

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

Защиту можно настроить так, чтобы просматривать отчёт могла только определенная группа. Такой группе можно предоставить все права, в том числе право планировать выполнение отчёта.

Масштабируемость

  • По умолчанию разрешено одновременное выполнение не более 20 экземпляров данного отчёта в папке. Администратор может в любой момент войти в консоль управления и изменить этот параметр.
  • Загрузка страниц отчёта по запросу генерируется автоматически.

Приложение 2: Обзор действий по созданию отчётов с помощью ASP и Crystal

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

Резюме

Опытный программист на ASP с помощью текстового редактора за полный рабочий день (7,5 часов) написал отчёт, подобный тому, который был создан и опубликован с помощью Crystal Reports и Crystal Enterprise за 2,5 минуты.

Создание отчёта с помощью ASP

Затраченное время: 3 часа

Страница, разработанная для данного примера, содержит 143 строки кода ASP; она устанавливает связь с базой данных и отправляет в неё запросы с помощью ADO.

Подключение к базе данных для доступа к данным

  1. Укажите на базу данных Xtreme.
  2. Запустите запрос и вернитесь к нужным записям.
  3. В базу данных с помощью ADO был отправлен запрос, в результате которого нужные данные были переданы из базы данных в таблицу. Заметим, что при работе с таблицами иногда встречаются проблемы с форматированием данных.
  4. Данные были отформатированы с помощью функции FormatDateTime языка vbScript.

Сортировка клиентов в алфавитном порядке с буквой в качестве заголовка группы клиентов

  1. Удалите первую букву и сохраните ее во временной переменной.
  2. Сравните первую букву значения поля с упомянутой временной переменной. Если они совпадают, отобразите значение. Если не совпадают, то будет отображена первая буква и первая запись.

Ввод адреса электронной почты, соответствующего имени клиента

  1. Проверьте поля, предназначены ли они для адресов электронной почты. Поле для адреса электронной почты должно быть сцеплено с тегом «mailto:».
  2. Поле для адреса веб-сайта должно быть сцеплено с тегом «href».


Форматирование с презентационным качеством

  • Разработчик может пользоваться Microsoft FrontPage, Macromedia Dreamweaver или другим инструментом графического дизайна. В данном примере был использован обычный текстовый редактор.
  • В данном примере размеры таблиц устанавливались динамически, чтобы упростить перенос кода между различными наборами записей. Из-за этого размеры могли зависеть от размеров полей. Поэтому вид у такого отчёта был не слишком привлекательным.

Добавление защиты

Затраченное время: 4 часа

Действия по добавлению защиты

  • Чтобы установить нужный уровень защита веб-сайта, использовалась модель безопасности Base64.
  • С целью генерирования паролей, приложение VB преобразовывало знаки ASCII имени и пароля пользователя в двоичные разряды. Затем всё объединялось в одну длинную строку, и данные разбивались на 6-разрядные куски. Каждый из 6 разрядов преобразовывался в эквивалентный знак Base64.

Добавление масштабируемости

Затраченное время: 45 минут

  • В данном примере загрузка страниц по запросу действует только последовательно. Считается количество отправляемых на страницу полей, и когда оно достигает 70, счётчик обнуляется для подсчёта полей другой страницы.
  • Набор записей должен храниться в переменной сеанса, из-за этого нагрузка на веб-сервер значительно возрастает. Если набор записей содержит 10 000 записей, и доступ получат 100 пользователей, то система очень быстро исчерпает ресурсы сервера.

Дополнительные параметры

Затраченное время: для данного примера не выполнено

Браузеры

Данный пример построен для выполнения с использованием Internet Explorer версии 5.0 или более поздней. Отчёт выглядит хорошо при использовании Internet Explorer версии 5.0 или более поздней. При использовании браузера Netscape таблицы выглядят несколько иначе. Это можно исправить путём изменения кода, что может увеличить время на разработку приложения.

Экспорт

Средства пакета Office не могли быть использованы для экспорта в файл формата Excel или Doc с дальнейшим экспортов в PDF. В данном примере эти функции не использовались из-за возможных осложнений с лицензированием.

Печать

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

Приложение 3: Обзор подводной части айсберга

Преимущество ASP Crystal
Бизнес-логика Создание важных сводных данных, которых может не быть в базе данных. Требуется написание кода. Несколько щелчков мыши в режиме конструктора.
Навигация по отчёту Быстрый переход к нужным сведениям. Может быть быстро интегрирована с помощью Dreamweaver, FrontPage и других подобных продуктов. Оглавление/групповые деревья и функции поиска генерируются/доступны автоматически.
Обновление данных в отчёте Любой пользователь имеет доступ к свежей информации. Достигается выполнением другого запроса к базе данных. Включается автоматически на основе прав доступа.
Форматирование Построение отчёта с требуемым форматированием с целью создания удобочитаемых документов. Для создания требуемых отчётов требуется написание кода. Для создания отчёта с большим объёмом форматирования нужно много времени. Специалисты создают практически любые отчёты с любой разметкой.
Параметры Опытные пользователи могут интерактивно создавать нужный им контент с помощью параметров отчёта. Требуется написание кода. Минут 20 — 30 работы, затем код можно использовать в других отчётах. Несколько щелчков мыши в режиме конструктора.
Планирование Обработка больших отчётов в периоды наименьшей нагрузки на сервер с целью своевременного обновления данных отчёта. Для планирования нужно создать отдельное приложение. Достаточно всего несколько щелчков мыши на консоли управления, которые также дают пользователю право на планирование.
Экспорт Отправка динамического контента в файл другого формата. Требуется написание кода. Экспорт в файлы более 30 форматов, включая PDF, DOC, XLS, RTF, XML.
Безопасность Возможность указывать, кто имеет право на просмотр информации, а также разрешать или запрещать действия с информацией. Написание кода вручную для каждой группы, каждого члена группы, каждой роли. Включено в Crystal Enterprise. Проверка подлинности с помощью LDAP/NT, поддержка единого входа.
Распределение нагрузки Максимальная эффективность обработки отчётов. Требуется программное обеспечение других производителей. Включено в Crystal Enterprise Professional.
Кэширование/страницы по запросу Уменьшение времени отклика, уменьшение количества обращений к базе данных. Для кэширования используется локальный кэш. Для уменьшения количества обращений к базе данных требуется прокси-сервер. Доступно автоматически.
Кластеризация, переключение ресурсов при сбое Информация отчёта всегда доступна. Требуется продукт других производителей. Включено в Crystal Enterprise Professional.
Поддержка нескольких процессоров Повышается скорость обработки отчётов. В случае использования ASP требуется IIS, выполняется только на одном сервере. Включено в Crystal Enterprise Professional.
Управление изменениями Изменения вносятся в отчёты и инфраструктуру легко. После любого изменения кода или приложения необходимо выполнить тестирование заново. Приложения отделены от отчётов, изменения легко интегрируются.
Техническая поддержка Долгосрочная поддержка при росте потребностей в работе с информацией. Легко ли найти незанятого ASP-разработчика? Есть пакеты с обновлениями.
Интеграция будущих технологий Конкурентное преимущество После любого изменения кода или приложения необходимо выполнить тестирование заново. Переход к новой версии программного обеспечения. Выполняемый компанией Crystal процесс контроля качества помогает легко перейти на новую версию.

Приложение 4: Сравнение затрат времени при использовании Crystal и ASP

Время на написание кода ASP Время при использовании Crystal Технология Crystal
Создание отчёта о клиентах- Подключение к базе данных- Выбор и размещение поля- Сортировка/группирование- Вставка адреса электронной почты- Ссылка на веб-сайт- Форматирование отчёта 210 минут(3,5 часа) 1,5 минуты Crystal Reports (указать и щёлкнуть мышью в конструкторе)
Загрузка страниц по запросу 45 минут 0 минут Crystal Enterprise (автоматически)
Добавление защиты 240 минут(4 часа) 1 минута Crystal Enterprise (указать и щёлкнуть на консоли Crystal Management Console)
Добавление функций расписания Не включено 0 минут Crystal Enterprise

За дополнительной информацией обращайтесь в компанию Interface Ltd.

Asp быстродействие доступа к данным

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

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

Ниже приведены ссылки на ресурсы на веб-узле корпорации Майкрософт, содержащие общие рекомендации по повышению производительности веб-узлов ASP.NET Web.

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

Обработка серверных и страничных элементов управления

Следующие рекомендации касаются эффективных методов работы с элементами управления и страницами ASP.NET.

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

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

При разработке пользовательских серверных элементов управления следует рассмотреть возможность реализации некоторой их функциональности с помощью клиентского кода. Это может значительно снизить количество обращений к веб-серверу. Дополнительные сведения см. в разделах Разработка пользовательских серверных элементов управления ASP.NET и Создание пользовательского клиента сценария с помощью библиотеки Microsoft AJAX .

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

Не отключайте буферизацию без необходимости Отключение буферизации веб-страниц ASP.NET значительно снижает производительность. Дополнительные сведения см. в описании свойства Buffer .

Используйте метод Transfer объекта Server или межстраничную запись данных для перенаправления между страницами ASP.NET в пределах одного приложения . Дополнительные сведения см. в разделе Перенаправление пользователей на другую страницу .

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

Следующие рекомендации касаются способов эффективного управления состоянием.

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

По умолчанию состояние просмотра включено для всех серверных элементов управления. Чтобы отключить его для определенного элемента управления, установите для свойства EnableViewState элемента управления значение false , как показано в следующем примере.

Отключить состояние просмотра также можно для страницы, используя для этого директиву @ Page, как показано в следующем примере.

Это рекомендуется делать в случаях, если страница не передает данные на сервер.

Атрибут EnableViewState также поддерживается директивой @ Control, что позволяет указать, включено ли состояние просмотра для пользовательского элемента управления.

Чтобы анализировать размер состояния просмотра для страницы, на странице необходимо включить трассировку, добавив атрибут trace=»true» в директиву @ Page . В выходных данных трассировки в таблице Иерархия элементов управления см. столбец Состояние просмотра . Дополнительные сведения см. в разделе Общие сведения о трассировке ASP.NET .

Не шифруйте состояние просмотра без необходимости Шифрование состояния просмотра не дает пользователям считывать значения в скрытых полях состояния просмотра формы. Например, имеет смысл шифровать состояние просмотра, если на странице присутствует элемент управления GridView с полем идентификатора в свойстве DataKeyNames для координации обновления записей. Чтобы идентификатор не был виден пользователям, состояние просмотра можно зашифровать. Однако шифрование приводит к постоянным затратам производительности при инициализации и вносит дополнительные затраты, которые зависят от размеров шифруемого состояния просмотра. Шифрование производится при каждой загрузке страницы. Следовательно, отрицательное влияние на производительность будет иметь место при первом запросе страницы и при каждой обратной передаче.

Отключайте состояние сеанса, когда оно не требуется Чтобы отключить состояние сеанса на странице, установите для атрибута EnableSessionState в директиве @ Page состояние false , как показано в следующем примере.

Примечание.

Если странице требуется доступ к переменным сеанса, но не требуется их создание или изменение, для атрибута EnableSessionState в директиве @ Page устанавливается значение ReadOnly .

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

Чтобы отключить состояние сеанса для приложения, задайте для атрибута Mode значение Off в разделе SessionState файла Web.config приложения, как показано в следующем примере:

Выбирайте поставщик состояния сеанса, отвечающий требованиям приложения Платформа ASP.NET предоставляет несколько способов хранения данных сеанса для приложения: внутрипроцессное состояние сеанса, внепроцессное состояние сеанса в качестве службы Windows и внепроцессное состояние сеанса в базе данных SQL Server. (Для хранения данных сеанса в выбранном хранилище данных также может создаваться пользовательский поставщик состояния сеанса.) Каждый способ обладает своими преимуществами, однако внутрипроцессное состояние сеанса является наиболее быстрым решением. Если состояние сеанса используется для хранения небольших объемов данных, рекомендуется использовать внутрипроцессный поставщик. Внепроцессные варианты хранения состояния сеанса рекомендуется использовать при масштабировании приложения на несколько процессоров или компьютеров или же в ситуациях, когда необходимо сохранять данные при перезапуске сервера или процесса. Дополнительные сведения см. в разделе Общие сведения о состоянии сеанса ASP.NET .

Доступ к данным

Следующие рекомендации описывают способы эффективного доступа к данным приложения.

Используйте SQL Server и хранимые процедуры для доступа к данным При создании высокопроизводительных масштабируемых веб-приложений оптимальным вариантом для хранения данных является SQL Server. При работе с управляемым поставщиком SQL Server производительность можно дополнительно повысить путем использования скомпилированных хранимых процедур вместо команд SQL в случаях, когда это возможно. Дополнительные сведения см. в разделе Настройка параметров и типов данных параметров (ADO.NET) .

Используйте класс SqlDataReader в качестве курсора быстрого последовательного доступа к данным Класс SqlDataReader создает последовательный доступный только для чтения поток данных, получаемый из базы данных SQL Server. Для прямого чтения данных из точки подключения к базе данных класс SqlDataReader использует собственный сетевой формат передачи данных SQL Server. По возможности следует использовать именно класс SqlDataReader , так как он обеспечивает большую производительность, чем класс DataSet . Например, при привязке элемента управления данными к элементу управления SqlDataSource добиться большей производительности можно, установив для свойства DataSourceMode значения DataReader . (Класс считывания данных, однако, поддерживает меньше функциональных возможностей, чем режим DataSet .) Класс SqlDataReader реализует интерфейс IEnumerable , что позволяет привязывать к нему серверные элементы управления. Дополнительные сведения см. в описании класса SqlDataReader и в разделе Доступ к данным с помощью ASP.NET .


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

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

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

Разумно используйте зависимость кэша от таблиц SQL Для организации кэширования данных с сервера SQL Server платформа ASP.NET поддерживает как табличный опрос, так и уведомления о запросах (в зависимости от используемой версии SQL Server). Табличный опрос поддерживается всеми версиями SQL Server. При табличном опросе, если в таблице изменяются какие-либо данные, все зависимые от этой таблицы элементы кэша становятся недействительными. Это может привести к ненужному обновлению кэша. Табличный опрос не рекомендуется использовать для таблиц, в которых часто происходят изменения. Например, табличный опрос имеет смысл использовать для таблицы каталогов, в которой изменения происходят нечасто. При этом не следует использовать табличный опрос для часто обновляемой таблицы заказов.

Уведомления о запросах поддерживаются в SQL Server 2005 и более поздних версиях. Механизм уведомления о запросах заключается в использовании SQL-запросов для обнаружения изменений в целевом наборе строк. Это снижает количество уведомлений, отправляемых при изменении таблицы. Уведомления о запросах способны обеспечить лучшую производительность, чем табличный опрос. Тем не менее, масштабировать этот механизм на тысячи запросов нельзя.

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

Если элемент управления источником данных реализует класс DataSourceView , а свойство CanPage возвращает значение true , вместо разбиения по страницам в пользовательском интерфейсе элемент управления данными будет использовать разбиение по страницам в источнике данных. В этом случае элемент управления данными будет запрашивать только строки, необходимые для отображения каждой страницы. Таким образом, разбиение по страницам в источнике данных оказывается более эффективным, чем разбиение по страницам в пользовательском интерфейсе. Из стандартных элементов управления ASP.NET разбиение по страницам в источнике данных поддерживают только элементы управления источником данных ObjectDataSource и LinqDataSource . Для включения функции разбиения по страницам в источнике данных в других элементах управления источником данных необходимо наследование от соответствующего элемента управления источника данных с последующей модификацией его поведения.

Используйте столбец временных меток для управления параллелизмом с помощью элемента управления LinqDataSource Если база данных SQL Server не содержит столбец Timestamp (тип данных SQL Server), элемент управления LinqDataSource проверяет параллелизм данных, сохраняя исходные значения данных в веб-страницe. LINQ to SQL сверяет исходные значения со значениями в базе данных, прежде чем обновлять или удалять данные. Такой подход может привести к значительному увеличению размера веб-страницы, если запись данных содержит много столбцов или большие значения столбцов. Он также представляет угрозу безопасности, если запись содержит данные, которые нежелательно делать доступными на странице. Когда же в таблице базы данных есть столбец Timestamp , элемент управления LinqDataSource сохраняет для последующего сравнения только значение метки времени. LINQ to SQL может проверять согласованность данных, проверяя исходное значение метки времени на соответствие текущему значению метки времени в базе данных. Дополнительные сведения о временных метках см. в описании типа данных rowversion (Transact-SQL) на веб-узле MSDN.

Найдите оптимальное соотношение между преимуществами безопасности и снижением производительности при проверке событий С помощью элементов управления, являющихся производными от классов System.Web.UI.WebControls и System.Web.UI.HtmlControls , можно проверять, относится ли произошедшее событие к пользовательскому интерфейсу, отрисованному элементом управления. Это позволяет предотвратить ответ элемента управления на поддельное оповещение о событии. Например, с помощью проверки событий элемент управления DetailsView сможет предотвратить совершение злонамеренным пользователем вызова метода Delete (который в этом элементе управления изначально не поддерживается) и удаление данных путем подтасовки. Проверка событий подразумевает определенное снижение производительности. Управлять проверкой событий можно с помощью конфигурационного элемента EnableEventValidation и метода RegisterForEventValidation . Затраты на проверку зависят от количества элементов управления на странице и выражаются невысоким процентным показателем.

Примечание.

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

Используйте кэширование, сортировку и фильтрацию с помощью элемента управления SqlDataSource Если для свойства DataSourceMode элемента управления SqlDataSource установлено значение DataSet , элемент управления SqlDataSource может кэшировать результирующий набор запроса. После этого в операциях фильтрации и сортировки элемента управления SqlDataSource можно будет использовать кэшированные данные. Приложение сможет работать быстрее, если кэшировать весь набор данных и использовать для фильтрации и сортировки свойства FilterExpression и SortParameterName . В этом случае элемент управления источником данных сможет обойтись без совершения SQL-запросов с предложениями Where и Sort By для доступа к базе данных каждый раз, когда пользователи сортируют или фильтруют данные в пользовательском интерфейсе.

Веб-приложения

Следующие рекомендации касаются способов обеспечения эффективной работы веб-приложений в целом.

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

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

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

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

Задайте для приложения соответствующие параметры кодировки запросов и ответов По умолчанию в ASP.NET используется кодировка UTF-8. Если приложение использует только символы ASCII, небольшое повышение производительности можно обеспечить путем его настройки на кодировку ASCII.

Отключайте для приложения режим AutoEventWireup При установке для атрибута AutoEventWireup в файле Machine.config значения false события страницы не будут привязываться к методам на основе соответствия имени (например, Page_Load ). Это обеспечивает некоторое повышение производительности. Для обработки событий страницы используется одна из двух стратегий. Первая стратегия заключается в переопределении методов. Например, можно переопределить метод OnLoad объекта Page для написания кода для события загрузки страницы. (Для обеспечения возникновения всех событий необходимо вызывать базовый метод.) Второй стратегией является привязка к событиям страницы с помощью ключевого слова Handles в Visual Basic или путем подключения делегата в C#.

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

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

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

Веб-приложения ASP.NET, выполняемые под управлением Windows Server 2003 и IIS 6.0, не требуют настройки модели процессов, поскольку платформа ASP.NET будет использовать параметры модели процессов IIS 6.0.

Задавайте количество потоков для каждого рабочего процесса приложения Архитектура запросов ASP.NET пытается сбалансировать количество потоков, обслуживающих запросы, и объем доступных ресурсов. Архитектура позволяет одновременно выполнять только то количество запросов, которое соответствует имеющимся ресурсам ЦП. Эта методика называется ограничением потоков. Однако в некоторых случаях алгоритм ограничения потоков работает не слишком хорошо. Отслеживать ограничение потоков можно с помощью монитора производительности Windows, используя счетчик производительности «Число экземпляров конвейеров», связанный с объектом производительности «Приложения ASP.NET».

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

Для уменьшения подобного неблагоприятного влияния можно вручную установить предельное количество потоков в процессе. Чтобы это сделать, измените атрибуты MaxWorkerThreads и MaxIOThreads в разделе processModel файла Machine.config.

Примечание о безопасности.

Рабочие потоки предназначены для обработки запросов ASP.NET. Потоки ввода-вывода служат для работы с данными из файлов, баз данных или веб-служб ASP.NET.

Значения, присвоенные атрибутам модели процессов, задают максимальное количество выполняемых потоков каждого типа для одного процессора. Максимальное количество потоков для двухпроцессорного компьютера будет превышать заданное значение в два раза. Максимальное количество потоков для четырехпроцессорного компьютера будет превышать заданное значение в четыре раза. Параметры по умолчанию подходят для одно- и двухпроцессорных компьютеров. Тем не менее, выполнение 100 или 200 потоков в процессе может снизить, а не повысить производительность на многопроцессорных системах. Если количество потоков в процессе слишком велико, процесс может замедлиться. Серверу необходимо выполнять дополнительные операции переключения контекста, в результате чего операционной системе приходится тратить циклы ЦП на обслуживание самих потоков, а не на обработку запросов. Определить оптимальное количество потоков можно с помощью тестирования производительности приложения.

Для приложений, активно использующих внешние ресурсы, на многопроцессорных компьютерах включайте режим веб-сада Модель процессов ASP.NET позволяет реализовать масштабируемость на многопроцессорных компьютерах, распределяя работу между несколькими процессами (по одному для каждого ЦП), каждый из которых привязывается к определенному процессору. Этот прием иногда называют веб-садом . Режим веб-сада благоприятно сказывается на веб-приложениях, интенсивно использующих внешние ресурсы. Сюда можно отнести, например, приложения, использующие сервер баз данных или вызывающие COM-объекты с внешними зависимостями. Тем не менее, перед включением режима веб-сада на рабочем веб-узле следует протестировать приложение в этом режиме на предмет производительности.

Методы создания кода

Следующие рекомендации касаются способов создания эффективного кода.

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

Доступ к базам данных с помощью языка ASP .

Active Server Pages — это обычные страницы, которые содержат скрипты, выполняющиеся на сервере наряду с обычным HTML-кодом. ASP изначально создавалось прежде всего для Microsoft IIS на платформе Windows + СУБД SQL Server . В настоящее время выполнение ASP -скриптов поддерживается и на других платформах (например, Web -сервером Apache 2 под Linux ). ASP позволяет перемешивать HTML-код с программным кодом, что, в свою очередь, позволяет легко и удобно встраивать серверные программы в страницы, причем первые будут выполняться только на стороне сервера. Еще одним мощным средством является поддержка ActiveX.

ASP использует технологию Active Data Objects ( ADO ) для поддержки языка запросов к базам данных SQL . Ранее рассмотренная нами технология называлась DAO ( Data Access Objects — объекты доступа к данным) и являлась стандартной для VB , Access и других сред, работающих с ядром доступа к данным Microsoft Jet . DAO плохо подходит для Web и лучше всего работает в традиционных приложениях типа клиент/сервер на базе Jet .

ASP поддерживает работу со всеми базами данных, соответствующими стандарту ODBC . С ASP работать очень просто. Для этого надо всего лишь вставить текст сценария ASP в пару тэгов . В остальном ASP -файл ничем не отличается от HTML -файла (за исключением, пожалуй, расширения). В сценариях ASP c равным успехом используются языки VBScript и JavaScript (реже PerlScript ). Файл , содержащий ASP- код :

Технологии доступа к данным от Microsoft

Ни одна другая компания не предложила программистам и пользователям такого количества технологий для доступа к данным, как это сделала корпорация «Майкрософт». DAO, ADO, OLEDB, ODBC. Все перечислять долго (хотя ниже они все будут перечислены и даже снабжены краткими описаниями). Такое обилие не может не запутать. И поэтому, хотя большинству из этих технологий, по компьютерным меркам, уже много лет, до сих пор те, кто сталкивается с ними впервые, страдают от необходимости выбора. Надеюсь, эта статья послужит началом процесса понимания сути эти технологий и сможет служить для начального знакомства с большинством из них.

Все эти технологии используются для унификации доступа к различным СУБД из прикладных приложений. Такая задача стояла довольно остро в те годы, когда все эти технологии разрабатывались, и, в принципе, актуальности не потеряла до сих пор. Именно поэтому стоит об этих технологиях немного поговорить.

Одна из первых технологий, которую Microsoft предложила для унификации доступа к источникам данных, имеет название Open Database Connectivity (по-русски это что-то вроде «открытого интерфейса взаимодействия с базами данных»). Что интересно, эта технология стала одной из самых популярных среди всех придуманных Редмондским гигантом, — наверное, из-за того, что, по своей сути, она гораздо проще большинства придуманных позже аналогичных технологий.

Что такое ODBC? Это программные интерфейсы (API) на языке C для подключения приложений к различным СУБД. При подключении при помощи ODBC приложение становится независимым от используемого источника данных (и от используемой СУБД). Независимость реализуется с помощью промежуточных библиотек, которые включают в себя код, специфичный для данной СУБД, и которые предоставляют унифицированный интерфейс для ODBC-приложений. Такие библиотеки называются ODBC-драйверами, и их обычно предоставляют сами разработчики СУБД. Или какие-нибудь сторонние производители — в принципе, для прикладного программиста не так уж существенно, кто предоставляет ему драйверы.

Единственное неудобство ODBC — это отсутствие объектно-ориентированного подхода. Правда, в библиотеке MFC, которую Microsoft рекомендует для разработки прикладных приложений с помощью Visual C++, есть классы для работы с данными через ODBC. Однако полностью объектную модель реализовала только следующая в нашем списке технология от Microsoft.

ODBC была удобной и популярной технологией, но для дальнейшего развития её идей Microsoft предложила пользователям OLE DB. Эта технология — в некотором роде гибрид ODBC и COM, то есть для доступа к данным в ней используются не API на языке C, а COM-интерфейсы. То есть эта технология предоставляет объектно-ориентированный интерфейс для любых языков программирования, совместимых с COM, а не только для Visual C++.

В принципе, суть технологии точно такая же. Должны существовать драйверы, через которые осуществляется непосредственное соединение с СУБД, и только через них уже ведёт работу с данными прикладная программа.

OLE DB может работать и через ODBC-соединения при помощи специального драйвера, который подключается к ODBC-драйверам. Эта связка, конечно, создаёт дополнительное звено в цепочке подключений, но в случае отсутствия нужных OLE DB-драйверов и наличия оных для ODBC вполне можно этим механизмом соединения воспользоваться.

При том, что OLE DB инкапсулирует и развивает идеи ODBC, дальше идей это не идёт. То есть, эти две библиотеки являются независимыми друг от друга, и именно поэтому для того, чтобы «стыковать» их, нужны специальные драйверы. Однако есть технология, которая базируется на ODBC, но предоставляет объектно-ориентированный интерфейс доступа к данным. Называется эта технология RDO (Remote Data Objects — удалённые объекты данных).

Правда, стоит сказать, что технология эта уже не самая молодая. Первая версия её была представлена ещё в 1995 году, и приурочено это событие было к выходу Visual Basic 4.0. Более поздняя версия этой технологии (но уже под названием ODBC Direct) была внедрена в Microsoft Office 97. Первоначально RDO продвигалась в качестве альтернативы другой технологии, DAO (о ней чуть ниже), но в итоге эти технологии как бы умерли вместе. В принципе, сейчас RDO существует только для обратной совместимости с не слишком значительным количеством приложений, так что особо углубляться в неё нет смысла.

DAO — это Data Access Objects (объекты доступа к данным). Ничего общего с китайской философией и Дао она не имеет. Первоначально эта технология была создана как COM-интерфейс для работы с СУБД Jet, которая позволяла работать с базами данных Microsoft Access и любыми, для которых имелись драйверы ODBC. Правда, после этого команда разработчиков DAO расширила возможности своего детища, создав ещё одну универсальную технологию для работы с данными. Правда, технология не пользовалась особой популярностью, за исключением тех случаев, когда требовалась именно работа с Jet. Сейчас она тоже особой популярностью не пользуется, поскольку уже значительно устарела (дальнейшая разработка прекращена в 2001 году).

Если переставить буквы в аббревиатуре DAO, получим слово ADO. Это ещё одна технология доступа к данным от Microsoft. Расшифровывается она как ActiveX Data Object (ActiveX-объекты для доступа к данным). Следует отметить, что это одна из самых популярных (после ODBC) технологий, разработанных в этой области корпорацией Microsoft.

На самом деле ADO — это просто ещё одна надстройка над уже существующими технологиями всё той же корпорации. В ней используются ActiveX-компоненты, являющиеся надстройками над API OLE DB, которое само по себе, в общем-то, не так уж и удобно в применении. ADO, конечно, вносит дополнительный уровень, который сказывается на производительности приложений, однако это так хорошо отражается на времени разработки, что технология намного популярнее, чем, собственно, OLE DB. Ещё один её плюс — возможность использования объектов для доступа к данным из скриптовых языков, таких, как VBScript или Jscript. Здесь немалую роль играет возможность её использования при программировании на ASP для разработки web-приложений.

Новое поколение объектов для работы с данными, где вместо ActiveX-компонентов используются компоненты .NET. Сложно сказать, насколько ADO.NET является продолжением ADO. Наверное, её лучше рассматривать как совершенно самостоятельную технологию, поскольку это одна из центральных частей .NET Framework. Из-за особенностей .NET Framework эта технология довольно существенно отличается от «обычной» ADO.

Microsoft Data Access Components (компоненты доступа к данным корпорации Microsoft) — это общее название ODBC, OLE DB и ADO. Или, если быть точным, это совокупность библиотек, обеспечивающих работу перечисленных технологий. Как правило, эти библиотеки присутствуют в операционной системе, однако, если по каким-то причинам комплект MDAC не установлен, его можно скачать для установки по адресу msdn2.microsoft.com/en-us/data/aa937730.aspx.

Раз уж упоминалась СУБД Jet, то стоит сказать и о Microsoft Data Engine (движок для работы с данными от Microsoft). Это не универсальная технология доступа к данным наподобие ADO или OLE DB, просто однопользовательская настольная СУБД, совместимая с форматом баз данных Microsoft SQL Server’а. Фактически, это «обрезанный» для нужд настольных приложений SQL Server. MSDE позиционируется Microsoft как современная альтернатива СУБД Jet, более мощная и надёжная.

Итак, вот они, технологии. Их много, а ведь есть и другие, не только те, которые придуманы Microsoft. Например, для работы с данными в приложениях, написанных на Java, используется JDBC — Java Database Connectivity. Есть технология dbExpress фирмы Borland, которая тоже предоставляет универсальный и удобный доступ к различным СУБД при помощи специальных драйверов. Да и даже если выбирать из технологий, которые предлагает исключительно и только Microsoft, то на какой из них остановить свой выбор? Давайте попробуем разобраться вместе.

ODBC — самая универсальная и надёжная из всех технологий, к тому же в некотором роде кросс-платформенная, поскольку существует UnixODBC. Кроме того, за счёт того, что ODBC — технология с солидным стажем присутствия на рынке, то и драйверов для различных СУБД под неё написано очень много. Правда, отсутствие объектного API несколько отрицательно сказывается на скорости разработки приложений, но, тем не менее, существуют библиотеки, являющиеся оболочками для её функций и позволяющие работать с данными как с объектами (если позволяет язык программирования, конечно). OLE DB тоже появилась не вчера, и драйверов для неё тоже достаточно много. Но напрямую её используют редко, поскольку намного удобнее работать с OLE DB через объекты ADO. При этом, что самое интересное, нередко в прикладных приложениях наблюдается связка ADO-OLE DB-ODDC-СУБД. Если скорость и стабильность работы для приложения не очень критичны, то такая связка вполне приемлемое решение.

Вполне ясно, что использовать устаревшие технологии (RDO или DAO) не имеет смысла. Лучше пользоваться тем, что Microsoft продвигает в настоящий момент активнее всего — то есть, ADO.NET. Правда, использование этой технологии ограничивает вас платформой Microsoft .NET, но ведь ни одна технология Microsoft (кроме ODBC) не даёт достаточно свободы, ограничивая приложения, разрабатываемые с их помощью, работой под ОС Windows. Поэтому наиболее оптимальным решением я бы назвал ADO и ADO.NET. А если важна скорость работы, можно воспользоваться ODBC, правда, в таком случае будет ещё лучше подсоединяться к серверу БД напрямую.

Кстати, говоря об обилии технологий доступа к данным от Microsoft, стоит упомянуть интересную точку зрения на это самое обилие. Джоэл Спольски, о книге которого я рассказывал на страницах «КВ», считает, что это замечательная стратегия корпорации Microsoft: пока все мечутся и переходят с одной технологии доступа к данным на другую, корпорация спокойно идёт вперед, поскольку таким образом ресурсы, которые разработчики могли бы потратить на совершенствование приложений, уходят на переливание из пустого в порожнее. Поэтому, пользуясь этими технологиями, важно помнить об опасности угодить в такую ловушку. Выбирать технологию нужно с учётом возможных перспектив дальнейшей разработки продукта, которые могут быть весьма широкими. Потому что строить дом, как известно, дешевле, чем его перестраивать.

Как мне улучшить ASP.NET производительность приложения MVC?

Как вы улучшаете свой ASP.NET производительность приложения MVC?

16 ответов


ниже приведен список возможных источников улучшения:

общие

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

кэширование

  • использовать CompiledQuery.Compile() рекурсивно избегая перекомпиляция запроса выражения
  • кэш не подвержен изменениям содержание с помощью OutputCacheAttribute чтобы сохранить ненужное и действие казни
  • используйте cookies для часто доступной не конфиденциальной информации
  • использовать теги ETag и срок действия-напишите свой заказ ActionResult методы при необходимости
  • рассмотреть с помощью RouteName для организации маршрутов, а затем использовать его для создания ваши ссылки и старайтесь не использовать метод ActionLink на основе дерева выражений.
  • рассмотрите возможность реализации стратегии кэширования разрешения маршрута
  • поставить повторяющийся код внутри PartialViews , не сделать его xxxx раз: если вы в конечном итоге вызов одного и того же частичного 300 раз в том же представлении, вероятно, есть что-то это неправильно. Объяснение И Контрольные показатели

маршрут

разрешение маршрута кэша с помощью этого помощника UrlHelperCached ASP.NET выступление MVC Руди Бенковича

безопасность

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

даль

  • при доступе к данным через LINQ положитесь на IQueryable
  • использовать шаблон репозитория
  • профилируйте свои запросы, т. е. Uber Profiler
  • рассмотрим кэш второго уровня для ваших запросов и добавьте им область и тайм-аут, т. е. NHibernate Второй Кэш

балансировки нагрузки

используйте обратные прокси, чтобы распределить нагрузку клиента по вашему экземпляру приложения. (Stack Overflow использует HAProxy (в MSDN).

использовать Асинхронные Контроллеры для реализации действий, зависящих от обработки внешних ресурсов.

клиент сторона

  • оптимизируйте свою клиентскую сторону, используйте такой инструмент, как YSlow для предложения по повышению производительности
  • используйте AJAX для обновления компонентов вашего пользовательского интерфейса, избегайте обновления всей страницы, когда это возможно.
  • рассмотрите возможность реализации архитектуры pub-sub-т. е. Comet-для доставки контента против Перезагрузка на основе таймаутов.
  • по возможности переместите логику построения графиков и графиков на сторону клиента. Генерация графов это дорогостоящая деятельность. Перенос на клиентскую сторону вашего сервера ненужная нагрузка, и позволяет работать с графиками локально без создания нового запрос (т. е. гибкий график, jqbargraph, MoreJqueryCharts).
  • используйте CDN для скриптов и медиаконтента для улучшения загрузки на стороне клиента (т. е. Google CDN)
  • Minify -Compile- ваш JavaScript для того, чтобы улучшить свой скрипт размер
  • держите размер куки небольшим, так как куки отправляются на сервер по каждому запросу.
  • рассмотрите возможность использования DNS и предварительная выборка ссылок когда это возможно.

глобальная конфигурация

если вы используете Razor, добавьте следующий код в свой глобальный.асакс.cs, по умолчанию, Asp.Net MVC визуализирует с движком aspx и движком razor. Это использует только RazorViewEngine.

ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(new RazorViewEngine());

добавить gzip (сжатие HTTP) и статический кэш (изображения, css, . ) в интернете.конфиг

  • удалить неиспользуемые модули HTTP
  • очистите HTML, как только он будет сгенерирован (в вашем интернете.config) и отключить viewstate, если вы его не используете

    Альпинист Код и запись в блоге предоставьте подробные способы повышения производительности приложения.

    скомпилированный запрос повысит производительность вашего приложения, но не имеет ничего общего с ASP.NET MVC. Это ускорит каждое приложение db, поэтому на самом деле речь идет не о MVC.

    основное предложение следовать принципы отдыха и следующие моменты связывают некоторые из этих принципов с ASP.NET MVC framework:

    1. сделать ваши контроллеры — это больше ‘Web предложение производительности / масштабируемости (в отличие от производительности микро / машинного уровня) и важное дизайнерское решение, которое повлияет на ваше будущее приложений — особенно в случае, если оно станет популярным или если вам нужна ошибка например, терпимость.
      • не использовать сессии
      • не используйте tempdata-который использует сеансы
      • Не пытайтесь «кэшировать» все «преждевременно».
    2. использовать Проверка Подлинности С Помощью Форм
      • храните ваши часто доступные конфиденциальные данные в билете аутентификации
    3. используйте cookies для часто доступной не конфиденциальной информации
    4. сделать ваши cachable ресурсов в интернете
      • Использовать ETags
      • использовать срок годности
      • при необходимости напишите свои пользовательские классы ActionResult
      • использовать обратный прокси
    5. скомпилируйте свой JavaScript. существует библиотека компилятора закрытия чтобы сделать это (конечно есть и другие, просто найдите «JavaScript compiler» тоже)
    6. Использовать CDNs (Сеть доставки контента) — особенно для больших медиа-файлов и так далее.
    7. рассмотрите различные типы хранения ваших данных,например, файлы, хранилища ключей / значений и т. д. — не только SQL Server
    8. и последнее, но не менее важное: проверьте свой веб-сайт на производительность

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

    при доступе к данным через LINQ полагайтесь на IQueryable .

    . и leverge хороший шаблон репозитория:

    это оптимизирует доступ к данным, чтобы обеспечить загрузку только необходимых данных и только тогда, когда это необходимо.

    не потрясающая оптимизация, но я думал, что выброшу это там -используйте CDN для jQuery и т. д..

    цитата из самого Скоттгу: Microsoft Ajax CDN позволяет значительно улучшить производительность ASP.NET веб-формы и ASP.NET приложения MVC, которые используют ASP.NET AJAX или jQuery. Услуга предоставляется бесплатно, не требует регистрации и может быть использован как для коммерческого, так и некоммерческого цели.

    мы даже используем CDN для наших веб-частей в Moss, которые используют jQuery.

    также, если вы используете NHibernate вы можете включить и настроить кэш второго уровня для запросов и добавить в область запросов и тайм-аут. И есть kick ass profiler для EF, L2S и NHibernate -http://hibernatingrhinos.com/products/UberProf. Это поможет настроить ваши запросы.

    Использовать Спрайты: спрайты-отличная вещь, чтобы уменьшить запрос. Вы объединяете все свои изображения в один и используете CSS, чтобы получить хорошее часть спрайта. Microsoft предоставляет хорошую библиотеку для этого: Спрайт и оптимизация изображений предварительный просмотр 4.

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

    использовать ADO.NET вместо Entity Framework: EF4 or EF5 отлично подходят для сокращения времени разработки, но будет больно оптимизировать. Проще оптимизировать a хранимая процедура чем сущность Рамки. Поэтому вы должны использовать процедуры магазина как можно больше. Dapper предоставляет простой способ запроса и сопоставления SQL с очень хорошим спектакль.

    страница кэша или частичная страница: MVC предоставляет простой фильтр для кэширования страницы в соответствии с некоторыми параметрами, поэтому используйте его.

    уменьшить вызовы базы данных: можно создать уникальный запрос базы данных, возвращающий несколько объектов. Проверьте на веб-сайте Dapper.

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

    вы можете взглянуть на этот шаблон «шаблон MVC Neos-SDI» который создаст чистую архитектуру для вас с большим количеством повышение производительности по умолчанию (check MvcTemplate вебсайт.)

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

    Это относится ко всем сайтам, а не только ASP.NET MVC.

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

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

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

    3: Предварительно создайте представления MVC при публикации. Это поможет с некоторыми из «первой страницы хит»

    4: Некоторые утверждают, что хранимая процедура/ADO преимущества скорости. Другие выступают за скорость развития эф и более четкое разделение ярусов и их назначение. Я видел очень медленные проекты, когда SQL и обходные пути для использования Sprocs/Views для извлечения и хранения данных. Кроме того, ваша трудность для тестирования повышается. Наша текущая кодовая база, которую мы преобразуем из ADO в EF, не выполнение любого хуже (и в некоторых случаях лучше), чем старая ручная модель.

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

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

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

    7.1: избегайте кода доступа к данным в ваших представлениях Razor без чертовски веской причины. Я бы не говорил этого, если бы не видел. Они уже получали доступ к своим данным, когда собирали модель, почему, черт возьми, они не включали ее в модель?

    просто хотел добавить мои 2 цента. Наиболее эффективным способом оптимизации генерации URL-маршрута в приложении MVC является. не создавать их вообще.

    большинство из нас более или менее знают, как URL-адреса генерируются в наших приложениях в любом случае, так что просто используя static Url.Content(«

    /Blahblah») вместо Url.Action() или Url.RouteUrl() где это возможно, бьет все другие методы почти в 20 раз и даже больше.


    PS. Я провел тест из нескольких тысяч итераций и опубликовал результаты на мой блог если интересно.

    в вашем шуме, чтобы оптимизировать клиентскую сторону, не забывайте о слое базы данных. У нас было приложение, которое шло от 5 секунд, чтобы загрузить до 50 секунд за ночь.

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

    1. Реализовать Gzip.
    2. используйте асинхронную отрисовку для частичных представлений.
    3. минимизировать попадания в базы данных.
    4. используйте скомпилированный запрос.
    5. запустите профилировщик и найдите ненужные хиты. Оптимизируйте все хранимые процедуры, которые занимают более 1 секунды для возврата ответа.
    6. использовать кэширование.
    7. использовать комплектация minification оптимизация.
    8. используйте утилиты HTML 5, такие как кэш сеанса и локальный хранение только для чтения содержимого.

    такие вещи делать

    1. кэш режима ядра
    2. режим трубопровода
    3. удалить неиспользуемые модули
    4. runAllManagedModulesForAllRequests
    5. не пишите в wwwroot
    6. удалить неиспользуемые двигатели просмотра и язык

    используя связывать и Minification также помогает вам улучшить представление. Это в основном сокращает время загрузки страницы.

    Эволюция технологий доступа к данным

    На заре эпохи баз данных разработчикам достаточно было знать только те базы данных, которые они использовали. Но базы данных и их технологии развивались довольно быстро — от реляционных баз данных к нереляционным информационным хранилищам, таким, как электронная почта и файловые системы. Развитие баз данных сейчас идет в ногу со стремительными изменениями в технике. А с появлением клиент-серверных и многоуровневых архитектур разработчикам уже приходится разбираться во всем многообразии технологий баз данных. Большинство разработчиков потратили годы на изучение ODBC, DAO, RDO, OLE DB, ADO и RDS. К настоящему моменту Microsoft представила .NET Framework и вместе с ней новую технологию баз данных ADO.NET.

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

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

    Технология ODBC обеспечивает общий интерфейс для доступа к разнородным базам данных стандарта SQL. ODBC использует язык SQL как стандарт для доступа к данным. На Рисунке 1 показана архитектура ODBC. Этот интерфейс очень удобен: одно приложение может обращаться к различным базам данных SQL через общий набор команд. Таким образом, разработчик может создавать и распространять приложения, не привязываясь к конкретной базе данных.

  • Примечание.
    Рисунок 1. Архитектура ODBC.

    Можно также добавить драйвер базы данных, чтобы приложение могло работать с базой данных по выбору пользователя. Как показано на Рисунке 1, менеджер драйверов является промежуточным звеном между приложением и базами данных. Интерфейс ODBC содержит набор функций, который управляет каждым инструментом базы данных. Если приложению нужно сменить используемую базу, разработчик просто заменяет один драйвер другим, и приложение может работать как обычно, без необходимости модификации кода программы.

    DAO и RDO

    Рисунок 2. Использование DAO для доступа к базе данных.

    ODBC использует низкоуровневый интерфейс, поэтому программисты на С и С++ реально задействуют все преимущества технологии ODBC. Программисты на Visual Basic (VB) не имеют простого доступа к интерфейсу ODBC. До появления VB 6.0 разработчики применяли высокоуровневый доступ к данным. На Рисунке 2 показано, как программисты VB используют технологию Data Access Object (DAO) для доступа к данным.

    Рисунок 3. Использование RDO для доступа к базе данных.

    DAO базируется на технологии баз данных Microsoft Jet — процессоре баз данных, предназначенном для Microsoft Access. JET был первым объектно-ориентированным интерфейсом для связи с Access. Приложения, использующие Access, могут задействовать DAO для прямого доступа к данным. Поскольку DAO создавалась сразу же вслед за Access, применение этой технологии — самый быстрый и наиболее эффективный способ доступа к базам данных Access. DAO может работать и с отличными от Access базами данных, такими, как SQL Server и Oracle. DAO использует ODBC, но, поскольку метод DAO спроектирован специально для взаимодействия с JET, JET транслирует запросы между DAO и ODBC. Этот дополнительный шаг трансляции и является причиной замедления работы с базами данных, отличными от Access.

    Рисунок 4. Архитектура ODBCDirect.

    Чтобы преодолеть это ограничение, разработчики Microsoft создали RDO. На Рисунке 3 показано, что RDO обращается к ODBС API напрямую, минуя JET. Затем было введено ODBCDirect, расширение DAO, которое отодвигает RDO на задний план. На Рисунке 4 показано, как DAO-приложение, используя ODBCDirect, обращается к базе данных, минуя проблемы, которые вызывает JET.

    OLE DB

    Спустя несколько лет ODBC становится стандартом для клиент-серверного доступа к базам данных. ODBC обеспечивает стандартный интерфейс, который требует функций SQL и оптимизирован под методы SQL. Однако что произойдет, если нужно будет обратиться к нереляционной базе данных, в которой не используются принципы SQL (например, Microsoft Exchange Server, хранилище которого не содержит данные реляционно).

    Рассмотрим OLE DB. Технология OLE DB построена на ODBC и расширяет ее до компонентной архитектуры, которая обеспечивает высокоуровневый интерфейс доступа к данным. Эта архитектура предоставляет постоянный доступ к SQL-данным, не SQL-данным и неструктурированным источникам данных по локальным сетям и Internet. В действительности для доступа к SQL-данным OLE DB использует ODBC, потому что это самая подходящая архитектура для работы с SQL. На Рисунке 5 показано, что OLE DB состоит из трех компонентов: потребителя данных (например, приложения); поставщика (провайдера) данных, который содержит и предоставляет данные; служебного компонента, который обрабатывает и транспортирует данные (в частности, процессоры запросов, процессоры курсоров). OLE DB — это единый API, который обрабатывает как совместимые с SQL источники данных, так и несовместимые, такие, как почта и каталоги.

    Рисунок 5. Компоненты OLE DB.

    OLE DB обеспечивает связывание для программистов на С и C++, а также программистов, использующих языки с С-подобными вызовами функций. Такие языки, как VB и VBScript, не поддерживают тип данных «указатель» (адресных переменных). Следовательно, они не могут использовать связывание в стиле С и прямое обращение к OLE DB.

    Вероятно, для большей путаницы разработчики Microsoft ввели еще одну объектную модель доступа к данным: ADO. ADO работает с объектами DAO и RDO, а также поддерживает более простые модели, чем DAO и RDO (хотя с избыточной функциональностью, так что можно выполнить операцию несколькими способами). Объектная иерархия в ADO более однородная, чем в DAO. ADO содержит несколько встроенных объектов, которые упрощают доступ к данным из информационных хранилищ.

    На Рисунке 6 показано несколько способов, с помощью которых приложение связывается с базой данных. Например, VB-программист может использовать ADO для соединения приложения с провайдером OLE DB. Если база данных не поддерживает OLE DB, приложение может задействовать ODBC. Программист на Visual C++ может применять ADO или соединяться напрямую через OLE DB.

    Рисунок 6. Различие маршрутов приложений в ADO.

    Пример в ADO

    Рассмотрим простой пример работы ADO. В Листинге 1 показано, как можно использовать типичный объект — набор строк (Recordset) — центральный объект в ADO. Объект Recordset представляет собой набор записей (таблицу) и поддерживает типы курсоров adOpenForwardOnly, adOpenKeyset, adOpenDynamic и adOpenStatic. Курсор может быть как на стороне сервера (по умолчанию), так и на стороне клиента.

    Для доступа к записи ADO требуется просканировать набор строк последовательно. Для доступа к нескольким таблицам необходимо выполнить запрос на объединение JOIN, чтобы получить результат в виде набора строк. Хотя объект Recordset поддерживает доступ к данным без соединения с ними, ADO изначально был спроектирован для данных, с которыми установлено соединение. Такой метод доступа заставляет хранить важные ресурсы на стороне сервера. Вдобавок для передачи набора строк следует использовать метод упорядочивания, названный COM marshalling. COM marshalling — это процесс преобразования типов данных, который, естественно, занимает полезные ресурсы системы.

    Начиная с ADO 2.1, Microsoft добавляет поддержку XML в объектную модель ADO, что позволяет хранить набор строк Recordset как XML-документ. Однако только при появлении ADO 2.5 ряд ограничений XML, который сохранялся в версии ADO 2.1 (например, жесткая иерархия объектов Recordset), был устранен. Хотя ADO может преобразовать документ XML в набор Recordset, он в состоянии читать только документы в собственной схеме, известной как Advanced Data TableGram (ADTG).

    В поисках механизма доступа к несвязанным данным Microsoft расширяет ADO и вводит службу Remote Data Services (RDS). RDS создана после ADO и разрешает передачу объекта Recordset клиенту (например, в Web-браузер) при отсутствии активного соединения. Однако RDS, как и ADO, использует упорядочивание COM marshaling для передачи набора строк от сервера клиенту.

    Эра .NET

    Когда Microsoft начала разрабатывать .NET Framework, она имела хорошую возможность пересмотреть модель доступа к данным. Решив не продолжать разработку технологии ADO, специалисты Microsoft приступили к созданию новой структуры доступа к данным, при этом сохранив акроним. Microsoft разрабатывает ADO.NET на базе уже зарекомендовавшей себя объектной технологии ADO. Но ADO.NET ориентируется на три важные возможности, которые не поддерживаются ADO: поддержка модели доступа к несвязанным данным, что является ключевым элементом для работы в Web; поддержка тесной интеграции с XML; интеграция с .NET Framework (например, совместимость с базовой библиотекой классов типичной системы).

    Архитектура ADO.NET. На Рисунке 7 представлена архитектура ADO.NET. Объект Recordset, который выполняет так много функций в ADO, здесь отсутствует. Вместо него в ADO.NET предусмотрено несколько особых объектов, выполняющих специфические задачи. В Таблице 1 описаны три из них: DataAdapter, DataReader и DataSet.

    Рисунок 7. Архитектура ADO.NET.

    Поставщики данных .NET. Очень важный компонент ADO.NET, провайдер данных .NET, реализует интерфейсы ADO.NET. В частности, он реализует объект DataReader так, что его могут использовать и приложение, и объект DataSet.

    Поставщик данных .NET состоит из четырех основных компонентов: Connection — для связи с источником данных; Command выполняет команды над источником данных; DataReader читает данные из источника данных в однонаправленном режиме «только чтение», и DataAdapter, который читает данные из источника данных и использует их для заполнения объекта DataSet.

    Visual Studio .NET содержит два поставщика данных .NET. Поставщик данных SQL Server .NET обеспечивает связь с SQL Server 7.0 и более поздними версиями. Этот метод доступа наиболее эффективен для SQL Server 7.0 и выше, потому что поставщик данных SQL Server .NET связывается напрямую с SQL Server через протокол Tabular Data Stream (TDS). Поставщик данных OLE DB .NET необходим для соединения с отличными от SQL Server базами данных, такими, как Oracle или IBM DB2. Этот поставщик данных использует OLE DB для соответствующих баз данных.

    Во время написания статьи разработчики Microsoft реализовали третий тип поставщика данных .NET — ODBC .NET Data Provider — Release Candidate Beta. Его можно получить на сайте Microsoft http://www.microsoft.com/data/ download_odbcnetrc.htm.

    Рисунок 8. Различие маршрутов в ADO.NET.

    На Рисунке 8 показаны различные пути, по которым приложение может связываться с базой данных через ADO.NET. При выборе пути сначала определяется, какой поставщик данных .NET будет использоваться. Если это SQL Server 7.0 или более поздняя версия, то подключается поставщик данных SQL Server.NET. Если база данных SQL Server 6.5 или отличная от SQL Server (например, Oracle), понадобится поставщик данных OLE DB .NET. Заметим, что можно задействовать поставщик данных OLE DB .NET для баз данных SQL 7.0 и выше, но тогда потеряется выигрыш в производительности, который дает прямое подключение к SQL Server через протокол TDS. Однако в этом неспецифическом способе есть свой плюс — мобильность, т. е. можно менять базы данных без модификации кода.

    Далее необходимо определить, какую задачу требуется выполнить. Если надо просто прочитать и отобразить данные из источника данных, объекта Data Reader вполне достаточно. Но если предстоит манипулировать данными (например, редактировать или удалять), нужно использовать объект Data Set. Хотя задействовать этот объект следует только в случае необходимости, потому что он работает медленнее, чем Data Reader (Data Set использует Data Reader для заполнения таблиц).

    Пример на ADO.NET

    Рассмотрим, как ADO.NET действует в Web-службе. В Листинге 2 показана Web-служба, которая возвращает объект Data Set. Код в Листинге 2 похож на код в Листинге 1. Web-служба в Листинге 2 отыскивает таблицу Authors в базе Pubs и представляет ее как Web-службу. Web-служба использует поставщик данных SQL Server .NET, как показано в следующей строке:

    Сначала Web-служба устанавливает связь с базой данных SQL Server 2000:

    Dim conn AS New SqlConnection(«server=localhost;
    u >

    Затем Web-служба, используя объект Command, выполняет запрос к базе данных:

    Dim comm AS New SqlCommand(sql, conn)

    Далее Web-служба с помощью объекта DataAdapter заполняет DataSet:

    Заметим, что соединение закрывается, как только Dataset заполнен, в отличие от соединений в ADO, которые должны быть открыты, пока существует соединение через RecordSet. Результирующий DataSet возвращается как Web-служба. На Экране 1 показан участок DataSet, который получается после вызова новой Web-службы. DataSet с его схемой представлен в формате XML. Клиентское приложение может выбрать привязку к этому DataSet, используя компонент DataGrid. В Листинге 3 показан код, выполняющий данную привязку. На Экране 2 изображен результирующий DataSet, привязанный к элементу управления DataGrid в Web-приложении на ASP.NET, которое представит этот DataSet в более удобном виде. ASP.NET поддерживает много элементов управления, которые привязываются к DataSet автоматически.

    Использование ADO в приложениях .NET

    Хотя в ADO.NET реализовано много новых возможностей, можно продолжать применять ADO. При разработке нового приложения на .NET следует отдать предпочтение ADO.NET. Но если процесс разработки продолжается, можно оставить ADO в старых проектах и использовать ADO.NET в новых. .NET Framework позволяет задействовать ADO в .NET приложениях через COM, который поддерживает обратную совместимость без необходимости модифицировать ADO. Нужно импортировать библиотеки типа ADO как сборку (см. Экран 3). Затем можно использовать ADO, как показано в коде в Листинге 4.

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


    НР представляет первую 64-разрядную рабочую станцию ХР

    HP объявила о полномасштабной готовности первых рабочих станций на базе процессора Itanium 2, работающих под управлением Windows XP 64-Bit Edition Version 2003. Предлагаются две конструктивные реализации концепции, а именно: HP Workstation zx2000 и Workstation zx6000 с поддержкой одного и двух процессоров и оперативной памятью 8 Гбайт и 24 Гбайт, соответственно. Как отмечают представители Microsoft, XP 64-Bit Edition Version 2003 является высокопроизводительной платформой, способной поддерживать мощные Windows-приложения нового поколения на рабочих станциях на базе Itanium 2. Платформа предназначена для обслуживания наиболее сложных технических, научных и связанных с обработкой цифровой информации приложений. Стартовая ценовая планка для рабочих станций HP установлена на уровне 3300 долларов.

    Таблица 1. Некоторые особые объекты ADO.NET.
    Объект Описание
    DataAdapter Объект, соединяющий базу данных с объектом DataSet. Основное преимущество DataAdapter состоит в том, что он может работать с любыми источниками данных. Источник данных может быть как базой данных, так и XML-документом.
    DataReader Объект обеспечивает эффективный поиск данных на стороне сервера. DataReader соединяется в однопроходном режиме «только чтение». Этот объект полезен для Web-приложений, которые используют DataReader для отображения данных на Web-страницах.
    DataSet Объект поддерживает копии записей из базы данных без соединения. Он сохраняет записи из таблицы (или множества таблиц) в памяти, не поддерживая постоянного соединения с сервером. В памяти DataSet представляет собой двоичный объект. Когда его перемещают или преобразуют, он представляется как DiffGram — формат XML. Поскольку XML — это текстовый формат, записи могут передаваться по Web — в обход ограничений брандмауэров. DataSet также содержит различные объекты, такие, как ограничения, зависимости и представления, которые позволяют работать с таблицами на клиентской стороне, а не только с RecordSet, как в ADO.

    Поделитесь материалом с коллегами и друзьями

    Использование ADO.NET для уровня доступа к данным в ASP.NET Ядра

    Я пытаюсь катить высокую производительность DAL для моего ASP.NET Core API. Я хочу использовать ADO.NET и у меня возникла трудность проектирование архитектуры программного обеспечения. Я ищу помощь обсуждать хороший подход.

    Что я имею

    Мой кодовый будет состоять из трех проектов

    • MyApp.API
    • MyApp.Repositories (данные уровня доступа)
    • MyApp.Services (бизнес-логика)

    Я буду реализовывать IUnitOfWork в MyApp.Repositories и создать бетон SqlUnitOfWork в MyApp.API . Startup.cs зарегистрирует IUnitOfWork в SqlUnitOfWork . Позже, когда я получаю больше источников данных (Монго и т.д.), я могу включался UnitOfWorkFactory .

    Вопросы

    Должен ли я зарегистрировать каждый репозиторий Startup.cs или просто добавить их в качестве свойств IUnitOfWork ? Мышление здесь я хотел бы использовать Dependency Injection в своих контроллерах, Услуги и репозиториев, но только надо вводить IUnitOfWork .

    Как передать мою строку соединения в SqlUnitOfWork ? Я знаю , что строка соединения должна оставаться в пределах MyApp.API .

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

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

    Я считаю , что вы работаете с записью ASPNET-ядра , таким образом , с помощью Entity Framework , как ваш ORM будет работать в этой ситуации.

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

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

    В ASP.NET ядро, DbContext добавляется в DI контейнера и , таким образом , любой другой сервис , который требует или имеет зависимость от DbContext в его конструктор, он будет автоматически решен контейнером DI.

    Во- первых помните , чтобы строка подключения определена в appsettings.json качестве так.

    Тогда теперь позволяет использовать эту строку подключения , чтобы добавить DbContext объект нашего DI контейнера и немного Futher чтения на Настройка DbContext в EF Ядра

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

    Надеюсь, что это отвечает на ваши вопросы. Если нет, дайте мне знать.

    Как сэкономить время и деньги при построении интерактивного
    контента веб-сайта?
    Сравнение технологии ASP с решениями Business Objects/Crystal Decisions

    Введение

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

    В этой статье показано, как веб-разработчики с помощью решений Business Objects/Crystal Decisions (далее — Crystal Decisions) могут передавать реляционные данные в Интернет более чем в 100 раз быстрее, чем при публикации информации с помощью отчётов, написанных на ASP. Построенные на стандартах XML, ADO, ActiveX, Visual Basic (VB) и Java Script, решения Crystal Decisions не только обеспечивают безопасность и масштабируемость, но и множество самых разнообразных функций, с помощью которых разработчики и профессионалы в информационных технологиях могут быстро передавать в Интернет информацию презентационного качества, и при этом не писать код.

    Резюме

    Многие разработчики знают о том, что Crystal Reports – это мировой стандарт представления реляционных данных в настольных компьютерах. Эти решения применимы не только на настольных компьютерах, но и в Интернете. Начиная с 7-ой версии, Crystal Reports имеет единый интерфейс конструирования для быстрого создания отчётов для Windows и Интернета. Созданные отчёты можно доставлять и контролировать с помощью Crystal Enterprise – надёжной платформы для работы с отчётами, анализа и передачи информации через Интернет. Продукт Crystal Decisions даёт разработчику среду, интерфейсы и инструменты, которые избавляют от необходимости писать для отчётов множество строк кода ASP. Не утруждая себя написанием кода, разработчики значительно быстрее могут компоновать профессиональные отчёты с помощью объектно-ориентированных интерфейсов конструктора.

    В следующем примере приведён довольно простой отчёт о клиентах, который содержит следующее:

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

    Отчёт (см. ниже) был создан за 1,5 минуты с помощью Crystal Reports. Затем всего за минуту он был опубликован в Интернете с помощью Crystal Enterprise как динамический отчёт, включающий расписание и возможности защиты. Те же действия, выполненные с использованием кода ASP, заняли у опытного разработчика 495 минут! Даже если не учитывать затраты времени на публикацию отчёта, разница получается впечатляющая – опытному программисту на ASP потребовалось потратить только на конструирование отчёта 210 минут.

    Отчёт о клиентах, созданный с помощью Crystal Reports:

    Отчёт о клиентах, созданный с помощью ASP:

    Сравнение затрат времени при использовании ASP и Crystal

    Ниже в таблице приведены затраты времени на каждый шаг процесса создания вышеупомянутого отчёта и его опубликование в Интернете с использованием кода ASP в одном случае и технологии Crystal Decisions – в другом.

    Время на написание кода ASP Время при использовании Crystal Технология Crystal
    Создание отчёта о клиентах— Подключение к базе данных- Выбор и размещение поля- Сортировка/группирование- Вставка адреса электронной почты- Ссылка на веб-сайт- Форматирование отчёта 210 минут(3,5 часа) 1,5 минуты Crystal Reports(указать и щёлкнуть мышью в конструкторе)
    Загрузка страниц по запросу 45 минут 0 минут Crystal Enterprise(автоматически)
    Добавление защиты 240 минут(4 часа) 1 минута Crystal Enterprise (указать и щёлкнуть на консоли Crystal Management Console)
    Добавление функций расписания Не включено 0 минут
    Обновление отчётов после обновления базы данных Не включено 0 минут Crystal Enterprise
    Итого времени 495 минут 2,5 минуты

    В приведённой таблице не учтено время, затрачиваемое на сопровождение и обновление приложения.

    Опубликование реляционных данных на веб-сайте должно быть лёгким

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

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

    Выбор правильного инструмента для максимального увеличения прибыли на инвестицию в веб-сайт

    Для опубликования реляционных данных в Интернете существует большое разнообразие инструментов. Наиболее популярны отчёты с кодом ASP (такие инструменты как Macromedia Dreamweaver и Microsoft FrontPage.

    Почему ASP?

    Инструменты на основе кода ASP популярны по следующим причинам.

    • Привычность. VB Script похож на Microsoft Visual Basic (VB) , поэтому разработчики знакомы с этим широко известным стандартом. Многие разработчики считают, что этим языком легче пользоваться, чем JSP, JavaBeans, PHP и так далее.
    • Стандартность. Технология ASP содержит гибкие серверные компоненты, уже встроенные в продукты Microsoft, на которых установлен сервер IIS (Internet Information Server), с целью создания ASP-приложений.
    • ASP-разработчиков проще найти. Разработчиков, знающих ASP, довольно много, поэтому сложностей с их поиском нет.
    • Хорошая интеграция в другие продукты Microsoft. ASP, Internet Explorer, IIS и SQL-сервер хорошо взаимодействуют друг с другом.
    • Возможность многократного использования. Разработчики могут сэкономить время, копируя и вставляя строки кода, ранее написанные для других веб-страниц, а также создавая универсальные компоненты, которые годятся для многих веб-страниц.

    Почему Crystal?

    Технология Crystal имеет все преимущества технологии ASP, но значительно быстрее и дешевле.

    • Качество презентации, интерактивные отчёты. Интуитивно понятный интерфейс конструктора позволяет создать практически любой отчёт. Его можно превратить в интерактивные документы с развёрткой (переход по иерархии вниз), графиками, картами, оповещениями, параметрами, гиперссылками, возможностью вносить изменения и многими другими возможностями.
    • Использование уже знакомых стандартов. Используя общеизвестные стандарты для веб-сайтов, в том числе DHTML, VB Script, JavaScript, COM и XML, технология Crystal даёт компаниям полный контроль над всеми аспектами создания контента, интеграции и функциональности системы. VB Script был использован при разработке Crystal Server Pages (CSP) – веб-страниц, которые может видеть конечный пользователь.
    • Все возможности настройки. Мощные возможности настройки и полная поддержка стандартных языков создания сценариев (JavaScript и VBScript) позволяют разработчикам быстро строить нужные веб-приложения.
    • Мощная система управления контентом. Для управления информационной инфраструктурой достаточно нескольких щелчков мыши.
    • Практически отсутствует необходимость в написании кода. Предусмотрены почти все функции.

    Максимизация отдачи от инвестиций в веб-сайты с помощью Crystal

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

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

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

    Через неделю отдел маркетинга и отдел сбыта прослышали об этих отчётах и захотели такие же, но с небольшими изменениями. Отдел сбыта попросил, чтобы в отчёте о клиентах были номера телефонов. Отдел маркетинга попросил включить в отчёт ежемесячные ведомости доходов клиентов, сгруппированные по регионам, а не по названиям компаний. Бухгалтерский отдел также сообщил, что один из 5 отчётов выполняется слишком долго, поэтому его лучше выполнять раз в неделю, а не ежедневно. Кроме того, из бухгалтерии сообщили, что из-за того, что сотрудники информационного отдела вчера что-то делали с серверами, отчёты были недоступны 5 часов, и бухгалтеры не имели доступа к данным. Поэтому они не смогли во время выполнить пару важных задач для своих аудиторов. В результате вам приходится отложить свой текущий проект по крайней мере на неделю, чтобы выполнить просьбы отделов. Кроме того, вам приходится доказывать директору, что необходимо купить более мощное оборудование, чтобы удовлетворить дополнительные потребности пользователей.

    Подводная часть айсберга тоже важна

    Создание отчётов – не статичный проект. Приведенный выше пример показывает, что различные отделы предприятия по-разному смотрят на одни и те же данные.

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

    Ниже приведены два отчёта, отображающие данные, описанные в вышеупомянутом сценарии; один из этих отчётов сделан и опубликован по технологии Crystal, а другой – по технологии ASP. Первый отчёт создан с помощью Crystal Reports (издание Developer или Professional), а опубликован с помощью среды Crystal Enterprise. Эти два отчёта похожи, но…

    Рис. 1. Отчёт о клиентах, созданный с помощью Crystal Reports

    Рис. 2. Отчёт о клиентах, созданный с помощью ASP

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

    • Презентационное качеств
    • Содержимое отчёта и удобство подачи информации
    • Параметры диапазона опций поставки контента
    • Быстродействие системы
    • Масштабируемость системы и постоянная доступность данных
    • Надёжность инфраструктуры защиты данны
    • Поддержка и рост системы по мере роста организации

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

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

    1. Вопросы вывода отчёта

    Представление отчёта

    Отчёт со сводными, сильно уплотнёнными данными может существенно помочь пользователю лучше понять бизнес-процесс. Форматирование презентационного качества с использованием различных шрифтов, линий, рисунков и макетов с произвольной разметкой может помочь пользователю лучше и профессиональнее работать с информацией. В Crystal такая гибкость достигается всего лишь нажатием кнопки мастера. При написании кода ASP даже с помощью таких конструкторов как Dreamweaver и FrontPage, для добавления упомянутых функций требуются часы.

    С помощью Crystal Reports можно легко представить информацию в той форме, к которой привыкли пользователи, какой бы она ни была – матричный отчет, счёт-фактура, заказ и так далее. Объектно-ориентированный конструктор поддерживает создание практически любых отчётов, любые стили и форматы. А при использовании ASP вы ограничены только выводом на основе таблиц. Произвольная компоновка в Crystal даёт возможность быстро извлекать нужную конечному пользователю информацию, и форматировать ее с целью выделения наиболее важных данных.

    Удобство пользования отчётами и возможности доставки контента

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

    При использовании ASP все эти функции отчёта приходится писать вручную. Во многих отношениях «комплексный отчёт» с упомянутыми функциями становится настоящим приложением. А при использовании Crystal Reports не нужно заботиться о написании кода для встраивания нужных функций – код создаётся автоматически всего несколькими щелчками мыши. Правда, один раз написанный код ASP можно многократно использовать для других отчётов, но если придётся вести более 10 отчётов, то усилий потребуется слишком много. Даже простое планирование выполнения отчёта потребует создание отдельного приложения.

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

    • Параметризованные отчёты для усложнённой сортировки, фильтрации и сведения данных, создания карт и графиков.
    • Система планирования выполнения отчётов в заданные промежутки времени или регулярно с заданным периодом.
    • Встроенные средства навигации, в том числе оглавление, гиперссылки, детализация по иерархии, поиск.
    • Экспорт в файлы форматов Acrobat (PDF), Microsoft Excel, Word (RTF) и собственный формат Crystal Reports.

    Разделение создания отчёта от создания приложения

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

    Crystal разделяет отчёты и приложения, поэтому изменение отчёта никак не влияет на приложение, и наоборот – изменение приложения не влияет на отчёт. Права на внесение изменение, планирование, добавление новых отчётов, переформатирование… Crystal выполняет эти функции универсально, поэтому разработчикам и ИТ-специалистам не приходится беспокоиться о том, что они могут повредить код при изменении отчётов и приложений. Новый репозитарий Crystal Decisions использует единое место для обмена, обновления и управления объектами всех отчётов. Например, десять отчётов могут иметь общий текстовый объект, хранящийся в репозитарии. Если необходимо внести изменение, разработчик может изменить объект в репозитарии, после чего изменение автоматически распространяется на все отчёты, содержащие указанный объект.

    Ещё одно преимущество отделения разработки отчётов от разработки приложений – разработчик имеет возможность передать конструирование контента другому лицу.

    2. Вопросы развёртывания и управления

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

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

    Быстродействие

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

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

    Crystal содержит серверный компонент, специально выделенный для кэширования отчётов. Этот серверный компонент может быть помещён на отдельный компьютер или несколько компьютеров, чтобы ускорить доставку часто выполняемых отчётов.

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

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

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

    Масштабируемость и доступность

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

    Разработчики, которые пишут отчёты на языке ASP, могут быть ограничены в масштабируемости, поскольку они всегда вынуждены использовать IIS. Чтобы получать информацию могло одновременно большое количество пользователей, разработчики могут повысить производительность своих ASP-приложений либо с помощью программного обеспечения, либо оборудования, но оба варианта имеют недостатки. Для распределения нагрузки по массиву (ферме) веб-серверов путем установки дополнительного оборудования требуются дорогостоящие ИТ-специалисты с сертификатами компании Cisco, а эти специалисты малочисленны и обычно постоянно заняты. Если же идти по пути установки дополнительного программного обеспечения, например, сервера MTS (Microsoft Transaction Server), который содержится в IIS, то при этом обычно необходима дополнительная работа по преобразованию всех сценариев в библиотеки DLL, которые должны стать компонентами MTS.

    В основе Crystal лежит архитектура распределённых компонентов. Это означает, что отдельные компоненты системы могут быть «развязаны» (обработка плановых отчётов, управление системой, кэширование, обработка отчётов в реальном времени, доставки веб-данных) и распределены по множеству компьютеров. Благодаря этому увеличивается количество пользователей, которые могут иметь одновременный доступ к веб-сайту, повышается эффективность использования оборудования, быстрый рост возможностей системы, причём переписывать отчёты не требуется.

    Crystal также распределяет нагрузку между всеми функциями управления системой и обработки отчётов. Кроме того, Crystal поддерживает кластеризацию и переключение ресурсов при сбое на уровне управления системой. Это значит, что к кластеру можно добавить несколько компьютеров, чтобы уменьшить время отклика и более эффективно распределять нагрузку, вызванную обращениями пользователей. Если какой-либо компьютер из кластера выйдет из строя, остальные компьютеры кластера автоматически возьмут на себя его функции, и нормальная работа кластера продолжится.

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

    Когда речь идёт об отчётах, главные вопросы безопасности – кто имеет право просматривать отчёты и выполняемые ими операции. Может ли каждый пользователь планировать отчёты, просматривать их по запросу, вводить параметры отчётов, просматривать экземпляры отчёта за прошлые периоды и так далее? Все эти вопросы должны быть учтены в коде ASP каждого отчёта. И даже с учётом того, что некоторые компоненты кода ASP отчётов можно использовать многократно, контроль качества требует слишком много затрат времени.

    Интерфейс Crystal позволяет вести функции защиты просто и удобно – всего лишь несколькими щелчками мыши. Все отчёты (объекты отчётов) хранятся в центральном репозитарии, благодаря чему управление функциями защиты отдельных объектов и папок ведётся просто нажатиями кнопки мыши. Кроме гибкости модели отдельных пользователей и групп пользователей, Crystal Enterprise поддерживает интеграцию с системами безопасности других производителей, в том числе LDAP и NT. Благодаря этому можно использовать существующую у вас инфраструктуру безопасности, чтобы ускорить развёртывание и администрирование.

    Долгосрочная поддержка

    Изменяющиеся потребности в отчётах. Как уже было показано в примере, в котором разработчик создал пять отчётов для бухгалтерии, требования к отчётам постоянно изменяются в различных отделах предприятия. Возможность вести и планировать обновления в системе отчётов критически важны при планировании ресурсов. Когда разработчик вносит изменения в код ASP, ему необходимо проанализировать, как эти изменения повлияют на остальные приложения, и протестировать код, чтобы убедиться в том, что отчёт или приложения по-прежнему работают без ошибок. Как правило, при внесении изменений требуются значительные трудозатраты на вопросы «подводной части айсберга», такие как масштабируемость, безопасность, которые при использовании Crystal решаются автоматически.

    Использование результатов предыдущей работы. Более четырнадцати миллионов проданных лицензий, 300 OEM-партнёров показывают, что технология Crystal стала мировым стандартом в работе с отчётами. Crystal Reports применяется на многих передовых предприятиях, и наверняка вы сможете найти на своём предприятии хоть одного специалиста, знакомого с этими продуктами. Поэтому у вас есть возможность воспользоваться услугами своих специалистов, а не отправлять кого-нибудь на курсы по изучению ASP.

    Техническая поддержка. Все продукты Crystal обладают возможностью доступа к различным уровням технической поддержки от самообслуживания до элитных персональных услуг, которые осуществляются круглосуточно (24 часа в сутки, 7 дней в неделю). Какой уровень поддержки может обеспечить ваш ASP-разработчик?

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

    Поддержка будущих технологий. Crystal Decisions интегрирует в свои продукты новейшие веб-технологии, благодаря которым веб-контент предоставляет пользователям, разработчикам и администраторам максимальную эффективность и окупаемость инвестиций. Например, поскольку язык XML по-прежнему играет важную роль в опубликовании информации в сети, Crystal Decisions продолжат интегрировать в свои продукты последние достижения в области XML. При этом Crystal Decisions остаётся на передовых позициях во всех областях, от новых драйверов до Report Web Services – нового слова в технологии XML.

    Краткий обзор вопросов, касающихся «подводной части айсберга», приведён в приложении № 3

    Увеличение производительности веб-разработок в 180 раз с помощью Crystal

    Сравним два отчёта, приведенных на рис. 1 и 2. Оба они представляют одну и ту же информацию, но один из них требует на создание и публикацию в сети существенно меньше времени.

    • Рис. 1. На создание и опубликование этого отчёта с помощью продуктов Crystal требуется 2,5 минуты. Обзор действий по созданию и публикации этого отчёта с помощью Crystal содержится в приложении 1.
    • Рис. 2. На создание этого отчёта с помощью кода ASP требуется 450 минут (7,5 часов), причём здесь не учтено время на опубликование и планирование отчёта. Обзор действий по созданию и публикации этого отчёта с помощью ASP содержится в приложении 2.

    Расчёт окупаемости

    • 450 минут (ASP) – 2,5 минут (Crystal)
    • На 99% быстрее при использовании Crystal!
    • 450/2,5 = в 180 раз быстрее при использовании Crystal!

    Выводы

    • Продукт Crystal Reports позволяет существенно быстрее публиковать данные на веб-сайте с качеством презентации с использованием легко управляемой веб-инфраструктуры под названием Crystal Enterprise.
    • С помощью технологии Crystal можно упростить весь процесс создания и опубликования отчётов. Разработчики могут сосредоточиться на разработке своих приложений, предоставив написание отчётов другим специалистам, а продукты Crystal обеспечат согласованность всех тех вопросов, которые раньше замедляли работу.
    • Кроме того, с помощью Crystal разработчики имеют доступ к полной модели COM (модель компонентных объектов), благодаря чему имеют возможность интегрировать свои отчёты в приложения нужным им способом.

    Как найти дополнительную информацию

    Дополнительная информация о Crystal Reports, Crystal Enterprise и семействе продуктов Crystal Decisions находится на следующих сайтах.

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