Программирование для интернета с использованием COM
Модульный тест библиотеки COM DLL
Для тестирования библиотеки ConfigSeat.dll можно создать несложный код ASP, реализующий экземпляр класса clsChair для вывода значения color в браузер и изменения этого значения. Файл ASP DescribeChair.asp (см. листинг 1.2) можно расположить в веб-приложении на сервере с библиотекой ConfigSeat.dll. Файл ASP можно расположить на веб-сайте по умолчанию, созданном при установке IIS. Если сервер не настроен на выполнение exe-файлов, то проведите соответствующую настройку. Для получения инструкций по реализации работы ASP в IIS6 обратитесь к лекции 12 курса "Администрирование web-серверов в IIS".
<%@ Language=VBScript %> <HTML> <HEAD> </HEAD> <BODY> <% dim o Response.Write("<p>start Test</p>") 'create the object since this is hard work set o = Server.CreateObject("ConfigSeat.clsChair") 'demonstrate that values were changing Response.Write("<p> color=" & o.color & "</p>") Response.Write("<p>change color to blue</p>") o.color = "blue" Response.Write("<p> color=" & o.color & "</p>") 'destroy object so it can be created again set o = nothing %> </BODY> </HTML>Листинг 1.2. ASP DescribeChair.asp used to test the COM component ConfigSeat.DLL
Для демонстрации возможностей служб компонентов DescribeChair.asp следует запустить много раз. Нагрузка на веб-сервер, созданная запросами на файл ASP, не обеспечивает достаточный спрос на компонент COM или сервер, на котором он расположен, поэтому службы компонентов не зарегистрируют потребность в ресурсах. Microsoft предлагает две утилиты, предназначенные для проведения проверки нагрузкой.
WAS – бесплатная программа; Microsoft Application Center Test входит в пакет Visual Studio .NET Enterprise Edition.
Для создания нехватки ресурсов в ASP и просмотра реакции на это условие в Microsoft Application Center Test был создан простой сценарий, моделирующий одновременную работу ста пользователей в течение 5 минут. Такая нагрузка достаточно велика, и службы компонентов испытывали большую нагрузку при обслуживании экземпляра clsChair. В каждый момент времени создавалось от нуля до пяти экземпляров clsChair, обеспечивавших 175 запросов на страницы в секунду. На рисунке 1.17 показана консоль управления службами компонентов, отображающая состояние класса clsChair при тестировании нагрузкой.
Использование VB в COM
До сих пор мы показывали построение простейшего веб-приложения COM, включая все этапы процесс разработки. В реальном COM-объекте должен присутствовать набор классов, отражающий объекты, выявленные в процессе сбора требований. Среди возможностей веб-приложений COM следует отметить хранение данных, связанных с выявленными объектами, чтение данных об этих объектах, упорядочивание данных с помощью XML и их форматирование для отображения в браузере. В данной лекции мы пропустим шаги, связанные со сбором требований. В "Процесс разработки программы и методология построения приложений для интернета" показаны действия, входящие в цикл разработки программного обеспечения.
Объектно-ориентированное (ОО) проектирование и анализ представляют собой большую редкость в современном сообществе разработчиков программного обеспечения. Веб-программы не менее сложны, чем другое комплексное программное обеспечение, имеют неопределенную структуру при разработке и дизайне, поэтому не следует игнорировать зарекомендовавшие себя правила и подходы к разработке.
В организациях проектирование и анализ зачастую выполняются после создания продукта, и в этом случае каждое усовершенствование требует его перестройки. В любом проекте время, отведенное для анализа и проектирования, влияет на завершение процесса программирования в намеченные сроки, позволяет в будущем без особых проблем усовершенствовать программу и усиливает командный дух специалистов, занятых разработкой.
Существует проблема, связанная с ОО-анализом и проектированием в VB6. VB6 не позволяет создать действительно объектно-ориентированное программное решение. Эта среда программирования не поддерживает наследование реализации. Отсутствие реального полиморфизма и других возможностей ограничивает его эффективность при разработке приложений, обеспечивающих долговечность, особенно для масштабируемого программного решения. Объекты COM можно построить на других ОО-языках, например, на C++ и Java.
VB6 поддерживает другие возможности истинно полиморфного языка, но наследование классов – очень важная функция – в нем отсутствует. Не следует воспринимать наследование в VB6 за истинное наследование. Документация Microsoft описывает VB6 как объектно-ориентированный язык, обеспечивающий наследование классов с помощью команды implements. Однако команда implements обеспечивает только наследование интерфейса. С практической точки зрения это означает, что IDE в VB6 заново конструирует интерфейс суперкласса в дочернем классе и заставляет программиста поддерживать весь интерфейс суперкласса в подчиненном классе. Программист создает весь объем кода наследуемых функций в дочернем классе.
VB6 позволяет быстро разработать надежные компоненты, обеспечивающие функциональность, связанную с экземпляром класса. Классы используют другие классы, что весьма полезно. Вероятно, лучшей демонстрацией возможностей VB6 является проект, в котором на этапе сбора требований выявлено немного объектов, или проект с небольшим потенциалом для масштабируемости в будущем и с коротким циклом разработки. VB6 является альтернативой истинно полиморфного языка типа C++, требующего от программиста высокого уровня знаний, и технологии сценариев типа VBScript ASP.