Architecture Net



         

Особенности форматирования данных согласно спецификации SOAP - часть 2


Данная программа генерирует файл [В приведенном ниже файле для удобства ориентирования вставлены комментарии вида <! — комментарий -->, в самом файле, их, естественно, не будет. — Прим. ред.] cust.xml, который содержит кодированные данные, передающиеся по протоколу SOAP. Обратите внимание, что для идентификации объектов и полей используется атрибут id (идентификатор). Атрибут href используется в качестве объектной ссылки.

<SOAP-ENV:Body>
<al:Customer id="ref-1">
<name id="ref-3">John Smith</name> <!-- Джон Смит -->
<id>1</id> <!— идентификатор —>
<next href="#ref-4"/>
</a1:Customer>
<a1:Customer id="ref-4">
<name id="ref-5">Mary Smith</name> <!-- Мэри Смит -->
<id>2</id> <!-- идентификатор -->
<next href="#ref-1"/>
</a1:Customer>
</SOAP-ENV:Body>

Вторая программа WebService, как можно догадаться из ее названия, является Web-службой. Ниже приведено содержимое файла CustomerList. asmx.

<%@ WebService class="Test" %>

Исходный файл WebService.h содержит следующий код. Обратите внимание, что на этот раз класс Customer (Клиент) не имеет атрибута Serializable (Преобразуемый в последовательную форму).

public _gc class Customer
// класс сборщика мусора Клиент
{
public:
String *name; // Строка
long id; // идентификатор
Customer *next; // Клиент
};
public _gc class Test : public WebService
// класс сборщика мусора Испытание: WebService
{
public:
[WebMethod]
Customer *GetList() // Клиент
{
Customer *custl = new Customer;
// Клиент *custl = новый Клиент;
custl->name = "John Smith"; // Джон Смит
custl->id = 1; // идентификатор = 1
Customer *cust2 = new Customer;
// Клиент *cust2 = новый Клиент;
cust2->name = "Mary Smith"; // Мэри Смит
cust2->id =2; // идентификатор = 2
cust2->next = custl; // следующий
cust1->next = cust2; // следующий
return cust1;
}
};




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