Architecture Net


         

Web-служба Customer (Клиент)


Чтобы создать Web-службу Customer (Клиент), мы создадим с помощью шаблона Managed C++ Web Service (Web-служба на управляемом C++) проект Web-службы и назовем его CustomerWebService. Этот проект будет использован компонентом Customer (Клиент) для реализации деталей Web-службы. Ниже приведено содержимое файла CustomerWebService . asmx, который входит в состав проекта.

<%@ WebService class = "CustomerWebService.CustomerWebService" %>

А вот и код, реализующий класс CustomerWebService:

12.gif


Рис. 11.12. AcmeWeb2 получает доступ к Web-службе

public _gc class CustomerWebService :
public WebService
// класс сборщика мусора CustomerWebService: WebService
{
private: // частный
Customers * customers; // Клиенты public:
CustomerWebService ()
{
customers = new Customers("HotelBroker");
// клиенты = новые Клиенты ("HotelBroker");
}
[WebMethod]
int RegisterCustomer(
String *firstName, // Строка
String *lastName, // Строка
String *emailAddress) // Строка
{
int customerId;
customerld = customers->RegisterCustomer( // клиенты
firstName, lastName, emailAddress) ;
return customerld;
}
[WebMethod]
void UnregisterCustomer(int customerId)
{
customers->UnregisterCustomer(customerld); // клиенты }
[WebMethod]
[Xmllnclude(_typeof(CustomerListltem))]
ArrayList *GetCustomer(int customerld)
{
ArrayList *ar;
ar = customers->GetCustomer(customerld) ; // клиенты
return ar;
}
[WebMethod]
void ChangeEmailAddress(
int customerld, String *emailAddress)
{
customers->ChangeEmailAddress( // клиенты
customerld, emailAddress);
}
};

В коде содержится единственный незнакомый нам атрибут Xmllnclude. Он указывает, что для преобразования определенного пользователем типа данных, в нашем случае CustomerListltem, XmlSerializer обычно может создать протокол SOAP. Этот атрибут находится в пространстве имен System: :Xml: : Serialization (Система::Xml:: Преобразование в последовательную форму). Тем не менее, если вы посмотрите на класс-заместитель данной Web-службы, который расположен в каталоге WebService-Proxies, вы увидите, что заместитель GetCustomer (customerproxy.cs) возвращает только массив объектов.




Содержание  Назад  Вперед