Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 310

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 304 305 306 307 308 309 < 310 > 311 312 313 314 315 316 .. 320 >> Следующая

[System.Web.Services.Protocols.SoapMethodAttributeChttp://tempuri .org/Add",
MessageStyle-System.Web. Services. Protocols.SoapMessageStyle.PararaetersInOocument)] x. int y)
object[] results = this.InvokeCAdd", new object[] [x. y}); return ({1nt)resiflts[0])):
)
770 Глава 15 • Web-службы
Как мы видим, определение каждого метода, который нужно перенаправить на web-службу, помечается при помощи атрибута SoapMethod. У метода Add С) такая же сигнатура, каку исходного метода Add () на web-службе. Это очень удобно: как только клиенту потребуется обратиться к методу на web-службе, он просто привычными средствами вызывает этот метод в нрокси-с&орке, а та уже передает запрос на web-службу и возвращает клиенту полученные оттуда результаты.
Скорее всего, единственное изменение, которые мы захотим внести в сгенерированный исходный файл прокси-сборки. - поместить все его содержимое в специальное пространство имен. Это можно сделать опять-таки автоматически, указав имя пространства имен при помощи параметра /п утилиты
Компилируем прокси-сборку
Прежде чем мы создадим клиента, работающего через прокси-сборку, нам необходимо эту прокси-сборку создать, то есть скомпилировать соответствующий файл. Это можно сделать при помощи Visual Studio.NET (через новый проект типа С# Code Library) или компилятора командной строки csc.exe. В любом случае не забудем добавить ссылки на сборки System.Web. Services.dlL и System.Xml.dll:
csc /г:system,web.services.dll /г:system.xml.dl 1 /outiC:\CalcProxy.dll /t:library
calcproxy.es
В результате будет создана прокси-сборка в виде библиотеки типов с нашим прокси-классом(рис. 15.15).
\ f Г::Г.з№ону.(Ш - Jl DASM ШщШЗВц
EJd View Help
..... MANIFEST f
s-Щ ThaCalcprojy
в К Servier ¦
u > .class public auto ansf beforefiBldlnft
(> extends System.Web.Se(Vlces.PrDtocols.Soapl-
J > .tustDminstancevold |Sys!em.Web.Setvit;eE]S>
I ..... xtor:voiciO
[....• Add'.fioat32((ioai32,tiaat32)
! - Add : ІП132(Ш2,ІПОД
41 I """ " *
.assembly CalcProxy ( ¦A
LiJ Zu
Рис. Прокси-сборка в окне ILDasm.exe
Создание клиента для работы через прокси-сборку
Основное назначение прокси-сборки — облегчить создание клиента. И действительно, клиент, работающий через прокси-сборку, создается не просто, а очень просто. Он может быть любым - обычным клиентом Windows Forms, консольным или клиентом ASP.HET. Мы создадим самого простого клиента — консольного;
Создание прокси-сборки в Visual Studio.NET 771
// Не забудьте добавить ссылку на System.Web.Services.dll!
namespace WebServiceConsumer
using System;
// Пространство , нашей прокси-сборки using TheCalcProxy;
public class WebConsuner
і
static int Main(string[] args)
II Работаем с web-службой Servicel w - new ServicelO: Console.Wri teLineC IQQ + 100 is (0}" try
{
0):
)
catch(DivldeBvZeroExcepticn e)
(
Console.WriteLine(e.Message);
return 0;
w.AdduQO, 100));
]
1
Результат выполнения этой программы представлен на рис. 15.16. Обратите внимание, что мы смогли получить полную информацию об исключении, возникшем на web-службе.
1?!.Xj
- D:\CSharpBook\Labs\Chapter 15\CaiU ln-мі їм >'Debug'.
tm * 100 is 200
exception occurred: Sjrsten.Ueb.Services.Protocols.SortpEx ices Protocols .SoapException s Server was unable to proce Diu ideByZei-oExcept ion: Dude, can't diuitle by Eei-u*
at CalcUebSei-uice .Seroicel. Digide<I nt32 x, Int32 y> і ciiebserviceScalcsei-u ice . a:;™*. с:; : line 57
at System.Web.Seru ices - Protocols .SoapHttpClientProtoc ntMessaffe message, Uebftesponse response)
at S y;H;eft .\hih „Ь>ї-и . гкїг . PbNTі. ljc« і п -?*їйїїШ: ^іт.С^ "І ei:HV<»&-ci;.
LiL
Zi
Рис. 15.16. Консольный клиент web-службы.
Код приложения CalcClient можно найти в подкаталоге Chapter 15.
Создание в Visual Studio.NET
Создавать прокси-сборки можно и при помощи утилиты wscll.exe, и прямо в Visual Studio.NET. Работа с wsdl.exe более трудоемка, но у этой утилиты есть одно существенное преимущество: мы можем указать протокол подключения, который будет использоваться прокси-сборкой (HTTP-GET, HTTP-POST или SOAP). Visual Studio.NET позволяет генерировать только прокси-сборки, работающие по протоколу SOAP. Впрочем, если мы создаем прокси-сборку, то в подавляющем большинстве случаев будем использовать для нее именно SOAP. Поэтому прокси-сбор-
ки удобнее создавать в Visual Studio.NET.
1
772 Глава 15 • Web-службы
Давайте воспользуемся этой возможностью. Мы создадим очень простого клиента Windows Forms с элементарным интерфейсом, который позволит пользователю вводить два числа и передавать их четырем арифметическим методам Add С), Subtracts) и т. п., которые будут перенаправлять данные через прокси-сборку на web-службу для вычислений. Создание прокси-сборки производится автоматически, нам нужно только добавить в наш проект web-ссылку (рис. 15.17).
Solution і - ііі'ГіЧ - Wllil-urii l>l..lllt
IT j в
j Solution V/inforrrsCafcCi.enS' (1 project)
Предыдущая << 1 .. 304 305 306 307 308 309 < 310 > 311 312 313 314 315 316 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100