на начало
На главную страницу
Форум   

Статья :: Передача структур в качестве входных и выходных параметров


Передача структур в качестве входных и выходных параметров

Вот простой пример того, как метод Web-службы может использовать структуры в качестве входных и выходных параметров. В исходный файл ATLServerWeb.h была добавлена структура MyStructure (Моя структура), содержащая два элемента типа int. Кроме того, в интерфейс IATLServerWebService был добавлен новый метод CopyMyStructure (Копировать мою структуру), который в качестве параметров передает в MyStructure указатели и принимает их от нее. Затем данный метод реализуется в классе CATLServerWebService.

namespace ATLServerWebService
// пространство имен ATLServerWebService
{
struct MyStructure
{
int x;
int y;
};
[
uuid("53A879FF-9D20-42A8-9978-COD4B05B10B7") ,
object / / объект
]
interface IATLServerWebService // интерфейс
{
HRESULT CopyMyStructure (
[in ] MyStructure *pms1, [out ] MyStructure *pms2);
};
class CATLSeir-verWebService :
public IATLServerWebService
{
public:
[ soap me tihod ]
HRESULT CopyMyStructure(
MyStructure *pms1, MyStructure *pms2)
{
pms2->x = pms1->x;
pms2->y = pms1->y;
return S_OK;
}
};

А вот клиентский код, который проверяет передачу входных и выходных параметров.

// передача указателей на структуры
// в качестве входных и выходных параметров
struct ATLServerWebService: -.MyStructure msl, ms2;
ms1.x = 10;
msl.у = 20;
ms2.x = 0;
ms2.y = 0;
wprintf(
L"ms1.x: %d, ms1.y: %d, ms2.x: %d, ms2.y: %d\n",
ms1.x, ms1.y, ms2.x, ms2.y);
wprintf(
L"Calling CopyMyStructure(&ms1, &ms2)\n",
ms2.x, ms2.y);
service.CopyMyStructure ( // служба
&ms1,
sizeof (ATLServerWebService::MyStructure) ,
&ms2);
wprintf(
L"ms1.x: %d, ms1.y: %d, ms2.x: %d, ms2.y: %d\n",
ms1.x, ms1.y, ms2.x, ms2.y);

Приводимая далее выдача программы доказывает, что маршализация структуры может выполняться в обоих направлениях. Вначале элементы х и у структуры ms2 содержат нулевые значения. Во время вызова метода CopyMyStructure структура ms2 изменяется, поскольку элементы копируются из msl, а затем ms2 передается обратно клиенту.

msl.x: 10, msl.y: 20, ms2.x: 0, ms2.y: 0
Calling CopyMyStructure(&msl, &ms2)
msl.x: 10, msl.y: 20, ms2.x: 10, ms2.y: 20

Сейчас вас, возможно, удивит, зачем было затевать столько работы. И чем это все лучше предоставления функций в виде динамически подключаемой библиотеки (DLL) или вызова удаленных процедур (RFC — Remote Procedure Call) или распределенной модели компонентных объектов (DCOM — Distributed Component Object Model)? Так вот, "крутизна" Web-службы как раз в том, что она, в отличие от динамически подключаемой библиотеки (DLL), может находиться в любом месте Internet. Кроме того, Web-службы, в отличие от вызова удаленных процедур (RFC — Remote Procedure Call) или распределенной модели компонентных объектов (DCOM — Distributed Component Object Model), создаются на основе языка XML и SOAP. В дальнейшем это позволит вам применять некоторые интересные возможности, связанные с интеграцией.


Передача структур в качестве входных и выходных параметров

страницы в данном разделе 
Глава 12. Web-узлы и Web-службы, работающие на основе ATL Server Web-узлы и Web-службы, работающие на основе ATL Server
История технологий, работающих с динамическим содержимым Web Приложения на основе ATL Server
ATL Server основан на интерфейсе прикладного программирования Internet-сервера (ISAPI) Архитектура приложения, использующего ATL server
Создание проекта ATL Server Project (Проект на основе ATL Server) Динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI)
Динамически подключаемая библиотека (DLL) Web-приложения Создание и запуск проекта на основе ATL Server
Добавление в сервер еще одного обработчика Добавление на сервер обработки управляющей структуры if-else-endif
Добавление на сервер обработки управляющей структуры while-endwhile Передача параметров серверному обработчику
Поддержка состояния сеанса Получение доступа к переменным сервера
Обработка форм Службы сеанса
Создание проекта Web-службы на основе ATL Server (ATL Server Web Service Project) Код Web-службы на основе ATL Server: ATLServerWebService.h
Создание клиентской программы, обращающейся к Web-службе Добавление функций в Web-службу на основе ATL Server
Изменение клиентской программы, работающей с Web-службой Передача структур в качестве входных и выходных параметров
Резюме >  


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста