Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vstup.docx
Скачиваний:
46
Добавлен:
28.09.2019
Размер:
6.42 Mб
Скачать

7.9 Протокол soap. Структура soap – документа.

Web-службы обмениваются информацией с клиентами с помощью XML-документов. Специальные тэги XML и правила их использования для обмена XML-документами web-служб определены протоколом SOAP. Спецификация, определяющая SOAP, построена как документ XML, не содержащий типа документа и инструкции по его обработке. Корневой элемент этого документа называется <Envelope>. В корневой элемент вкладывается необязательный элемент <Heard>, содержащий заголовок послания и обязательный элемент <Body>, в котором записывается само послание, т. е. структура SOAP-послания имеет вид:

<&xml version=”1.0”&>

<soapenv: Envelope xmlns=http://www.w3.org/2003/05/soap-envelope>

Soapenv: Heard>

< ! – Заголовок-- >

</soapenv: Hearder>

<soapenv: Body>

<! – Содержание документа -- >

<soapenv: Body>

<soapenv: Envelope>

Версия SOAP1.2 позволяет сделать запрос к SOAP-серверу по методу Get(). Т. е. набрав в строке браузера: http://localhost 8080/ws.jws?method=get,

мы получим XML-документ – ответ web-службы ws.

7.10 Web-служби. Специфікації Web-служб.

Создадим web-службу с использованием программного продукта Axis (v. 1.2) (Apache eXtensible Interaction System). Разрабатывается концерном W3C. Для разработки приложения будем использовать входящий в Axis сервер – Simple Axis Server.

public class Ws

{public String get()

{return “Hello”;}

}

Код службы сохраняется в файле Ws.jws (jws_java web Service).

Код клиента web-службы

import org.apache.axis client*;

import java.net.*;

public class Client{

public static void main (String[] args)

throws Exception{

Services=newServices();

Call call=(Call)s.createCall();

Call.setTarget End points.oress(new URL(“http://localhost:8080/Ws.jws”);

Call.setUparationName(“get”);

String response=(String)call invoke(new Object[]{});

System.out.println(“Get from.Ws:”+response);}}

Код клиента содержит классы service и Call которые входят в пакет org.apache.axis.Client.*. Основную роль в получении web-услуг играет класс Call. C его помощью идентифицируется адрес web-службы и название web-услуги. Кроме того его метод invoke возвращает результат выполнения web-услуги. Запуск сервера web-службы осуществляется с помощью команды:

>java org.appache.axis.transport.http.Simple Axis Server.

После запуска клиента имени: Get from Ws: Hello

Архитектура web-служб

Для своего функционирования web-службы используют ряд протоколов и спецификаций. Их можно разбить на 4 группы, образующие стек-протоколы.

Вид этого стека показано на рисунке.

UDDI

WSDL

SOAP

HTTP

HTTP-транспортный протокол.

SOAPспецификация определенного правила описания XML-документов для коммуникации между клиентом и сервером web-служб (Web-Service Description Language).

UDDI – спецификация для реестров web-служб (Universal Description and Integration). SOAP, WSDL, UDDI представляют собой реализацию XML. Наиболее в общем виде архитектуру web-служб можно представить следующим образом:

WSDL-описание

Web-услуги

Для нахождения необходимой службы в сети используется реестр UDDI к которому вначале своей работы должно обратиться клиентское приложение. Для определения функциональных возможностей web-службы служит WSDL-описание, с помощью которое клиент может получить информацию о всех web-услугах web-служб. В тоже время, если клиент знает адрес web-служб в сети, а также имеет информацию о его услугах, он может не использовать при своей работе реестр UDDI и WSDL-описание.

Програмування

8.1 Основні типи даних, основні оператори мови С++.

Основные типы C++

Основные типы в C++ подразделяются на две группы: целочисленные типы и типы с плавающей точкой (для краткости их будем называть плавающими типами). Это арифметические типы.

В C++ нет жёсткого стандарта на диапазоны значений арифметических типов (в стандарте языка оговариваются лишь минимально допустимые значения). В принципе, эти диапазоны определяются конкретной реализацией. Обычно выбор этих характеристик диктуется эффективностью использования вычислительных возможностей компьютера. Зависимость языка от реализации создаёт определённые проблемы переносимости. C++ остаётся машинно-зависимым языком.

К целочисленным типам относятся типы, представленные следующими именами основных типов:

char

short

int

long

Имена целочисленных типов могут использоваться в сочетании с парой модификаторов типа:

signed

unsigned

Эти модификаторы изменяют формат представления данных, но не влияют на размеры выделяемых областей памяти.

Модификатор типа signed указывает, что переменная может принимать как положительные, так и отрицательные значения. Возможно, что при этом самый левый бит области памяти, выделяемой для хранения значения, используется для представления знака. Если этот бит установлен в 0, то значение переменной считается положительным. Если бит установлен в 1, то значение переменной считается отрицательным.

Модификатор типа unsigned указывает, что переменная принимает неотрицательные значения. При этом самый левый бит области памяти, выделяемой для хранения значения, используется так же, как и все остальные биты области памяти - для представления значения.

В ряде случаев модификаторы типа можно рассматривать как имена основных типов.

Здесь также многое определяется конкретной реализацией. В версиях Borland C++ данные типов, обозначаемых как signed, short и int в памяти занимают одно и то же количество байтов.

Особое место среди множества основных целочисленных типов занимают перечисления, которые обозначаются ключевым словом enum. Перечисления представляют собой упорядоченные наборы целых значений. Они имеют своеобразный синтаксис и достаточно специфическую область использования. Их изучению будет посвящён специальный раздел.

Здесь также многое зависит от реализации. По крайней мере, для Borland C++ 4.5, основные характеристики целочисленных типов выглядят следующим образом:

Тип данных

Байты

Биты

Min

Max

signed char

1

8

- 128

127

unsigned char

1

8

0

255

signed short

2

16

-32768

32767

enum

2

16

-32768

32767

unsigned short

2

16

0

65535

signed int

2

16

-32768

32767

unsigned int

2

16

0

65535

signed long

4

32

-2147483648

2147483647

unsigned long

4

32

0

4294967295

К плавающим типам относятся три типа, представленные следующими именами типов, модификаторов и их сочетаний:

float

double

long double

Как и ранее, модификатор типа входит в число имён основных типов.

Плавающие типы используются для работы с вещественными числами, которые представляются в форме записи с десятичной точкой, так и в "научной нотации". Разница между нотациями становится очевидной из простого примера, который демонстрирует запись одного и того же вещественного числа в различных нотациях.

297.7

2.977*10**2

2.977E2

и ещё один пример…

0.002355

2.355*10**-3

2.355E-3

В научной нотации слева от символа E записывается мантисса, справа - значение экспоненты, которая всегда равняется показателю степени 10.

Для хранения значений плавающих типов в памяти используется специальный формат представления вещественных чисел. Этот формат называется IEEE форматом.

Ниже представлены основные характеристики типов данных с плавающей точкой (опять же для Borland C++ 4.5):

Тип данных

Байты

Биты

Min

Max

float

4

32

3.4E-38

3.4E+38

double

8

64

1.7E-308

1.7E+308

long double

10

80

3.4E-4932

3.4E+4932

Подведём итог.

Имена типов данных и их сочетания с модификаторами типов используются для представления данных различных размеров в знаковом и беззнаковом представлении:

char

signed char

unsigned char

short

signed short

unsigned short

signed

unsigned

short int

signed short int

unsigned short int

int

signed int

unsigned int

long

signed long

unsigned long

long int

signed long int

unsigned long int

Все эти типы образуют множество целочисленных типов. К этому множеству также относятся перечисления.

А вот сочетания имён типов и модификаторов для представления чисел с плавающей точкой:

float

double

long double

Вот и всё об основных типах. Помимо основных типов в C++ существуют специальные языковые средства, которые позволяют из элементов основных типов создавать новые, так называемые производные типы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]