Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

IS 6. Полное руководство

Покупка
Артикул: 825007.01.99
Доступ онлайн
1 000 ₽
В корзину
Курс посвящен вопросам программирования в IIS при помощи технологии ASP, представленной языками VBScript, XML и ADO. В курсе даются знания о веб-программировании .NET на C# с помощью ADO.NET в веб-формах и веб-службах ASP.NET. ПРедставлены материалы по технологиям ISAPI и ATL Server, использующим C++.
Хенриксон, Х. IS 6. Полное руководство : краткий курс / Х. Хенриксон, С. Хофманн. - Москва : ИНТУИТ, 2016. - 259 с. - ISBN 5-9570-0022-1. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2137114 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов

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

2-е издание, исправленное

Национальный Открытый Университет “ИНТУИТ”
2016

2

УДК 681.3
ББК 5
IIS 6. Полное руководство / Хет Хенриксон, Скотт Хофманн - M.: Национальный Открытый
Университет “ИНТУИТ”, 2016
ISBN 5-9570-0022-1

Курс посвящен вопросам программирования в IIS при помощи технологии ASP, представленной
языками VBScript, XML и ADO.
В курсе даются знания о веб-программировании .NET на C# с помощью ADO.NET в веб-формах и
веб-службах ASP.NET. ПРедставлены материалы по технологиям ISAPI и ATL Server,
использующим C++.

(c) ООО “ИНТУИТ.РУ”, -2016
(c) -2016

3

Программирование для интернета с использованием COM

Модель компонентных объектов (Component Object Model, COM) – это спецификация,
разработанная компанией Microsoft для построения программных компонентов,
используемых приложениями или программами Windows для расширения своих
функциональных возможностей. С помощью COM программное обеспечение,
написанное на одном языке (например, на C++), может работать с программой,
написанной на другом языке (скажем, на Visual Basic), без перекомпиляции
программных компонентов. Это означает, что динамически подключаемую
библиотеку, разработанную в C++, можно вызывать из исполняемого файла,
написанного на Visual Basic. При работе с активными серверными страницами (ASP)
VBScript может вызвать функцию из объекта COM, созданного при помощи языка VB,
C++ или любого другого. Веб-разработка с использованием технологии COM
осуществляется посредством вызова в ASP функций, расположенных в COM-объектах.

Аббревиатура DCOM означает Distributed Component Object Model (Распределенная
модель компонентных объектов). Эта модель функционирует аналогично COM с точки
зрения построения и работы с программой, а отличается только способом применения
и конфигурацией сервера. DCOM потребляет объекты COM, расположенные на других
физических узлах.

Примечание. Термин “потребление” часто используется, когда речь идет о вызове
программного обеспечения динамически подключаемой библиотеки (DLL) или другой
библиотеки. Этот термин появился в результате изменения терминологии “клиентсервер”, описывающей взаимодействие между клиентом базы данных (программой,
осуществляющей запрос или ввод данных) и самой базой. Термины “потребитель” и
“провайдер” стали нормой при описании программных компонентов; они отражают
процесс взаимодействия между программой, которая базируется на другой программе,
и программой, которая обслуживает другую программу.

В отличие от обычного ASP-программирования (см. лекцию 12 курса
“Администрирование web-серверов в IIS”), в COM-программировании активные
серверные страницы используются в качестве системы организации. ASP
упорядочивают HTTP-запросы в команды, осуществляют потребление COM-объектов,
непосредственно выполняющих работу, и возвращают ответ клиенту. Преимуществом
такого подхода является то, что программа в COM-объекте инкапсулирована в виде
единого дискретного элемента, который можно целиком добавить или удалить из
системы. Программное обеспечение разрабатывается таким образом, что
программисты могут его использовать, но не могут изменять, поскольку к
дистрибутиву исходный код не прилагается. В зависимости от языка построения COMобъекта заложенные в программу машинные инструкции могут быть двоичными,
выполняемыми с большей производительностью, чем языки сценариев VBScript в ASP.

Архитектура типичного COM-приложения показана на рис. 1.1.

В настоящее время COM-программирование заключается в написании библиотек DLL
ActiveX с помощью языка Visual Basic 6 (VB6). Хотя объекты COM можно создавать с
помощью других языков, в данной лекции мы будем работать с VB6. Проект VB6

4

компилируется в обычный исполняемый файл, что полностью избавляет программиста
от трудностей, присущих работе с языком описания интерфейса COM (IDL) и
управлению архитектурой самого объекта. VB6 является стандартным языком
программирования, интегрированная среда разработки (IDE) довольно проста, и
поэтому любой пользователь напишет, скомпилирует и запустит программу без особых
трудностей.

Рис. 1.1.  Архитектура веб-приложения COM

Примечание. Библиотека ActiveX DLL в VB6 является шаблоном проекта для создания
COM-объекта.

Введение в Visual Basic 6

После запуска Visual Basic 6 отображается диалоговое окно New Project (Новый
проект) (см. рис. 1.2), в котором выбирается тип проекта. Для построения COMобъектов веб-приложения выберите ActiveX DLL и нажмите на кнопку Open
(Открыть).

5

Рис. 1.2.  Диалоговое окно нового проекта в Visual Basic 6

В VB6 можно создать проекты других типов, например, исполняемые файлы и
элементы управления ActiveX. Проекты ActiveX EXE и Standard EXE обычно
используются при разработке приложений. Проект исполняемого файла мы
рассмотрим далее при создании тестовой программы для библиотеки DLL ActiveX. В
проекте ActiveX Control мы сгенерируем элемент управления ActiveX, передаваемый
браузеру или используемый в приложениях рабочего стола.

Из-за ограничений, связанных с разработкой программ в VB runtime, элементы
управления ActiveX, написанные на VB, не подходят для веб-разработки, поскольку
после установки программы на клиенте зачастую требуется перезагрузка компьютера
для работы с новым элементом управления ActiveX.

Настройка проекта ActiveX DLL

После выбора типа проекта будет создан новый проект с именем Project1 и новый
класс Class1. Если сразу скомпилировать проект, то конечный файл будет называться
по умолчанию Project1.dll, а идентификатор класса (CLSID), используемый для
идентификации класса в команде ASP Server.CreateObject – Project1.Class1. Имена
класса и проекта должны быть информативными, а не шаблонными именами по
умолчанию. Классу следует присвоить имя применительно к сути создаваемого
проекта, а проекту – имя, определяющее файл хранилища или исполнения, внутри
которого будет находиться класс.

Примечание. Все COM-объекты, созданные с помощью проекта Active X DLL в VB6,
имеют расширение .dll.

6

Пусть в нашем примере веб-приложение является частью интернет-проекта по выбору
параметров мебели с именем ConfigSeat.

Объект “стул” определен в процессе сбора требований, а создаваемый класс
предназначен для представления этого объекта и является частью бизнес-логики
программного приложения. Данный класс логично назвать clsChair. Префикс cls
определяет объект как класс. Элемент Auto List Members в функции Visual Basic
IntelliSense отображает имена частей проекта и не различает классы и другие типы
файлов, например, модули. Использование префикса cls облегчает идентификацию
класса в списке Auto List Members.

Для изменения имени класса откройте окно свойств с помощью команды
View\Properties Window (Вид\Окно свойств) и выберите класс в Project Explorer
(Диспетчер проектов). Исправьте имя Class1 в области Name (Имя) на clsChair (см.
рис. 1.3). (Остальные параметры в окне свойств не меняйте, поскольку для этого
требуются глубокие знания процесса разработки VB ActiveX. В данной лекции этот
вопрос не рассматривается.)

Вы можете также изменить имя проекта, щелкнув правой кнопкой мыши на имени
проекта в Project Explorer (Диспетчер проектов).

Рис. 1.3.  Окно свойств класса

В диалоговом окне свойств проекта во вкладке General (Общие) имеется текстовое
поле Project Name (Имя проекта), в котором отображается имя по умолчанию Project1.
В нашем примере назовем проект ConfigSeat. Удалите в текстовом поле имя Project1
и введите ConfigSeat (см. рис. 1.4).

Многие программисты не знают о существовании автоматической нумерации версий в
VB6. Номера версий помогают определять последнюю версию разрабатываемой
библиотеки DLL с помощью уникальных идентификаторов. При каждой компиляции
программного кода номер версии увеличивается. Как правило, объект COM

7

устанавливается на узел несколько раз. Потребители программного обеспечения
должны использовать только одну версию (последнюю), и номера версий позволяют
работать именно с этой версией. При отсутствии номеров версий для определения
последней версии пришлось бы использовать дату создания файла. В некоторых
ситуациях (особенно при совместной работе над проектом нескольких программистов)
определение номера версии по дате не работает. Для включения автоматического
присвоения номеров новым версиям проекта откройте вкладку Make (Создание) в
диалоговом окне свойств проекта и отметьте опцию Auto Increment (Автоматическая
нумерация). Если вы не сделаете это, ошибки в программе не возникнет. Опция Auto
Increment (Автоматическая нумерация) по умолчанию не включена, но мы
настоятельно рекомендуем включать ее в каждом проекте.

Рис. 1.4.  Диалоговое окно свойств проекта с новым именем ConfigSeat

Создание интерфейса класса в ActiveX DLL

Объект “стул” имеет некоторые атрибуты: цвет, высота, наличие или отсутствие колес.
Эти атрибуты можно присоединить к классу в виде свойств. Ниже показано, как
расширить класс clsChair добавлением свойства color.

1. Выберите команду Tools\Add Procedure (Сервис\Добавить процедуру).
2. Введите имя свойства в текстовом поле Name (Имя) (см. рис. 1.5).
3. В области Type (Тип) выберите Property (Свойство).
4. В области Scope (Область) выберите Public (Общая).
5. Нажмите на клавишу OK, и в соответствующем окне отобразится код,

представляющий структуру свойств Let и Get.

8

Рис. 1.5.  Диалоговое окно Add Procedure (Добавление процедуры)

Браузер объектов

Свойством называется специальная пара функций, предназначенных для эмуляции
одного атрибута класса при использовании класса другой программой. Одна из
функций предназначена для считывания значения, а другая – для записи значения.
Нажмите на клавишу F2 для открытия специального окна просмотра Object Browser
(Браузер объектов) – это интерфейс ко всем программным элементам проекта,
открытого в VB IDE. На рисунке 1.6 в левом верхнем поле со списком выбрана
библиотека ConfigSeat, а в списке Classes (Классы) в левой части окна содержится
класс clsChair.

Рис. 1.6. 

9

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

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

Значение color представляет собой строку, описывающую цвет стула, поэтому в
верхней части кода класса объявим частную (private) строковую переменную с именем

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

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

В листинге 1.1 приведен код, реализующий класс clsChair.

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' constants to class

Private Const DEFAULT_COLOR = "Brown"

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' locals to class

'holds the color of the chair
Private m_scolor As String

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

10

Доступ онлайн
1 000 ₽
В корзину