WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 |   ...   | 3 | 4 || 6 |

«Сертификационные экзамены 70-310 и 70-320 Разработка Web-сервисов XML и серверных компонентов на Visual и Visual Официальное пособие Microsoft для самостоятельной подготовки Москва 2004 УДК ...»

-- [ Страница 5 ] --

while (n1 <= result - result * n1 1;

return result:

} private void longtask() { while При Web-сервисов XML в Visual Studio среда разработчика авто матически создает синхронную и асинхронную версии Web-методов для клиентских при ложений;

при использовании компиляторов командной строки асинхронные версии Web-методов следует генерировать при помощи утилиты WSDL. Ниже код Windows-приложения, которое вызывает метод Factorial Service! синхрон но и асинхронно:

Visual Basic Public Class Inherits Private svcs As Private Sub sender As e As Handles End Sub Private Sub sender As ByVal e As 2 Создание Handles Dim cb As New Dim ar As = cb, End Sub Public Shared Sub callback(ByVal As Dim svcs As svcs = Dim result As Double = End Sub Private Sub As e As Handles svcs New End Sub End Class Visual using System;

using using using using using namespace /// /// Summary description for Forml.

/// public class Forml :

{ internal internal /// /// Required designer variable.

/// private components = null:

private svcs:

private void sender, System, EventArgs e) { private void sender, e) 400 Расширение Web-сервисов XML пава { cb = new AsyncCallback(callback);

lAsyncResult = cb, svcs):

private void sender, e) svcs - new public static ar ) { svcs;

svcs = double - svcs.

} } 3 Применение расширений SOAP Занятие 3. Применение расширений SOAP Расширения SOAP позволяют читать и сообщения SOAP, которыми Web-сервисы XML обмениваются со своими клиентами. На этом занятии вы познако митесь с расширениями SOAP, а также научитесь создавать расширения и их Web-сервисам Изучив материал этого занятия, вы сможете:

рассказать, что такое расширение SOAP;

создавать расширения SOAP;

сопоставить расширение SOAP Web-сервису XML.

Продолжительность занятия — около 40 минут.

Обзор расширений SOAP Web-сервис XML обменивается с клиентом данными Б виде сообщений SOAP, которые включают описание или их результатов. Чтобы пол учить данные с сервера, на котором работает Web-сервис XML, клиент передает серверу запрос SOAP. Этот запрос должен быть в формате, Web-сервису, который обрабатывает этот запрос и передает клиенту отклик. Получив отклик SOAP, клиент интерпретирует и няет заданное действие. Для чтения и модификации сообщений SOAP, которыми Web сервис XML обменивается со своими клиентами, применяют расширения SOAP. Эти расширения позволяют проверять допустимость SOAP-сообщений до их получения Web сервисом XML, а проверив, по необходимости чтобы XML получал только корректные запросы;

через расширения SOAP можно добавить к суще Web-сервису XML функцию шифрования или сжатия.

Когда клиент вызывает Web-метод сервера, запрос в сообщение SOAP и передается по сети в виде запроса SOAP. На сервере запрос SOAP Исполнив вызванный сервер формирует сообщение SOAP, его и от правляет по сети как отклик SOAP. Прежде чем клиентское приложение сооб щение SOAP, SOAP на стороне клиента. Таким образом, и происходят как на стороне клиента, так и на стороне серве ра. Расширения SOAP применяют для исполнения различных операций, таких как про верка и модификация сообщений SOAP как до фазы так и после нее. Примером может быть расширение, шифрующее и расшифровывающее сообщения SOAP, причем шифрование сообщения выполняется лишь после его инфраструктурой ASP.NET, а расшифровка — до сообщения на стороне сервера. Этапы, в ходе которых расширение SOAP может проверять и моди фицировать сообщения, определяются перечислением SoapMessageStage (табл.

Табл. 8-1. Элементы перечисления SoapMessageStage Имя Когда наступает этап Сразу после десериализации SoapMessage из сообщения SOAP в Между сериализацией SoapMessage и отправкой SOAP по сети Перед SoapMessage из полученного сети re Перед сериализацией SoapMessage Расширение XML Глава S Если расширение SOAP модифицирует сообщение SOAP, данное изменение должно и на стороне клиента, и на стороне сервера. Причина в том, что если сообщение было зашифровано после сериализации, то перед его необходимо расшифровать, иначе инфраструктура ASP.NET не сможет его зовать. Поэтому любые модификации, вносимые в сообшения SOAP на стороне клиен та, необходимо воспроизводить на сервера, и наоборот.

Создание расширений SOAP Чтобы создать расширение SOAP, сделайте • создайте класс, производный от • сохраните ссылку на класс Stream, будущие сообщения SOAP;

• инициализируйте данные, для расширения SOAP;

напишите код для обработки сообщений SOAP на соответствующих этапах, задан ных перечислением Soap Message • настройте расширение SOAP для работы с нужными методами XML.

класса, производного от SoapExtension Чтобы задействовать в классе функциональность расширения SOAP, он должен быть объявлен на базе класса Если вы создаете шифрующее расширение SOAP, в его классе алгоритм ши фрования.

Сохранение ссылки на объект Stream Чтобы сообщения SOAP, сначала следует получить ссылку на поток с их содержимым. После этого необходимо переопределить метод чтобы он вносил нужные изменения в содержимое сообщений SOAP. Метод ChainStream предо ставляет доступ к сообщениям с запросами и откликами SOAP, в памя ти. Ссылка на поток с или откликом SOAP передается методу ChainStream как параметр перед каждым этапом После обработки сообщения расши рением SOAP у этого объекта Stream будет ссылка на XML-данные сообщения SOAP.

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

Не следует изменять объект Stream, переданный методу ChainStream, с помощью расширения SOAP. Вместо этого необходимо создать новый экземпляр объекта Stream, записать его в закрытую переменную, скопировать в него содержимое сообщения SOAP и его вызывающей программе через метод ChainStream. По мере модификации сообщения при переходе от одного этапа SoapMessageStage к другому (рис. расши рение SOAP должно данные из объекта Stream, переданного методу ChainStream, и записывать данные в аналогичный объект, который этот метод вер нет. Таким образом, методу ChainStream требуются две ссылки на объект Stream.

Рис. 8-1. Модификация SOAP расширения SOAP 3 Применение расширений SOAP Ниже показана стандартная метода ChainStream.

Visual Basic Imports Public Class TraceExtension Inherits Public Overrides Function As Stream) As Stream Сохраняем переданный объект Stream в переменной-члене = Создаем новый экземпляр объекта Stream и его в переменную-член.

newStream = New Return End Function Class Visual C# using using public class TraceExtension : SoapExtension { public override Stream { // Сохраняем переданный объект Stream в переменной-члене existingStream = defaultStream;

// Создаем новый экземпляр объекта Stream и // его переменную-член.

newStream = new return newStream;

Инициализация служебных данных расширения SOAP Расширения SOAP позволяют определять и инициализировать внутренние данные для различных Web-сервисов XML и Web-методов, с которыми работают эти расширения.

Например, так можно и инициализировать файл, в котором расширение SOAP будет регистрировать сообщения, которыми обменивается некоторый метод Web-серви са Класс-потомок SoapExtension поддерживает два — и Initialize. Метод вызывается только при первом вызове Web сервиса XML или метода. При настройке расширения SOAP с помошью 404 Расширение XML Глава инфраструктура вызывает метод Getlnitializer каждом вызове Web-серви са а если для настройки расширения используется файл, ASP.NET вызывает Gel Initializer только при первом вызове Инфраструк тура данные, которые расширение SOAP после вызова Getlnitializer, и передает их этому расширению через метод Initialize всякий раз, когда оно исполняется с Web-сервисом XML или его методом.

Обработка сообщений SOAP Самое важное в классе SoapExtension — реализация метода SoapExtension.ProcessMessage.

На каждом из этапов, определенных перечислением вызы вает данный метод несколько раз. При вызове методу SoapExtension.ProcessMessage редается объект или от него класса, содержащий сведения о сообщении SOAP на данном этапе обработки. Если расширение SOAP выполняется внутри Web-сервиса в качестве параметра передается Если рас ширение SOAP выполняется под управлением клиента Web-сервиса в параметре передается объект Message.

Ниже приводится код метода ProcessStage, который принадлежит расширению SOAP, отслеживающему вызовы Web-сервиса XML. Обнаружив параметров в на одном из этапов SoapMessageStage, этот метод записывает результирующие XML-данные в файл.

Visual Basic Public Overrides Sub As SoapMessage) Select Case Case Case Записываем сообщение SOAP в файл Case ' Записываем сообщение SOAP в файл Case Case Else Throw New stage") End Select End Sub Visual C# public override ProcessMessage(SoapMessage message) { switch { case break;

case // Записываем сообщение SOAP в файл message ):

3 расширений SOAP break;

case // Записываем сообщение SOAP в файл message );

break;

case throw new Сопоставление расширений SOAP методам Web-сервисов XML настройки исполнения расширения SOAP применяют нестандартные атрибуты и конфигурационные файлы. Нестандартными атрибутами помечают все методы Web-сер виса с которыми должно работать расширение SOAP. Если же для настройки ис пользуется файл, расширение SOAP работает со всеми Web-серви сами XML, которые попадают в область действия данного конфигурационного файла.

Чтобы нестандартный атрибут, класс, от SoapExten У этого класса есть два свойства — ExtensionType и Priority, первое возвра тип расширения SOAP, а второе — его относительный приоритет (подробнее об этом — ниже).

Чтобы расширение SOAP работать со всеми Web-сервисами которые находятся в области действия файла к нему эле менты. Так, в раздел webServices следует добавить XML-элемент а к нему — XML-элементы, по одному на каждое расширение которое должно работать со всеми Web-сервисами XML, подконтрольными данному конфигу рационному файлу. Свойства элемента перечислены в 8-2.

Табл. 8-2. Свойства XML-элемента Имя Что задает Туре Тип расширения SOAP Priority Приоритет расширения SOAP в пределах группы Group Группу, к которой относится расширение SOAP Расширениям SOAP назначают приоритет, определяющий относительный порядок их выполнения в случаях, когда одному методу Web-сервиса XML сопоставлено несколь ко расширений SOAP. Приоритетные SOAP раньше получают доступ к нятым или отправляемым SOAP. Для расширений SOAP выделяют три группы приоритетов:

• расширения SOAP, сконфигурированные при атрибутов;

• расширения SOAP, для которых в конфигурационном файле задано Group = • расширения SOAP, для которых в конфигурационном файле задано Group = 1.

В пределах группы расширения SOAP различаются по значению свойства Priority:

чем оно меньше, тем выше приоритет. Наивысший приоритет соответствует значению 0.

Ниже показан пример конфигурационного файла, который назначает расширению SOAP с именем группу 0 и приоритет, равный I.

Расширение XML XML Замятие 4 и Занятие 4. Конфигурирование и защита Web-сервисов На занятии вы узнали, как наделить дополнительными воз можностями при помощи расширений SOAP, и научились настраивать Web-сервисы средствами Studio через файл На этом занятии вы познакоми тесь с элементами файла Web.conflg и научитесь применять их для конфигурирования и зашиты Web-сервисов.

Изучив материал этого занятия, вы сможете:

описать структуру файла Web.conflg;

сконфигурировать Web-сервис при элементов файла обеспечить безопасность Web-сервиса.

Продолжительность занятия - около 30 минут.

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

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

• Web-сервер запрещает прямой доступ к файлу Web.config и возвращает любому бра запросившему этот файл напрямую, ошибку HTTP 403.

Файл Web.config, сопоставленный Web-сервису, хранится в его Web-папке и выгля дит примерно так:

возможностей * XML • /> /> /> /> /> .

Конфигурирование Web-сервисов средствами файла Как вы уже знаете, файл состоит из XML-тэгов с атрибутами, ми параметры конфигурации, которые в корневые тэги и Для конфигурирования Web-сервисов применяют атрибуты:

— задает компилятор и сообщает, нужно ли включить отладку Web сервиса. Чтобы вставить в скомпилированную отладочные символы (из.pdb-файла), установите атрибут debug в True. Например, тэг defaultLan /> задаст Visual Basic как язык по умолчанию и разрешает отладку Web-сервиса • — управляет нестандартными сообщениями об ошибках. Чтобы разрешить их использование, установите атрибут mode в On или RemoteOnly (на пример, />), а чтобы запретить — в Off;

• — определяет правила аутентификации пользователей для прило жения;

возможные значения его атрибута mode — Windows, Forms, Passport или None.

Заданные правила, например />, будут применять ся для пользователей • — определяет для Web-сервиса политику авторизации, запрещаю щую или разрешающую определенным пользователям доступ к нему. Чтобы открыть доступ всем пользователям, включая анонимных и не прошедших аутентификацию, атрибут users в «*» или например: ;

• — включает трассировку Web-сервиса на уровне при которой в журнале трассировки регистрируются сведения о каждой из страниц 4 и защита Чтобы разрешить запись трассировочных данных для приложения, установи те атрибут enabled в True: ;

• — определяет параметры глобализации для Web-сервиса, например />.

В файле Web.config также определяют параметры, обеспечивающие безопасность Web-сервиса, подробнее о них — в разделе, Защита Web-сервисов Для зашиты Web-сервиса используют тэги /> и />. опре деляемые в файле Web.config.

Аутентификация Политику аутентификации для Web-сервисов реализуют при помощи специаль ных компонентов — провайдеров или поставщиков (providers), дополняющих схемы аутентификации Web-сервисам XML доступны следующие режимы аутентифи кации:

• Windows — режим по умолчанию. Подлинность клиента проверяет I1S, после чего передает Web-сервису маркер защиты (security token). Задейство вать механизмы аутентификации Windows можно так:

outhentication /> • Forms — позволяет Web-сервису получать учетные данные прямо от через регистрационную HTML-форму. Клиент передает учетные данные Web-сервису для проверки. Если проверка проходит успешно, Web-сервис генерирует для клиента файл cookie, который используется клиентом для доступа к Web-сервису. Если в за просе к сервису отсутствует cookie, клиент направляется на стра ницу регистрации, заданную в файле. Аутентификация при мощи форм включается так:

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

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

Outhentication /> • None — применяется, если проверка пользователей не требуется или используется нестандартный механизм аутентификации;

включается об разом:

Outhentication /> Помимо режима аутентификации для зашиты Web-сервиса определяют, какие поль зователи и роли обладают правом доступа к нему.

возможностей XML Авторизация Внутри тэга /> перечисляют пользователей и роли, доступом к Web-сервису. Данный поддерживает как разрешительную (которая разрешает доступ только определенным пользователям и ролям), так и запретительную (она запрещает доступ заданным и ролям, разрешая его всем Таким образом, с тэга /> можно предоставить или запретить доступ к Web-сервису конкретным пользователям и членам заданных ролей.

Чтобы указать, каким ролям и пользователям предоставляется доступ к Web-серви су, добавьте к элементам и , расположенным ннутри в файле Web.config, списки соответствующих и ролей. Вот как это дела ется:

Вместо идентификаторов пользователей и ролей также разрешается применять сим волы и — они позволяют предоставить или запретить доступ всем либо аноним ным соответственно. Например, так можно запретить доступ к сервису всем, кроме пользователя Nancy:

/> Резюме • Атрибут позволяет клиентскому приложению вызывать методы виса XML с использованием стандартных протоколов Интернета. Этот атрибут держивает свойства Description, EnableSession, geName и TransactionOption, которые позволяют настраивать методы Web-сервисов и управлять ими.

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

• Расширения SOAP позволяют читать и модифицировать SOAP, которыми Web-сервисы обмениваются со своими клиентами. С помощью расширений SOAP можно проверять допустимость сообщений SOAP до получения их Web-серви сов XML, и по необходимости модифицировать их, чтобы Web-сервис XML получал только корректные запросы SOAP. Расширения SOAP также позволяют снабдить су ществующие Web-сервисы XML шифрования и сжатия.

• Параметры конфигурации Web-сервисов указывают в файле — кон фигурационном файле Web-приложений и сервисов ASP.NET.

Практикум транзакций, и расширений SOAP Практикум 8. Реализация транзакций, асинхронных методов и расширений SOAP Цель практикума — создать Web-сервисы и настроить их Web-методы с помощью свойств атрибута Кроме того, вы попрактикуетесь в создании Web-методов, поддерживающих транзакции, и применении расши рений SOAP регистрации сообщений SOAP, которыми обмениваются Web-сервис и клиентское приложение. В завершение вы дополните кли ентское приложение асинхронными версиями Web-методов. Решение задач этого практикума находится на прилагаемом компакт-диске.

Продолжительность практикума — около Упражнение Создание БД и таблицы Authors Сейчас вы создадите БД LabTest и таблицу Authors — они потребуются вам выполнения упражнения 2.

Создание БД LabTest 1. Щелкните кнопку Start (Пуск) и в меню Microsoft SQL Server выберите Enterprise Manager.

2. Раскройте узел своего сервера БД SQL Server, найдите узел Databases, щелкните его правой кнопкой и выберите New Database, как показано ниже.

He feet Л 3. В диалоговом окне Database Properties введите в поле Name LabTest и щелкните OK — будет создана БД LabTest (см. рис. ниже).

Расширений возможностей Глава Space 4. В меню Start | Microsoft SQL Server выберите Query Analyzer и введите учетные дан ные для подключения к вашему серверу БД.

5. В окне Query Analyzer выберите из списка БД LabTest.

6. Исполните SQL-сценарий if exists * from where id = and = 1) drop table GO if not exists (select * from where id = object_id( and = 1) BEGIN CREATE TABLE ( [au_id] NOT NULL, [char] (20) NOT NULL, (20) COLLATE NOT NULL, [Phone] [char] COLLATE NULL, [Address] [char] (40) COLLATE NULL.

[State] [char] (10) COLLATE NULL, [Zip] (10) COLLATE NULL ) ON [PRIMARY] END G ALTER TABLE WITH ADO Реализация и SOAP CONSTRAINT PRIMARY KEY CLUSTERED ( ) ON [PRIMARY] GO 7. В окне Enterprise Manager просмотрите узел и убедитесь, что таблица Authors создана.

Упражнение 2. Реализация поддержки транзакций В этом вы создадите Web-метод, чтобы на его разо браться в свойства атрибута Visual Basic или Web-сервиса XML Запустите Visual Studio и в меню File New Project.

2. В открывшемся окне на панели Templates выберите ASP.NET Web Service, a тексто вое поле Location 3. Переименуйте файл Service l.asmx Trans В окне Solution Explorer файл правой кнопкой и в контекстном меню выберите View Code для просмотра кода Web-сервиса. Добавьте к нему Web-метод Basic Public Function As String) Dim As String "DELETE FROM authors WHERE _ + lastName + Dim As String "DELETE FROM author & "WHERE + ' + lastName + ' As New & + Dim deleteCmd As New sqlConn) Dim As New См. комментарии к следующему листингу Dim Result Integer = Result sqlConn.

Return Result End Function S •' Visual public int { String = FROM authors WHERE + lastName + ;

String = "DELETE FROM author + lastName + :

- new + new - new // Эта команда строку из таблицы authors.

// не генерируя исключений.

// Следующая команда генерирует исключение, поскольку таблица author // не существует, в результате команда автоматически // Поскольку этот Web-метод участвует в транзакции и генерирует // исключение. автоматически При этом // метод deleteCmd тоже хоть и не генерирует искпючений.

int Result = return Result;

} 4. Щелкните узел References правой кнопкой и в контекстном меню Add Reference — откроется одноименное окно. Перейдите на затем щелкните ОК, чтобы к проекту ссылку на имен 5. В начало кода поместите следующие строки;

Visual Basic Imports Imports Visual C# using using 6. В меню Build выберите Build чтобы проект Реализация и расширений Упражнение 3. Добавление расширения SOAP к Web-сервису Сейчас вы создадите и с помощью атрибута Web-метода со поставите ему расширение SOAP.

Создание Web-сервиса 1. Запустите Visual Studio и в меню File выберите New Project.

2. В открывшемся окне на панели Templates выберите ASP.NET Service, а в тексто вое поле Location введите 3. Переименуйте файл l.asnix SoapEx.asmx. В окне Solution Explorer щелкните файл SoapEx.asmx правой кнопкой и в контекстном меню выберите View Code для просмотра кода Web-сервиса. Замените его содержимое кодом:

Basic System Imports Imports Public Class SoapEx Inherits Services Designer Generated Code call is required by the Web Services Designer.

End Sub by the Web Services Private components As The tollowing procedure is required by the Web Services It can be modified using the Web Services Designer.

not modify it using the code editor.

)> Private Sub components - New End Sub Protected Overloads Sub Boolean) This procedure is required by the Web Services Designer Расширение возможностей XML Глава not modify it using the code editor.

If Then If Not (components Is Nothing) Then components. DisposeO End If End If End Sub flEnd Region Public Function SoapTest(ByVal message As String) As String SoapTest I got this message from you;

& message End Function End Class Public Class TraceExtension Inherits SoapExtension Private oldStream As Stream Private newStream As Private As String Сохраняем представляющий запрос или отклик в локальный буфер.

Public Overrides Function stream As Stream) As Stream oldStream = stream newStream = New Returp newStream End Function Когда впервые вызывает расширение происходит обращение к методу Web-сервиса которому назначено данное с целью сохранения переданного имени файла с использованием соответствующего атрибута SoapExtensionAttribute.

Public Overloads Overrides Function As attribute As SoapExtensionAttribute) As Object End Function методов и расширений SOAP Возвращаем имя файла, из имени класса, реализующего тип Public Overloads Overrides GctInitializer{ByVal WebServiceType As Type) As Object Возвращаем имя файла, созданное из типа.

Этот файл нужен для записи трассировочных данных.

Return & End Function Получаем имя файла, сохраненное методом и записываем его в переменную-член данного экземпляра.

Public Overrides Sub Initialize(ByVal initializer As Object) = End Sub Если на текущем этапе SoapMessageStage или SoapResponse содержит принятые или передаваемые данные формате записываем их в файл.

Public Overrides Sub message As Select Case Stage Case Case Case Case Case Else Throw New stage") Select End Sub Записываем сообщение SOAP в файл.

Public Sub message As SoapMessage) - Dim fs As Dim As New at + fs) = End Sub Записываем сообщение SOAP в файл.

Public Sub WriteInput(ByVal As SoapMessage) XML Dim fs As New Dim w New Request at + Position = fs) - End Sub Sub As Stream. As Stream) Dim reader As New Dim writer As New End Sub End Class Создаем для нашего расширения SOAP атрибут который можно будет к методу Web-сервиса XML.

Public Class Inherits SoapExtensionAttribute Private As String = Private As Integer Sub New() = End Sub Public Overrides Readonly Property As Type Get Return End Get End Property Public Overrides Property As Integer Get Return End Get Value As Integer) = Value End Set End Property Практикум транзакций, и SOAP _ _ _ _ Public Property As String Get Return m_filename End Get Set(ByVal Value As String) = Value End Set End Property Class Visual using using using using using using using using using SoapEx { ///. Summary description for public class SoapEx :

public { ffregion Component generated code // Required by the Web Services Designer private IContainer = null;

/// /// Required method for Designer support - do not modify /// the contents of this method with the code editor.

/// private void i 420 XML /// /// Clean up resources being used.

/// protected override void Dispose( disposing } !

!= null) { } tfendreg^on • public string { return "Hey. I got this message from you: + message:

} \ public ;

SoapExtension { Stream Stream string filename;

// Сохраняем обьект представляющий запрос // или отклик в локальный буфер.

public override Stream stream ) = stream:

newStream = new return newStream;

// Когда система впервые вызывает расширение SOAP, происходит // обращение к методу Web-сервиса которому назначено данное // с целью сохранения переданного имени файла // с использованием соответствующего атрибута // public override object { return Реализация и расширений SOAP // Расширение SOAP сопоставлено через конфигурационный // а не атрибут Web-метода.

// имя созданное из имени класса.

// реализующего тип Web-сервиса.

public override object WebServiceType) { // имя файла, созданное из имени типа.

// Этот файл нужен для записи данных.

return + // Получаем имя сохраненное // и записываем его в переменную-член данного экземпляра.

public override void { filename - (string) initializer:

// Если на текущем этапе // или принятые или передаваемые данные // в формате записываем их в файл.

public override void message) { switch { case break;

case break:

case break;

case break:

throw new public void message) { = 0:

fs w new StreamWriter(fs):

Расширение XML string soapString is ?

:

w. + soapString + at + fs);

0;

public message) { fs new w string soapString - (message is SoapServerMessage) ?

:

+ soapString + at + = 0:

= 0:

void Stream to) { reader = new writer = new // Создаем нашего расширения SOAP атрибут // который можно будет применить к методу Web-сервиса public class : SoapExtensionAttribute private string filename = private priority;

public Реализация методов и SOAP _ _ filename public override Type { get { return } get { return priority;

set { priority - value:

public string Filename { get { return filename:

} set { filename - value:

4. В меню Build выберите Solution, чтобы скомпилировать проект Web-сервиса.

Упражнение 4. Создание клиента для Web-сервиса XML Ваша задача — создать для Web-сервиса клиентское ние, которое будет вызывать метод с атрибутом, расшире ние SOAP.

Создание Windows-приложения 1. Запустите Visual Studio и в меню File выберите New 2. В открывшемся окне на панели Templates выберите Windows Application, а в тексто вое поле Name введите 3. Переименуйте файл Forml.vb (Forml.cs) в SoapExClient.vb (SoapExClient.cs). Щелк ните файл SoapExClient.vb (SoapExClient.cs) правой кнопкой и в контекстном меню выберите View Code для просмотра кода. Замените его содержимое следующим кодом:

Visual Basic Public Class Inherits 15 Разработка XML...

424 Расширение возможностей XML Windows Form Designer generated code Public Sub New() call is required by the Windows Form Designer.

End Sub overrides dispose to clean the component list.

Protected Overloads Overrides Sub Dispose(8yVal disposingAs Boolean) If disposing Then If Not (components Is Nothing) Then End If End If End Sub by the Windows Form Designer Private components As System. IContainer The following procedure is required by the Windows Form It: can be modified using the Windows Form Designer.

not modify it using the code editor.

Friend WithEvents btnLog As )> Private Sub = New Me.

= New 24) - "btnLog" = New 23) - = "Log SOAP Data" = New 13) New 77) Name =•• транзакций, и расширений SOAP "Soap Extension Client" End Sub flEnd Region Private Sub sender As e As Handles Dim ws As New Dim s As String s the client message") End Sub Class C# using System;

using using using using using SoapExClient { /// /// Summary description for /// public class SoapExClient :

private btnLog:

///

/// Required designer /// private components = null:

public { Расширение XML * Глава { if{ disposing ) { if { } t disposing );

tfregion Windows Form Designer code /// method Designer support - do not modify /// the contents of method the code editor.

/// private void { = new System. Windows. Forms.

// // // = new 32);

"btnLog";

- new 23);

= 0:

= "Log Soap Data";

this.

this. = new 13);

= new 93);

{ = "Soap Client";

/// The entry point the application.

транзакций;

static void } private void sender, System. e) - new string s = are Примечание В проекте Basic потребуется изменить стартовый Для это го проект правой кнопкой и в меню выбери те — откроется диалоговое окно свойств где в списке Startup Object нужно 4. на сервис Для этого правой кнопкой узел References в дереве (SoapExClientCS) и в меню Add Web — откроется диалоговое окно. В нем дите Ex.asmx и нажмите Enter. Когда Web-сервис появится в списке щелкните кнопку Add Reference.

5. В меню Build выберите команду Build чтобы проект.

6. Нажмите F5, чтобы приложение.

Упражнение 5. Асинхронный вызов Web-методов Это упражнение позволит навыки использования синхронных и асинхронных методов Web-сервиса.

Запустите Visual Studio и проект ASP.NET Web Service. В поле введите 2. классу 1 Web-сервиса следующий код:

Visual Basic Imports Services Designer Generated Code 428 Расширение XML Глава В Public Sub New() call is by the Web Services Designer.

End Sub by the Web Services Designer Private components As The following procedure is required by the Web Services It can be modified using the Web Services Designer.

not modify it using the code editor.

Private Sub components = New End Sub Protected Overloads Overrides Sub Dispose(ByVal disposingAs Boolean) 'CODEGEN: This procedure is required by the Web Services Designer not modify it using the code editor, If disposing Then If Not Nothing) Then End If End If End Sub Region Public Function As Dim ds As New Dim As New Return ds End Function _ Public Sub setData(ByVal ds As Dim As New Практикум Реализация методов и расширений SOAP End Sub End Class using System;

using using using using using namespace CSDataService { /// /// Summary description for /// public class Service! :

public { ffregion Component Designer generated code // Required by the Web Services Designer private = null:

Required method for Designer - do not modify /// the "contents of this the code editor.

private void /// Clean up any resources being used.

protected override void Dispose( disposing 430 XML { } } flendregion public DataSet !

DataSet = new - new reader.

return ds:

[WebMethodO] public void as } { xmlwriter new xml 3. В меню Build выберите Build Solution.

4. Windows-приложение с именем н добапьте к следующий код:

Basic Class Inherits Private As Private ds As DataSet tfRegion Windows Designer generated code Public Sub call is by the Windows Form Designer.

и расширений SOAP any initialization after the End Sub overrides to clean up the component list.

Protected Overloads Overrides Sub disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.

If End End Sub by the Windows Designer Private components As The following procedure is required by the Windows Form It can be modified using the Windows Form Designer.

modify it using the code editor.

Friend As Friend WithEvents Text8ox1 As Friend WithEvents As Friend WithEvents As Friend WithEvents As Friend WithEvents setDataSync_Button As Private Sub InitializeComponentO = New New Button() New = New = New = New 24) = = New 23) = = Synchronously" New 24) = 432 Web-сервисов XML Глава В = New 23) = System.

72) = = New 168) = New 72) - True = "TextBoxl" = New 168) = New 272) = = New 23) = "setData Asynchronously" = New 272) = = New 23) = = "setData Synchronously" New 13) = New 309) = "Forml" = и расширений SOAP False) End Sub flEnd Region Private Sub Form1_Load(ByVal sender As ByVal e As Handles svcs New ds New DataSet() End Sub Private Sub sender As ByVal e As Handles = Nothing ds End Sub Private Sub sender As ByVal e As Nothing ds = Nothing Dim cb As New Dim ar As lAsyncResult = svcs) End Sub Private Sub sender As ByVal e As Handles End Sub Private Sub sender As ByVal e As Handles Dim cb As New Dim As lAsyncResult = cb. svcs) End Sub Public Sub callback1(ByVal As lAsyncResult) ds = Received & "Click the to display the End Sub Public Sub As lAsyncResult) возможностей XML Глава applied End Sub Private sender As e As = ds End Sub End Class Visual using System:

using using using using namespace CSApplication /// /// Summary description for Forml.

/// public class Forml :

internal internal internal internal internal Windows. Forms. Button internal /// /// Required designer variable, /// private = null:

private svcs:

private DataSet ds;

public Form!() /// /// Clean up any resources being used, ///

protected override void Dispose( disposing ) ttregion Windows Designer generated code /// Required method Designer support - do not modify the contents of this method code editor.

private void { this. new System. Windows. Forms.

new = new this. = new System. Windows. Forms.

- new System. Windows.

new Forms. ButtonO;

(this.

- new 279);

= new 23):

= 11;

= += new // // // this. Location = new Drawing. Point(26, 279). this. setDataSync_Button. Name = = new = 10;

new System.

Расширение возможностей XML // TextBoxl // - 79):

- "TextBoxl";

- new 168):

9;

= // // DataGridl // = = = new 79);

- "DataGridl":

= new 168):

= 8;

+=.

// // // new Point(206. 31):

new 23);

= 7:

= += new // // getDataSync_Button // = new 31):

= new - 6;

"getData Synchronously";

new // // // = new 13);

= new 333);

{ Реализаций методов и SOAP "Forml":

this. Load += new System.

} /// /// The entry point the application.

/// static Main() { } private void sender, e) { svcs = new ds = new DataSet();

} private void sender. System. e) { = null;

= ds;

private sender. e) { null:

ds = AsyncCallback cb new ar svcs);

} private void sender, e) { } private void e) AsyncCallback cb new AsyncCallback( lAsyncResult ar cb, svcs) Расширение XML Глава } public ) { = + "Click the to display the } public void } { applied } private void DataGrid1_Click(Object sender. e) { = ds:

5. Добавьте Web-ссылку на Web-сервис Для этого кнопкой узел References в дереве проекта и в контекстном меню выберите Add Web Reference — откроется одноименное диалоговое окно. В нем вве Servicel.asmx) и нажмите Enter. Web-сервис появится в списке Available Refe rences, щелкните кнопку Add Reference.

Примечание При компиляции проекта сервиса Visual Studio автоматически здаст синхронную и асинхронную версии Web-методов, 6. В меню Build выберите Solution.

7. В меню File выберите команду Add New Item — откроется одноименное окно.

8. На панели Templates XML File и в поле Name введите Затем в файл следующий код:

расширений SOAP 15 55 > 9. Сохраните файл в каталоге 10. Запустите Windows-приложение. Щелкните на форме кнопку GetData Synchro nously и попробуйте поработать с интерфейсом (см. рис. ниже). Интерфейс останет пока метод сервиса Servicel не вернет данные.

Отредактируйте в сетке сведения о товарах, кнопку SetData Synchronously, и попробуйте поработать с интерфейсом — повторится.

12. Снова измените в сетке сведения о товарах, кнопку Data и попробуйте поработать с интерфейсом клиента еше раз. Это вам удастся, посколь ку метод Web-сервиса выполняется асинхронно.

13. Попробуйте аналогичным образом асинхронно выполнить метод кнопку GetData Asynchronously — вы сможете работать с интерфейсом во вы полнения и этого метода.

440 Расширение XML Глаеа Закрепление материала Приведенные ниже вопросы помогут вам лучше усвоить основные темы дан ной главы. Если не сумеете ответить на повторите материал соот занятия. Ответы для самопроверки — в приложении А «Вопро сы и ответы» в конце книги.

Какое из свойств атрибута позволяет Web-методу сохранять состояние объектов между сеансами?

2. Как разрешить поддержку в Web-методе?

3. В каких случаях применяют асинхронные вызовы?

4. Как реализовать асинхронный обратных вызовов?

5. Какой метод вызывается при обращении к Web-сервису XML или его методу, которым сопоставлено расширение SOAP?

6. Перечислите свойства XML-элемента.

7. Какие элементы файла управляют нестандартными сообщени ями об ошибках?

8. Как разрешить доступ к Web-сервису только уполномоченным на это пользователям?

Тестирование и отладка Web-сервисов XML Занятие Составление плана блочного тестирования Занятие 2. отладочных средств Visual Занятие 3. Программные средства отладки Занятие 4. Создание и применение сопутствующих сборок Практикум 9. Трассировка и отладка Закрепление материала В этой главе Тестирование и отладка занимают важное место разработки приложений. Плат форма Framework предоставляет инструментальные средства для тестирования и отладки приложений перед классы для мониторинга производитель ности приложений и устранения после развертывания. Из этой главы вы узнаете, как составить план тестирования и научитесь пользоваться программным инструментарием, включая отладочные средства и трассировки.

Прежде всего Для изучения материалов этой главы вам потребуются:

• навыки программирования на Visual Basic или • знание материала, изложенного в главах.

442 и отладка Занятие Составление плана блочного тестирования На этом вы с процедурой тестирования, почему оно необходимо, и различные типы f Изучив материал этого занятия, вы сможете:

почему тестирование ПО настолько важно;

перечислить и описать различные типы составить план тестирования.

Продолжительность занятия — около 25 минут.

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

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

• стоимость разработки Известно, что исправление ошибок в приложении обходится дороже внедрения полного тестирова ния в цикл разработки;

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

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

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

Выделяют следующие типы тестирования:

• тестирование на соответствие техническим — проверка приложения на требованиям, указанным в его спецификации;

• тестирование удобства использования — оценка простоты и удобства в использова нии. Включает проверку предоставляемой пользователю информации и удобства работы с пользовательским интерфейсом приложения;

1 плана блочного • блочное тестирование — проверка работы наименьших частей (блоков) приложения.

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

(stub) — это программа, эмулирующая блок, тестируемым блоком;

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

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

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

при сборке протестированных моду лей приложение не должно содержать ошибок.

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

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

Составляя требования, не забывайте о контрольных примерах для Контрольный (testing состоит из входных данных и соответствующих резуль татов, вычисленных вручную. Занимаясь разработкой контрольных примеров, каждый пункт требований, чтобы понять, как хорошо он поддается проверке с контрольных примеров. Это полезно еще и тем, что дает повод для критического анализа требований к приложению.

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

444 и отладка Глава Чтобы создать эффективный и выполнимый план тестирования, необходимо тельно программу, не упустив ни один из ее модулей. План устана вливает организованный процесс тестирования, строго по графику.

Подходы к планированию тестирования Есть два метода планирования тестирования приложений: каскадный и спи ральный.

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

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

Спиральное планирование При подходе (evolutionary approach) каждый созданный блок приложения те стируют, исправляют выявленные недостатки, а затем объединяют с другими блоками, реализующими отдельные Полученные в результате компоненты комплексному тестированию и постепенно их сложность. У спирального подхода следующие преимущества:

• дешевле обходится внедрение и изменений в требованиях, возни кающих по мере углубления понимания технического задания;

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

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

на промежуточных этапах, поиску ошибок, можно обойтись еще меньшими фрагментами плана;

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

Занятие 2 Обзор отладочных Studio Занятие 2. Обзор отладочных средств Studio Итак, вы с созданием и блочного Ис пользование тестовых данных позволяет ошибки и дефекты в приложениях.

Изучив материал этого занятия, вы сможете:

описывать процесс отладки Visual Studio использовать для инструменты и CorDbg.

Продолжительность занятия - около 60 минут.

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

При отладке в Visual Studio отладчик сначала сопоставляет ма шинные коды инструкциям языка 1L, а затем сопоставляет их операторам языка кого уровня с использованием Поэтому для отладки приложений в Visual Studio на каждом этапе компиляции должны генерироваться точные сведения о сопоставлении команд. Активируя режим отладки в Visual Studio всегда следует создавать PDB-файл со сведениями о сопоставлении и машинных команд и приказывать выполнять это Visual Studio выпол няет указанные действия автоматически, если в параметрах компиляции включен дочный режим.

Для поиска и устранения ошибок Visual Studio ин струменты, такие как DbgClr и CorDbg. DbgClr — это отладчик по умолчанию Visual Studio он обладает графическим интерфейсом. В отличие от DbgClr, CorDbg запускают из командной строки.

Отладка с помощью DbgClr Чтобы приступить к отладке приложения Visual Studio в меню Debug Start (рис. 9-1), В результате приложение будет исполнено до точки прерывания, если таковая уста новлена. Дойдя до прерывания, исполнение кода приостанавливается, а прило жение переходит в режим останова (break В этом режиме можно просматривать значения объектов, на них указатель мыши, а также изменять значения пере менных. На рис. 9-2 показано приложение остановленное во время отладки.

Меню Debug содержит команды Step Into и Step Over. При выборе этих ко манд приложение запускается и останавливается на точке прерывания в первой строке кода. Нажав можно продолжить исполнение кода построчно.

Примечание Если решение Visual Studio содержит несколько проектов, можно указать, какой из них следует запускать сделав его стартовым. Для этого ните проект правой кнопкой и в контекстном меню выберите Set As Startup Project.

Глава 446 и отладка I. fflwlnto s • • Рис, 9-1. Меню Debug Рис. 9-2. Приложение в режиме останова точек прерывания и просмотра значений переменных, отладчик Visual Studio предоставляет диалоговые окна, позволяющие изучать и код при ложения.

Обзор средств Studio Окно Watch Окно Watch (рис. 9-3) применяют для вычисления переменных и выражений с сохране нием и обновлением результатов. Чтобы открыть это окно, когда приложение останов лено, щелкните меню Debug | Windows | Watch. Окно Watch также позволяет редактиро вать переменные и содержимое регистров, но не разрешает изменять значения Рис. 9-3. Окно Watch Применение окна Watch Запустите 2. В окне Watch поле Name.

3. в строку имя переменной, регистра или и нажмите Enter Value появится соответствующее значение.

Окно Call Stack Окно Call Stack (рис. служит для просмотра списка функций и процедур, находящихся в стеке. Когда приложение остановлено, вызвать окно Call Stack можно, щелкнув меню Debug Windows | Call Stack.

Рис. 9-4. Окно Stack В окне Call Stack для каждой функции отображается имя и на котором она написана, имя ее модуля, номер строки, смешение в байтах, а также типы и зна ее Чтобы выбрать отображаемую информацию, щелкните окно Call Stack правой кнопкой.

и Окно Locals В окне Locals (рис. 9-5} отображаются локальные переменные в контексте.

Чтобы открыть окно Locals, когда приложение остановлено, щелкните меню Debug Windows | Locals.

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

] I Рис. 9-5. Окно Locals Окно Autos В окне Autos (рис. 9-6) отображаются переменные, используемые в текущем и предыду щем выражениях. При отладке окно Autos отображает переменные из текущего, трех следующих и трех Когда приложение окно Autos можно открыть, щелкнув меню Debug Windows | Autos.

Рис. 9-6. Окно Autos Обзор отладочных Studio Окно Breakpoints Точка прерывания (breakpoint) — это место коде, по достижении которого отладчик приостанавливает исполнение программы. В точке прерывания программа и отладчик находятся к режиме (break mode).

Различные типы точек прерывания срабатывают;

• на заданной строке — исполнение останавливается по достижении строки;

на адресе в файле — программа по достижении в файле;

• на адресе в памяти — прерывается по достижении заданного в памяти;

• при изменении — исполнение останавливается при изменении значения пере менной.

активировать, редактировать и удалять точки пре рывания можно в окне кода или в окнах Disassembly и Breakpoints. Чтобы установить точку в окне кода, найдите нужную функцию и серое поле слева от ее определения либо воспользуйтесь командой меню Debug | New Break Point.

В окне Breakpoints (рис. 9-7) отображается полный список точек прерывания, уста новленных в приложении, с указанием их свойств. Это окно позволяет добав лять, и деактивировать точки прерывания, а также редактировать их свой ства. Чтобы открыть окно Breakpoints, щелкните меню Debug | Windows | Breakpoints.

* (го Рис. 9-7. Окно Breakpoints По умолчанию в окне Breakpoints следующие столбцы.

Name — содержит описательное имя точки прерывания, сгенерированное отладчи ком на основании ее местоположения или иных свойств. При Мате можно найти и выбрать нужную точку прерывания. Устанавливая и снимая флажок слева от имени точки прерывания, ее можно активировать и • Condition — необязательное свойство;

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

• Hit Count — определяет, будет ли остановлена программа по достижении точки прерывания. Если это свойство не установлено и выполняется условие в столбце Condition, отладчик будет останавливать программу всякий раз. точку пре Если свойство Hit Count для точки установлено в л, отладчик и остановит программу, лишь эту точку прерывания в раз;

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

• Language — отображает язык, на котором написана отлаживаемая программа;

• Function — показывает имя в которой находится выбранная точка преры вания;

• File — отображает файла с кодом приложения;

• Address — отображает адрес точки прерывания в памяти;

• Data — показывает данные, для которых установлена точка прерывания;

• Program — отображает имя отлаживаемой программы.

Отладка с помощью CorDbg Помимо DbgClr, отладчика с графическим интерфейсом, в Framework имеется инструмент командной строки CorDbg, производить отладку из команд ной строки. В отличие от DbgClr, CorDbg не компилирует приложение, поэтому при его использовании сначала необходимо скомпилировать приложение с параметром /debug.

При отладке CorDbg использует API периода Debug.

CorDbg позволяет:

• запускать, и возобновлять работающие процессы;

подключать и отключать отладчик от приложения;

• исполнять исходный код и в пошаговом режиме, с заходом и • отображать строки исходного текста;

• устанавливать переменные:

• переходить к заданной строке;

• устанавливать и отображать точки При с помощью CorDbg отлаживается в отдельном се ансе CorDbg. Чтобы начать сеанс CorDbg. введите cordbg в командной строке Visual Sludio Рис. 9-8. Командная строка отладчика CorDbg Приложение для отладки можно когда откроется командная строка CorDbg, либо указать его сразу, задав имя файла приложения в командной строке, например:

Обзор отладочных средств, MyConsoleApp.exe. Запустив сеанс для приложения, можно выполнять действия по допустим, точки включать пошаговое исполнение кода и просматривать значения переменных. Это делают с по других команд CorDbg (табл.

Табл. Наиболее распространенные команды CorDbg Команда Описание a Подключает отладчик к при помощи идентификатора процесса b и отображает точки прерывания;

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

если прерывания] аргумент не определен, удаляет все точки de Отключает отладчик от текущего процесса d Смещает указатель фрейма стека к фреймам, вызванным текущим фреймом, с целью их изучения. Аргумент команды задает число фреймов, на которое необходимо указатель;

если аргумент не определен, смещается на один вниз Ex Останавливает текущий и выходит из CorDbg ! [mod | fu] Аргументы mod. и отображают список модулей, классов или глобальных функций n переход на строку исходного заданную если аргумент не определен, CorDbg переходит на следующую строку Выходит из п вложенных функций;

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

p Аргумент задает имя переменной;

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

если аргумент не определен, переход на следующую строку Скорее всего для отладки приложений вы будете отладчиком CorDbg будет полезен для знакомства с службами общеязыковой испол няющей среды, поскольку CorDbg использует API выполнения Debug, а его исходный текст поставляется вместе с Visual Studio отладка Отладка Web-сервисов XML в Visual Studio Web-сервисы XML отлаживать в период и после развертывания.

Отладка XML в разработки В Visual Studio щелкните File New | Project — появится окно New Project.

2. В окне New на панели Project Types выберите Visual Basic Projects или Visual Projects, а на панели Templates щелкните шаблон ASP.NET Web Service.

3. Щелкните правой кнопкой в окне дизайнера и в контекстном меню View Code — окно Code View.

4. Добавьте к Web-сервису XML следующий простые арифметичес кие Visual Basic Public Class MathService Inherits Здесь должен быть код. генерированный дизайнером Public Function add(ByVal n1 As Integer.

n2 As Integer) As Integer Return + n Function Public Function As Integer.

ByVal As Integer) As Integer Return - n End Function Public Function n1 As ByVal As Integer) As Integer Return * n End Function )> Public Function divide(ByVal n1 As Integer, ByVal As As Double Return n1 / n End Function End Class Visual public class MathService :

{ public 2 Обзор средств Studio „NET This call is required by the Web Services Initial // Здесь должен сгенерированный код компонента public n1 n2 } !

return n1 + n2:

} [WebMethodO] public subtract(int n1 n2 ) return n1 [WebMethodO] public, int n2 ) return n1 * n2:

[WebMethodO] public double n1 n2 } return n1 / 5. В меню Build выберите Build Solution, чтобы скомпилировать XML.

6. В окне Code View установите точку прерывания на следующей строке:

Visual Basic Public Function divide(ByVal As Integer.

n2 As Integer) As Double Visual [WebMethodO] public double divide(int n1 n2 ) 7. В меню Debug щелкните Start — в окне Internet Explorer появится список методов Web-сервиса XML (см. рис. ниже).

454 и - internet gift The For a the • • This is using as default the before the XML service is public.

an the far а fts.sfo(>'e, can The ftWiOUOh XML point Щелкните Divide — откроется страница, которая проверить метод divide:

Web - I.

for a divide Test test Обзор средств Studio 9. Введите значения параметров и и кнопку Invoke — отладчик Visual Basic исполнение на точке прерывания:

В меню Debug j Windows | Watch выберите В окне 1 в поле Name nl/n2 и нажмите Enter — значение выражения появится в столбце - • Thread divide АЭ Integer, nl 16 XML...

Тестирование и Для просмотра переменных и их воспользуйтесь окнами Locals и Autos.

Чтобы прекратить отладку, в меню Debug выберите Stop Debugging.

Отладка Web-сервиса XML после развертывания Откройте Web-сервис Internet Explorer. Для этого в строке адреса например 2. Откройте диалоговое окно Processes, в Visual Studio щелкнув Processes в меню Debug.

1GI2 1356 Web - foedqrn a Win32 Microsoft - Win32 I 3. В списке Process выберите aspnet_wp.exe и щелкните кнопку Attach — откроется ди алоговое окно Attach To Process (см. рис. ниже).

Занятие 2 Обзор 45?

4. В окне To Process флажок Common Language Runtime и программу для отладки, данном случае — Щелкните (Ж, затем чтобы диалоговое окно Processes.

5. В Visual Studio File | Open File. В диалоговом окне Open File выбери те файл отделенного кода из каталога 6. В коде примера MathService установите точку прерывания на строке с методом divide.

7. В Internet Explorer щелкните ссылку чтобы открыть для ввода пара метров метода divide. и п2 и щелкните кнопку Invoke — отладчик приостановит исполнение в точке на строке с методом divide.

8. Изучите переменные и их значения при помощи окон Autos, Locals и Watch.

9. Чтобы остановить отладку, в меню Debug выберите Stop Debugging.

Независимо от того, когда выполняется отладка Web-сервиса — в период раз работки или после — необходимо разрешить отладку следующим XML (Visual Basic.0" ?> /> XML ?> 458 и отладка Занятие 3. Программные средства отладки Помимо средств, о которых рассказано к программному инструментарию (code instrumentation) которые в код для мониторинга их Эти операторы используются для о сбоях при исполнении приложений и регистрации их в журналах событий.

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

Изучив материал этого вы сможете:

описать инструментарий для работы с кодом;

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

фильтровать сообщения с переключателей трассировки;

применять обработку исключений.

Продолжительность занятия — около 35 минут.

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

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

• отладка служит для диагностики опечаток коде, синтаксических и логических ошибок;

выполняется средствами утилит Cordbg.exe и DbgClr.exe;

• — применяется для сбора информации об исполнении кода;

собранные данные используют для устранения неполадок после приложения;

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

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

Классы Framework Trace и Debug применяются для мониторинга и анализа работы приложения в ходе разработки, что позволяет повысить его производительность.

Методы класса генерирующие используют во разработки для отображения сообщений в окне Output среды Visual Studio (рис. 9-9).

Рис. 9-9. Окно Output Применять класс мониторинга окончательных версий приложений нельзя, для этого предназначен класс Trace, который снабдить код приложения под держкой трассировки. Процесс осуществляют в три этапа:

• создание — добавление к коду приложения команд трасси ровки;

• трассировка — исполнение команд трассировки и трассировочных данных;

• анализ — изучение собранных при трассировке данных диагностики выявленных дефектов и ошибок.

Для сбора результатов трассировки используют объекты-слушатели.

принимает данные, генерируемые трассировкой, и через окна либо записывает в журналы событий или файлы. Созданные слушатели трассировки добавляются в набор что позволяет им принимать трассировочные дан ные. В приложениях используют три типа • — TextWritcr;

их также можно записывать и файл, на консоль и в любые объекты Stream;

• — записывает сообщения в журналы событий;

• — отображает отладочные сообщения через окно Output Studio либо в окне сообщения;

этот слушатель добавляется в набор автоматически.

Для записи трассировочных данных в объекты-слушатели применяют методы, опи санные в табл. 9-2.

Табл. 9-2. Трассировочные методы Описание Assert Генерирует только если как аргумент вычисляется в False;

заданную текстовую строку либо Call Stack, если она не определена Fail заданную строку либо Call Stack, если она не определена Write Записывает в выходные данные заданную Генерирует данные, только если условие, заданное как в True;

возвращает текстовую строку WriteLine заданную строку и символ возврата каретки Генерирует только если заданное как условие вычисляется в True;

возвращает строку и возврата каретки 460 и XML Глава Трассировка много которые не нужны приложения и требуются только для устранения неполадок. Чтобы или за претить генерацию данных, а также включить их фильтрацию, приме няют объекты-переключатели, при помощи конфигурационных файлов.

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

Для создания используют классы и Trace Класс BooleanSwitch разрешить или запретить вывод сообщений за данными средствами. При помощи можно собственные отла дочные сообщения и их с различными уровнями трассировки через свойства ing, и По умолчанию класс BooleanSwitch находится в состоянии «отключен» и имеет значение 0, а свойство TraceSwitch установлено в TraceSwitch.Off.

Табл. 9-3. Свойства класса TraceSwitch Целочисленное значение Тип оповещения (Ж 0 Нет Error 1 Только сообщении «б ошибках 2 Сообщения об ошибках и предупреждения Info 3 об ошибках и предупреждения Verbose 4 Подробные сообщения, об ошибках и трассировочного кода к 1. Выберите способ данных после развертывания приложения. пример демонстрирует использование класса Basic Создать текстовый файл для сообщений Dim as New Создать Dim As New Добавить traceListener в набор // Создать текстовый файл для записи сообщений traceLog = new txt", System.

3 отладки // Создать new // Добавить в набор 2. объекты TraceSwitch. Добавить к приложению переключатели трассировки можно так:

Visual Basic Dim Switchl As New "Data Access module") Dim as New "Entire application") Visual C# Switchl "Data Access TraceSwitch = "Entire 3. Теперь необходимо сконфигурировать объекты TraceSwitch. R меню Project выберите Add New Item.

4. Для на Visual Basic в окне Add New Item выберите Ap plication Configuration — и открыт файл. Он представляет собой корневым элементом Для проектов на Visual в диалоговом окне Add New Item выберите XML со храните файл и откройте его в редакторе объяв ления следующий тэг:

Этот файл должен быть в каталоге проекта.

5. Для настройки переключателей поместите между тэгами и как это сделать для объектов Bo oleanSwitch с именем и с именем /> В этом примере оба переключателя отключены.

6. и разверните 7. Если неполадках в период вклю чите трассировку в конфигурационном файле.

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

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

Для обработки исключений применяют блок Любой код, исполнение ко торого чревато ошибками, следует помешать в этот блок, например, так:

Visual Basic Imports Module ;

Sub Main() the file read") fn As String fn = any key to exit") Sub Private Sub readFile(ByVal file As String) Dim stream As New Если файл не предыдущая команда поэтому код между и Catch не выполняется и управление передается блоку catch.

Dim data As String stream.

Catch e As Принять меры по устранению ошибки запросить у правильное имя файла.

enter the correct file name") Dim f As String f = Try End Sub End Module 3 Программные отладки Visual using System;

using class г static Main(string[] the file to String fn ;

fn = Console.

readFile(fn):

any key to private static void readFile(String file } { try ;

StreamReader stream = new // Если файл не предыдущая команда // вызовет исключение, поэтому код между // и Catch не выполняется и управление // блоку catch.

String data * catch e ) // Принять меры по устранению ошибки // запросить у пользователя правильное имя файла.

enter the correct file String f ;

f ) } В преды душем примере обработки исключений одиночный блок catch. Для обработки исключений различных типов можно применять несколько catch. Например, можно блоки catch для обработки исключе ний и исключений, при арифметических В полнение к блокам catch применяют блок finally, который располагают после блока использование вложенных блоков catch и блока finally.

4g4 Тестирование и отладка Visual Basic Imports Module Sub the file to read") Dim fn As String fn = any key to End Sub Private Sub readFile(ByVal As String) stream As New Если файл не существует, предыдущая команда вызовет исключение lOException, поэтому код между Try и Catch не выполняется и управление передается блоку catch.

Dim data As String - stream.

successfully read") value for Следующие действия могут вызвать В этом случае управление передается блоку Catch, обрабатывающему исключения этого типа.

Dim n1 As Integer = value for Dim n2 As Integer = Dim result As Double = n1 / n of is Catch I0_e As lOException Обработать lOException - запросить у пользователя правильное имя файла.

enter the correct file name") Dim f As String f = Catch Ar_e As ArithmeticException Exception & Занятие 3 Программные Catch e As Exception & Finally method executed") End Try End Sub End Module Visual using System;

using class static void Main(string[] args) { the file to String fn ;

Console.

any key to } private static void readFile(String file ) { { StreamReader stream = new // Если файл не команда // вызовет исключение поэтому // код между и Catch не выполняется // и управление передается блоку catch.

String data successfully Console.

value for // Следующие действия могут вызвать // В этом случае управление передается блоку // обрабатывающему этого типа.

int value for и int n2 result = n1 / n2;

of n1/n2 + catch (lOException I0_e ) Обработать lOException // у пользователя правильное имя файла.

enter the correct file f ;

f catch Ar_e) Exception + catch (Exception e) L. ' + Если код, размещенный блоке try. генерирует исключение, оно блоком catch (если таковой присутствует), в противном случае исклю чение будет обработано общим блоком catch, принимающим объект типа Exception.

Общий блок catch способен обрабатывать любые поэтому при использова нии блоков catch он должен быть внешним. Код блока finally выполняется в любом случае независимо от возникновения ошибок.

4 и применение Занятие 4. Создание и применение сопутствующих сборок На занятии вы с сборок, емых для поддержки различных культур.

Изучив материал этого вы сможете:

создавать сборки;

сборки.

Продолжительность занятия — около 30 минут.

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

позволяет ему принимать, обрабатывать и отобра жать разнообразные и данные в различных форматах, включая текст на раз ных языках, в конечном итоге при изменяется язык приложения. — это изменение языка пользова тельского интерфейса путем выделения и замены данных, специфичных для ваемой культуры. Данные, для некоторой культуры, в отдель ных (satellite assemblies). Сопутствую щие с входят в состав приложения, но при не включаются в его глав Это снабдить приложение поддержкой культуры, не внося изменений в его код. Такое приложение можно будет использовать по всему миру, до статочно лишь указать сведения, для той или иной культуры, например шрифты, цветовое стили, и дат.

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

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

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

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

и отладка Глава Такая модель обладает преимуществами:

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

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

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

требуется поддержка управления ресурсами, поскольку в системе присутствуют ре сурсы для нескольких культур;

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

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

Следующий пример демонстрирует создание с использованием клас са Write г.

.

Visual Basic Imports System Imports Public Class Public Shared Sub Создать Dim As = new resources") Добавить ресурсы к файлу, Закрыть ResourceWriter Создание и применение сборок Sub End Class Visual using System;

using class puplic static void // Создать ResourceWriter IResourceWriter - new ResourceWriter // Добавить ресурсы к файлу AddResource( Third", "Sixth".

, Закрыть ResourceWriter изначально ресурсы имеются в виде текстовых файлов, их следует преобразо вать в формат при помощи утилиты Например, следующая ко манда из файла strings.txt пару «имя — значение» и создает двоичный файл ре сурса resource:

ResGen strings.txt Созданный ресурсный файл можно скомпилировать в сопутствующую сборку при утилиты Linker, AL сопутствующие сборки из заданных Сопутствующие сборки могут содержать только ресурсы, но не исполняемый код.

команда применение AL для генерации ib resources /out:MyRes.

бл. 9-4 приводится описание использованных в этом примере.

470 Тестирование и отладка Табл. 9-4. параметры AL Параметр Что задает /t:lib сопутствующей сборки библиотеку;

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

Во время разработки приложения пара ключей, необходимая для подписания сбор ки, еще не доступна, поэтому для установки сопутствующей сборки в GAC применяют методику отложенного подписания. Во время компиляции сборки по этой методике в файле сборки остается место для подписи, генерируемой при строгого име ни. При этом сборка может быть подписана позже, когда можно будет получить пару ключей Установка сопутствующей сборки Если приложение не обнаружило сведения о культуре. CLR их в Для корректной работы приложения сопутствующую сборку необходимо устано вить в GAC, что возможно при наличии у нее строгого имени. Это делается при помощи утилиты Gacutil.exe. Вызвав ее с параметром /i, можно установить сборку GAC, напри мер, так:

Gacutil.exe /i:MyRes.

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

Visual Basic New False) Dim MyResMgr As ResourceManager MyResMgr = Nothing) Visual - false):

ResourceManager MyResMgr;

Занятие 4 и сборок null);

Из приведенного фрагмента видно, что класс читает данные из файла У этого класса есть метод который принимает три параметра: имя путь к нему (тоже строковый) и идентификатор типа ресурса. В этом примере MyResources — это имя сурсного файла, расположенного в каталоге Если сборка в GAC, конструктор класса ResourceManager необходимо вы следующим образом:

Basic As ResourceManager - New Visual private ResourceManager rm;

rm = new Здесь для извлечения и отображения строковых ресурсов используется метод Resour ring.

Резюме Тестирование служит для решения ряда включая функциональности ПО. Важнейший аспект тестирования — приложений.

Visual Studio предоставляет инструменты CorDbg.exe и позволяю выявлять и исправлять дефекты и ошибки в приложениях.

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

В сборках хранят специфичные для конкретной культуры.

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

Тестирование и Глава Практикум 9. Трассировка и отладка Сейчас вы создадите консольное приложение для из БД BookingDetails. У этого приложения быть слушатели трассировки, которые записывают в журнал сведения об успешных и неудачных транзакци ях. Вам предстоит выполнить отладку Web-сервиса XML, созданного при выполнении практикума 7. Решения задач этого практикума можно най ти в каталоге \Solution на прилагаемом компакт-диске.

практикума — около 70 минут.

Упражнение Реализация трассировки Ваша — создать консольное приложение для чтения данных из БД. а также заполнить объект DataSet и записать данные в журнал при помощи объекта-слушателя.

Создание консольного приложения Откройте Visual Studio В меню File | New щелкните Project — диалоговое окно New Project.

3. На панели выберите шаблон Application и в поле Name введите 4. Переименуйте файл Module в vb Вызовите окно CodeView и замените его содержимое кодом:

Basic Imports Imports Imports Module TraceExample Sub Dim mySwitch As New "Entire application") Dim traceLog As New log".

Dim myTraceListener As New Dim As New corn As New Dim adap As New Dim As New DataSet() и = "data = com Dim dr As For Each In & & • Successfully Next Console.

Catch e As Exception Please check the & Console. ReadLineO End Try End End Module Visual C# using System:

using using using namespace /// /// description for /// class и отладка /// The entry point for 1 he application.

void { if // TODO: Add code to star- application here.

/ - new = { conn new com new SqlDataAdapter adap new DataSet = new + ' + Successfully" + и catch(Exception e) Please check the + Wri t e При исполнении этого кола сгенерирован файл журнала (My traceCS.log), выдержка из него ниже:

Data fictr Data ftetr eved.

fietr Data eved.

Data Data eved.

Data eved, object at at Data.

at riara, String at at Упражнение 2. Отладка Web-сервиса XML после его развертывания Сейчас вы займетесь отладкой Web-сервиса FlightBooking из практикума 7.

Отладка Web-сервиса FlightBooking I. Откройте FlightBooking. Для этого в строке адреса Internet Explorer дите и нажмите Enter — откро ется список методов Web-сервиса (см. рис.

и web is the before XML Web service XML ASP the The class XML Below a 2. В Visual Studio щелкните Debug | Processes, чтобы открыть диалоговое окно Processes, показанное ниже:

a • 3. В списке процессов выберите и кнопку Attach — откроется диалоговое окно To Практикум и отладка the that want У.

" _ rail 4. В диалоговом окне Attach To Process установите флажок Common Language OK, а затем Close, чтобы закрыть диалоговое окно Processes.

5. В Studio щелкните File | Open j File. В диалоговом окне Open File выбери те файл отделенного кода FlightBooking.asmx.vb расположен ный в папке 6. точку прерывания на строке с методом getlnfo:

Visual Basic Public Function As DataSet Visual public DataSet 7. В Explorer ссылку на метод getlnfo — откроется новая на которой можно вызнать метод щелкните кнопку Invoke — отладчик при остановит исполнение, точку прерывания на строке с методом getlnfo.

8. Воспользуйтесь окнами Autos, Locals и для просмотра переменных и их значе ний.

9. Чтобы остановить отладку, и меню Debug выберите Stop Debugging.

и отладка Глава материала Приведенные ниже вопросы помогут вам лучше основные дан ной главы. Если не сумеете ответить на вопрос, материал соот занятия. Ответы для самопроверки — в приложении А «Вопро сы и в конце книги.

Перечислите к тестирования.

2. Опишите подход к тестированию.

3. В чем особенность каскадного подхода к тестированию?

4. Как работает отладчик Visual 5. Перечислите основные окна, используемые при отладке приложений в Visual Studio 6. Расскажите о программных средствах отладки (code 7. Как реализуют программные отладки?

8. Какая утилита текстовые файлы в файлы формата 9. для файлов в сборки.

Развертывание Web-сервисов XML и служб Windows Занятие Введение в средства развертывания Занятие 2. Установочные программы Занятие 3. Поиск и регистрация сборок Занятие 4. Управление версиями и параллельное исполнение сборок Практикум 10. Создание установочной программы Закрепление материала В этой главе Возможности инфраструктуры Framework предоставляемые ей инструменты позволяют без особого труда упаковывать и распространять среди пользователей самые разные приложения. В этой главе вы познакомитесь с возможностями развертывания, которые предоставляет платформа и освоите развертывание различных типов применением Visual Studio и инструментария Framework.

Прежде чем начать Для изучения материалов этой главы вам потребуются:

• знание материала предыдущих глав;

• доступ к Web-серверу.

480 XML и Windows Занятие Введение в средства развертывания что приложение не содержит ошибок и дефектов, можно приступать к его распространению путем развертывания на пользовательских компьютерах. На этом заня тии вы познакомитесь со средствами развертывания, предоставляемыми Framework.

Изучив материал этого занятия, вы сможете:

описать в рассказать о способах упаковки и распространения приложений;

описать сценарии развертывания.

Продолжительность занятия — около 30 минут.

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

• бесконфликтное развертывание — изоляцией развертываемого прило жения, что исключает конфликты DLL. По умолчанию устанавливаемые компонен ты приложения не затрагивают другие программы;

• закрытые компоненты — устанавливаются в каталог их приложения и доступны только ему. Являясь закрытыми по умолчанию, эти компоненты никак не влияют на другие приложения;

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

Разрешить совместное использование компонента необходимо явно, назначив его сборке строгое имя и установив ее в GAC;

• управление версиями и поддержка параллельного исполнения — позволяет разверты вать в системе несколько версий одного компонента или приложения. При этом можно указать приложению, какую из версий компонента оно должно использовать, a CLR реализует указания;

• развертывание через Хсору — самоописываемые автономные компоненты и приложения допускается развертывать без регистрации в системном реестре и зависи мостей, простым копированием в установочный каталог на компьютере;

• обновление «на лету» — хосты приложений, например позволяют админи страторам обновлять DLL приложений, не останавливая их, эта возможность под держивается даже для удаленных компьютеров;

• интеграция с Windows Installer — позволяет развертывать приложения как пакеты Windows Installer, при этом к вашим услугам весь спектр возможностей Windows Installer — оповещение (advertisement), публикация, восстановление и установка по требованию;

• корпоративное развертывание — облегчает развертывание программного обеспечения в корпоративной сети;

может быть выполнено средствами служб каталогов, таких 1 Введение в как Active поддерживающими автоматическую установку приложений на сетевых компьютерах. Active Directory можно настроить так, чтобы установить при ложение через сеть во время первой загрузки компьютера или при входе пользовате ля на сетевом компьютере. Другой вариант — создать установочную программу для приложения и разместить ее на сетевом чтобы пользователи смогли установить приложение на своих компьютерах;

• и кэширование — ускоряет процесс загрузки приложения, разбивая его на части;

изолирует компоненты, делая их доступными лишь для этого исключая негативное влияние на работу системы;

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

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

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

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

Visual Basic Visual C# Атрибут принимает строку с номером версии. В предыду примере заданы только старший и младший номера версии, а номера компоновки и ревизии заменены подстановочными знаками — компилятор сгенерирует их тически.

482 Развертывание Windows Помимо номера сборку строка, но она лишь вспомогательную Например, в такой строке может быть текст «Common Language Runtime Version 1.0*.

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

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

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

.

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

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

Варианты упаковки и распространения приложений Framework предоставляет различные варианты упаковки и распространения при ложений, создаваемых в Visual Studio Приложения можно распространять в виде:

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

• файлов Cabinet — исполняемый код приложения можно сжать и записать файлы фор мата cabinet это уменьшает время копирования и приложения;

• пакетов Windows Installer — создаются используемые программой Win dows Installer 2.0 или другой версии.

Упакованное приложение готово к распространению. Framework поддержива ет следующие способы распространения приложений:

• через Хсору или FTP — приложения, CLR, являются са моописываемыми и не хранят свои данные в реестре, поэтому их можно просто ско пировать через Хсору или FTP-сервер в каталог на целевом компьютере, откуда его можно будет запускать сразу после установки;

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

1 в • при Windows 2,0 — можно устанавливать, восстанавливать и удалять сборки, созданные с использованием Framework и расположенные в GAC либо в закрытых каталогах. Этот способ наиболее удобен для конечных пользователей.

Сценарии развертывания К упаковке и развертыванию приложений, CLR, предъявляется тре бований, которые необходимо придерживаться. Вот наиболее методы разверты вания:

• с Windows Installer;

• через • при помощи браузера Internet Explorer.

Развертывание с применением Windows Installer Для развертывания приложения Windows Forms с помощью Windows оно долж но быть упаковано в Для подготовки а также для распростране ния и развертывания приложений применяют средства Windows Installer и Windows Application Management, Так. для установки или удаления приложений можно восполь зоваться соответствующим инструментом панели управления Windows ка Панель управления | Установка и удаление программ | компонентов Windows позволяет устанавливать сборки в GAC или каталог приложения, а также решать некоторые задачи развертывания;

• установка, восстановление и удаление сборок, расположенных в GAC;

• установка, восстановление и удаление сборок, расположенных в каталоге приложения;

• откат незавершенных по установке, восстановлению и удалению сборок;

• установка по требованию сборок со строгими именами в GAC;

• установка исправлений (patches);

• создание ярлыков для сборок.

Развертывание путем загрузки.САВ-файлов Файлы и каталоги допускается сжимать и записывать САВ-файлы с соот ветствующих инструментов из пакета Win32 SDK или Visual Studio Полученные в результате САВ-файлы можно загрузить на компьютер и использовать для раз вертывания. При этом следует помнить, что:

• в каждом может быть лишь одна сборка;

• САВ-файлы называть по имени файла с манифестом сборки. Например, файл с манифестом называется имя.САВ-файла будет Чтобы указать размещение созданных САВ-файлов, в файле при ложения определяют ссылки на них при помощи тэга .

Развертывание при помощи Internet Explorer Для загрузки Web-приложений с сетевых серверов применяют браузер Internet Explorer.

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

XML и служб Windows 2. Установочные программы На этом вы научитесь выполнять служб Windows, обслуживае мых компонентов, объектов и Web-сервисов XML с устано вочных программ, в Visual Studio Изучив материал этого занятия, вы сможете:

перечислить типы проектов установочных программ в Studio развертывать службы Windows, обслуживаемые компоненты, объекты Remoting, Web-сервисы XML.

Продолжительность занятия - около 40 минут.

Обзор проектов установочных программ В Visual Studio имеется четыре используемых для развертывания различ ных типов приложений: Setup, Web Setup, Cab и Merge Module.

Для распространения приложения сначала необходимо создать установочные файлы.

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

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

В Visual Studio имеется два типа проектов установочных программ: Setup и Web Setup. Единственное отличие между ними заключается в размещении установочной про граммы. Файлы, из проекта Setup, записываются в каталог на целевом ком пьютере, а файлы Setup виртуальный каталог Web-сервера. В разде ле рассказывается о применении этих проектов для развертывания служб Windows и Web сервисов XML.

Развертывание служб Windows Развертывание службы Windows с применением проекта Setup состоит из ряда этапов, описанных в следующем разделе.

Создание службы Windows Как создать Windows Запустите Visual Studio и откройте новый проект.

2. На панели Project Types выберите Visual Basic Projects или Visual C# Projects.

3. На панели выберите шаблон Windows Service.

4. В поле Name введите Example и щелкните OK — будет создано реше ние с именем.

Занятие 2 Установочные программы 5. Переименуйте файл Service в Добавьте к службе Windows следующий код, который будет записы вать в файл журнала при запуске и остановке службы:

Visual Basic Imports Public Class Inherits fs As New System. log", Dim As New flRegion Component Designer generated code Public Sub This call is required by the Component Designer.

' Add any initialization after the call End Sub ' overrides dispose to clean up the component list.

Protected Overloads Overrides Sub disposing As If disposing Then If Not Is Nothing) Then components.

End If End If The entry point for the process _ Shared Sub As ServicesToRun = New End Sub ' Required by the Component Designer Private components As Private Sub - "My New Service" XML и End Sub Region Protected Overrides Sub OnStart(ByVal As String) Add here to start your method should set things in so service can do its work.

Trace.

End Sub Protected Overrides Sub End Sub End Class C# using System;

using using using using using using System.

namespace {.

public class :

{ - new /// /// Required designer variable.

/// private components = null;

{ Занятие 2 Установочные // The entry point for the process static void { ServicesToRun new { new };

/// Required method for Designer support - do not modify /// the contents of this method with the code editor.

/// private void { // // = "My New Service";

.

/// /// Clean up any resources being used.

/// protected override void Dispose( disposing ) { if( disposing ) { if (components null) { } } disposing ):

/// /// Set things in motion so your service can do its work.

/// protected override void OnStart(string[] args) I // TODO: Add code here to start your service.

myTraceListener = new started.

Разработка XML...

488 XML и служб Глава /// /// Stop this service.

/// protected override void { = Теперь нужно к службе servicelnstaller и Как добавить к службе установочные компоненты Вызовите окно Solution Explorer.

2. Дважды шелкните файл (WindowsServiceExample.cs).

3. Щелкните кнопкой в окне проекта WindowsServiceExample и в контекстного меню выберите Add 4. Скомпилируйте проект WindowsServiceExample.

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

Создание проекта Setup 1. В меню File выберите Add Project | New Project.

2. диалоговом окне Add New Project на панели Project Types шелкните Setup And Deployment Projects.

3. На панели Templates выберите шаблон Setup Project.

4. В поле Name введите и шелкните ОК. Теперь к проекту установочной программы необходимо добавить службу Каталоги про екта ServiceSetup показаны на рис.

5. Вызовите окно Solution Explorer и шелкните правой кнопкой проект ServiceSetup.

В контекстном меню выберите Add Project Output. На рис. 10-2 показано, как доба вить к проекту выходные файлы.

6. Убедитесь, что в диалоговом окне Add Project Output Group (рис. 10-3) в списке выбран WindowsServiceExample. Выберите в поле ниже элемент Primary Output и шелкните ОК.

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

После этого можно добавить к программе нестандартное действие. Бла Занятие 2 программы годаря поддержке со стороны Windows Installer можно написать код, который во время установки исполнит действия, которые нельзя выполнить вручную. Этот код разреша ется предоставлять в виде или или сборки.

• Desktop Рис. Система файлов проекта •• 1 fit да ] ft, • i Рис. 10-2. Добавление выходных файлов к проекту :

Web-сервисов XML и служб Глава " ± a j Рис. 10-3. Диалоговое окно Add Project Output Group Как добавить нестандартное действие 1. Вызовите окно Solution Explorer, щелкните правой кнопкой проект и в контекстном меню выберите View | Custom (рис. 10-4).

- - ' ft - * : * Debug He |, ! TV» Folder - i.

Menu •, output from -,, Рис. 10-4. Меню Custom Actions 2. В окне Custom Actions (ServiceSetup) правой кнопкой элемент Custom Actions и в контекстном меню выберите Add Custom Action (рис. 10-5).

Занятие 2 Установочные программы - О a Detected from I Рис. 10-5. Добавление нестандартного действия 3. В диалоговом окне Select Item In Project (рис. 10-6) дважды щелкните Application Folder, в поле ниже выберите Primary output from (Active) и OK — четырем узлам нестандартных действий, Install, и назначаются выходные элементы.

Нет вд) Add fife..

Рис. 10-6. Диалоговое окно Select In Project 4, Чтобы скомпилировать проект установочной программы, правой кнопкой и в контекстном меню Build (рис. — компилятор создаст файл На рис. 10-7 также показаны выходные элементы, ванные для нестандартных действий.

XML и служб Windows Глава Debug " :

II output from Рис. 10-7. Компиляция проекта Скомпилированный можно применять для установки созданной службы на любой компьютер.

Внимание! Для работы приложений, Framework, на целевом ком пьютере должна быть Если на компьютере не установлена Frame work, ее необходимо включить в установочный комплект приложения. Готовый пакет Framework распространяется вместе с версией и поддерживает сле платформы:

• Windows 98;

• 98 SE;

• Windows Me;

• Windows NT 4.0 (Workstation и Server), Service Pack 6a;

• Windows 2000 (Professional, Server и Advanced Server);

• Windows XP (Home Edition и Professional);

• Windows Server 2003.

На серверах, где планируется развертывание Framework, потребуется устано вить следующее ПО:

• Microsoft Data Access Components (MDAC) 2.6 (рекомендуется 2.7);

• Internet Services (IIS) в Windows 2000, XP Professional или Server 2003 (для Web-приложений).

Развертывание Web-сервисов XML Развертывание Web-сервисов XML также состоит из нескольких этапов, описываемых в разделах.

Занятие программы Создание Web-сервиса Как создать XML Запустите Visual Studio и создайте новый проект.

2. В окне New Project (рис. 10-8) на панели Project Types выберите Visual Basic Projects или Visual Projects.

3. На панели Templates выберите шаблон ASP.NET Web Service.

4. В поле Name введите и шелкните OK — будет создано решение с заданным именем.

Basic and ft«*:abw< Library № О frowsts ТА for to from - Рис. 10-8. Диалоговое окно New Project 5. Переименуйте файл Service в WebServiceExampte.a ;

mx.vb Добавьте к XML код, который запи сывать в файл журнала:

Visual Basic Imports Public Inherits Dim fs As New As New tfRegion Web Services Designer Generated Code Public Sub call is required by the Web Services Designer.

494 XML и служб Windows Глава End Sub by the Web Services Designer Private As The is required by the Web Services It can be modified using the Web Services not modify it using the code editor.

Private Sub = New End Sub Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) 'CODEGEN: This procedure is required by the Web Services Designer not modify it using the code editor, If disposing Then If Not (components Is Nothing) Then End If End If End Sub ttEnd Region " Public Function As String Written ("Trace Written End Function End Class Visual C# using System;

using using using using using using using Занятие 2 программы namespace { /// /// Summary description for /// public class :

{ fs new ' public { Component Designer generated code by the Web Services Designer private IContainer components = null;

/// /// Required method for support - do not modify /// the contents of this method with the code editor.

/// private void /// Clean up any resources being used.

/// protected override void Dispose'( disposing ) { components != null) } flend string { myTraceListener new Развертывание XML и служб Windows Глава Written Trace.

return ("Trace Written Теперь можно скомпилировать проект Создание проекта Web Setup Для развертывания службы WebServiceExample потребуется установочная программа, которая будет создана с помощью проекта Web Setup.

Как создать проект Web Setup В меню File выберите Add Project | New Project.

2. В диалоговом окне Add New Project на панели Project Types выберите Setup And De ployment Projects.

3. На панели выберите шаблон Setup Project.

4. В поле Name введите и щелкните ОК. Теперь необходимо добавить к проекту Web Setup сервис Файлы проекта WebServiceSetup по казаны на рис.

У* View Tools fttt«i * Рис. 10-9, Файлы проекта WebServiceSetup 2 программы 5. Чтобы добавить службу к проекту Web Setup, вызовите окно Solution Explorer, правой кнопкой проект и в контекстном меню выберите Add Project Output, как показано на рис. 10-10.

•;

- - Рис, 10-10. Добавление файлов проекта 6. Убедитесь, что в окне Project в списке Project Output Group (рис. выбран эле мент WebServiceExample. Выберите в поле ниже элементы Primary Output, Debug Symbols, Content Files и ОК.

Рис. 10-11. Диалоговое окно Add Project Output Group 498 Развертывание XML и служб Глава 7. Скомпилируйте проект — будет создан файл Для развертывания Web-ервиса запустите этот файл на целевом компьютере.

Примечание Перед развертыванием службы необходимо установить на целевом компьютере Framework, Windows Installer и IIS.

Развертывание с помощью подключаемых модулей Применение проекта Merge Module — стандартный метод установки и развертывания компонентов. Он гарантирует установку необходимой версии компонента на целевом компьютере. Проект, созданный на основе шаблона Merge Module, DLL, за висимые файлы, ресурсы, записи реестра и установку. Подключае мые модули нельзя устанавливать самостоятельно, их объединяют с при ложений, из этих модулей. Таким образом, необходимые компоненты устанавливаются вместе с что исключает такие проблемы, как конфликты версий, отсутствие необходимых записей в реестре и неверно установ ленные файлы.

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

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

Перед развертыванием компонента его необходимо создать. Затем к решению следу ет добавить проект Merge Module и объединить файл подключаемого модуля с файлом Windows Installer. О действиях, необходимых для развертывания компонентов при по подключаемых модулей, рассказывается в следующих разделах.

Создание библиотеки классов Как создать библиотеку классов Запустите Visual Studio и создайте новый проект.

2. В диалоговом окне New Project на панели Project Types выберите Visual Basic Projects или Visual C# Projects.

3. На панели выберите шаблон Class Library.

4. В поле Name введите и щелкните OK — будет создано решение с заданным 5. Вызовите окно Code View и введите следующий код:

Visual Basic Imports System Imports Imports Imports Imports Занятие 2 Установочные Public Class Sub Dim fs As New Dim myTraceListener As New Written End Sub End Class Visual C# using using using using using using namespace !

public class Classl { public { System. fs = myTraceListener;

myTraceListener = new Written 6. Скомпилируйте проект ComponentExample.

Создание проекта подключаемого модуля После компиляции проекта Component к нему нужно добавить проект Merge Module.

Как создать проект Module 1. При диалогового окна Add New Project добавьте к решению проект Merge Module.

XML и служб Windows 2. В окне редактора файловой системы (File System) выберите папку Module Retargetable Folder. В меню выберите команду Add | Project Output (рис. — откроется диалоговое окно Add Project Output Group.

Рис. Добавление к проекту выходных элементов 3. В диалоговом окне Add Project Output Group выберите для проекта Component Example элемент Primary Output.

4. Скомпилируйте чтобы подключаемый модуль.

Добавление подключаемого модуля Подключаемые модули не разрешается устанавливать напрямую;

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

Как добавить подключаемый модуль В меню File выберите Add Project New Project.

2. В диалоговом окне Add New Project на панели Project Types выберите Setup And затем на панели Templates выберите шаблон Setup Project. В поле Name введите Merge Module Installer.

3. В окне File System Application Folder. В меню Action выберите Add j Project Output.

4. В диалоговом окне Add Project Output Group выберите проект ComponentMerge Module, затем Merge Module и ОК.

Занятие Установочные 5. В Solution Explorer Merge Module. Далее в окне Properties выберите свой ство и раскройте его, чтобы найти узел Merge Module Properties. Раскрой те этот узел и выберите свойство Module Retargetable Folder.

Примечание Свойства KeyOutput динамические, поэтому вы не увидите их до ком пиляции подключаемого модуля.

6. В списке свойства Module Folder выберите Browse чтобы вызвать диалоговое окно Select Folder.

Рис. 10-13. Элемент Browse 7. В диалоговом окне Select Folder выберите Application Folder и щелкните ОК.

8. Скомпилируйте проект 9. Чтобы установить MergeModulelnstaller на компьютере, где ведется разработка при ложения, этот проект в окне Solution Explorer, и в меню Project выберите команду Install (рис. — будет запущена установочная программа, которая ус тановит из подключаемого модуля в каталог приложения на вашем компьютере.

502 XML и служб 10-14. Пункт Install в меню Project Развертывание Развертывание на другом компьютере 1, Откройте Проводник, перейдите в папку проекта MergeModulelnstaller и скопируйте оттуда все файлы, включая в каталог на целевом компью тере.

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

2. Запустите файл Setup.exe на целевом компьютере — программа, полученная при ком пиляции проекта Merge Module, установит компонент.

Развертывание через файлы Cabinet Проекты Cabinet применяют для упаковки.NET-компонентов и приложений в файлы, пригодные для загрузки с Web-сервера через Web-браузер. Для добавления фай лов к проекту Cabinet используют Solution Explorer, свойства проекта устанавливают через окно Properties или диалоговое окно проекта. Свойства проекта Cabinet позволяют задавать степень сжатия файлов, добавлять подпись Authenticode, а также задают отображаемое имя, сведения о версии и зависимых файлов в сети.

Занятие 2 Установочные программы проекта Cabinet Запустите Visual Studio и откройте новый проект.

2. В диалоговом окне New Project на панели Project Types выберите Setup And Deploy ment 3. На панели Templates выберите шаблон Cab Project.

4. В Name введите CabExample и OK — будет создано решение с заданным именем.

5. Перейдите в окно Explorer, шелкните правой кнопкой проект CabExample и выберите команду Add File (рис, О fct*ms 10-15. Добавление файла к: проекту Cab 6. В диалоговом окне Add Files найдите или.ехе-файл с компонентами или прило жением и добавьте его к проекту.

7. В диалоговом окне свойств проекта выберите Authenticode Signing и укажите сертификата, закрытого ключа и URL сервера отметок времени.

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

8. В меню Build выберите команду Build Solution, чтобы скомпилировать проект Cab Example.

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

504 XML и Windows Занятие 3. Поиск и регистрация сборок Сборки, созданные с применением Framework, не требуют чтобы предоставить компонентам СОМ доступ к сборок, содержа в сборке типы необходимо экспортировать в библиотеку типов кото рую затем нужно зарегистрировать в реестре Windows. На этом занятии вы научитесь экспортировать типы из сборки в библиотеку типов и регистрировать библиотеки ти пов, а также узнаете, как Framework определяет местонахождение сборок при за пуске приложения.

Изучив материал этого занятия, вы сможете:

в библиотеку типов;

зарегистрировать библиотеку типов;

рассказать, как Framework обнаруживает сборки.

Продолжительность занятия — около 30 минут.

Регистрация компонентов и сборок Framework не требует регистрации в реестре Windows, поскольку CLR способна находить используемые приложением компоненты и типы при помоши сведе ний, взятых из метаданных манифеста сборки. Однако, чтобы предоставить компонен там СОМ доступ к управляемым компонентам, управляемые типы требуется экспорти ровать в библиотеку типов которую затем нужно зарегистрировать в реест ре. Для создания и регистрации библиотек типов Framework предоставляет ин струменты Type Library Exporter (TIbexp.exe) и Registration Tool (Regasm.exe).

Type Library Exporter генерирует библиотеку, описывающую типы из сборки, использу ющей CLR. Чтобы экспортировать типы из сборки в библиотеку типов, командой:

tlbexp где — имя экспортируемой сборки. Параметры tlbexp описаны в табл.

Табл. Параметры tlbexp Параметр Описание /help или /? Выводит справки по синтаксису вызова и параметрам инструмента Задает формат имен в библиотеке типов;

аргумент filename определяет текстовый файл, в котором каждая строка задает формат для одного имени в библиотеке типов /nologo отображения логотипа Microsoft во время загрузки Задает имя генерируемой библиотеки типов. Если этот параметр не задан, имя библиотеки выводится прибавления к имени сборки (реальному имени, которое может не совпадать с именем файла сборки) расширения /silent отображения сообщений об успешных операциях /verbose Задает режим отображения полной информации;

отображает список сборок, на которые имеются ссылки и для которых требуется генерировать библиотеку типов Занятие 3 Поиск и регистрация команда генерирует на основе сборки библиотеку типов tlbexp MyLib.dll Разрешается также задавать имя выходного файла, генерируемого мер, так:

tlbexp MyLib.dll /out:

Примечание Framework также предоставляет инструмент Type Library Importer (Tlbimp.exe), импортировать типы из библиотеки в сборку CLR. Синтак сис его tlbimp tlbFile [параметры]. Например, команда My Mb /out: MyLib.dll импортирует типы из библиотеки в MyLib.dll.

Экспортированные в библиотеку типы можно при менять создания СОМ на разных таких как Visual Basic 6.0. Помните, лишь гене рирует библиотеку типов, но не регистрирует ее. Другой Assembly Registra tion Tool (Regasm.exe), позволяет не только создавать библиотеки, но и их СОМ. Он использует манифест сборки регистрации в ней типов.

Синтаксис вызова следующий;

[параметры] Здесь — это имя сборки, подлежащей в СОМ. Параметры команды описаны в табл. 10-2.

Табл. 10-2. Параметры regasm Параметр Описание /tlb Генерирует на основе заданной сборки библиотеку, содержащую определения доступных из сборки типов Создает для сборки который позволяет типы в системном реестре;

не модифицирует реестр, запрещен использования с параметрами /и и /tlb /unregister или /и Отменяет классов сборки assembly File, создаваемых компонентами СОМ. Если опустить этот параметр. Regasm.exe будет регистрировать эти классы /codebase Создает в реестре элемент Codebase, определяющий путь к если та не установлена в GAC. Если этот параметр присутствует, должен содержать строгое имя сборки или /'? Выводит справку по синтаксису и параметрам команды /nolqgo Запрещает отображение логотипа Microsoft во время загрузки /silent /s Запрещает вывод сообщений об успешных операциях /verbose Включает режим отображения полной информации. Совместно с /tlb выводит список всех сборок, на которые имеются ссылки и для которых требуется генерировать библиотеку типов Следующая команда демонстрирует регистрацию в СОМ открытых классов, опреде ленных в файле MyLib.dll:

regasm 506 Развертывание XML и служб Windows Глава А эта команда создает файл с записями, необходимыми для регистра в системном реестре открытых классов, определенных в файле MyLi b. dl l /regfile:

Собственно, регистрацию вышеприведенная команда не выполняет, для этого нуж но импортировать записи из MyTypes.reg в реестр при Registry Editor.

команда регистрирует все открытые классы из MyLib.dll, а также гене рирует и регистрирует библиотеку типов MyTypes.dll с определениями всех открытых типов из файла MyLib.dll:

MyLib.dl l Поиск сборок Для развертывания приложений в Framework следует знать, как CLR определяет местонахождение сборок и привязывает их к приложению. Чтобы выяснить, какие сбор ки требуются приложению, CLR анализирует манифест. При запуске приложения CLR попытается найти и связать с ним именно те версии сборок, которые использова лись для его компиляции. Для поиска и связывания сборок CLR выполняет следующие действия (в порядке перечисления):

• определяет необходимую версию сборки;

• проверяет, не загружена ли нужная сборка ранее;

• проверяет GAC;

• ищет сборку в заданном элементом codebase, либо путем зондирования.

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

Первым CLR просматривает конфигурационный файл приложения;

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

Далее CLR просматривает политики издателя (publisher policy file), если он су Этот файл содержит сведения о новых версиях сборки с разделяемыми ком понентами. Создав новую версию сборки, установите ее в GAC и назначьте ей файл политики издателя, который будет вызовы, адресованные старой версии, новой версии сборки. Сведения о версии, заданные в файле политики издателя, заменя ют аналогичные сведения из конфигурационного файла приложения и манифеста вы зывающей сборки.

В последнюю очередь CLR ищет сведения о версии в конфигурационном файле ком пьютера;

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

Проверка уже загруженных сборок Определив необходимую версию запрошенной сборки, CLR проверяет, не загружена ли уже искомая сборка. Если это так, то загруженная сборка связывается с приложением.

.

Проверка GAC Если искомая сборка еще не загружена, CLR ее в GAC. Поиск в GAC выполняет ся, только если у вызванной сборки есть строгое имя.

' Занятие 3 Поиск и сборок Поиск в каталоге и зондирование Определив необходимую версию сборки путем анализа манифеста сборки и конфигурационных файлов, CLR сначала сборку (если у нее есть строгое имя) в GAC. Потерпев неудачу при поиске в GAC, CLR пытается найти требуемую сборку в каталоге, заданным элементом если тот определен в конфигурационном фай ле приложения. Обнаружив сборку, связывает ее с приложением, в противном слу чае связывание завершается неудачей.

При отсутствии элемента codebase в конфигурационном файле приложения, которое содержится в сборке. CLR попытается найти требуемую сборку при помощи процесса зондирования (probing). Зондирование опирается на сведения:

• каталог приложения корневой каталог, откуда запускается приложение;

• сборки, заданная соответствующим атрибутом в метаданных вызывающей сборки;

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

CLR начинает с поиска в базовом каталоге приложения. На этот каталог указывает заданный им считается корневой каталог приложения- Если не удалось найти требуемую сборку в базовом каталоге и сведения о культуре также не заданы, CLR про сматривает каталоги, которые находятся в базовом каталоге приложения они име ются), перебирая пути в порядке:

• [базовый каталог приложения] / [имя • [базовый каталог приложения] / [имя сборки] / [имя Если для искомой сборки заданы сведения о культуре, только сле дующие пути:

• [базовый каталог приложения] / [имя культуры] / [имя • [базовый каталог приложения] / [имя культуры] / [имя / (имя Если в конфигурационном файле приложения задан параметр binpath или в коде установлено свойство AppendPrivatePath домена приложения, будут просмотрены сле дующие пути:

• [базовый каталог приложения] / [значение binpath] / [имя • [базовый каталог приложения] / [значение binpath] / [имя сборки] / [имя Если дополнительно заданы сведения о культуре, просматриваются такие пути:

• [базовый приложения] / [значение binpath] / [имя / [имя сбор • [базовый каталог приложения] / [значение binpath] / [имя культуры] / [имя сборки] / [имя 508 и служб Windows Глава Занятие 4. Управление версиями и параллельное исполнение сборок На этом занятии вы узнаете, как снабдить сборку управления версиями и научитесь сразу несколько версий одной сборки.

Изучив материал этого занятия, вы сможете:

реализовать в сборках управление версиями;

V развертывать несколько версий сборки одновременно;

Продолжительность занятия — около минут.

Реализация управления версиями в сборках Как было сказано выше, управление версиями реализуется на уровне сборок. Версия сборки и всех используемых ей сборок записаны в манифесте.

Назначить версию сборке можно при атрибута опреде ленного в файле Assemblyinfo приложения. Формат номера версии включает четыре ча сти и имеет вид:

Можно просто открыть файл Assemblyinfo (см. пример ниже) и задать номер версии сборки в указанном формате.

Visual Basic Imports Imports )>

Version information an assembly consists of the four values:

Major Version Minor Version Build Number Revision Visual C# using using System.

Занятие 4 Управление и параллельное исполнение сборок [assembly:

// // Version information for an assembly consists of the // following values:

// Major Version // Minor Version // Build Number // Revision // [assembly:

Номер версии сборки разрешается также задавать в коде приложения при помощи атрибута для этого требуется импортировать в проект пространство имен образом:

Visual Basic Imports Public Class End Class I Visual using System;

using public class MyClass Назначив сборке номер версии, можно развертывать эту сборку как закрытую (в ка талоге с исполняемым кодом приложения) или открытую (в GAC).

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

Глава Web-сервисов XML и служб Windows Время от времени требуется расширить функциональность имеющихся сборок. Для этого создают сборку с требуемой компилируют и назначают ей новый номер версии. Затем новую версию сборки развертывают в где она может с прежними версиями. На рис. 10-16 показаны две версии одной и той же сборки в GAC.

Л 1.0,3300. ft 1,0.3300. 1.0.3300. 10-16. Разные версии одной сборки в GAC Разные версии одной сборки, одновременно развернутые в GAC, могут работать па раллельно. Это позволяет разным версиям клиентского приложения использовать не обходимые им с которыми они были связаны при создании. Таким образом, пользователи одновременно работать с разными версиями одного приложения.

На рис. 10-17 показаны клиентские приложения, использующие разные версии одной и той же сборки.

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

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

Занятие 4 и исполнение сборок 1. Рис. 10-17. Клиентские приложения, вызывающие разные версии одной сборки Visual Basic Imports Public Class Public Function As String Return ("Hello Version 1.1.1.0") End Function End Class Visual C# using System;

using namespace { public class Util public string Util1() { Utill Version Visual Basic Глааа XML и служб Public Class Public Function Util'1() As String Return ("Hello Version 1.1.2.0") End Function End Class - 5C 56 3F SF ?F 11 OS extern 7Я 5C 56 19 3» Ев 89 ) - 7ft 19 ED extern - 19 ED 89 ) // instance uoid - B instance // — The attribute is added do // instance void // void uoid flssenbliifroductflttfibote:

uoid ftS5ei9folyCopyrightHttribute:;

.ctQr(string Рис. 10-18. Манифесты сборок приложений 4 и параллельное исполнение сборок Visual using System;

using namespace < public class { public string { Version Сведения о версиях сборок, необходимых клиентским содержатся в манифестах сборок этих приложений (рис.

Резюме • Framework предоставляет поддержку и инструменты для развертывания разно типных приложений на пользовательских компьютерах. Это бесконфликтная уста новка, закрытые компоненты, параллельная работа, корпоративное управляемое совместное использование кода, обновление «на лету», загрузка и кэ ширование, а также развертывание через Хсору.

• В Visual Studio имеется четыре шаблона проектов, применяемых для разверты вания различных типов приложений: Setup, Web Setup, Cab и Merge Module.

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

• Управление версиями делает возможным параллельное развертывание нескольких версий одной сборки.

Развертывание XML и служб Windows Глава Практикум 10. Создание установочной программы На этом практикуме вы освоите развертывание приложений, служб Windows и библиотек классов. Вы должны выполнить развертывание приложения, со зданного на практикуме 5. Для этого вы воспользуетесь проектами Setup. Ре шение задач этого практикума можно найти в каталоге на прилагае мом компакт-диске.

практикума — около 30 минут.

Упражнение Создание проекта установочной программы Сейчас вы создадите проект установочной программы для развертывания ре шения, созданного на практикуме 5. состоит из четырех компонентов:

• приложения • библиотеки классов • службы Windows • библиотеки классов Развертывание решения 1. Откройте Visual Studio 2. Щелкните меню File | Open | Project.

3. На прилагаемом компакт-диске найдите файл 4. Щелкните кнопку Open.

5. Откройте диалоговое окно Add New Project. На панели Project Types щелкните Setup And Deployment Projects;

на панели Templates выберите Setup Project.

6. В поле Name введите имя Setup и щелкните OK — к решению будет добавлен проект установочной программы.

7. Чтобы настроить проект, перейдите в Solution Explorer. Щелкните правой кнопкой проект Setup и в контекстном меню выберите Add | Project Output.

8. В диалоговом окне Add Project Output Group выберите в списке Project элемент BusinessComponents, Primary Output, затем ОК.

9. Повторите шаги 7 и 8 для остальных проектов решения, RemoteAccessAgent, Remote AccessComponents и RemoteClient. Результат показан на рисунке ниже: в окне System отображаются выходные файлы, заданные для четырех проектов решения.

Теперь к проекту нужно добавить нестандартное действие. Оно необходимо для обслу живаемого компонента Windows RemoteAccessAgent, так как после развертывания службы Windows на компьютере ее требуется должным образом установить.

Pages:     | 1 |   ...   | 3 | 4 || 6 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.