Мыло из чего состоит: Из чего состоит и как работает мыло?

By | 17.03.2021

Из чего делают туалетное мыло | Из чего это сделано

Туалетное мыло

С детства нас учили мыть руки перед едой. Туалетное мыло как ничто другое подходит для целей личной гигиены. А знаете ли вы из чего делают туалетное мыло и в чем его отличие от хозяйственного мыла?

Туалетное мыло – это сорт мыла, предназначенный прежде всего для личной гигиены.

Туалетное мыло состоит из натриевых солей натуральных или синтетических жирных кислот с добавками или без них.

Основой для производства мыла являются жирные кислоты, выделяемые из смеси животных и растительных жиров («жировой набор»), который представляет собой основную часть рецептуры мыла.

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

– животный жир пищевой

– животный жир технический

– пальмовый стеарин

– кокосовое масло

– пальмоядровое масло

– синтетические жирные кислоты

– гидрогенизированный твердый жир (саломас)

Как правило, в туалетное мыло вводятся также отдушка (для приятного запаха) и красители (для придания разнообразных цветов).

Туалетное мыло разных цветов

Туалетное мыло в зависимости от состава подразделяется на следующие марки:

– Нейтральное

– Экстра

– Детское

– Ординарное

Наиболее качественными являются мыла марок «Нейтральное» и «Экстра», которые содержат не менее 78 г жирных кислот на 100 г мыла. Для получения этих марок мыла применяют наиболее высококачественное жировое сырье – топленые пищевые животные жиры только высшего и первого сорта, кокосовое масло и др.

Для ароматизации мыла используют тонкие высококачественные отдушки. В мыле марки «Нейтральное» отсутствуют карбонаты натрия и калия, в марке «Экстра» их содержание не превышает 0,20 %. Эти мыла являются наиболее твердыми, они обладают малой набухаемостью.

По назначению туалетное мыло разделяется на марки:

1. Гигиеническое мыло общего назначения (для нормальной и жирной кожи) — наиболее массовая группа мыла, которая обычно не содержит дополнительных компонентов кроме красителей, отдушки и антиокислителей.

2. Гигиеническое специальное мыло (для нормальной и жирной кожи). Содержит 1–2 % добавки жироподобных веществ, при умывании эти вещества создают на коже тонкую защитную плёнку.

3. Дезинфицирующее и лечебно-профилактическое мыло. Содержит специальные добавки для дезинфекции и лечения различных заболеваний кожи.

Туалетное жидкое мыло по химическому составу заметно отличаются от твёрдого мыла и ближе к шампуням.

Жидкое туалетное мыло

Из чего делают жидкое мыло? | Секреты красоты | Здоровье

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

Для придания нужной консистенции и повышения вязкости в жидкое мыло добавляют натриевую соль соляной кислоты. Но вязкость жидкого мыла не свидетельствует о его качестве. Согласно ГОСТ 31696-2012, количество NaCl в жидком мыле не должно превышать 6%.

Какие бывают виды жидкого мыла?

В зависимости от добавок жидкое мыло может быть увлажняющим, антибактериальным и гипоаллергенным.

Также в зависимости от входящих в состав компонентов выделяют три вида жидкого мыла. 

1. На основе натуральных компонентов (щелочи, растительных масел и животных жиров). Его состав максимально приближен к составу кускового мыла с той лишь разницей, что для омыления используются калиевые соли, а не натриевые.

2. На основе анионных поверхностно-активных веществ (ПАВов) из возобновляемого сырья (пальмы, сахарного тростника).

3. На основе катионных синтетических ПАВов (лауретсульфата или лаурилсульфата натрия, алкилбензосульфоната). При растворении в воде любой температуры образуют обильную пену.

Как выбрать жидкое мыло?

Моющая способность является второстепенным фактором при выборе мыла. Главное, на что нужно обращать внимание, — уровень рН. Согласно ГОСТ 31696-2012, норма водородного показателя рН для шампуней и жидкого мыла на жировой основе составляет не более 10,0.

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

При выборе также нужно обращать внимание на аромат мыла. «Химический» запах — признак некачественных отдушек, его гипоаллергенные мыла иметь не должны.

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

Также следует учитывать, что многие производители часто используют загуститель. Он удешевляет состав мыла, но при этом в жидком мыле будет избыточное количество соли, больше воды, меньше моющих компонентов и увлажняющих добавок.

Смотрите также:

Применение жиров. Мыла — урок. Химия, 8–9 класс.

Жиры — важнейшая составная часть пищи. Практически все жиры пригодны для питания.

 

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

 

Жиры используются в пищевой промышленности при изготовлении различных продуктов питания (например, масло какао входит в состав шоколада).

 

Жиры применяются в косметической и фармацевтической промышленности (касторовое масло и др.).

 

Растительные масла используются в качестве олифы — растворителя для производства масляных красок.

 

Из жиров получают ценные продукты: глицерин, карбоновые кислоты, соли карбоновых кислот — мыла.

Мыла представляют собой натриевые и калиевые соли жирных карбоновых кислот:

 

стеараты C17h45COONa, C17h45COOK,

 

пальмиаты C15h41COONa, C15h41COOK,

 

олеаты C17h43COONa, C17h43COOK.

 

Чаще используются натриевые соли. Они образуют твёрдое мыло. Калиевые соли входят в состав жидкого мыла.

 

Мыла растворимы в воде и способны удалять загрязнения.

 

Недостатки мыла:

 

  • производится из пищевого сырья;

  • плохо стирает в жёсткой воде, так как образует нерастворимые осадки с ионами магния и кальция;

  • его растворы имеют щелочную среду, поэтому могут разрушать некоторые ткани и раздражать кожу рук.

 

В настоящее время широко используются синтетические моющие средства. Они синтезируются из непищевого сырья (чаще всего из нефти) и лишены недостатков мыла. Но СМС способны накапливаться в окружающей среде и загрязнять её, так как не разлагаются микроорганизмами.

Источники:

Габриелян О. С. Химия. 9 класс. Учебник для общеобразовательных учреждений. М.: Дрофа, 2011. — 221 с.

Из чего делают мыло: хозяйственное. детское, жидкое

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

Сегодня мыло представляет твердый кусок, крем или жидкий раствор, состоящий из молекул. Эти мыльные молекулы соединяются с неполярными веществами на коже, среди которых пыль, грязь, жир и пр. Кроме того, данные элементы соединяются и с полярными молекулами воды.

Таким образом, химический состав мыла является посредником между водой и загрязнениями. Молекулы грязи соединяются с водой и смываются с кожи. Давайте рассмотрим подробнее, из чего делают мыло разных видов. Это поможет узнать, как выбрать мыло, чтобы оно было настоящее, натуральное и самое безопасное.

Из чего делают современное мыло

Современное мыловарение и хим. состав мыльной продукции сильно отличаются от способов, которые применяли раньше. В основу продукта входят растворимые соли, получаемые за счет хим. соединения различных жирных кислот.

Также в состав промышленного мыла входят растительные масла и животный жир, красители и ароматизаторы, химические мылящие примеси и косметические добавки, глицерин и иногда ланолин.

После мыловарения на производстве получают хозяйственное твердое мыло. Но с добавлением различных косметических компонентов, отдушек и красителей изготавливают туалетное ароматное мыло. А чтобы получить из твердого жидкое мыло, к составу добавляют гидроксид калия.

Подобный состав далек от натурального и может вызвать раздражение на коже рук или других участков тела. Кроме того, подобные компоненты могут вызвать сильную аллергию, особенно у маленьких детей. Для чувствительной кожи лучше выбирать натуральный продукт, а для малышей — специальное детское жидкое мыло.

Если вы хотите найти безопасный продукт, обязательно проверяйте состав и наличие пометки ГОСТ. Мыло по ГОСТу изготавливают только из растительных компонентов, поэтому оно более безопасно и экологично. Давайте рассмотрим элементы, которые входят в хим. состав.

Компоненты в составе мыла

ЭлементыОписаниеВ какое мыло входит
ГлицеринМожет быть растительного и животного происхождения, более безопасным является первый вариантСоставная часть практически каждого мыла
ЛанолинЖивотный воск, который покрывает шерсть овец и получается путем обработки животных органическими растворителямиНечасто встречается в мыльных продуктах
Sodium Stearate и Stearic AcidСтеараты изготавливают на основе животных или растительных компонентов. Второй вариант выполняют по ГОСТ, и он более безопасенСодержится в большей части мыльной продукции
Sodium TallowateТалловат натрия или смесь натриевых солей жирных кислот, которые получают из животных жировСодержится в 70% всех разновидностей мыльного продукта
Sodium PalmateНатриевая соль жирных кислот, которую получают из пальмового масла, безопасный и натуральный компонентВходит в большую часть видов мыла
Sodium CocoateСмесь жирных кислот и солей натрия на основе кокосового пальма, натуральные и безопасные компонентыСодержится в дорогом мыле или мыле ручной работы
Sodium PalmitateПальмитат натрия или пальмитиновая кислота на растительной основе, допустима в составе мылаВходит в большую часть видов мыльной продукции
Жирные маслаОливковое или подсолнечное масло предупреждает пересушивание кожи, придает мягкость и эластичностьНатуральное мыло и продукция ручной работы
ШоколадДобавка подходит для любого типа кожи, оказывает благоприятное воздействие и поднимает настроениеНатуральное мыло и продукция ручной работы
КофеДобавка тонизирует кожу и оказывает эффект скрабаНатуральное мыло и продукция ручной работы, жидкое мыло
МедПриродная натуральная добавка питает кожу, насыщает витаминами и минераламиНатуральное мыло и продукция ручной работы
КрасителиПридают мылу нужный цвет и привлекательный внешний вид, могут вызвать аллергическую реакциюТуалетное и банное мыло, косметическое жидкое мыло

 

Отдушки и ароматизаторыПридают изделию приятный свежий аромат, снимают воспаления и устраняют бактерии, но могут вызвать аллергию. Допустимое содержание до 2% общего весаТуалетное и банное мыло, косметическое жидкое мыло
Mustela или Mink oilВстречается редко из-за дороговизны, однако не рекомендуется к использованиюСодержится в дорогом мыле

Хозяйственное мыло

Данное средство применяют для стирки одежды и мытья предметов быта. Не следует мыться таким мылом регулярно. Косметологи советуют иногда использовать данное изделие для восстановления волос и кожи.

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

В состав хозяйственного мыла входит большой объем щелочи и жирных кислот, а также вода. Изделие состоит только из этих трех компонентов. Благодаря такому составу оно имеет коричневый цвет и характерный запах.

Это настоящий натуральный антисептик, который эффективно убивает бактерии и дезинфицирует вещи, устраняет трудные пятна и старые загрязнения. Он подходит для борьбы с грибком и даже входит в состав некоторых лекарственных препаратов.

При выборе продукта смотрите на процент содержания кислотных и щелочных компонентов. Состав хозяйственного мыла разделяют по трем категориям: 65, 70 и 72%. Самым распространенным является 72% хозяйственное мыло.

Это чистый, безопасный и экологичный продукт, который не вызывает раздражения и аллергической реакции. Использование хозяйственного мыла 72% подходит даже для стирки детских вещей. Кроме того, оно хорошо подходит для дезинфекции детской ванны.

Отдавайте предпочтения настоящему хозяйственному мылу темного цвета. Если продукт светлый и обладает приятным запахом, значит, к составу добавили отдушки, что уменьшает натуральность и отбеливающие свойства. Не выбирайте жидкое хозяйственное мыло.

Оно включает токсичные и вредные поверхностно-активные вещества (ПАВ) и сильно отличается по составу от натурального аналога. Мы рассмотрели, как выбрать хозяйственное мыло, а далее узнаем подробнее о других видах мыльных изделий.

Дегтярное мыло

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

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

Данный продукт помогает справиться с высыпаниями, слегка подсушивает и отшелушивает кожу, выравнивает цвет лица и восстанавливает кожные покровы, устраняет вредные бактерии, укрепляет волосяные луковицы и сужает сосуды.

Это действенное средство против перхоти и выпадения волос, грибка, молочницы, прыщей. Оно помогает при пролежнях и жирной коже, трещинах на пятках. Кроме того, такое изделие можно применять для стирки детского белья.

Кстати, вы можете сделать данный продукт в домашних условиях. Для этого берется натуральная мыльная основа, куда добавляют березовый деготь и эфирное масло мяты.

Антибактериальное мыло

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

В состав антибактериального мыла входит триклозан либо триклокарбан. Это антимикробные элементы, которые нейтрализуют действие большинства микроорганизмов. Отметим, что они убивают и вредные, и полезные бактерии.

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

Жидкое мыло

Жидкие средства действуют более мягко и реже вызывают аллергическую реакцию. Поэтому при изготовлении гипоаллергенного или детского моющего средства выбирают именно жидкую консистенцию. Кроме того, мыло для новорожденных выпускают тоже жидким. Оно легче в использовании и дозировании. Средство не раскисает в мыльнице и не раскалывается, как твердый мыльный брусок.

В состав жидкого мыла входят растительные и животные жиры, второстепенные вещества с мягкими свойствами, ароматизаторы и красители. Такое средство достаточно легко приготовить самостоятельно. Следуйте следующей инструкции:

  • Приготовьте на водяной бане травяной отвар из ромашки, мяты либо мелиссы;
  • Разбавьте кипяченой водой;
  • Возьмите твердое детское мыло без запаха и натрите на мелкой терке;
  • Полученную стружку положите в отвар и поставьте на слабый огонь;
  • Растапливайте смесь до однородной консистенции, постоянно перемешивая;
  • В остывшее мыльное средство добавьте глицерин и хорошо перемешайте;
  • Затем в массу можно добавить дополнительные компоненты.

Жидкая масса на травяной основе получается нежной и мягкой. Она увлажняет и успокаивает кожу. Такому раствору можно придать любой цвет, запах и свойства. Для этого добавьте в охлажденный состав несколько капель эфирного масла, но учитывайте возможность аллергической реакции.

Кроме того, можно добавить пищевые или натуральные красители. Это может быть молоко, кофе, сок, мед и так далее. Но не переборщите с добавками! Не рекомендуется смешивать эфирные масла и ароматизаторы.

Как приготовить мыло ручной работы

Лучшее натуральное и экологичное мыло — изделие, приготовленное самостоятельно. Так вы будете уверены в содержимом и компонентах продукта. Наиболее легкий метод приготовления состоит в использовании готовой мыльной основы, которую можно купить в каждом магазине косметики. Кроме того, можно взять и классическое детское мыло.

Для приготовления измельчите мыло на терке или возьмите готовую жидкую мыльную основу. Разбавьте компоненты водой и поставьте на маленький огонь. Варите до однородной консистенции, регулярно помешивая.

Затем в состав мыла ручной работы добавляют эфирное масло. Используйте не более 5-7 капель на 100 грамм готовой основы. Либо можно взять оливковое или подсолнечное масло в объеме 1⁄3 чайной ложки на сто грамм.

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

Кроме того, можно положить мелкие кусочки шоколада в расчете 2 грамма продукта на сто грамм раствора. Приготовленную жидкость разливают в емкости из пластика и ставят в холодное место до полного затвердевания. Домашнее мыло готово!

Если вы не хотите готовить средство, можно заменить покупной или домашний продукт на сухой горчичный порошок. Такое средство подойдет, чтобы помыть посуду или постирать вещи. А чем можно заменить стиральный порошок, читайте по ссылке https://vsepodomu.ru/stirka/chem-zamenit-poroshok/.

Из чего состоит натуральное мыло

В последнее время люди все чаще задумываются о натуральности и экологической безопасности предметов, что нас окружают: начиная от продуктов питания и заканчивая автомобилями. Некоторые делают это для собственного здоровья и самочувствия, а другие беспокоятся об окружающей среде и экологии. Во всех случаях это подразумевает отказ от продуктов синтетического происхождения, которые кроме вреда здоровью еще и загрязняют воду, атмосферу, разлагаются веками – не будем вдаваться в подробности, эту информацию легко можно найти в интернете.

Такое бережное отношение к природе и самому себе обычно охватывает практически все бытовые сферы, в том числе и гигиенические процедуры. Так, можно перейти на пользование натуральными шампунями (или хотя бы менее синтетическими, чем магазинные жидкие) и натуральным мылом. Но нужно понимать, из чего состоит это средство гигиены и какое его преимущество перед аналогами массового производства.

Натуральное мыло, цель которого – смыть грязь и бережно очистить кожу, не пересушивая ее, – имеет очень лаконичный состав. Если свести к одной простой формуле, получится «щелочь + вода + жир (масла) = мыло + глицерин». В результате взаимодействия щелочного раствора и масел получается мыльное средство, и не стоит пугаться слова «щелочь» в контексте с мылом, поскольку в готовом натуральном мыле ее нет.

Теперь подробнее о составляющих. С щелочью все просто: гидроксид натрия дает твердое мыло, гидроксид калия – жидкое. Также можно встретить натуральное мыло на двух щелочах. Далее – вода. Вместо воды может браться другая жидкость: отвары трав, сваренный кофе, гидролаты, молоко, даже алкогольные напитки: пиво и вино. Третья составляющая – жир. Чаще всего это растительные масла, самые разные, которые в сочетании дают натуральному мылу разные свойства и характеристики. Например, кокосовое масло дает обильную пену, оливковое – приятную гладкость и «шелковистость» пены, пальмовое – твердость. Изредка используются жиры животных, но большинство идейных мыловаров предпочитают работать именно с растительными маслами.

Итак, выше перечислены основные компоненты натурального мыла. Но это – только основа. Для множества приятных эффектов в мыло добавляются глины, соль, деготь, аюрведическая пудра (как здесь https://lumberjack.com.ua/limonnoe_mylo), мед, протеины шелка, смолы, эфирные масла и многое другое. С их помощью можно создать натуральное очищающее средство с оздоровительными качествами, например, дегтярное мыло избавляет от многих кожных проблем. Ну а постоянное использование натурального мыла позволит поддерживать нормальное и не пересушенное состояние кожи, а приятный запах и ощущения при мытье станут просто дополнительным бонусом.

Магнитное мыло пригодится в очистке нефтяных загрязнений

Автор фото, na

Подпись к фото,

Капля магнитного мыла отклоняется в сторону магнита слева

Международная группа исследователей получила первые образцы магнитного мыла. Такое мыло и растворенные им вещества легко удаляются с помощью магнитного поля.

Специалисты считают, что дальнейшая разработка этого открытия приведет к созданию новых методов очистки воды и почвы от нефтяных и прочих загрязнений.

Статья об этом открытии опубликована в химическом журнале
Angewandte Chemie.

Ученые нашли способ вводить в новое мыло атомы железа, которые образуют наночастицы, легко удаляемые магнитным полем.

“Если бы 10 лет назад вы сказали химику – давайте сделаем мыло, которое может намагничиватья, то на вас посмотрели бы как на идиота”, – говорит один из авторов статьи, сотрудник Бристольского университета профессор Джулиан Истоу.

Почему мыло моет

Мыло состоит из длинных молекул, концы которых ведут себя по-разному. Один конец молекулы притягивается к воде, другой отталкивается ею.

Автор фото, SPL

Подпись к фото,

Очистка нефтяного загрязнения до сих пор является весьма нелегким и грязным делом

Моющее действие мыла объясняется его способностью прилипать к жирным поверхностям, где концы молекул мыла, отталкивающиеся от воды, растворяют молекулы жира. Затем молекулы мыла образуют капельки, в которых водолюбивые концы молекул направлены наружу.

Профессор Истоу и его коллеги обнаружили способ введения атомов железа в молекулы мыла.

Однако отдельные атомы железа ведут себя не так, как обычные магниты. За необычное поведение полученного вещества явно отвечали какие-то иные молекулярные процессы.

Исследователи отправили образцы в Гренобль во Франции, где их исследовали с помощью потоков нейтронов.

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

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

Крем-мыло Dove Красота и Уход (135 г)

Описание

Появление бренда Dove связано с созданием уникального очищающего средства для кожи, не содержащего щелочи. Формула единственного в своем роде крем-мыла на четверть состоит из увлажняющего крема – именно это его качество помогает защищать кожу от раздражения и сухости, которые неизбежны при использовании обычного мыла. Dove —марка, которая известна благодаря авангардному изобретению: мягкому крем-мылу. Dove любим миллионами, ведь они не содержат щелочи, оказывают мягкое, щадящее воздействие на кожу лица и тела. Удивительное по своим свойствам крем-мыло довольно быстро стало одним из самых популярных косметических средств. Успех этого продукта был настолько велик, что производители долгое время не занимались расширением ассортимента. Прошло почти сорок лет с момента регистрации товарного знака Dove, прежде чем свет увидел крем-гель для душа и другие косметические средства этой марки. Все они создаются на основе формулы, разработанной еще в прошлом веке, но не потерявшей своей актуальности. На сегодняшний день этот бренд по праву считается олицетворением красоты, здоровья и женственности. Помимо женской линии косметики выпускаются детские косметические средства и косметика для мужчин. Несмотря на широкий ассортимент предлагаемых средств по уходу за кожей и волосами, завоевавших признание в более чем 80 странах по всему миру, производители находятся в постоянном поиске новых формул. Dove считается одним из ведущих в своей области. Он известен миллионам людей в почти сотне стран по всему миру. В мире Dove красота — это источник уверенности в себе, а не беспокойства. Миссия бренда — дать новому поколению возможность расти в атмосфере позитивного отношения к собственной внешности. Превратите ежедневный уход за кожей в истинное удовольствие с крем-мылом Dove Красота и уход. Обладая нежной текстурой и нейтральным запахом, оно мягко очищает кожу, восстанавливая утраченную влагу и возвращая коже гладкость и шелковистость. Содержит ¼ увлажняющего крема. на четверть состоит из крема

sodium lauroyl isethionate, stearic acid, sodium palmitate, lauric acid, aqua, sodium isethionate, sodium stearate, cocamidopropyl betaine, sodium palm kernelate, glycerin, parfum, sodium chloride, zinc oxide, tetrasodium edta, tetrasodium etidronate, alumina, alpha-isomethyl ionone, benzyl alcohol, butylphenyl methylpropional, citronellol, coumarin, hexyl cinnamal, limonene, linalool, ci 77891.

Что такое SOAP API? | АльтексСофт

Время чтения: 12 минут

Каждый раз, когда вы входите на веб-сайт с помощью своей учетной записи Facebook или перетаскиваете значок выпадающего списка по карте Google в приложении для вызова водителя, приложение, которое вы используете, связывается с Google или Facebook через веб-API. API или интерфейс прикладного программирования – это форма соглашения между веб-службами о том, как они собираются обмениваться данными, например получить карту или учетные данные вашей учетной записи.Сами данные структурированы в сообщениях, которые системы отправляют друг другу. Как только вы откроете, скажем, приложение Uber, ваш телефон отправит запрос сообщения в Google Maps, а Google вернет саму карту.

И если вы когда-либо имели дело с веб-сервисами, вы, вероятно, знаете, что существует несколько способов создания веб-API. Современная сеть управляется API-интерфейсами, использующими шаблон REST. Это легкий и эффективный обмен данными. Но иногда можно встретить другой подход – протокол SOAP. Он не хвастается своей простотой и не так быстр, как REST.Но вы будете удивлены, насколько это часто встречается в корпоративном обмене данными, потому что у протокола SOAP есть свои достоинства.

В этой статье мы выясним, как работает протокол SOAP, почему он так распространен среди корпоративных пользователей и чем отличается от REST.

Пора сделать несколько предостережений: в этой статье используются технические термины, такие как сервер, клиент, протоколы и т. Д. Несмотря на то, что большинство из них объяснены, если вы все еще не уверены, ознакомьтесь с нашей статьей о веб-архитектуре для начинающих. Это удобная отправная точка для тех, кто просто пытается погрузиться в воду.

Что такое SOAP?

SOAP или Протокол доступа к простым объектам – это протокол веб-связи, разработанный для Microsoft еще в 1998 году. Сегодня он в основном используется для предоставления веб-сервисов и передачи данных по HTTP / HTTPS. Но ими дело не ограничивается. SOAP, в отличие от шаблона REST, поддерживает только формат данных XML и строго следует предустановленным стандартам, таким как структура обмена сообщениями, набор правил кодирования и соглашение о предоставлении процедурных запросов и ответов.

Встроенная функциональность для создания веб-сервисов позволяет SOAP обрабатывать сообщения и делать ответы независимыми от языка и платформы.

Хотя большая часть обмена веб-данными происходит через обмен REST, SOAP не исчезнет в ближайшее время, поскольку он очень стандартизирован, позволяет автоматизировать в некоторых случаях и более безопасен. Давайте посмотрим на основные функции SOAP.

SOAP работает только с XML

Данные, передаваемые через Интернет, обычно имеют определенную структуру.Два самых популярных формата данных – это XML и JSON.

XML (или Extensible Markup Language) – это текстовый формат, который устанавливает набор правил для структурирования сообщений в виде как записей, удобочитаемых человеком, так и машиночитаемых. Но XML многословен, поскольку он направлен на создание веб-документа со всей его формальностью. JSON , с другой стороны, имеет свободную структуру, которая фокусируется на самих данных. Взгляните на изображение ниже, чтобы получить представление.

Вы видите, что многочисленные закрывающие теги в XML делают его намного длиннее.Спасибо PCMag за изображение.

Как мы уже упоминали, при отправке запросов и ответных сообщений в веб-приложениях SOAP требует обмена XML между системами. И когда запрос получен, API-интерфейсы SOAP отправляют сообщения только в кодировке XML.

Помимо формата данных, SOAP имеет еще один уровень стандартизации – структуру сообщений.

Структура сообщения SOAP

XML – не единственная причина, по которой протокол SOAP считается многословным и сложным по сравнению с REST.Это также способ составления сообщений SOAP. Стандартные запросы и ответы SOAP API отображаются в виде сообщения в оболочке, состоящего из четырех элементов с определенными функциями для каждого из них.

Заголовки и элементы неисправности не являются обязательными

Конверт – это основной и важный элемент каждого сообщения, которое начинается и заканчивается сообщениями с его тегами, охватывающими его, отсюда и название.

Заголовок (необязательно) определяет специфику, дополнительные требования к сообщению, e.грамм. аутентификация.

Тело включает запрос или ответ.

Ошибка (необязательно) показывает все данные о любых ошибках, которые могут возникнуть в запросе и ответе API.

Пример сообщения SOAP. Источник изображения: IBM

Расширяемость SOAP с помощью стандартных протоколов WS

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

Но поскольку веб-приложения обычно решают общие наборы проблем, после выпуска SOAP основной протокол был дополнен многочисленными стандартными протоколами, которые определяют, как вы это делаете. Все эти протоколы обычно имеют маркировку WS- (название протокола), , например. WS-Security, WS-ReliableMessaging. Они были предоставлены различными организациями, включая Microsoft, IBM, OASIS и другие.

Стандартные протоколы охватывают несколько областей и аспектов использования SOAP:

  • Безопасность
  • Обмен сообщениями
  • транзакции
  • Метаданные и т. Д.

Самое замечательное в этих протоколах то, что вы можете выбрать, какой из них использовать. Обычно это называют расширяемостью SOAP. Например, если вам нужно, чтобы ваши финансовые транзакции были безопасными, вы можете применить WS-Atomic Transaction, которые совместимы с ACID.

Соответствие ACID

ACID означает атомарность, согласованность, изоляция и долговечность. – это качество транзакций корпоративного уровня и одна из причин, по которым протокол SOAP все еще используется при обмене конфиденциальной информацией в корпоративных архитектурах.

Соответствие

ACID означает, что транзакции соответствуют следующим требованиям:

Атомарность. Несколько связанных транзакций либо работают как единое целое, либо не работают вообще. Иногда это называют подходом «все или ничего» . Этот набор транзакций сравнивается с атомом, который состоит из нескольких тесно связанных элементов.

Согласованность. Если какая-то часть транзакции терпит неудачу, система возвращается в исходное состояние.

Изоляция. Транзакции независимы друг от друга.

Прочность. Даже в случае сбоя системы завершенные транзакции остаются.

Если вы используете WS-Atomic Transaction, еще один стандартный протокол, вы сможете добиться соответствия ACID.

Язык описания веб-сервисов (WSDL), документ

Одной из основных особенностей API-интерфейсов SOAP является то, что они почти всегда используют документ WSDL.

Проще говоря, документ WSDL – это XML-описание веб-службы.Он действует как руководство по взаимодействию с веб-службой, определяя конечные точки и описывая все процессы, которые могут выполняться открытыми приложениями. Они могут включать типы данных, используемые в сообщениях SOAP, и все действия, доступные через веб-службу. Таким образом, файл WSDL служит подписанным контрактом между клиентом и сервером.

Так может выглядеть документ WSDL. Источник изображения: Researchgate.net

Самое замечательное в WSDL заключается в том, что он позволяет генерировать клиентский код на разных языках и сразу же отправлять сообщения серверу.Хотя не все API-интерфейсы SOAP используют документы WSDL, их использование настолько популярно, потому что помогает различным языкам программирования и IDE быстро наладить взаимодействие.

Подробнее о технической документации читайте в специальной статье.

Протоколы передачи: HTTP, TCP, SMTP, FTP и др.

С точки зрения непрофессионала, протокол передачи – это набор правил и команд, используемых для передачи данных через Интернет. Существуют протоколы низкого уровня, такие как IPv4, которые просто доставляют пакеты данных из одной точки в другую.Существуют более высокие уровни передачи, такие как TCP, которые обеспечивают доставку данных. И, наконец, существуют протоколы уровня приложений, которые используются веб-браузерами для связи с веб-серверами, но не отвечают за само соединение.

SOAP поддерживает множество протоколов передачи, как высокого, так и низкого уровня. Например, SOAP позволяет обмениваться сообщениями через TCP (протокол управления транзакциями), низкоуровневый метод обмена данными, который работает между портами через IP-сеть.Вы можете выбрать вариант SMTP (простой протокол передачи почты), который представляет собой протокол связи для передачи электронной почты, FTP (протокол передачи файлов) и любой другой метод передачи, поддерживающий обмен текстовыми данными.

Имеет ли смысл отправлять данные по протоколам, отличным от HTTP / HTTPS? В большинстве случаев это не так. SOAP в первую очередь был разработан для работы с HTTP. Но могут быть сценарии, такие как ограничения безопасности, требования к серверу, архитектура решения или просто скорость, которые выиграют от этой универсальности SOAP.

SOAP WS-Безопасность

SOAP ценится за способность интегрировать функцию WS-Security . Этот набор протоколов определяет, как обеспечить безопасность внутри транзакций, и предлагает конфиденциальность и целостность данных. Кроме того, он позволяет использовать шифрование и криптографическую подпись.

WS-Security позволяет шифровать ваши сообщения не только по протоколу HTTPS (который уже содержит шифрование), но и на уровне сообщения, имея данные аутентификации в элементе заголовка.Необходимо убедиться, что если ваши данные выходят за пределы HTTPS, когда достигают сервера, они могут быть прочитаны только правильным процессом внутри этого сервера, а не самим правильным сервером. Поскольку на стороне сервера может произойти некоторая предварительная обработка данных до того, как сообщение достигнет назначенного процесса.

Вот как WS-Security работает со структурой сообщения

Витторио Берточчи, главный программный менеджер Microsoft, объяснил, как работает WS-Security , используя метафору «голого мотоциклиста».

Представьте свое сообщение в виде обнаженного мотоциклиста. Чтобы добраться до места назначения, он может проехать через прозрачный туннель и надеяться, что его никто не увидит (HTTP). Или он может проехать через непрозрачный туннель. В этом случае, хотя никто не видит его, когда он находится внутри туннеля, чтобы добраться до конечного пункта назначения, он все равно должен проехать по некоторым улицам (HTTPS, очевидно, непрозрачный туннель). И, наконец, он может просто носить одежду и шлем, чтобы чувствовать себя в полной безопасности (WS-Security).

Именно благодаря этой безопасности на уровне сообщений финансовые организации и другие корпоративные пользователи выбирают протокол SOAP.

Обмен сообщениями SOAP и без сохранения состояния

Начало 21 века запомнилось интернет-бумом. Появлялись тысячи интернет-компаний, и миллионы пользователей выходили в Сеть каждый день. А теперь представьте, что один сервер начинает одновременно получать тысячи запросов от пользователей (клиентов). И если этот ресурс делает что-то более сложное, чем отображение стен текста, все может замедлиться. Например, если пользователи проверяют расписание предстоящих рейсов и должны детализировать каждую деталь полета, сервер должен знать, что происходит с клиентом, верно?

Похоже, что вы можете справиться с этой ситуацией двумя способами: используя операции с сохранением состояния, и без сохранения состояния, .И SOAP поддерживает и то, и другое.

Stateful означает, что сервер хранит информацию, которую он получает от клиента, по нескольким запросам. Например, сначала он запоминает даты полета, которые вы ищете, а затем предоставляет информацию о ценах после второго запроса. Это позволяет объединять сообщения в цепочку, информируя сервер о предыдущих запросах. Обмен сообщениями с отслеживанием состояния может иметь решающее значение в операциях с участием нескольких сторон и сложных транзакциях, например.грамм. банковские операции или бронирование авиабилетов. Но все же для сервера это действительно тяжело.

Без сохранения состояния Связь означает, что каждое сообщение содержит достаточно информации о состоянии клиента, чтобы сервер не беспокоился об этом. Как только сервер возвращает запрошенные данные, он забывает о клиенте. Каждый запрос изолирован от предыдущего. Операции без сохранения состояния помогли снизить нагрузку на сервер и увеличить скорость связи.

Операции с отслеживанием состояния – одна из причин, по которой протокол SOAP используется для банковских транзакций и другого обмена данными, который требует объединения сообщений.Подробнее о вариантах использования SOAP ниже.

Логика повтора

При создании SOAP API разработчики могут интегрировать логику успешного выполнения / повторной попытки. Проще говоря, если что-то пойдет не так, запрашивающая сторона получит сообщение XML с кодом ошибки и ее объяснением. Таким образом, разработчик на стороне клиента понимает причину сбоя и может настроить запрос, чтобы получить успешный ответ. Эта функция добавляет уверенности в процессе разработки, поскольку вам не нужно вручную искать проблему.SOAP имеет спецификацию по умолчанию для определения формата ответа.

SOAP – универсальный, мощный и очень стандартизованный. Но дело в том, что иногда вам не нужно, чтобы интерфейс был настолько богатым. И у SOAP есть несколько недостатков, которые легко склоняют чашу весов в пользу REST для большинства инженеров и их организаций.

Некоторые недостатки SOAP, которые следует учитывать

Ресурсоемко. Из-за большего размера XML-файла и полезной нагрузки, создаваемой массивной структурой сообщения, SOAP API требует большей пропускной способности.Иногда с этим компромиссом не стоит иметь дела. Проще говоря, эти строки тегов, которыми изобилуют сообщения XML, обрабатываются медленно.

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

Недостаток гибкости. Мы упоминали, что SOAP API служит строгим контрактом между клиентом и сервером.Имея это в виду, эта жесткая схема SOAP требует дополнительных усилий для добавления или удаления свойств сообщения на обеих сторонах связи, на сервере и на клиенте. Это делает обновление запросов и ответов утомительным процессом и замедляет внедрение.

Начало работы с SOAP: основные источники

Если вы только начинаете разработку SOAP, вот основные ссылки, которые вам следует проверить:

Документация по SOAP – ключевой источник истины для тех, кто начинает работать с SOAP

Версии SOAP – поскольку было несколько итераций протокола, проверьте эти версии SOAP

WSDL – как использовать язык описания веб-служб и создавать документы WSDL

WS-Addressing – как добавить информацию о маршрутизации в заголовки SOAP

WS-ReliableMessaging – расширение, обеспечивающее доставку сообщений по назначению.Это также помогает создавать цепочки сообщений

WS-Coordination – координация действий распределенных приложений

WS-Security – как включить защиту на уровне сообщений

WS-Atomic Transaction – как сделать сообщения ACID-совместимыми

Сравнение SOAP и REST

При описании SOAP нельзя не упомянуть его основную альтернативу – REST.

REST или передача репрезентативного состояния – это архитектурный стиль, а не протокол.Это означает, что REST обеспечивает гораздо большую гибкость с точки зрения того, как вы структурируете свое сообщение, какой формат вы используете и как масштабируются клиент и сервер. SOAP, с другой стороны, требует тесной связи между клиентом и сервером. Если одна из сторон что-то меняет, все идет не так, отсюда и протокол.

REST был представлен в 2000 году – он ненамного моложе SOAP – с целью заставить серверы меньше заботиться о том, что происходит на клиенте.

И вот здесь начинается одно из основных различий между REST и SOAP.

Как скажет вам большинство инженеров, нельзя напрямую сравнивать SOAP и REST, но поскольку оба подхода решают схожий набор проблем, вот краткая разбивка

Операции с сохранением состояния и без сохранения состояния. REST не имеет гражданства; SOAP поддерживает оба подхода.

Структура сообщения. В то время как сообщение SOAP является «конвертом», сообщение REST находится на «открытке»: оно не имеет дополнительных упаковок, заголовков или чего-либо еще, что могло бы изменить его упрощенный характер.

Логическая экспозиция. В отличие от SOAP, который сохраняет свою логику в документе WSDL, у REST есть альтернатива – документ WADL (или документ языка описания веб-приложений). Он не так распространен, как WSDL, но иногда он полезен, если вы работаете в корпоративной среде и не можете легко связаться с людьми со стороны службы, требуя, чтобы у вас были под рукой некоторые формальные соглашения.

Форматы данных. Как мы уже упоминали, SOAP – это строго XML. REST может работать с JSON, XML, HTML и другими форматами, которые вам нравятся.Но самым популярным остается JSON (или объектная нотация JavaScript).

Протоколы передачи. SOAP является гибким с точки зрения протоколов передачи, что позволяет использовать его в различных сценариях. REST ориентирован исключительно на обмен HTTP / HTTPS. Могут быть некоторые исключения, если вы сопоставляете методы обмена HTTP (GET, POST PUT, DELETE и т. Д.), Скажем, с методами FTP. Но REST был разработан с учетом HTTP.

Кеширование. Кэширование означает хранение некоторой информации на стороне клиента, чтобы избежать дополнительной нагрузки на сервер.Например, вы можете кэшировать нединамический контент, такой как изображения, чтобы быстрее загружать их на стороне клиента и не запрашивать сервер делать это каждый раз, когда вы посещаете ресурс. REST позволяет кэшировать данные на уровне HTTP. Если вы хотите реализовать SOAP-кеширование, вам необходимо настроить дополнительный модуль кеширования. Как правило, REST более удобен для кеширования.

Размер сообщения . Отсутствие служебного текста и блоков кода в простом файле JSON по сравнению с громоздким XML в SOAP приводит к значительному уменьшению размера.Другими словами, скромный файл JSON RESTful API легче и быстрее обрабатывать и передавать.

Кривая обучения. Архитектура RESTful проста и понятна. SOAP требует более глубокого понимания стандартов и дополнительных протоколов WS. Вдобавок ко всему, инженерное сообщество, занимающееся REST, шире. Таким образом, вы можете рассчитывать найти ответы на проблемы намного быстрее.

Обработка ошибок. В отличие от SOAP API, где спецификация позволяет возвращать сообщение Retry XML с кодом ошибки и ее объяснением, REST API оставляет меньше места для прозрачности.REST в основном предоставляет два варианта: Ответ может содержать код ошибки без каких-либо объяснений. Это функция по умолчанию. С другой стороны, технология позволяет вручную прописывать объект ошибки вместе с его кодом.

Безопасность. REST API использует Secure Sockets Layer (или SSL) вместе с HTTPS поверх HTTP, имея простой транспортный механизм в качестве метода шифрования. Покрытие HTTPS действует как щит для безопасности данных. И протокол безопасности SSL применяется через соединение HTTPS для проверки вызовов REST API.С помощью SOAP вы также можете использовать SSL, включая обмен сообщениями TCP, в дополнение к безопасности на уровне сообщений.

Примеры использования SOAP

Принимая во внимание эти различия, становится очевидным, почему обмен веб-сообщениями в основном осуществляется с помощью REST. Подводя итоги, давайте определим случаи, когда SOAP по-прежнему остается основной технологией.

Стандартизированные операции: биллинг, навигация, услуги. Все варианты использования, в которых необходимо исключить любую неверную интерпретацию, хорошо подходят для обмена данными по протоколу SOAP.Обычно эти системы имеют строгие контракты с четко определенной логикой, которую можно описать с помощью документа WSDL.

Банковские операции и платежные системы. Когда вам нужно, чтобы ваши транзакции всегда были надежными и недоступными для третьих сторон, SOAP имеет множество преимуществ, которые следует учитывать. Во-первых, это уровень безопасности с соблюдением требований ACID и протоколов WS-Security. Кроме того, этот набор сценариев использования обычно требует обмена сообщениями с отслеживанием состояния и , то есть с использованием связанных транзакций, которые не изолированы одна от другой.Поскольку платежные системы могут иметь несколько сторон, участвующих в одной операции, SOAP позволяет лучше координировать их поведение.

Системы бронирования авиабилетов. Поскольку бронирование рейсов обычно включает несколько сторон, некоторые поставщики из этой отрасли по-прежнему полагаются на протокол SOAP для обработки сообщений с отслеживанием состояния и цепочки сообщений.

Обмен сообщениями без HTTP и устаревшие среды. Если требования к серверу и существующие системы используют протоколы связи помимо HTTP, SOAP – это первый вариант, на который следует обратить внимание.

Эта статья является частью серии статей, посвященных различным подходам к системам и стандартам цифровой связи. Вы также можете проверить:

Что такое API?

ГрафикQL

Электронный обмен данными (EDI)

SOAP и REST API: что подходит именно вам?

Извечный вопрос: в чем разница между SOAP и REST API и какой из них подходит для моего проекта?

Тот факт, что наше имя – SoapUI, не означает, что мы также не знаем, о чем говорим, когда доходит до объяснения веб-сервисов и API RESTful.

Итак, если вы ищете ресурс, который даст вам ответ на этот извечный вопрос, вы попали в нужное место. Мы также рассмотрим пример кода, а также вызовы и критические замечания по каждому выбору.

Мы предлагаем начать с видео в качестве введения в эту тему или для тех, кто просто визуально учится.

Начните здесь:

SOAP против REST

Термин веб-API обычно относится к обеим сторонам компьютерных систем, взаимодействующих по сети: к службам API, предлагаемым сервером, а также к API, предлагаемому клиентом, например веб-браузером.

Серверная часть веб-API – это программный интерфейс для определенной системы сообщений «запрос-ответ», обычно называемый веб-службой. Существует несколько моделей проектирования веб-служб, но две наиболее распространенные – это SOAP и REST.

SOAP обеспечивает следующие преимущества по сравнению с REST:

  • Независимость от языка, платформы и транспорта (REST требует использования HTTP)
  • Хорошо работает в распределенных корпоративных средах (REST предполагает прямую связь точка-точка)
  • Стандартизированный
  • Обеспечивает значительную расширяемость перед сборкой в ​​форме стандартов WS *.
  • Встроенная обработка ошибок
  • Автоматизация при использовании продуктов на определенных языках

REST по большей части проще в использовании и более гибок.Он имеет следующие преимущества по сравнению с SOAP:

  • Использует простые для понимания стандарты, такие как swagger и OpenAPI Specification 3.0
  • Меньшая кривая обучения
  • Эффективный (SOAP использует XML для всех сообщений, REST в основном использует меньшие форматы сообщений, такие как JSON)
  • Быстро (не требует обширной обработки)
  • Ближе к другим веб-технологиям в философии дизайна

Как сказано в одном руководстве по REST API: SOAP похож на конверт, а REST – это просто открытка.

Конечно, открытку быстрее и дешевле отправить, чем конверт, но ее все равно можно обернуть чем-нибудь другим, даже конвертом.

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

Это просто версия TL; DR. Продолжайте читать ниже, чтобы получить более подробную информацию об этих двух форматах. Или посмотрите инфографику SOAP vs REST, если вам это больше нравится.

SOAP

SOAP – простой протокол доступа к объектам – вероятно, наиболее известная из двух моделей.

SOAP в значительной степени полагается на XML и вместе со схемами определяет структуру обмена сообщениями с очень строгим контролем типов.

Каждая операция, предоставляемая службой, явно определяется вместе со структурой XML запроса и ответа для этой операции.

Каждый входной параметр аналогичным образом определяется и привязан к типу: например, целому числу, строке или другому сложному объекту.

Все это кодифицировано на языке WSDL – Web Service Description (или Definition, в более поздних версиях).WSDL часто называют контрактом между поставщиком и потребителем услуги. С точки зрения программирования WSDL можно рассматривать как сигнатуру метода для веб-службы.

SoapUI с открытым исходным кодом

  • Поддержка тестирования SOAP и REST API.
  • Простое переключение между средами.
  • Подробная история тестов и отчет о сравнении тестов.

SoapUI Pro

  • Поддержка тестирования API SOAP, REST и GraphQL.
  • Простое переключение между средами.
  • Подробная история тестов и отчет о сравнении тестов.

Пример:

Пример обмена сообщениями выглядит следующим образом.

Запрос от клиента:

POST http://www.stgregorioschurchdc.org/cgi/websvccal.cgi HTTP / 1.1
Принятие кодировки: gzip, deflate
Тип содержимого: текст / xml; кодировка = UTF-8
SOAPAction: "http://www.stgregorioschurchdc.org/Calendar#easter_date"
Длина содержимого: 479
Хост: www.stgregorioschurchdc.org
Подключение: Keep-Alive
Пользовательский агент: Apache-HttpClient / 4.1.1 (java 1.5)





 2014 г. 


 

Ответ службы:

HTTP / 1.1 200 ОК
Дата: пт, 22 ноября 2013 г., 21:09:44 GMT
Сервер: Apache / 2.0.52 (Red Hat)
SOAPServer: SOAP :: Lite / Perl / 0.52
Длина содержимого: 566
Подключение: закрыть
Тип содержимого: текст / xml; charset = utf-8




 2014/04/20 


 

Из этого примера мы видим, что сообщение было отправлено через HTTP.SOAP фактически не зависит от основного транспортного протокола и может быть отправлен практически по любому протоколу, например HTTP, SMTP, TCP или JMS.

Как уже упоминалось, само сообщение SOAP должно быть отформатировано в формате XML. Как обычно для любого XML-документа, должен быть один корневой элемент: в данном случае Envelope.

Он содержит два обязательных элемента: заголовок и тело. Остальные элементы в этом сообщении описаны WSDL.

Сопутствующий WSDL, который определяет вышеуказанный сервис, выглядит следующим образом (детали не важны, но весь документ показан здесь для полноты):


<определения xmlns: tns = "http://www.stgregorioschurchdc.org/Calendar"
xmlns: soap = "http://schemas.xmlsoap.org/wsdl/soap/"
xmlns: xsd = "http://www.w3.org/2001/XMLSchema"
xmlns = "http://schemas.xmlsoap.org/wsdl/"
name = "Календарь" targetNamespace = "http://www.stgregorioschurchdc.org/Calendar">













<мыло: привязка транспорта = "http: // схемы.xmlsoap.org/soap/http "/>


<вход>


<выход>









 

Обратите внимание, что в этом документе описаны все части тела сообщения. Также обратите внимание, что, хотя этот документ предназначен в первую очередь для чтения на компьютере, человеку, обладающему некоторыми знаниями в области программирования, все же относительно легко следовать.

Попробуйте пример проекта SOAP в SoapUI

WSDL

WSDL определяет все аспекты сообщения SOAP. Он даже может определить, разрешено ли любому элементу или атрибуту появляться несколько раз, если он является обязательным или необязательным, и даже может диктовать определенный порядок, в котором элементы должны появляться.

Распространенное заблуждение, что WSDL – это требование для службы SOAP.

Протокол SOAP

был разработан до WSDL, поэтому WSDL не является обязательным.Хотя взаимодействовать с веб-службой, не имеющей WSDL, значительно сложнее.

С другой стороны, если разработчика просят взаимодействовать с существующей веб-службой SOAP, ему нужно предоставить только WSDL, и есть инструменты, которые выполняют обнаружение служб – генерируют заглушки методов с соответствующими параметрами практически на любом языке из этого WSDL.

Многие инструменты тестирования на рынке работают одинаково – тестер предоставляет URL-адрес WSDL, а инструменты генерируют все вызовы с параметрами образца для всех доступных методов.

Критика SOAP

Хотя на первый взгляд WSDL может показаться замечательным – он самодокументируется и содержит почти полную картину всего, что требуется для интеграции с сервисом, – он также может стать обузой.

Помните, WSDL – это контракт между вами (поставщиком услуги) и каждым из ваших клиентов (потребителей услуги).

Изменения WSDL также означают изменения клиента.

Если вы хотите внести изменения в свой API, даже такие небольшие, как добавление необязательного параметра, WSDL должен измениться.И изменения WSDL также означают изменения клиента – все ваши потребители должны перекомпилировать свое клиентское приложение с этим новым WSDL.

Это небольшое изменение значительно увеличивает нагрузку на команды разработчиков (по обе стороны коммуникации), а также на команды тестирования. По этой причине WSDL рассматривается как привязка к версии, и большинство провайдеров очень сопротивляются обновлению своего API.

Более того, хотя SOAP предлагает некоторую интересную гибкость, такую ​​как возможность передачи по любому транспортному протоколу, на самом деле никто не воспользовался большинством из них.

Благодаря развитию Интернета все, что имеет значение, работает через HTTP.

Есть новые достижения, но большинству из них мешает то, что маршрутизаторы инфраструктуры отказываются маршрутизировать нестандартный HTTP-трафик. Только подумайте: сколько времени мир пытается перейти на IPv6?

Определенно существует потребность в более легкой и гибкой модели [чем SOAP].

В любой ситуации, когда размер передаваемого сообщения не имеет значения или когда вы контролируете все от начала до конца, протокол SOAP почти всегда является лучшим ответом.

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

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

ОТДЫХ

REST – REpresentational State Transfer – быстро становится предпочтительной моделью проектирования для общедоступных API (вы можете узнать больше о REST и о том, как протестировать эти API, в этой электронной книге REST 101: Руководство для начинающих по использованию и тестированию RESTful API).

REST расшифровывается как передача репрезентативного состояния. Это стиль архитектуры программного обеспечения, основанный на протоколе связи без сохранения состояния, чаще всего HTTP. REST структурирует данные в XML, YAML или любом другом машиночитаемом формате, но обычно наиболее широко используется JSON. REST следует парадигме объектно-ориентированного программирования существительного-глагола. REST сильно зависит от данных по сравнению с SOAP, который сильно зависит от функций. Вы можете видеть, что люди называют их RESTful API или веб-сервисами RESTful.Они означают одно и то же и могут быть взаимозаменяемыми.

Не существует стандарта для формата описания служб REST (вы можете импортировать службу REST в SoapUI с помощью файлов WADL). SoapUI Pro поддерживает форматы OpenAPI, Swagger и RAML.

Основные HTTP-запросы REST: POST, GET, PUT и DELETE. SoapUI также поддерживает запросы HEAD, OPTIONS, TRACE и PATCH. Давайте посмотрим на пример из Swagger Pet Store API:

  • Отправка запроса GET в / pet / {petId} приведет к извлечению домашних животных с указанным идентификатором из базы данных.
  • При отправке запроса POST в / pet / {petId} / uploadImage будет добавлено новое изображение питомца.
  • Отправка запроса PUT в / pet / {petId} приведет к обновлению атрибутов существующего питомца, идентифицированного указанным идентификатором.
  • Отправка запроса DELETE в / pet / {petId} приведет к удалению указанного питомца.

Итак, вкратце, вот что соответствует каждому из этих типов запросов:

ПОЛУЧИТЬ

Чтение или получение данных

ПОСТ

Добавить новые данные

PUT

Обновить уже существующие данные

УДАЛИТЬ

Удалить данные

Чтобы узнать больше о запросах REST и о том, как их выполнять в SoapUI, посетите нашу страницу Работа с запросами REST.

Пример:

Пример обмена сообщениями может содержать всего лишь это –

Запрос:

ПОЛУЧИТЬ http://www.catechizeme.com/catechisms/catechism_for_young_children/daily_question.js HTTP / 1.1
Принятие кодировки: gzip, deflate
Хост: www.catechizeme.com
Подключение: Keep-Alive
Пользовательский агент: Apache-HttpClient / 4.1.1 (java 1.5) 

Ответ:

HTTP / 1.1 200 ОК
Дата: пт, 22 ноября 2013 г., 22:32:22 GMT
Сервер: Apache
X-Powered-By: Phusion Passenger (mod_rails / mod_rack) 3.0,17
ETag: "b8a7ef8b4b282a70d1b64ea5e79072df"
X-время выполнения: 13
Cache-Control: частный, max-age = 0, необходимо перепроверить
Длина содержимого: 209
Статус: 200
Keep-Alive: тайм-аут = 2, максимум = 100
Подключение: Keep-Alive
Content-Type: js; charset = utf-8
{
"ссылка": "катехизисы \ / катехизис_для_молодых_детей \ / вопросы \ / 36",
«катехизис»: «Катехизис для детей младшего возраста»,
"a": "Первородный грех.",
«позиция»: 36,
«q»: «Как называется та греховная природа, которую мы унаследовали от Адама?»
} 

Как уже ожидалось, это сообщение было отправлено по HTTP с использованием команды GET.

Также обратите внимание, что URI, который также должен был быть включен в запрос SOAP, но там он не имел значения, здесь фактически принимает значение. Тело сообщения значительно меньше, в этом примере его фактически нет.

Служба REST также имеет схему на так называемом WADL – языке описания веб-приложений. WADL для вышеуказанного вызова будет выглядеть так:










<запрос />

<представление mediaType = "json" element = "data" />
<представление mediaType = "js; charset = utf-8" element = "data" />




 

WADL использует синтаксис XML для описания метаданных и доступных действий.Он также может быть таким же строгим, как WSDL: определение типов, необязательных параметров и т. Д.

Попробуйте пример проекта REST в SoapUI

WADL

WADL не имеет механизма для представления самих данных, которые должны быть отправлены по URI. Это означает, что WADL может документировать только половину информации, необходимой для взаимодействия со службой.

Возьмем, к примеру, параметр CATECHISM_NAME в приведенном выше примере.WADL только сообщает вам, где в URI параметр принадлежит, и что это должна быть строка.

Однако, если бы вам пришлось самостоятельно подбирать допустимые значения, это, вероятно, заняло бы у вас довольно много времени. Обратите внимание, что в WADL можно добавить схему, чтобы можно было определять даже сложные типы переменных, такие как перечисления; однако это даже реже, чем предоставление WADL.

WADL не является обязательным.

Кроме того, WADL полностью необязателен; на самом деле, WADL вообще поставляется довольно редко! В связи с характером службы, для того, чтобы ее можно было эффективно использовать, вам почти наверняка потребуется дополнительная документация.

Критика REST

Небольшой размер и использование широко распространенного стандарта HTTP делает REST очень привлекательным вариантом для общедоступных API.

В сочетании с JSON, что делает что-то вроде добавления необязательного параметра очень простым, делает его очень гибким и позволяет частые выпуски, не влияя на ваших потребителей.

Пожалуй, самым большим недостатком является WADL – необязательный и не имеющий некоторой необходимой информации. Чтобы устранить этот недостаток, на рынке доступно несколько фреймворков, которые помогают документировать и создавать RESTful API, например Swagger, RAML или JSON-home.Swagger был подарен Open API Iniative и теперь называется OpenAPI (OAS). Перейдите на Swagger.io, где вы можете узнать больше об этом стандарте, спецификации и о роли инструментов Swagger.

Никто не знает API лучше, чем SmartBear. Узнайте, что наша Pro-версия SoapUI может сделать для улучшения вашего тестирования.

Читать дальше:

SOAP vs REST Инфографика
Тестирование API 101
Разрыв между целями и реальностью при тестировании

Спецификации SOAP

Спецификации SOAP

Не ссылаться на эту страницу – Используйте устаревшие версии документов

Эта страница (http: // www.w3.org/TR/soap) содержит ссылки на примечание SOAP / 1.1 и SOAP версии 1.2.
Рекомендательные документы.

Для получения информации о последних работах по SOAP и полного списка спецификаций SOAP,
обратитесь к Рабочей группе W3C по протоколу XML и к списку технических отчетов W3C.

Последняя версия спецификации SOAP версии 1.2: http://www.w3.org/TR/soap12

Рекомендация W3C (второе издание) 27 апреля 2007 г.

SOAP Version 1.2 Part0: Primer
http: // www.w3.org/TR/2007/REC-soap12-part0-20070427/ (опечатки)
SOAP версии 1.2, часть 1: платформа обмена сообщениями
http://www.w3.org/TR/2007/REC-soap12-part1-20070427/ (опечатки)
SOAP версии 1.2, часть 2: дополнения
http://www.w3.org/TR/2007/REC-soap12-part2-20070427/ (опечатки)
Утверждения спецификации и набор тестов SOAP версии 1.2
http://www.w3.org/TR/2007/REC-soap12-testcollection-20070427/ (опечатки)

Пожалуйста, обратитесь к errata для этих документов, которые могут включать некоторые нормативные исправления.

Этот документ является Рекомендацией W3C. Этот документ был
разработан Рабочей группой по протоколу XML, которая является частью деятельности веб-служб. Он был рассмотрен членами W3C и другими
заинтересованных сторон, и был одобрен Директором в качестве W3C
Рекомендация. Это стабильный документ, который можно использовать в качестве справочного материала.
материал или цитируется в качестве нормативной ссылки из другого документа. W3C’s
роль в создании Рекомендации – привлечь внимание к спецификации.
и способствовать его широкому распространению.Это увеличивает функциональность
и функциональная совместимость Интернета.

Примечание W3C от 8 мая 2000 г.

Примечание SOAP / 1.1
http://www.w3.org/TR/2000/NOTE-SOAP-20000508/

Этот документ предоставлен Консорциуму World Wide Web (см. Запрос на отправку, Комментарий персонала W3C)
и предшествовал формированию рабочей группы в области протоколов на основе XML.

Этот документ представляет собой ПРИМЕЧАНИЕ, предоставленное W3C только для обсуждения.
Публикация этой заметки W3C означает отсутствие поддержки со стороны W3C.


Авторские права © 2004 W3C ® ( MIT , ERCIM , Keio), Все
Права защищены. Ответственность W3C,
товарный знак,
документ
использование и программное обеспечение
применяются правила лицензирования.

Простой протокол доступа к объектам (SOAP) 1.1

Простой протокол доступа к объектам (SOAP) 1.1

Примечание W3C от 8 мая 2000 г.

Эта версия:
http://www.w3.org/TR/2000/NOTE-SOAP-20000508

Последняя версия:
http: // www.w3.org/TR/SOAP

Авторы (по алфавиту):
Дон Бокс, разработчик
Дэвид Энебуск, IBM
Гопал Какивая, Microsoft
Эндрю Лейман, Microsoft
Ноа Мендельсон, Lotus Development Corp.
Хенрик Фристик Нильсен, Microsoft
Сатиш Тэтт, Microsoft
Дэйв Винер, UserLand Software,

, UserLand Software, Inc.

Авторские права © 2000
DevelopMentor ,
International Business Machines Corporation , г.
Lotus Development Corporation ,
Microsoft ,
Программное обеспечение UserLand


SOAP – это легкий протокол для обмена
информация в децентрализованной распределенной среде.это
протокол на основе XML, который состоит из трех частей: конверт
который определяет структуру для описания того, что находится в сообщении и
как его обработать, набор правил кодирования для выражения
экземпляры типов данных, определяемых приложением, и соглашение для
представляющие вызовы и ответы удаленных процедур. SOAP может
потенциально может использоваться в сочетании с множеством других
протоколы; однако единственные привязки, определенные в этом документе
опишите, как использовать SOAP в сочетании с HTTP и HTTP
Фреймворк расширений.

Этот документ представляет собой отправку в Консорциум World Wide Web (см. Запрос на отправку, Комментарий персонала W3C), чтобы предложить
формирование рабочей группы в области XML-ориентированных
протоколы. Комментарии авторов приветствуются, но вы можете
поделитесь своим мнением в общедоступном списке рассылки W3C
(см. архивы).

Этот документ представляет собой ПРИМЕЧАНИЕ, предоставленное
W3C только для обсуждения. Публикация этой заметки W3C
указывает на отсутствие поддержки со стороны W3C, команды W3C или любого другого W3C.
Члены.W3C не имеет редакционного контроля над подготовкой
настоящей записки. Этот документ находится в стадии разработки и может быть
обновлены, заменены или признаны устаревшими другими документами на
любое время.

Список текущих технических документов W3C можно
находится на странице технических отчетов.

1. Введение

1.1 Цели проектирования

1.2 Условные обозначения

1.3 Примеры сообщений SOAP

2. Модель обмена сообщениями SOAP

3.Отношение к XML

4. Конверт SOAP

4.1.1 Атрибут SOAP encodingStyle

4.1.2 Модель управления версиями конверта

4.2 Заголовок SOAP

4.2.1 Использование атрибутов заголовка

4.2.2 Атрибут субъекта SOAP

4.2.3 Атрибут mustUnderstand в протоколе SOAP

4.3 Тело SOAP

4.3.1 Связь между заголовком и телом SOAP

4.4 Ошибка SOAP

4.4.1 Коды ошибок SOAP

5. Кодирование SOAP

5.1 Правила для типов кодирования в XML

5.2 Простые типы

5.2.1 Строки

5.2.2 Перечисления

5.2.3 Массив байтов

5.3 Полиморфный аксессор

5.4 Составные типы

5.4.1 Составные значения и ссылки на значения

5.4.2 Массивы

5.4.2.1 Частично переданные массивы

5.4.2.2 SparseArrays

5.4.3 Общие типы соединений

5.5 Значения по умолчанию

5.6 корневой атрибут SOAP

6.Использование SOAP в HTTP

6.1 HTTP-запрос SOAP

6.1.1 Поле заголовка HTTP SOAPAction

6.2 SOAP HTTP-ответ

6.3 Структура расширения HTTP

6.4 Примеры SOAP HTTP

7. Использование SOAP для RPC

7.1 RPC и тело SOAP

7.2 Заголовок RPC и SOAP

8. Вопросы безопасности

9. Список литературы

A. Примеры конвертов SOAP

A.1 Пример кодирования запросов на вызов

А.2 Пример кодировки ответа

9065 9065

906 906 906 906 906 906 906 906

SOAP предоставляет простой и легкий механизм
для обмена структурированной и типизированной информацией между партнерами в
децентрализованная распределенная среда с использованием XML.SOAP сам по себе не
определять любую семантику приложения, такую ​​как модель программирования или
специфическая для реализации семантика; скорее он определяет простой
механизм выражения семантики приложения путем предоставления модульного
модель упаковки и механизмы кодирования для кодирования данных в
модули. Это позволяет использовать SOAP в большом количестве систем.
от систем обмена сообщениями до RPC.

SOAP состоит из трех частей:

  • Конструкция конверта SOAP (см. Раздел 4) определяет
    общая структура для выражения того, что находится в сообщении;
    , кто должен с этим разбираться, и , если это
    необязательный или обязательный.
  • Правила кодирования SOAP (см. Раздел 5) определяют сериализацию
    механизм, который можно использовать для обмена экземплярами
    типы данных, определяемые приложением.
  • Представление SOAP RPC (см. Раздел 7) определяет соглашение, которое
    может использоваться для представления удаленных вызовов процедур и
    ответы.

Хотя эти части вместе описываются как
часть SOAP, они функционально ортогональны. Особенно,
конверт и правила кодирования определены в разных
пространства имен, чтобы способствовать простоте за счет модульности.

Помимо конверта SOAP, SOAP
правила кодирования и соглашения SOAP RPC, эта спецификация
определяет две привязки протокола, которые описывают, как сообщение SOAP
может передаваться в сообщениях HTTP [5]
либо с HTTP Extension Framework, либо без него [6].

Основной целью разработки SOAP является
простота и расширяемость. Это означает, что есть несколько функций из
традиционные системы обмена сообщениями и распределенные объектные системы, которые не являются частью
основной спецификации SOAP.К таким функциям относится

  • Распределенная сборка мусора
  • Перевозка ящиков или пакетирование сообщений
  • Объекты по ссылке (которая
    требуется распределенная сборка мусора)

  • Активация (требуется
    по ссылке)

Ключевые слова «ДОЛЖНЫ», «НЕ ДОЛЖНЫ»,
«ОБЯЗАТЕЛЬНО», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ»,
и “ДОПОЛНИТЕЛЬНО” в этом документе следует интерпретировать, как описано в RFC-2119.
[2].

Префиксы пространства имен “SOAP-ENV” и
«SOAP-ENC», используемые в этом документе, связаны с протоколом SOAP.
пространства имен “http://schemas.xmlsoap.org/soap/envelope/”
и “http://schemas.xmlsoap.org/soap/encoding/”
соответственно.

В этом документе префикс пространства имен
Предполагается, что «xsi» связан с URI «http://www.w3.org/1999/XMLSchema-instance».
который определен в спецификации XML-схем [11]. Точно так же префикс пространства имен “xsd”
предполагается, что он связан с URI “http: // www.w3.org/1999/XMLSchema ”
которое определено в [10]. Пространство имен
префикс “tns” используется для обозначения цели
пространство имен текущего документа. Все остальные префиксы пространств имен
только образцы.

URI пространства имен общей формы
«some-URI» представляет собой зависящий от приложения или контекстно-зависимый URI [4].

В этой спецификации используется расширенный
Форма Бэкуса-Наура (BNF), как описано в RFC-2616 [5] для определенных конструкций.

В этом примере SOAP GetLastTradePrice
запрос отправляется в сервис StockQuote. Запрос принимает строковый параметр,
тикер и возвращает в ответе SOAP число с плавающей запятой. Конверт SOAP
element – это верхний элемент XML-документа, представляющий сообщение SOAP.
Пространства имен XML используются для устранения неоднозначности идентификаторов SOAP в приложении.
конкретные идентификаторы. Пример иллюстрирует привязки HTTP, определенные в разделе
6. Стоит отметить, что правила, регулирующие формат полезной нагрузки XML в SOAP
полностью независимы от того факта, что полезная нагрузка передается в HTTP.

Дополнительные примеры доступны в Приложении A.

Пример 1 Сообщение SOAP, встроенное в HTTP-запрос

POST / StockQuote HTTP / 1.1
Хост: www.stockquoteserver.com
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn
SOAPAction: “Some-URI”

xmlns: SOAP-ENV = “http://schemas.xmlsoap.org/soap/envelope / “
SOAP-ENV: encodingStyle =” http://schemas.xmlsoap.org/soap/encoding/ “>


DIS


Ниже приводится ответное сообщение.
содержащее сообщение HTTP с сообщением SOAP в качестве полезной нагрузки:

Пример 2 Сообщение SOAP, встроенное в ответ HTTP

HTTP / 1.1 200 OK
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn

xmlns: SOAP-ENV = “http://schemas.xmlsoap.org/soap/envelope/”
SOAP-ENV: encodingStyle = “http://schemas.xmlsoap.org/soap/encoding/” />


34,5


сообщения SOAP в основном односторонние
передачи от отправителя к получателю, но, как показано выше, SOAP
сообщения часто объединяются для реализации таких шаблонов, как запрос / ответ.

реализаций SOAP можно оптимизировать для
использовать уникальные характеристики конкретных сетевых систем. Например,
привязка HTTP, описанная в разделе 6, обеспечивает ответные сообщения SOAP
доставляться как HTTP-ответы, используя то же соединение, что и входящий
запрос.

Независимо от протокола, по которому SOAP
связан, сообщения маршрутизируются по так называемому “пути сообщения”, что позволяет
обработка на одном или нескольких промежуточных узлах в дополнение к конечному
пункт назначения.

Приложение SOAP, получающее SOAP
message ДОЛЖЕН обработать это сообщение, выполнив следующие действия в
заказ, указанный ниже:

  1. Определите все части сообщения SOAP, предназначенные для
    это приложение (см. раздел 4.2.2)

  2. Убедитесь, что все обязательные части
    идентифицированные на шаге 1 поддерживаются приложением для
    это сообщение (см. раздел 4.2.3) и обработать их
    соответственно. Если это не так, отклоните сообщение (см. Раздел 4.4). Процессор МОЖЕТ игнорировать
    необязательные части, указанные на шаге 1, не влияющие на результат
    обработка.

  3. Если приложение SOAP не
    конечный пункт назначения сообщения, затем удалите все части, указанные на шаге
    1 перед пересылкой сообщения.

Обработка сообщения или части сообщения
требует, чтобы процессор SOAP понимал, среди прочего
вещи, используемая схема обмена (в одну сторону,
запрос / ответ, многоадресная рассылка и т. д.), роль получателя в
этот шаблон, использование (если есть) механизмов RPC, таких как
тот, что задокументирован в разделе 7,
представление или кодирование данных, а также другие
семантика, необходимая для корректной обработки.

Пока атрибуты, такие как SOAP encodingStyle
атрибут (см. раздел 4.1.1) может
использоваться для описания определенных аспектов сообщения, это
спецификация не требует конкретных средств, с помощью которых
получатель делает такие определения в целом.Например,
определенные приложения поймут, что конкретный
Элемент сигнализирует о запросе RPC с помощью
соглашения раздела 7, в то время как
другое приложение может сделать вывод, что весь направленный на него трафик
закодированы как односторонние сообщения.

Все сообщения SOAP кодируются с использованием XML.
(подробнее см. [7]
информация по XML).

Приложение SOAP ДОЛЖНО включать
правильное пространство имен SOAP для всех элементов и атрибутов, определенных SOAP в сообщениях
что он производит.Приложение SOAP ДОЛЖНО иметь возможность обрабатывать пространства имен SOAP в
сообщения, которые он получает. Он ДОЛЖЕН отбрасывать сообщения с неверным
пространства имен (см. раздел 4.4) и МОЖЕТ обрабатывать сообщения SOAP.
без пространств имен SOAP, как если бы у них были правильные пространства имен SOAP.

SOAP определяет два пространства имен (подробнее см. [8]
информация о пространствах имен XML):

Сообщение SOAP НЕ ДОЛЖНО содержать
Объявление типа документа. Сообщение SOAP НЕ ДОЛЖНО содержать обработку
Инструкции.[7]

SOAP использует локальный неквалифицированный идентификатор.
атрибут типа «ID» для указания уникального идентификатора закодированного элемента.
SOAP использует локальный неквалифицированный атрибут “href” типа “uri-reference” для
укажите ссылку на это значение способом, соответствующим XML
Спецификация [7],
Спецификация схемы XML [11] и Спецификация языка связывания XML [9].

За исключением SOAP
mustUnderstand атрибут (см. раздел 4.2.3) и атрибут актора SOAP
(см. раздел 4.2.2), как правило, допустимо
чтобы атрибуты и их значения отображались в экземплярах XML или, альтернативно, в
схемы, с равным эффектом. То есть объявление в DTD или схеме с
значение по умолчанию или фиксированное значение семантически эквивалентно появлению в
пример.

Сообщение SOAP – это XML-документ, который
состоит из обязательного конверта SOAP, необязательного заголовка SOAP и обязательного
Тело SOAP.Этот XML-документ называется SOAP-сообщением для остальной части
эта спецификация. Идентификатор пространства имен для элементов и атрибутов
в этом разделе определено как «http://schemas.xmlsoap.org/soap/envelope/». Мыло
сообщение содержит следующее:

  • Конверт – верхний элемент
    XML-документ, представляющий сообщение.

  • Заголовок – это общий механизм
    для добавления функций в сообщение SOAP децентрализованным образом без предварительного
    соглашение между общающимися сторонами.SOAP определяет несколько атрибутов
    которые можно использовать, чтобы указать, кто должен иметь дело с функцией и является ли она
    необязательный или обязательный (см. раздел 4.2)

  • Кузов контейнер для
    обязательная информация, предназначенная для конечного получателя сообщения (см.
    раздел 4.3). SOAP определяет один элемент для
    тело, которое является элементом Fault, используемым для сообщения об ошибках.

Грамматические правила следующие:

  1. Конверт
    • Имя элемента – «Конверт».
    • Элемент ДОЛЖЕН присутствовать в
      сообщение SOAP

    • Элемент МОЖЕТ содержать
      объявления пространств имен, а также дополнительные атрибуты. Если есть, такие
      дополнительные атрибуты ДОЛЖНЫ быть уточнены пространством имен. Аналогично элемент
      МОЖЕТ содержать дополнительные подэлементы. Если они присутствуют, эти элементы ДОЛЖНЫ быть
      с указанием пространства имен и ДОЛЖЕН следовать за элементом тела SOAP.
  2. Заголовок (см. Раздел 4.2)
    • Имя элемента – «Заголовок».
    • Элемент МОЖЕТ присутствовать в
      Сообщение SOAP. Если присутствует, элемент ДОЛЖЕН быть первым непосредственным потомком
      элемент элемента конверта SOAP.

    • Элемент МОЖЕТ содержать набор
      записей заголовков, каждая из которых является непосредственным дочерним элементом заголовка SOAP
      элемент. Все непосредственные дочерние элементы элемента заголовка SOAP ДОЛЖНЫ быть
      с указанием пространства имен.
  3. Кузов (см. Раздел 4.3)
    • Имя элемента – «Тело».
    • Элемент ДОЛЖЕН присутствовать в
      сообщение SOAP и ДОЛЖНО быть непосредственным дочерним элементом конверта SOAP.
      элемент. Он ДОЛЖЕН следовать непосредственно за элементом заголовка SOAP, если он присутствует.
      В противном случае он ДОЛЖЕН быть первым непосредственным дочерним элементом конверта SOAP.
      элемент.

    • Элемент МОЖЕТ содержать набор
      записей тела, каждая из которых является непосредственным дочерним элементом тела SOAP
      элемент. Непосредственные дочерние элементы элемента SOAP Body МОГУТ быть
      с указанием пространства имен.SOAP определяет элемент SOAP Fault, который используется для
      указывают сообщения об ошибках (см. раздел 4.4).

4.1.1 Атрибут стиля кодирования SOAP

Глобальный атрибут SOAP encodingStyle
может использоваться для указания правил сериализации, используемых в сообщении SOAP. Этот
атрибут МОЖЕТ появляться на любом элементе и ограничен его содержимым
и все дочерние элементы, сами не содержащие такой атрибут, во многом как
Объявление пространства имен XML ограничено.Нет кодировки по умолчанию, определенной для
Сообщение SOAP.

Значение атрибута – это упорядоченный список
один или несколько URI, идентифицирующих правило или правила сериализации, которые могут использоваться для
десериализовать сообщение SOAP, указанное в порядке от наиболее конкретного к наименьшему
специфический. Примеры значений:

“http://schemas.xmlsoap.org/soap/encoding/”
“http://my.host/encoding/restricted http://my.host/encoding/”
“”

Правила сериализации, определенные SOAP
в разделе 5 идентифицируются URI
“http: // схемы.xmlsoap.org/soap/encoding/ “. Сообщения, использующие этот конкретный
при сериализации СЛЕДУЕТ указать это с помощью атрибута SOAP encodingStyle. В
кроме того, все URI, синтаксически начинающиеся с
«http://schemas.xmlsoap.org/soap/encoding/» означает соответствие протоколу SOAP.
правила кодирования, определенные в разделе 5 (хотя с потенциально более жесткими
правила добавлены).

Значение URI нулевой длины (“”)
явно указывает, что не делается никаких заявлений о стиле кодирования содержащихся
элементы.Это можно использовать для отключения любых утверждений от содержащихся элементов.

4.1.2 Версии конверта Модель

SOAP не определяет традиционный
модель управления версиями на основе основных и дополнительных номеров версий. Сообщение SOAP ДОЛЖНО
иметь элемент Envelope, связанный с
“http://schemas.xmlsoap.org/soap/envelope/” пространство имен. Если получено сообщение
приложением SOAP, в котором элемент конверта SOAP связан с
другое пространство имен, приложение ДОЛЖНО рассматривать это как ошибку версии и
отказаться от сообщения.Если сообщение получено через запрос / ответ
протоколу, например HTTP, приложение ДОЛЖНО ответить сообщением SOAP VersionMismatch.
сообщение с кодом ошибки (см. раздел 4.4) с использованием SOAP
“http://schemas.xmlsoap.org/soap/envelope/” пространство имен.

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

Элемент заголовка закодирован как
первый непосредственный дочерний элемент XML-элемента SOAP Envelope. Все немедленно
дочерние элементы элемента Header называются записями заголовка.

Правила кодирования для записей заголовков:
следующим образом:

  1. Запись заголовка определяется как
    его полное имя элемента, которое состоит из URI пространства имен и
    местное название. Все непосредственные дочерние элементы элемента заголовка SOAP ДОЛЖНЫ быть
    с указанием пространства имен.
  2. Атрибут кодирования SOAP
    МОЖЕТ использоваться для указания стиля кодирования, используемого для записей заголовков (см. Раздел 4.1.1).

  3. Атрибут SOAP mustUnderstand
    (см. раздел 4.2.3) и атрибут актора SOAP
    (см. раздел 4.2.2) МОЖЕТ использоваться, чтобы указать, как
    для обработки записи и кем (см. раздел 4.2.1).

4.2.1 Использование атрибутов заголовка

Атрибуты заголовка SOAP, определенные в
этот раздел определяет, как получатель сообщения SOAP должен обрабатывать
сообщение, как описано в разделе 2.Приложение SOAP, генерирующее
Сообщение SOAP ДОЛЖНО использовать атрибуты заголовка SOAP только для непосредственного дочернего элемента.
элементы элемента заголовка SOAP. Получатель сообщения SOAP ДОЛЖЕН игнорировать
все атрибуты заголовка SOAP, которые не применяются к непосредственному дочернему элементу
элемент заголовка SOAP.

Пример – заголовок с элементом
идентификатор «Транзакции», значение «mustUnderstand», равное «1», и значение, равное 5.
Это будет закодировано следующим образом:


xmlns: t = “some-URI” SOAP-ENV: mustUnderstand = “1”>
5

4.2.2 Атрибут актора SOAP

Сообщение SOAP отправляется из
отправителя в конечный пункт назначения, возможно, пройдя через набор
Посредники SOAP на пути сообщения. Посредник SOAP – это
приложение, способное как получать, так и пересылать сообщения SOAP. Обе
посредники, а также конечный пункт назначения идентифицируются с помощью URI.

Не все части сообщения SOAP могут быть
предназначен для конечного назначения сообщения SOAP, но вместо этого может быть
предназначен для одного или нескольких посредников на пути сообщения.Роль
Получатель элемента заголовка аналогичен получателю контракта в
что его нельзя распространять за пределы получателя. То есть получатель, получающий
элемент заголовка НЕ ​​ДОЛЖЕН пересылать этот элемент заголовка следующему приложению в
путь сообщения SOAP. Получатель МОЖЕТ вставить аналогичный элемент заголовка, но в
в этом случае договор заключается между этим приложением и получателем этого
элемент заголовка.

Глобальный атрибут актора SOAP может быть
используется для обозначения получателя элемента заголовка.Значение актора SOAP
атрибут – это URI. Специальный URI “http://schemas.xmlsoap.org/soap/actor/next”
указывает, что элемент заголовка предназначен для самого первого SOAP
приложение, которое обрабатывает сообщение. Это похоже на поэтапную область видимости.
Модель представлена ​​полем заголовка соединения в HTTP.

Пропуск атрибута актора SOAP
указывает, что получатель является конечным адресатом SOAP
сообщение.

Этот атрибут ДОЛЖЕН появляться в SOAP.
сообщение, чтобы быть эффективным (см. разделы 3 и 4.2.1).

4.2.3 Атрибут mustUnderstand в протоколе SOAP

Глобальный атрибут SOAP mustUnderstand
может использоваться, чтобы указать, является ли запись заголовка обязательной или необязательной для
получатель для обработки. Получатель записи заголовка определяется протоколом SOAP.
атрибут актера (см. раздел 4.2.2). Ценность
Атрибут mustUnderstand имеет значение «1» или «0». Отсутствие SOAP
Атрибут mustUnderstand семантически эквивалентен его наличию с
значение «0».

Если элемент заголовка помечен с помощью SOAP
атрибут mustUnderstand со значением “1”, получатель этой записи заголовка.
либо ДОЛЖНЫ подчиняться семантике (как передается полностью определенным именем
element) и правильно обрабатывать эту семантику, или ДОЛЖЕН не удастся обработать
сообщение (см. раздел 4.4).

Атрибут mustUnderstand в протоколе SOAP позволяет
для надежной эволюции. Элементы, помеченные атрибутом SOAP mustUnderstand
со значением “1” ДОЛЖНЫ каким-то образом изменять семантику своих
родительские или равноправные элементы.Такая маркировка элементов гарантирует, что это
изменение семантики не будет игнорироваться молча (и, предположительно, ошибочно)
теми, кто не может полностью понять это.

Этот атрибут ДОЛЖЕН появляться в
Например, чтобы быть эффективным (см. раздел 3 и 4.2.1).

4.3 Тело SOAP

Элемент SOAP Body обеспечивает простой
механизм обмена обязательной информацией, предназначенный для окончательного
получатель сообщения.Типичное использование элемента Body включает сортировку
Вызовы RPC и отчеты об ошибках.

Элемент Body кодируется как
непосредственный дочерний элемент XML-элемента SOAP Envelope. Если элемент заголовка
присутствует, то элемент Body ДОЛЖЕН сразу следовать за элементом Header,
в противном случае он ДОЛЖЕН быть первым непосредственным дочерним элементом конверта
элемент.

Все непосредственные дочерние элементы тела
элементы называются записями тела, и каждая запись тела кодируется как независимая
в элементе SOAP Body.

Правила кодирования для записей тела
следующим образом:

  1. Запись тела идентифицируется по
    полное имя элемента, которое состоит из URI пространства имен и
    местное название. Непосредственные дочерние элементы элемента SOAP Body МОГУТ быть
    с указанием пространства имен.

  2. Атрибут кодирования SOAP
    МОЖЕТ использоваться для указания стиля кодирования, используемого для записей тела (см. Раздел 4.1.1).

SOAP определяет одну запись тела, которая является
Запись об ошибке, используемая для сообщения об ошибках (см. Раздел 4.4).

4.3.1 Связь между заголовком SOAP и телом

Хотя заголовок и тело определены как
независимые элементы, они фактически связаны. Отношения между телом
запись и запись заголовка выглядят следующим образом: запись тела семантически эквивалентна
к записи заголовка, предназначенной для субъекта по умолчанию, и с SOAP mustUnderstand
атрибут со значением «1». Актер по умолчанию обозначается отсутствием использования
атрибут актера (см. раздел 4.2.2).

Элемент SOAP Fault используется для переноса
информация об ошибке и / или состоянии в сообщении SOAP. Если присутствует, SOAP
Элемент неисправности ДОЛЖЕН появляться как запись тела и НЕ ДОЛЖЕН появляться более одного раза
внутри элемента Body.

Элемент SOAP Fault определяет
следующие четыре субэлемента:

код неисправности

Элемент кода неисправности предназначен для
использование программным обеспечением для обеспечения алгоритмического механизма идентификации неисправности.Код ошибки ДОЛЖЕН присутствовать в элементе ошибки SOAP и значении кода ошибки.
ДОЛЖНО быть квалифицированным именем, как определено в [8], раздел 3. SOAP определяет небольшой набор SOAP.
коды ошибок, описывающие основные ошибки SOAP (см. раздел 4.4.1)

неисправность

Элемент Faultstring предназначен для
предоставить понятное для человека объяснение неисправности и не предназначено для
алгоритмическая обработка. Элемент faultstring аналогичен элементу
«Причина-фраза» определяется HTTP (см. [5], раздел 6.1). Он ДОЛЖЕН присутствовать в SOAP
Элемент неисправности и ДОЛЖЕН предоставить хотя бы некоторую информацию, объясняющую
характер неисправности.

неисправность

Элемент Faultactor предназначен для
предоставить информацию о том, кто стал причиной неисправности в сообщении
путь (см. раздел 2). Он похож на актера SOAP.
атрибут (см. раздел 4.2.2), но вместо указания
место назначения записи заголовка, он указывает источник неисправности. В
Значение атрибута faultactor – это URI, идентифицирующий источник.Приложения, которые не выступают в качестве конечного пункта назначения сообщения SOAP
ДОЛЖЕН включать элемент faultactor в элемент SOAP Fault. Максимальный
адресат сообщения МОЖЕТ использовать элемент faultactor для явного указания
что он вызвал неисправность (см. также подробный элемент ниже).

деталь

Деталь предназначена для
переносит информацию об ошибках приложения, относящуюся к элементу Body.
Он ДОЛЖЕН присутствовать, если содержимое элемента Body не может быть
успешно обработано.Он НЕ ДОЛЖЕН использоваться для передачи информации об ошибке.
информация, относящаяся к статьям заголовка. Подробная информация об ошибке, принадлежащая
в записи заголовка ДОЛЖНЫ переноситься внутри записей заголовка.

Отсутствие элемента детали
в элементе Fault указывает, что ошибка не связана с обработкой
элемент Body. Это можно использовать, чтобы определить, был ли элемент Body
обработаны или не обработаны в случае возникновения неисправности.

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

Правила кодирования для подробных записей следующие (см.
также пример 10):

  1. Подробная запись обозначена
    его полное имя элемента, которое состоит из URI пространства имен и
    местное название. Непосредственные дочерние элементы элемента детали МОГУТ быть
    с указанием пространства имен.

  2. Атрибут кодирования SOAP
    МОЖЕТ использоваться для указания стиля кодирования, используемого для записей подробностей (см.
    раздел 4.1.1).

МОГУТ присутствовать другие подэлементы неисправности,
при условии, что они уточнены пространством имен.

4.4.1 SOAP
Коды неисправностей

Значения кодов неисправности, определенные в этом
раздел ДОЛЖЕН использоваться в элементе кода неисправности при описании неисправностей, определяемых
эта спецификация. Идентификатор пространства имен для этих значений кода ошибки:
“http://schemas.xmlsoap.org/soap/envelope/”. Рекомендуется использовать это пространство
(но не обязательно) в спецификации методов, определенных вне
настоящая спецификация.

Значения кода ошибки SOAP по умолчанию:
определены расширяемым образом, что позволяет использовать новые значения кода ошибки SOAP.
определяется при сохранении обратной совместимости с существующим кодом ошибки
значения.Используемый механизм очень похож на базовый статус 1xx, 2xx, 3xx и т. Д.
классы классы, определенные в HTTP (см. [5] раздел 10). Однако вместо целых чисел они
определены как уточненные имена XML (см. [8] раздел 3). Характер “.” (точка) используется
как разделитель значений кода неисправности, указывающий, что то, что находится слева от
точка – это более общее значение кода неисправности, чем значение справа. Пример

Клиент.Аутентификация

Набор значений кода неисправности, определенных в
этот документ:

Несоответствие версии

Сторона обработки обнаружила
недопустимое пространство имен для элемента SOAP Envelope (см. раздел 4.1.2)

Должен понять

Непосредственный дочерний элемент
Элемент заголовка SOAP, который либо не был понят, либо не соблюден
сторона обработки содержала атрибут SOAP mustUnderstand со значением
«1» (см. Раздел 4.2.3)

Клиент

Клиентский класс ошибок указывает
что сообщение было неправильно сформировано или не содержало подходящего
информация для достижения успеха.Например, в сообщении может отсутствовать
правильная аутентификация или платежная информация. Обычно это
указание на то, что сообщение не должно быть отправлено повторно без изменений. Смотрите также
раздел 4.4 для описания
Подэлемент сведений об ошибке SOAP.

Сервер

Серверный класс ошибок указывает
что сообщение не может быть обработано по причинам, не связанным напрямую
связано с содержанием самого сообщения, а скорее с
обработка сообщения.Например, обработка может включать
общение с вышестоящим процессором, который не ответил. В
сообщение может быть успешно выполнено позже. См. Также раздел 4.4 для описания
Подэлемент сведений об ошибке SOAP.

Стиль кодирования SOAP основан на
простая система типов, которая является обобщением общих черт шрифтов
системы на языках программирования, базы данных и полуструктурированные данные.Тип
либо является простым (скалярным) типом, либо является составным типом, построенным как
состоит из нескольких частей, каждая из которых имеет свой вид. Это описано более подробно
ниже. В этом разделе определены правила сериализации графа типизированных объектов.
Он работает на двух уровнях. Во-первых, учитывая схему в любой нотации, совместимой с
После описанной системы типов может быть построена схема грамматики XML.
Во-вторых, учитывая схему системы типов и конкретный график значений, соответствующих
по этой схеме может быть создан экземпляр XML.В обратном случае, учитывая XML
экземпляр произведен в соответствии с этими правилами, а также предоставлен оригинал
схемы может быть построена копия исходного графа значений.

Идентификатор пространства имен для элементов.
и атрибуты, определенные в этом разделе,
“http://schemas.xmlsoap.org/soap/encoding/”. Показанные образцы кодирования предполагают
все объявления пространств имен находятся на более высоком уровне элементов.

Использование модели данных и стиля кодирования
описание в этом разделе приветствуется, но не является обязательным; Другой
модели данных и кодировки могут использоваться вместе с SOAP
(см. раздел 4.1.1).

XML позволяет очень гибко кодировать данные. МЫЛО
определяет более узкий набор правил кодирования. Эта секция
определяет правила кодирования на высоком уровне, а следующий раздел
описывает правила кодирования для определенных типов, когда они
требуется более подробная информация. Кодировки, описанные в этом разделе, могут
использоваться вместе с отображением вызовов RPC и
ответы, указанные в разделе
7.

Для описания кодировки используются следующие
используется терминология:

  1. «Значение» – это строка, имя
    измерение (число, дата, нумерация и т. д.) или сочетание нескольких таких
    примитивные значения. Все значения относятся к определенным типам.

  2. “Простое значение” – это одно без
    названные части. Примерами простых значений являются конкретные строки, целые числа,
    числовые значения и т. д.

  3. «Составное значение» – это агрегат
    отношения к другим ценностям. Примеры составных значений являются частными
    заказы на поставку, отчеты о запасах, почтовые адреса и т. д.

  4. В составном значении каждое
    связанное значение потенциально можно отличить по имени роли, порядковому номеру или обоим.Это называется его «аксессуаром». Примеры составных значений включают в себя конкретные
    Заказы на закупку, отчеты о запасах и т. Д. Массивы также являются составными значениями. это
    возможно иметь составные значения с несколькими методами доступа, каждый из которых назван одинаково,
    как, например, RDF.

  5. «Массив» – это составное значение в
    какая порядковая позиция служит единственным различием между значениями элементов.

  6. «Структура» – это составное значение в
    какое имя метода доступа является единственным различием между значениями членов, и нет
    Аксессор имеет то же имя, что и любой другой.
  7. «Простой тип» – это класс
    простые значения. Примерами простых типов являются классы, называемые «строка»,
    «целые», перечислительные классы и т. д.

  8. «Составной тип» – это класс
    составные ценности. Примером составного типа является класс заказа на поставку.
    значения, использующие одни и те же аксессоры (shipTo, totalCost и т. д.), но с
    потенциально разные значения (и, возможно, дополнительно ограничены ограничениями на
    определенные значения).

  9. Внутри составного типа, если
    Аксессор имеет имя, которое отличается от этого типа, но не отличается от
    по отношению к другим типам, то есть имя плюс тип вместе необходимы для
    сделать уникальную идентификацию, имя называется “локально ограниченным”.”Если, однако
    имя частично основано на унифицированном идентификаторе ресурса, напрямую или
    косвенно, так что одного имени достаточно, чтобы однозначно идентифицировать
    имя доступа, независимо от типа, в котором он появляется, называется
    “универсальный охват”.

  10. Учитывая информацию в
    схему, относительно которой сериализован график значений, можно
    определить, что некоторые значения могут быть связаны только одним экземпляром
    аксессуар. Для других это невозможно сделать.Если только
    один метод доступа может ссылаться на него, значение считается «одинарной ссылкой». Если
    на которую ссылается более чем один, фактически или потенциально, это “множественная ссылка”.
    Обратите внимание, что определенное значение может считаться
    “одиночная ссылка” относительно одной схемы и “множественная ссылка” относительно
    еще один.

  11. Синтаксически элемент может быть
    «независимый» или «встроенный». Независимый элемент – это любой появляющийся элемент.
    на верхнем уровне сериализации. Все остальные – встроенные элементы.

Хотя можно использовать
xsi: type такой, что график значений самоописывается как в своем
структуры и типов ее значений, правила сериализации позволяют
типы значений МОГУТ быть определены только по ссылке на схему. Такие схемы
МОЖЕТ быть в нотации, описанной в «XML Schema Part 1: Structures» [10] и «XML.
Schema Part 2: Datatypes “[11] или МОЖЕТ быть в любой другой нотации. Также обратите внимание, что,
в то время как правила сериализации применяются к составным типам, отличным от массивов и
структур, многие схемы будут содержать только типы структур и массивов.

Правила сериализации следующие:
следует:

  1. Все значения представлены как содержимое элемента. А
    значение с несколькими ссылками ДОЛЖНО быть представлено как содержимое независимого
    элемент. Значение с одной ссылкой НЕ ДОЛЖНО быть (но МОЖЕТ быть).

  2. За каждую
    элемент, содержащий значение, тип значения ДОЛЖЕН быть
    представлен хотя бы одним из следующих условий: (а)
    экземпляр содержащего элемента содержит xsi: type
    атрибут, (б) содержащий экземпляр элемента является самим собой
    содержится в элементе, содержащем (возможно, по умолчанию)
    SOAP-ENC: атрибут arrayType или (c) или имя элемента
    имеет определенное отношение к типу, тогда этот тип
    определяется из схемы.
  3. Простое значение представлено в виде символьных данных, которые
    есть, без каких-либо подэлементов. Каждое простое значение должно иметь тип, который либо указан в списке
    в Спецификации схем XML, часть 2 [11], или чей тип источника указан в ней (см.
    также раздел 5.2).

  4. Составное значение кодируется как последовательность элементов,
    каждый аксессор представлен встроенным элементом, имя которого соответствует
    имя аксессуара. Аксессоры, чьи имена являются локальными для содержащихся
    типы имеют неквалифицированные имена элементов; у всех остальных есть уточненные имена (см.
    также раздел 5.4).

  5. Закодировано простое или составное значение с несколькими ссылками
    как независимый элемент, содержащий локальный неквалифицированный атрибут с именем “id”
    и типа «ID» согласно спецификации XML [7]. Каждый метод доступа к этому значению – пустой элемент
    имеющий локальный неквалифицированный атрибут с именем “href” и типом “uri-reference”
    согласно спецификации схемы XML [11], со значением атрибута “href” URI
    идентификатор фрагмента, ссылающийся на соответствующий независимый элемент.

  6. Строки и байтовые массивы представлены как
    простые типы с множественными ссылками, но особые правила позволяют их представлять
    эффективно для общих случаев (см. также раздел 5.2.1 и 5.2.3). Аксессор к строке или
    значение байтового массива МОЖЕТ иметь атрибут с именем “id” и типа “ID” согласно XML
    Спецификация [7].
    Если это так, все другие методы доступа к тому же значению кодируются как пустые элементы.
    имеющий локальный неквалифицированный атрибут с именем “href” и типом “uri-reference”
    согласно спецификации схемы XML [11], со значением атрибута “href” URI
    идентификатор фрагмента, ссылающийся на единственный элемент, содержащий значение.

  7. Допускается кодирование нескольких ссылок на
    значение, как если бы это были ссылки на несколько различных значений, но только
    когда из контекста известно, что значение экземпляра XML
    без изменений.
  8. Массивы
    составные значения (см. также раздел
    5.4.2). Массивы SOAP определяются как имеющие тип
    «SOAP-ENC: массив» или производный от него тип.

    Массивы SOAP имеют одно или несколько измерений (ранг), члены которых
    различаются порядковым номером. Значение массива
    представлен в виде серии элементов, отражающих массив, с
    члены появляются в порядке возрастания. За
    многомерные массивы размерность справа
    изменяется наиболее быстро. Каждый элемент-член называется
    независимый элемент (см. правило
    2).

    Массивы SOAP могут иметь значения с одной или несколькими ссылками,
    и, следовательно, может быть представлен как содержание любого
    встроенный или независимый элемент.

    Массивы SOAP ДОЛЖНЫ содержать “SOAP-ENC: arrayType”
    атрибут, значение которого определяет тип содержащегося
    элементов, а также размер (а) массива. Значение
    атрибута “SOAP-ENC: arrayType” определяется как
    следует:

    arrayTypeValue = atype asize
    atype = QName * (rank)
    rank = “[” * (“,”) “]”
    asize = “[” #length “]”
    length = 1 * DIGIT

    Конструкция “atype” – это имя типа
    содержащие элементы, выраженные как QName, как в
    атрибут “type” элемента схемы XML
    объявление и действует как ограничение типа (что означает, что все
    значения содержащихся элементов утверждаются, чтобы соответствовать
    указанный тип; то есть тип, указанный в SOAP-ENC: arrayType
    должен быть типом или супертипом каждого члена массива).в
    в случае массивов массивов или «зубчатых массивов»
    компонент типа кодируется как «самый внутренний» тип
    имя, за которым следует конструкция ранга для каждого уровня вложенных
    массивы, начиная с 1. Многомерные массивы кодируются с использованием
    запятая для каждого измерения, начиная с 1.

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

    Например, массив с 5 элементами типа массив целых чисел
    будет иметь значение arrayTypeValue “int [] [5]” из
    значение типа “int []”, а значение asize
    равно «[5]». Аналогично, массив с 3 членами типа
    двумерные массивы целых чисел будут иметь
    arrayTypeValue значение “int [,] [3]”, из которых
    значение типа “int [,]”, а значение размера –
    «[3]».

    Член массива SOAP МОЖЕТ содержать «SOAP-ENC: смещение»
    атрибут, указывающий положение смещения этого элемента в
    включающий массив.Это можно использовать для указания смещения
    позиция частично представленного массива (см. раздел 5.4.2.1). Аналогично, массив
    член МОЖЕТ содержать атрибут «SOAP-ENC: позиция»
    с указанием положения этого элемента во вложении
    множество. Это можно использовать для описания членов разреженных массивов (см. Раздел 5.4.2.2). Ценность
    «SOAP-ENC: смещение» и
    Атрибут “SOAP-ENC: позиция” определяется как
    следует:

    arrayPoint = “[” #length “]”

    со смещениями и позициями на основе 0.

  9. ПУСТОЕ значение или значение по умолчанию МОЖЕТ быть представлено
    отсутствие вспомогательного элемента. НУЛЕВОЕ значение МОЖЕТ также обозначаться
    элемент доступа, содержащий атрибут xsi: null со значением ‘1’ или, возможно,
    другие атрибуты и значения, зависящие от приложения.

Обратите внимание, что правило 2 позволяет
независимые элементы, а также элементы, представляющие члены массивов для
иметь имена, не идентичные типу содержащегося значения.

Для простых типов SOAP принимает все
типы, найденные в разделе «Встроенные типы данных» документа «Схема XML, часть 2:
Типы данных »Спецификация [11], как значения, так и лексические пробелы.Примеры
включают:

внутр

58502

с плавающей запятой

314159265358979E + 1

отрицательное целое число

-32768

строка

Луи “Сатчмо”
Армстронг

Типы данных, объявленные в схеме XML.
спецификация может использоваться непосредственно в схемах элементов.Типы, производные от
они также могут быть использованы. Пример фрагмента схемы и соответствующий
данные экземпляра с элементами этих типов:









45
5.9
-450
Синий

Все простые значения ДОЛЖНЫ быть закодированы как
содержимое элементов, тип которых определен в «XML-схеме, часть 2:
Типы данных “Спецификация [11], или основана на типе, найденном там с помощью
механизмы, предусмотренные в спецификации схемы XML.

Если простое значение закодировано как
независимый элемент или член гетерогенного массива удобно иметь
объявление элемента, соответствующее типу данных.Поскольку “XML-схема
Часть 2: Типы данных “Спецификация [11] включает определения типов, но не включает
соответствующие объявления элементов, схема SOAP-ENC и пространство имен объявляют
элемент для каждого простого типа данных. Они МОГУТ быть использованы.

45

5.2.1 Строки

Тип данных “строка” определен в “XML
Схема. Часть 2: Типы данных »Спецификация [11]. Обратите внимание, что это не идентично типу
называется “строка” во многих базах данных или языках программирования, и, в частности, может
запретить использование некоторых символов, которые разрешены в этих языках.(Эти значения должны быть
представлен с использованием некоторого типа данных, отличного от xsd: string.)

Строка МОЖЕТ быть закодирована как
значение одной или нескольких ссылок.

Содержащий элемент строки
value МОЖЕТ иметь атрибут “id”. Дополнительные элементы доступа МОГУТ тогда иметь
соответствующие атрибуты “href”.

Например, два аксессуара к одному и тому же
строка может выглядеть следующим образом:

Привет

Однако если тот факт, что оба аксессуара
ссылка на тот же экземпляр строки (или подтип строки) несущественна, они могут быть закодированы как
два следующих одноэлементных значения:

Привет
Привет

фрагментов схемы для этих примеров могли
выглядят примерно так:


(В этом примере тип
SOAP-ENC: строка используется в качестве типа элемента как удобный способ объявления
элемент с типом данных «xsd: string», который также позволяет использовать «id» и «href»
атрибут.См. Схему кодирования SOAP для точного определения. Схемы МОГУТ
используйте эти объявления из схемы кодирования SOAP, но они не требуются
к.)

5.2.2 Перечисления

“Схема XML, часть 2: Типы данных”
Спецификация [11] определяет механизм, называемый «перечислением».
Модель данных SOAP напрямую использует этот механизм. Однако, поскольку
программирование и другие языки часто определяют перечисление несколько иначе,
мы разъясняем концепцию более подробно здесь и описываем, как значение, которое является
должен быть закодирован член перечислимого списка возможных значений.В частности, он кодируется как имя значения.

«Перечисление» как понятие указывает на
набор различных имен. Конкретное перечисление – это конкретный список различных
значения, соответствующие базовому типу. Например набор названий цветов
(«Зеленый», «Синий», «Коричневый») можно определить как перечисление на основе
строковый встроенный тип. Значения («1», «3», «5») являются возможным перечислением.
на основе целого числа и т. д. “XML Schema Part 2: Datatypes” [11] поддерживает
перечисления для всех простых типов, кроме логического.Язык
Спецификация “XML Schema Part 1: Structures” [10] может быть
используется для определения типов перечисления. Если схема сгенерирована из другой нотации
в которых не применим конкретный базовый тип, используйте «строку». в
В следующем примере схемы “EyeColor” определяется как строка с возможными
перечисляются значения «Зеленый», «Синий» или «Коричневый» и отображаются данные экземпляра.
соответственно.







Генри Форд
32
Brown

5.2.3 Массив байтов

Массив байтов МОЖЕТ быть закодирован как
значение одной или нескольких ссылок. Правила для массива байтов:
аналогично строкам.

В частности, содержащий элемент
массив значений байтов МОЖЕТ иметь атрибут «id». Дополнительный аксессуар
тогда элементы МОГУТ иметь соответствующие атрибуты “href”.

Рекомендуемое представление
непрозрачный массив байтов – это кодировка base64, определенная в XML Schemas [10] [11], которая использует
алгоритм кодирования base64, определенный в 2045 году [13].Однако длина линии
ограничения, которые обычно применяются к данным base64 в MIME, не применяются в SOAP. А
Подтип «SOAP-ENC: base64» предоставляется для использования с SOAP.

aG93IG5vDyBicm73biBjb3cNCg ==

Многие языки допускают средства доступа, которые могут
полиморфно получить доступ к значениям нескольких типов, каждый из которых доступен при запуске
время. Полиморфный экземпляр метода доступа ДОЛЖЕН содержать атрибут “xsi: type”, который
описывает тип фактического значения.

Например, полиморфный метод доступа с именем
“cost” со значением типа “xsd: float” будет закодировано следующим образом:

29,95

в отличие от аксессуара стоимости, чья
тип значения инвариантен, а именно:

29,95

SOAP определяет типы, соответствующие
следующие структурные шаблоны, часто встречающиеся в языках программирования:

Структура
«Структура» – это составное значение, в котором
имя метода доступа – единственное различие между значениями членов, и ни один метод доступа не имеет
такое же имя, как и у любого другого.
Массив
«Массив» – это составное значение, в котором
Порядковая позиция служит единственным отличием между значениями членов.

SOAP также разрешает сериализацию данных
который не является ни структурой, ни массивом, например данные, которые находятся в
Модель данных направленного маркированного графа, в которой один узел имеет множество различных
аксессоры, некоторые из которых встречаются более одного раза. Сериализация SOAP не
требовать, чтобы базовая модель данных делала упорядочение различий между
аксессоры, но если такой порядок существует, аксессоры ДОЛЖНЫ быть закодированы в этом
последовательность.

5.4.1 Составные значения, структуры и ссылки на значения

Членами составной стоимости являются
закодированы как элементы доступа. Когда аксессоры различаются по имени (как
например, в структуре) имя метода доступа используется как имя элемента.
Аксессоры, имена которых являются локальными по отношению к содержащим их типам, имеют неквалифицированные
имена элементов; у всех остальных есть уточненные имена.

Ниже приведен пример структуры
типа «Книга»:


Генри Форд вводный текст Это книга.

А это фрагмент схемы, описывающий
вышеуказанная структура:







Ниже приведен пример типа с обоими
простые и сложные члены.Он показывает два уровня ссылок. Обратите внимание, что
Атрибут “href” элемента доступа “Автор” является ссылкой на значение
чей атрибут “id” совпадает. Аналогичная конструкция появляется для
“Адрес”.


Моя жизнь и работа



Генри Форд



mailto: Генрифорд @ hotmail.com
http://www.henryford.com

Форма выше подходит, когда
Значение «Человек» и значение «Адрес» являются мультиссылочными. Если бы это были
вместо этого обе одинарные ссылки, они ДОЛЖНЫ быть встроены следующим образом:


Моя жизнь и работа

Генри Форд

mailto: henryford @ hotmail.com
http://www.henryford.com


Если вместо этого существовало ограничение
что никакие два человека не могут иметь один и тот же адрес в данном случае и что
адрес может быть либо Уличным адресом, либо Электронным адресом, Книгой с двумя
авторы будут закодированы следующим образом:


Моя жизнь и работа




Генри Форд

mailto: henryford @ hotmail.com
http://www.henryford.com



Сэмюэл Кроутер

Martin Luther King Rd
Raleigh
Северная Каролина < / state>

Сериализации могут содержать ссылки на
значений не в том же ресурсе:


Потерянный рай

А это фрагмент схемы, описывающий
вышеуказанных структур:



href, но не оба сразу. ->










href, но не оба сразу.->







< / complexType>



, но не то и другое одновременно.->








5.4.2 Массивы

Массивы SOAP определяются как имеющие тип
«SOAP-ENC: Array» или производный от него тип (см.
также правило 8).Массивы
представлены как значения элементов, без каких-либо конкретных ограничений на
имя содержащего элемента (как обычно делают значения
не ограничивать имя содержащего их элемента).

Массивы могут содержать элементы, которые
сами могут быть любого типа, включая вложенные массивы. Новые типы, образованные
ограничения SOAP-ENC: Массив также может быть создан для представления, например,
массивы, ограниченные целыми числами или массивы определенного пользователем перечисления.

Представление стоимости
array – это упорядоченная последовательность элементов, составляющих элементы массива.
В значении массива имена элементов не важны для различения
аксессуары. Элементы могут иметь любое имя. На практике элементы часто будут
названы так, чтобы их объявление в схеме предлагало или определяло их тип.
Как и в случае с составными типами в целом, если значение элемента в массиве равно
однократное значение, элемент содержит свое значение.В противном случае товар
ссылается на свое значение через атрибут “href”.

Следующий пример представляет собой схему
фрагмент и массив, содержащий целые элементы массива.

type = “SOAP-ENC: Array” />

SOAP-ENC: arrayType = “xsd: int [2]”>
3
4

В этом примере массив myFavoriteNumbers
содержит несколько членов, каждый из которых является значением типа
SOAP-ENC: внутр.Это можно определить, осмотрев
SOAP-ENC: атрибут arrayType. Обратите внимание, что тип SOAP-ENC: Array
допускает неквалифицированные имена элементов без ограничений. Эти
не передают информацию о типе, поэтому при использовании они должны иметь
атрибут xsi: type или содержащий элемент должен иметь
SOAP-ENC: атрибут arrayType. Естественно, типы, производные от
SOAP-ENC: массив может объявлять локальные элементы с типом
Информация.

Как отмечалось ранее, схема SOAP-ENC
содержит объявления элементов с именами, соответствующими каждому простому типу
в спецификации «XML Schema Part 2: Datatypes» [11].Он также содержит
объявление для «Массив». Используя их, мы могли бы написать


3
4

Массивы могут содержать экземпляры любых
подтип указанного arrayType. То есть члены могут быть любого типа,
заменяется на тип, указанный в атрибуте arrayType, в соответствии с
какие бы правила заменяемости ни выражались в схеме.Так, например,
массив целых чисел может содержать любой тип, производный от целого числа (например, “int”
или любое определяемое пользователем производное целого числа). Точно так же массив «адреса»
может содержать ограниченный или расширенный тип, например “internationalAddress”.
Поскольку предоставленный тип SOAP-ENC: Array допускает элементы любого типа, произвольные
смеси типов могут содержаться, если специально не ограничиваются использованием
Атрибут arrayType.

Типы элементов-элементов могут быть указаны
используя атрибут xsi: type в экземпляре или объявления в схеме
элементов-членов, как показано в следующих двух массивах соответственно.

12345 6.789 Первого неповиновения человека и плод
Запретного дерева, чей смертный вкус
принес смерть в мир, и все наше горе,
http: // www.dartmouth.edu/~milton/reading_room/


12345
6,789

Первого неповиновения человека и плод
Запретного дерева, чей смертный вкус
принес смерть в мир и все наши горе,


http: // www.dartmouth.edu/~milton/reading_room/

Значения массива могут быть структурами или другими
составные ценности. Например, массив структур “xyz: Order”:



Apple
1,56


Peach
1.48

Массивы могут иметь в качестве членов другие массивы
значения. Ниже приведен пример массива из двух массивов, каждый из которых
массив строк.






r1c1
r1c2
r1c3


r2c1
r2c2

Элемент, содержащий значение массива
не нужно называть «SOAP-ENC: массив».Он может иметь любое имя при условии, что
тип элемента – либо SOAP-ENC: Array, либо производный от
SOAP-ENC: массив по ограничению. Например, ниже приведен фрагмент
схема и соответствующий массив экземпляров.






206-555-1212 1-888-123-4567 < / xyz: ArrayOfPhoneNumbers>

Массивы могут быть многомерными.В этом
В этом случае в части asize атрибута arrayType будет отображаться более одного размера:


r1c1
r1c2
r1c3
r2c1
r2c2
r2c3

Хотя приведенные выше примеры показали
массивы, закодированные как независимые элементы, значения массива МОГУТ также отображаться встроенными
и ДОЛЖЕН сделать это, если известно, что они являются единственной ссылкой.

Ниже приведен пример схемы
фрагмент и массив телефонных номеров, встроенных в структуру типа “Человек” и
доступ через аксессуар “phone-numbers”:









<имя элемента = "phoneNumbers" type = "tns: ArrayOfPhoneNumbers" />


Джон Хэнкок 206-555-1212 1-888-123-4567

Вот еще один пример
значение массива с одной ссылкой, закодированное как встроенный элемент, содержащий
имя элемента – это имя аксессора:


Генри Форд

5th Ave
New York
NY
10010



Apple
1.56


Peach
1,48


5.4.2.1 Частично переданные массивы

SOAP обеспечивает поддержку частично
передаваемые массивы, известные в некоторых контекстах как «изменяющиеся» массивы [12]. Частично переданный
указывает в атрибуте “SOAP-ENC: смещение” смещение нулевой точки отсчета
первый переданный элемент.Если не указано, смещение принимается равным нулю.

Ниже приведен пример массива
размера пять, который передает только третий и четвертый элементы, считая с нуля:


Третий элемент
Четвертый элемент

5.4.2.2 Разреженные массивы

SOAP обеспечивает поддержку разреженных массивов.Каждый
элемент, представляющий значение члена, содержит
Атрибут “SOAP-ENC: position”, указывающий его положение в
массив. Ниже приведен пример разреженного массива
двумерные массивы строк. Размер 4 но только
используется позиция 2:





Третья строка, третий столбец
Восьмая строка, третий столбец

Если встречается единственная ссылка на массив-1
во включающем массиве этот пример также мог быть закодирован как
следует:


Третья строка, третий столбец
Восьмая строка, третий столбец

5.4.3 Общие типы соединений

Приведенные выше правила кодирования не
ограничивается теми случаями, когда имена средств доступа известны заранее. Если
имена аксессоров известны только при проверке ближайших значений, которые должны быть
закодированы, применяются те же правила, а именно, что аксессор кодируется как элемент
имя которого совпадает с именем средства доступа, а средство доступа либо содержит, либо
ссылается на его значение. Аксессоры, содержащие значения, типы которых не могут быть
определенное заранее, ДОЛЖНО всегда содержать соответствующий атрибут xsi: type
с указанием типа значения.

Точно так же приведенных правил достаточно
чтобы разрешить сериализацию составных типов, имеющих смесь средств доступа
различаются по имени и аксессуарам, различаемым как по имени, так и по порядковому номеру
позиция. (То есть повторение некоторых методов доступа.) Это не требует, чтобы
любая схема действительно содержит такие типы, но скорее говорит, что если тип-модель
схема действительно имеет такие типы, соответствующую синтаксическую схему XML и экземпляр
могут быть созданы.


Генри Форд

5th Ave
New York
NY
10010



Apple
1,56


< Товар> Персик
<Цена> 1.48


Аналогичным образом допустимо сериализовать составной
значение, структурно напоминающее массив, но не имеющее типа (или
подтип) SOAP-ENC: Массив. Например:



Apple
1,56


Peach
1.48

Пропущенный элемент доступа подразумевает
либо значение по умолчанию, либо значение неизвестно. Специфика зависит от
аксессор, метод и его контекст. Например, опущенный аксессуар обычно
подразумевает значение Null для полиморфных средств доступа (с точным значением Null
зависит от аксессуара). Точно так же опущенный логический метод доступа обычно подразумевает
либо значение False, либо значение неизвестно, и пропущенный числовой метод доступа
обычно подразумевает, что либо значение равно нулю, либо значение неизвестно.

Корневой атрибут SOAP может использоваться для
пометьте корни сериализации, которые не являются истинными корнями графа объектов, чтобы
граф объекта может быть десериализован. Атрибут может иметь одно из двух значений:
либо «1», либо «0». Истинные корни графа объектов имеют подразумеваемый атрибут
значение «1». Корни сериализации, которые не являются настоящими корнями, можно обозначить как
корни сериализации со значением атрибута “1”. Элемент может быть явно
помечен как не являющийся корнем сериализации со значением “0”.

Корневой атрибут SOAP МОЖЕТ появляться на любом
подэлемент в элементах заголовка SOAP и тела SOAP. Атрибут не
имеют значение по умолчанию.

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

SOAP естественно следует за HTTP
модель сообщения запрос / ответ, предоставляющая параметры запроса SOAP в HTTP
параметры запроса и SOAP-ответа в HTTP-ответе. Обратите внимание, однако, что
Посредники SOAP НЕ то же самое, что посредники HTTP. То есть HTTP
посредник, адрес которого указан в поле заголовка HTTP-соединения, не может ожидаться
для проверки или обработки тела объекта SOAP, передаваемого в HTTP-запросе.

HTTP-приложения ДОЛЖНЫ использовать тип носителя
“text / xml” согласно RFC 2376 [3] при включении тел объектов SOAP в HTTP
Сообщения.

Хотя SOAP может использоваться в
в сочетании с различными методами HTTP-запроса эта привязка определяет только
SOAP в запросах HTTP POST (см. Раздел 7, чтобы узнать, как использовать SOAP для RPC, и раздел
6.3 о том, как использовать HTTP Extension Framework).

6.1.1 Поле заголовка HTTP SOAPAction

Поле заголовка HTTP-запроса SOAPAction
может использоваться для обозначения цели HTTP-запроса SOAP. Значение – это URI.
определение намерения.SOAP не накладывает ограничений на формат или специфику
URI или что он разрешим. HTTP-клиент ДОЛЖЕН использовать это поле заголовка.
при выдаче HTTP-запроса SOAP.

soapaction = “SOAPAction” “:” [<"> URI-ссылка <">]
URI-reference = <как определено в RFC 2396 [4]>

Наличие и содержание
Поле заголовка SOAPAction может использоваться такими серверами, как межсетевые экраны, для
надлежащим образом фильтруйте сообщения запроса SOAP в HTTP.Значение поля заголовка
пустая строка (“”) означает, что цель сообщения SOAP обеспечивается
HTTP-запрос-URI. Отсутствие значения означает, что нет никаких указаний на намерение
сообщение.

Примеры:

SOAPAction: “http://electrocommerce.org/abc#MyMessage”
SOAPAction: “myapp.sdl”
SOAPAction: “”
SOAPAction:

SOAP HTTP следует семантике
Коды состояния HTTP для передачи информации о состоянии в HTTP.Например,
Код состояния 2xx указывает, что запрос клиента, включая компонент SOAP
был успешно получен, понят и принят и т. д.

В случае ошибки SOAP при обработке
запрос, HTTP-сервер SOAP ДОЛЖЕН выдать HTTP 500 «Внутренняя ошибка сервера»
ответ и включить сообщение SOAP в ответ, содержащий ошибку SOAP
элемент (см. раздел 4.4), указывающий на обработку SOAP
ошибка.

Сообщение SOAP МОЖЕТ использоваться вместе с
HTTP Extension Framework [6], чтобы определить наличие и намерение
HTTP-запрос SOAP.

Следует ли использовать Extension Framework или
простой HTTP – это вопрос политики и возможностей взаимодействующих сторон.
Клиенты могут принудительно использовать HTTP Extension Framework с помощью обязательного
объявление расширения и префикс имени метода HTTP “M-“. Серверы могут заставить
использование HTTP Extension Framework с использованием 510 «Not Extended» HTTP
код состояния. То есть, используя один дополнительный круговой обход, любая из сторон может обнаружить
политика другой стороны и действовать соответственно.

Идентификатор расширения, используемый для идентификации
SOAP с использованием Extension Framework –

http://schemas.xmlsoap.org/soap/envelope/

Пример 3 SOAP HTTP с использованием POST

POST / StockQuote HTTP / 1.1
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn
SOAPAction: “http://electrocommerce.org/abc#MyMessage”

HTTP / 1.1 200 OK
Content- Тип:
текст / xml; charset = “utf-8”
Content-Length: nnnn

Пример 4 SOAP с использованием инфраструктуры расширений HTTP

M-POST / StockQuote HTTP / 1.1
Человек: “http://schemas.xmlsoap.org/soap/envelope/”; ns = NNNN
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn
NNNN-SOAPAction: “http://electrocommerce.org/abc#MyMessage”

HTTP / 1.1 200 OK
Внешний:
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn

Одна из целей разработки SOAP –
инкапсулировать и обмениваться вызовами RPC, используя расширяемость и
гибкость XML. В этом разделе определяется униформа
представление вызовов и ответов удаленных процедур.

Хотя ожидается, что это
представление, вероятно, будет использоваться в сочетании с
стиль кодирования, определенный в разделе 5, другое
возможны представления. Атрибут SOAP encodingStyle
(см. раздел 4.3.2) можно использовать для
указать стиль кодирования вызова метода и / или ответа
используя представление, описанное в этом разделе.

Использование SOAP для RPC ортогонально SOAP
привязка протокола (см. раздел
6). В случае использования HTTP в качестве привязки протокола
Вызов RPC естественно отображается на HTTP-запрос и RPC-ответ.
сопоставляется с ответом HTTP. Однако использование SOAP для RPC не
ограничивается привязкой к протоколу HTTP.

Для вызова метода необходима следующая информация:

  • URI целевого объекта
  • Имя метода
  • Необязательная подпись метода
  • Параметры к методу
  • Дополнительные данные заголовка

SOAP полагается на привязку протокола для предоставления
механизм для переноса URI.Например, для HTTP
URI запроса указывает ресурс, который вызывается
сделано против. Кроме действительного URI, SOAP не помещает
ограничение на форму адреса (подробнее об URI см. [4]).

вызовов и ответов метода RPC переносятся
в элементе SOAP Body (см. раздел
4.3), используя следующее представление:

  • Вызов метода моделируется как
    структура.
  • Вызов метода рассматривается как одна структура
    содержащий метод доступа для каждого параметра [in] или [in / out].Структура как
    названный и типизированный идентично названию метода.
  • Каждый параметр [вход] или [вход / выход]
    рассматривается как средство доступа с именем, соответствующим имени
    параметр и тип, соответствующие типу параметра. Они появляются в
    в том же порядке, что и в сигнатуре метода.
  • Ответ метода моделируется как
    структура.

  • Ответ метода рассматривается как
    единственная структура, содержащая метод доступа для возвращаемого значения и
    каждый параметр [out] или [in / out].Первый аксессуар – это
    возвращаемое значение, за которым следуют параметры в том же порядке, что и
    в сигнатуре метода.
  • У каждого средства доступа к параметрам есть имя
    соответствующий названию параметра и типу
    соответствующий типу параметра. Имя
    Метод доступа к возвращаемому значению не имеет значения. Точно так же имя
    структуры не имеет значения. Однако по соглашению
    назовите его после имени метода строкой «Response»
    добавлено.
  • Ошибка метода кодируется с помощью протокола SOAP.
    Элемент неисправности (см. Раздел
    4.4). Если привязка протокола добавляет дополнительные правила для
    выражение ошибки, они также ДОЛЖНЫ соблюдаться.

Как отмечалось выше, структуры метода и ответа могут
быть закодированы в соответствии с правилами в разделе 5, или другие кодировки могут быть
указывается с помощью атрибута encodingStyle (см. раздел 4.1.1).

Приложения МОГУТ обрабатывать запросы с
отсутствующие параметры, но МОЖЕТ вернуть ошибку.

Поскольку результат указывает на успех, а ошибка указывает
сбой, ответ метода будет содержать как результат, так и
вина.

Дополнительная информация, относящаяся к
кодирование запроса метода, но не часть формальной сигнатуры метода МОЖЕТ быть
выражается в кодировке RPC. Если это так, он ДОЛЖЕН быть выражен как подэлемент
элемента заголовка SOAP.

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

В этом документе не описаны
методы защиты целостности и конфиденциальности. Такие вопросы будут решаться подробнее
полностью в будущих версиях этого документа.

[1] С. Брэднер, “Интернет-стандарты
Process – Revision 3 », RFC2026, Гарвардский университет, октябрь
1996

[2] С.Брэднер, “Ключевые слова для использования в
RFC для указания уровней требований »,
RFC 2119,
Гарвардский университет, март 1997 г.

[3] Э. Уайтхед, М. Мурата, “XML Media”
Типы », RFC2376, UC Irvine, Fuji Xerox Info. Systems, июль
1998

[4] Т. Бернерс-Ли, Р. Филдинг, Л.
Masinter, “Uniform Resource Identifiers (URI): Generic Syntax”,
RFC 2396,
MIT / LCS, U.C. Ирвин, Xerox Corporation, август 1998 г.

[5] Р. Филдинг, Дж.Геттис, Дж. К. Могул,
Х. Фристик, Т. Бернерс-Ли, “Протокол передачи гипертекста – HTTP / 1.1”,
RFC 2616,
U.C. Ирвин, DEC W3C / MIT, DEC, W3C / MIT, W3C / MIT, январь 1997 г.

[6] Х. Нильсен, П. Лич, С. Лоуренс,
«Структура расширения HTTP»,
RFC 2774,
Microsoft, Microsoft, Agranat Systems

[7] Рекомендация W3C
«Спецификация XML»

[8] Рекомендация W3C
«Пространства имен в XML»

[9] Рабочий проект W3C
«Язык связывания XML».Эта работа в процессе.

[10] Рабочий проект W3C
«Схема XML. Часть 1: Структуры». Эта работа в процессе.

[11] Рабочий проект W3C
«Схема XML, часть 2: типы данных». Эта работа в процессе.

[12] Передача отчета о недоставке синтаксиса, в
«DCE 1.1: Удаленный вызов процедур»

[13] Н. Фрид, Н. Боренштейн,
“Многоцелевые расширения электронной почты Интернета (MIME), часть первая: формат Интернета
Тела сообщений », RFC2045, Innosoft, First Virtual, ноябрь
1996

Пример 5
Аналогично примеру 1, но с обязательным заголовком

POST / StockQuote HTTP / 1.1
Хост: www.stockquoteserver.com
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn
SOAPAction: “Some-URI”

xmlns: SOAP-ENV = “http://schemas.xmlsoap.org/soap/envelope / “
SOAP-ENV: encodingStyle =” http://schemas.xmlsoap.org/soap/encoding/ “/>

xmlns: t =” some-URI ”
SOAP-ENV: mustUnderstand = “1”>
5




DEF


Пример 6
Аналогично примеру 1, но с несколькими параметрами запроса

POST / StockQuote HTTP / 1.1
Хост: www.stockquoteserver.com
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn
SOAPAction: “Some-URI”

xmlns: SOAP-ENV = “http://schemas.xmlsoap.org/soap/envelope / “
SOAP-ENV: encodingStyle =” http://schemas.xmlsoap.org/soap/encoding/ “/>

xmlns: m =” Some-URI ” >
DEF
DEF Corp
34.1


Пример 7
Аналогично примеру 2, но с обязательным заголовком

HTTP / 1.1 200 OK
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn

xmlns: SOAP-ENV = “http://schemas.xmlsoap.org/soap/envelope/”
SOAP-ENV: encodingStyle = “http://schemas.xmlsoap.org/soap/encoding/” />

xmlns: t = “some-URI”
xsi: type = “xsd: int “mustUnderstand =” 1 “>
5



xmlns: m =” Some-URI “>
<Цена> 34.5


Пример 8
Аналогично примеру 2, но с Struct

HTTP / 1.1 200 OK
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn

xmlns: SOAP-ENV = “http://schemas.xmlsoap.org/soap/envelope/”
SOAP-ENV: encodingStyle = “http://schemas.xmlsoap.org/soap/encoding/” />

xmlns: m = “Some-URI”>


34.5


10000



028 Пример 9
Аналогично примеру 2, но не соблюдается обязательный заголовок

HTTP / 1.1 500 Внутренняя ошибка сервера
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn

xmlns: SOAP-ENV = “http: // schemas.xmlsoap.org/soap/envelope / “>


SOAP-ENV: MustUnderstand
SOAP должен понимать ошибку


Пример 10
Аналогично примеру 2, но не удается обработать тело

HTTP / 1.1 500 Внутренняя ошибка сервера
Content-Type: text / xml; charset = “utf-8”
Content-Length: nnnn

xmlns: SOAP-ENV = “http: // schemas.xmlsoap.org/soap/envelope / “>


SOAP-ENV: Server
Ошибка сервера



Мое приложение не работало


1001






Как работает мыло

Мыло – это соли жирных кислот натрия или калия, образующиеся в результате гидролиза жиров в результате химической реакции, называемой омылением.Каждая молекула мыла имеет длинную углеводородную цепь, иногда называемую «хвостом», с карбоксилатной «головой». В воде ионы натрия или калия свободно плавают, оставляя отрицательно заряженную головку.

Ключевые выводы: мыло

  • Мыло представляет собой соль жирной кислоты.
  • Мыло используется как очищающее и смазывающее средство.
  • Мыло очищает, действуя как поверхностно-активное вещество и эмульгатор. Он может окружать масло, что облегчает его смывание водой.

Как мыло очищает

Мыло – отличное очищающее средство, поскольку оно действует как эмульгирующий агент.Эмульгатор способен диспергировать одну жидкость в другой несмешивающейся жидкости. Это означает, что хотя масло (которое притягивает грязь) естественным образом не смешивается с водой, мыло может удерживать масло / грязь таким образом, чтобы ее можно было удалить.

Органическая часть натурального мыла представляет собой отрицательно заряженную полярную молекулу. Его гидрофильная (любящая воду) карбоксилатная группа (-CO 2 ) взаимодействует с молекулами воды посредством ионно-дипольных взаимодействий и водородных связей. Гидрофобная (водобоязненная) часть молекулы мыла, ее длинная неполярная углеводородная цепь, не взаимодействует с молекулами воды.Углеводородные цепи притягиваются друг к другу дисперсионными силами и группируются вместе, образуя структуры, называемые мицеллами . В этих мицеллах карбоксилатные группы образуют отрицательно заряженную сферическую поверхность с углеводородными цепями внутри сферы. Поскольку они заряжены отрицательно, мицеллы мыла отталкиваются друг от друга и остаются диспергированными в воде.

Жир и масло неполярны и не растворяются в воде. При смешивании мыла и загрязняющих масел неполярная углеводородная часть мицелл разрушает молекулы неполярного масла.Затем образуется мицелла другого типа с неполярными загрязняющими молекулами в центре. Таким образом, жир, масло и прилипшая к ним «грязь» улавливаются мицеллой и могут быть смыты.

Недостаток мыла

Хотя мыло – отличное очищающее средство, у него есть недостатки. Как соли слабых кислот они превращаются минеральными кислотами в свободные жирные кислоты:

CH 3 (CH 2 ) 16 CO 2 Na + + HCl → CH 3 (CH 2 ) 16 CO 2 H + Na + + Класс

Эти жирные кислоты менее растворимы, чем соли натрия или калия, и образуют осадок или мыльную пену.Из-за этого мыло неэффективно в кислой воде. Кроме того, мыла образуют нерастворимые соли в жесткой воде, такой как вода, содержащая магний, кальций или железо.

2 CH 3 (CH 2 ) 16 CO 2 Na + + Mg 2+ → [CH 3 (CH 2 ) 16 CO 2 ] 2 Mg 2+ + 2 Na +

Нерастворимые соли образуют кольца для ванны, оставляют пленки, уменьшающие блеск волос, и оставляют седину / шероховатость на текстиле после многократных стирок.Однако синтетические моющие средства могут быть растворимы как в кислых, так и в щелочных растворах и не образуют нерастворимых осадков в жесткой воде. Но это другая история …

Источники

ИЮПАК. Сборник химической терминологии, 2-е изд. («Золотая книга»). Составлено А. Д. Макнотом и А. Уилкинсоном. Научные публикации Блэквелла, Оксфорд (1997). Архивировано.

Клаус Шуман, Курт Зикманн (2005). «Мыло». Энциклопедия промышленной химии Ульмана .Вайнхайм: Wiley-VCH.

Торстен Бартельс и др. (2005). «Смазочные материалы и смазка». Энциклопедия промышленной химии Ульмана . Вайнхайм: Wiley-VCH.

Определение мыла Merriam-Webster

\ ˈSōp

\

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

б

: соль жирной кислоты и металла

Мыло

Введение:

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

Мыло получают в результате реакции омыления или основного гидролиза.
жира или масла. В настоящее время карбонат натрия или гидроксид натрия
используется для нейтрализации жирной кислоты и превращения ее в соль.

Общая общая реакция гидролиза:

жир + NaOH —> глицерин + натриевая соль жирной кислоты

Хотя реакция показана как одностадийная, она
это фактически два шага.Чистый эффект, поскольку сложноэфирные связи
сломаны. Глицерин снова превращается в спирт (добавление
зеленых H). Часть жирных кислот превращается в соль
из-за наличия основного раствора NaOH. в
карбоксильная группа, один кислород (красный) теперь имеет отрицательный заряд, который
привлекает положительный ион натрия.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *