Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Создание экземпляров элементов управления ActiveX
8 февраля 2009

ActiveX — это одна из реализаций СОМ, поэтому процедура добавления ссылки на
библиотеку типов элементов управления ActiveX практически не отличается от та-
ковой для библиотеки СОМ. Выполнив ее, вы получаете возможность добавить эле-
менты управления ActiveX на Toolbox, чтобы в период разработки добавлять их эк-
земпляры к приложению.
Примечание Размещение элементов управления ActiveX на вкладке Windows Forms
допустимо, хотя существенно снижает производительность. Поэтому элементы уп-
равления ActiveX следует использовать, только если нет .NET-элементов управле-
ния с соответствующими функциями.
> Создание экземпляра элемента управления ActiveX
1. Добавьте ссылку на библиотеку типов, в которой находится нужный элемент уп-
равления ActiveX (о добавлении ссылок рассказывалось немного раньше).
2. Поместите элемент управления ActiveX на панель Toolbox, как описано в главе 7.
3. Чтобы добавить к проекту экземпляр элемента управления в период разработки,
перетащите его с Toolbox в окно дизайнера. Это можно сделать и по-другому,
объявив класс элемента управления и создав его экземпляр в коде. Второй под-
ход позволяет динамически создавать элементы управления ActiveX в период
выполнения (глава 2).
Доступ к Web-сервисам
Web-сервисы (Web Service) — классы, размешенные в Интернете, — без сомнения
относятся к важным компонентам .NET Framework. После объявления и создания
экземпляра Web-сервиса в приложении вы сможете синхронно или асинхронно
вызвать его методы.
Ссылки на Web-сервисы также создают в окне Solution Explorer. Для этого нуж-
но вызвать это окно, щелкнуть правой кнопкой узел References, расположенный
ниже узла вашего проекта, и выбрать из контекстного меню команду Add Web
Reference — откроется одноименное окно (рис. 8-5), в котором задают URL Web-
компонента, или находят его, если URL неизвестен.
В последнем случае вы получите доступ к каталогам, в которых хранится нуж-
ный ресурс. В каталоге Universal Description Discovery Integration (UDDI) хранится
список провайдеров, которые предоставляют услуги в виде Web-сервисов. При вы-
боре провайдера отображается список предоставляемых им Web-сервисов. Если
щелкнуть Web-сервис, в левой панели появляется контакт XML, а в правой — имя
Web-сервиса. Чтобы увидеть более «дружественное» описание Web-сервиса, удали-
те из URL строку «7WSDL» и перезагрузите страницу. Найдя нужную Web-ссылку,
щелкните кнопку Add Reference, чтобы добавить ее в проект.
При создании экземпляра Web-сервиса .NET Framework в действительности со-
здает экземпляр класса гтрокси, представляющего этот Web-сервис. Класс прокси
существует в приложении и предоставляет все методы, поддерживаемые Web-сер-
висом. Вызов любого из этих методов передается Web-сервису, который находится
в Интернете по заданному адресу. Экземпляры Web-сервисов создают так же, как
экземпляры любых других компонентов. Следующий пример демонстрирует созда-
ние экземпляра Web-сервиса WebServicel'.
Visual Basic .КЕТ
Dim myService As New WebServicel
Visual C#
WebServicel myService - new WebService1();
Вызвать Web-сервис можно синхронно либо асинхронно. Синхронный вызов на-
поминает вызов обычной функции. В следующем примере показан синхронный
вызов метода myMethod Web-сервиса myService. Этот пример предполагает наличие
ссылки на экземпляр этого Web-сервиса:
Visual Basic .NET
myService. myMethodO
Visual C#
myService.myMethod();
Синхронный вызов метода Web-сервиса исполняется так же, как вызов обычно-
го метода. Но, поскольку при этом происходит обращение к ресурсам Интернета,
время отклика увеличивается, а исполнение приложения приостанавливается до
завершения синхронного вызова Web-метода. Чтобы избежать задержек в работе
программы из-за ожидания завершения вызова Web-сервиса, можно вызывать ме-
тоды Web-сервиса асинхронно. В этом случае создается отдельный поток для взаи-
модействия с Web-сервисом, а пока Web-сервис обрабатывает запрос, исполнение
программы продолжается, как обычно. На каждую синхронную версию метода Web-
сервиса приходятся по две асинхронные, имена которых образуются из имени син-
хронной версии Web-метода и префиксов Begin и End. Так, если у Web-сервиса есть
метод MyMethod, его асинхронные версии называются BeginMyMefhod и EndMy-
Method.
Асинхронный вызов Web-метода начинается с вызова соответствующего метода
Begin. Помимо обычных параметров, требуемых при синхронном вызове, методу
Begin необходим делегат AsyncCailback, представляющий метод обратного вызова для
данного Web-метода, и параметр типа Object, позволяющий приложению переда-
вать нестандартные сведения о состоянии.
Каждый метод Begin возвращает значение типа lAsyncResult. Этот интерфейс ис-
пользуется соответствующим методом End для извлечения результатов асинхрон-
ного метода. Сигнатура метода обратного вызова, заданного делегатом AsyncCailback,
должна включать параметр типа lAsyncResult. В свою очередь, метод обратного
вызова вызывает метод End, который извлекает данные. Следующий пример иллю-
стрирует асинхронный вызов метода MyMethod с указанием метода обратного вызо-
ва и извлечение результатов MyMethod. При этом предполагается, что MyMethod —
это метод Web-сервиса с именем WebServicel, возвращающий строковое значение.
Visual Basic .NET
Public Class AsyncDemo
Dim myService As WebServicel
Public Sub CallMethodAsynchronouslyO
myService - New WebServicel ()
Создать делегат AsyncCallback с помощью оператора AddressOf.
Этот объект необходим для вызова метода, но в этом примере
он не используется.
myService. BeginMyMethodfAddressOf CallBack, New ObjectO)
End Sub
Public Sub CallBack(ByVal e as lAsyncResult)
Dim myString As String
Данные извлекают с помощью метода 'End', передав ему
в качестве параметра объект lAsyncResult.
myString = myService. EndMyMethod(e)
End Sub
End Class
Visual C#
public class AsyncDemo
myService ~ new WebService1();
// Создать делегат AsyncCallback, указывающий метод обратного вызова.
System. AsyncCallback myCallBack - new
System. AsyncCallback( CallBack );
// Этот объект необходим для вызоаа метода, но
// в этом примере он не используется.
myService. BeginMyMethod(nyCallBack, new objectf)):
}
public void CallBackflAsyncResult e)
{
string myString;
// Данные извлекают с помощью метода 'Enc', передав ему
// в качестве параметра объект lAsyncResult.
myString = myService. EndMyMethod(e);
Указать метод обратного вызова необходимо, но использовать его не обязатель-
но, поскольку можно извлечь данные в методе Begin, вызвав End напрямую. Если
метод End вызывается асинхронно, исполнение программы приостанавливается до
его завершения. Вот пример, иллюстрирующий это:
Visual Basic .NET
Public Sub AsyncDemoO
Dim myService As New WebServicel
Dim Async as ZAsyncResult
' Записать lasyncResult, который вернул метод 'Begin' в локальную
' переменную. Делегат метода обратного вызова необходим,
но для извлечения данных он не используется.
Async - myService.BeginMyMethod(AddressOf SomeMethod, New ObjectO)
' Здесь выполняются действия, сильно загружающие процессор.
Dim iiyString As String
1 Если метод Begin еще не завершился, исполнение приложения
приостанавливается, пока это не произойдет.
nyString = myService.EndMyMethod(Async)
Erd Suo
Visual C#
public void AsyncDemoO
{
WeoServicel myService = new WeoService1():
lAsyncResult Async;
// Записать lasyncResult, который вернул метод 'Begin' в локальную
// переменную. Делегат метода обратного вызова необходим,
// но для извлечения данных он не используется.
System.AsyncCallback myCallBack - new
System.AsyncCallback(SomeMethod);
Async = myService.BeginMyMetnod(myCallBack, new object());
// Здесь выполняются действия, сильно загружающие процессор,
string rnyString;
/,/ Если метод Begin еще не завершился, исполнение приложения
// приостанавливается, пока это не произойдет.
myString = myService.EndMyMethod(Async);
}
^ Создание ссылки на Web-сервис
1. В окне Solution Explorer щелкните правой кнопкой узел References и выберите
из контекстного меню команду Add Web Reference.
2. Укажите ссылку на Web-сервис, найденный в каталоге UDDI, либо введите ад-
рес Web-сервиса вручную. Щелкните кнопку Add Reference, чтобы добавить
ссылку в проект.
3. Добавив ссылку, можно создавать экземпляры Web-сервиса, как обычно.
*• Как синхронно вызвать метод Web-сервиса
1. Создайте экземпляр Web-сервиса.
2. Вызовите нужный метод, как обычно.
^ Как асинхронно вызвать метол Web-сервиса
1. Объявите метод обратного вызова, принимающий параметр типа JAsyncResult.
2. Инициируйте асинхронный вызов. Для этого вызовите метод Begin соответству-
ющего Web-метода, передав ему делегат метода обратного вызова.
3. Из метода обратного вызова (или другого метода) вызовите соответствующий
метод End, чтобы извлечь данные; передайте ему объект IAsyncResu.lt, который
вернул метод Begin.

Теги: .NET

Статьи по теме:

Применение типов .NET Framework в приложениях
Локализация формы
Создание конфигурационного файла
Проект установочной программы
Параметры компоновки установочной программы
Пространства имен System.Drawing
Объявление методов
Преобразование кодировки символов
Сборки
Настройка трассировочных переключателей
Двоичные файлы .NET
Реализация обработчиков событий
Пошаговое исполнение кода
Работа в редакторе кода
Отображение сообщений об ошибках
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Создание экземпляров элементов управления ActiveX. Регион сайта: Москва и Санкт-Петербург