Что такое SOA "в простом английском"?

Может ли кто-нибудь объяснить на простом английском языке что такое SOA все о? Я слышу SOA здесь, SOA, но я не могу понять, что это такое и для чего он используется. Было ли это простой концепцией, а потом превратилось во что-то огромное или что?

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

Что именно стоит за этими тремя буквами?

Ответ 1

Вы можете найти эту статью (Что такое SOA? - Разъяснение SOA и веб-служб).

Маленький тизер:

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

    /li >
  • В SOA есть 2 роли - поставщик услуг и потребитель службы. Программный агент может играть обе роли. SOA не является совершенно новой концепцией - однако в этой статье основное внимание уделяется SOA, реализованной с помощью веб-сервисов.

Ответ 2

SOA - новый значок для некоторых очень старых идей:

  • Разделите свой код на повторно используемые модули.

  • Инкапсулируйте в модуле любое дизайнерское решение, которое может измениться.

  • Создайте свои модули таким образом, чтобы их можно было комбинировать различными способами (иногда называемыми "семейством" или "продуктовой линейкой" ).

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

Что нового в SOA

  • Вы делаете это в сети.

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

Ответ 3

Я вижу много ответов, объясняющих сервис-ориентированную архитектуру (SOA), используя еще более сложные слова и технические термины. Я хотел бы рассказать об этом для непрофессионала, используя аналогию на простом английском.

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

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

<ч/" > enter image description here


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

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

Надеюсь, это дало по крайней мере кому-то лучшую картину SOA.

Ответ 4

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

Как вы это делаете? Ну, сначала вы определите роли и интерфейс - повар 1 сделает салат, повар 2 сделает суп, повар 3 сделает стейк и т.д. Затем вы разместите блюда, хорошо организованные на столе (так это интерфейсы) и сказать: "Все, пожалуйста, поместите свое творение в свои назначенные блюда. Не заботьтесь ни о ком другом".

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

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

Одна из самых успешных реализаций SOA была на Amazon. Из-за их дизайна они могут повторно упаковать всю свою инфраструктуру и продать ее как Amazon Web Service.

* Это только один аспект SOA.

Ответ 5

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

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

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

  • Аналогичная функция была реализована несколько раз

  • Данные (например, данные клиента или сотрудника) должны быть разделены между несколько приложений

  • Приложения были децентрализованными.

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

  • Не нужно переопределять подобные функции снова и снова (например, предоставлять услуги клиента или сотрудника)

  • Облегчает интеграцию приложений вместе и доступ к общим данным или функциям

  • Развитие, ориентированное на предприятие   усилие.

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

Это 1000-футовый вид SOA. Однако это не останавливается. Существуют и другие концепции, дополняющие SOA, такие как организация бизнес-процессов (BPM), корпоративная шина обслуживания (ESB), комплексная обработка событий (CEP) и т.д. Они решают проблему ИТ/бизнес-ориентирования, что заключается в том, как ИТ-специалисты смогут эффективно поддерживать бизнес.

Ответ 6

SOA - это аббревиатура сервис-ориентированной архитектуры.

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

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

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

Практика SOA дает высокую степень повторное использование, используя DRY [Do not повторите свое], что приводит к высоко поддерживаемое программное обеспечение. Поддержание работоспособности - это первое, что угодно архитектура программного обеспечения - SOA дает вам это.

Ответ 7

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

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

Ответ 8

Я бы предложил вам прочитать статьи Томаса Эрла и Роджера Сессий, это даст вам твердую информацию о том, что такое SOA. Это также хорошие ресурсы, посмотрите на SOA, объясненную для вашего босса, для объяснения непрофессионала.

Создание SOA

Шаблон проектирования SOA

Достижение целостности в SOA

Почему ваша SOA должна быть как VW Beetle

SOA объясняется для вашего босса

Производительность сервиса WCF

Ответ 9

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

Итак, вы покупаете Oracle SOA, а Oracle становится боссом всех ваших частей. Все остальные игроки должны работать с SOA через службу (веб-сервис или что-то еще). Монолит Oracle заботится обо всем (монолит не подразумевается уничижительным). О да, у вас есть ASP.NET MVC спереди или что-то еще.

главное - перемещать вещи в систему и из нее без какого-либо воздействия и поддерживать поставщика Oracle SOA, Microsoft WCF, как мозги всего этого. все, что нравится oop/ood, жидкость, вещи, которые движутся и выходят без какого-либо воздействия, даже человеческие услуги, а не только компьютеры.

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

Ответ 10

Только одно предложение: -

Прочитайте SOA Concepts, Technology and Design от Thomas Erl.

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

Ответ 11

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

Ответ 12

из блога ittoolbox.

Ниже описываются сходства и отличия от прошлых методов проектирования:

• SOA и структурированное программирование o Сходства: большинство похоже на вызовы подпрограмм, где передаются параметры, а функция функции абстрагируется от вызывающего абонента - например, CICS и выполнить и зарезервированное слово COBOL CALL. Копировальные книги используются для определения структуры данных, которая обычно определяется как XML-схема для служб. o Различия: SOA слабо взаимосвязана, что означает, что изменения в сервисе оказывают меньшее влияние на потребителя ( "вызывающая" программа), а службы взаимодействуют между языками и платформами.

• SOA против OOA/OOD o Сходства: инкапсуляция, абстракция и определенные интерфейсы o Различия: SOA слабо связан с иерархией классов или наследованием, абстракции низкого уровня - уровень класса и бизнес-сервис

• SOA и устаревшая разработка на основе компонентов (CBD) - например, CORBA, DCOM, EJB o Сходства: Повторное использование через компоненты сборки, Интерфейсы, Удаленные вызовы o Различия: широкое внедрение стандартов, XML-схем и маршализированных объектов, сервис-оркестровка, проектирование для повторного использования проще, услуги ориентированы на бизнес и ИТ-ориентированные, бизнес-услуги являются конечно-крупными (широкими по охвату)

• SOA (для интеграции) по сравнению с интеграцией корпоративных приложений (EAI) o Сходства: лучшие практики (четко определенные интерфейсы, стандартизованные схемы, управляемая событиями архитектура), многоразовые интерфейсы, общие схемы o Различия: стандарты, принятие и улучшенные инструменты

Ответ 13

Считая ответы выше, мне кажется, что SOA - это то, что разработчики (по крайней мере, хорошие) делали с первого дня.

Ответ 14

Он также может стоять за "Struct of Arrays" (в отличие от "Array of Structs" ), который является обычной темой параллельно (особенно SIMD), но я предполагаю, что вы не имеете в виду здесь!

Ответ 15

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

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

Ответ 16

Прислушайтесь к этому выпуску Floss Weekly подкаста, который охватывает SOA. Описания довольно высокого уровня и не вникают в слишком много технических деталей (хотя более конкретными и узнаваемыми примерами проектов SOA было бы полезно.

Ответ 17

Традиционная архитектура приложения:

  • Пользовательский интерфейс
  • Undefined материал (реализация), который инкапсулирован/скрыт за пользовательским интерфейсом

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

SOA представляется мне архитектурой, которая фокусируется на разоблачении машиночитаемых данных и/или API, а не на экспонировании пользовательских интерфейсов.

Ответ 18

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

  • Интерфейс, политика и контракт
  • Прозрачность местоположения
  • Автономная
  • Аннотация
  • Многоразовые
  • наборный
  • Stateless
  • Видимый
  • Extensible
  • Свободно связанный

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

Сервисы обычно (но отнюдь не исключительно) реализованы как веб-службы, т.е. работают над вездесущим веб-HTTP-протоколом и реализуются либо с использованием SOAP на основе XML, либо с помощью легкой (и более популярной) парадигмы REST.

Ответ 19

Зависит от того, кто ты!

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

Вы должны прочитать 100-SOA-Questions [pdf]

Приветствия

Ответ 20

Service Oriented Architecture (SOA) - это архитектурный стиль программного обеспечения, который создает приложения в виде набора подключаемых частей, каждый из которых может быть повторно использован другими приложениями.