Это сервис-ориентированная архитектура? - PullRequest
0 голосов
/ 20 октября 2011

У меня есть многолетний опыт работы с большими веб-приложениями J2EE и Java-приложениями с высоким транзакционным ядром, но у меня никогда не было опыта работы с SOA.

В настоящее время я работаю над новым проектом, но архитектура уже выполнена.Мы (Java-разработчики) разрабатываем сервисы EJB, которые, наконец, отправляют Java-объекты на основе JAXB клиентам C # .net для визуализации пользовательского интерфейса, который используется только внутри компании 11000 пользователей.Идея заключается в том, что в будущем в мире могут появиться пользователи Интернета, и мы будем разрабатывать веб-приложение на основе J2EE, которое будет использовать те же сервисы.

Действительно ли это сервис-ориентированная архитектура?Может ли SOA выполняться таким образом с использованием связанных с JAXB объектов Java, которые могут использоваться на многих платформах?

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

Ответы [ 5 ]

6 голосов
/ 20 октября 2011

архитектура для SOA должна придерживаться следующих правил:

Компоненты SOA слабо связаны . Когда мы говорим «слабо связанные», это означает, что каждая услуга является самодостаточной и существует в одиночестве логически. Например, мы берем услугу «платежный шлюз» и подключаем ее к другой системе.

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

Сервис SOA должен быть самоопределяемым : - Сервисы SOA должны иметь возможность определять себя.

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

Компоненты SOA могут быть организованы и связаны для достижения определенной функциональности . Сервисы SOA могут использоваться / организовываться в режиме «подключи и работай».

Неважно, какие технологии / язык вы используете, если вы не нарушаете ни одно из вышеуказанных правил

для получения дополнительной информации:

http://www.codeproject.com/KB/aspnet/SoftArch7.aspx

1 голос
/ 20 октября 2011

Да.Это именно то, что SOA.Задайте себе следующие вопросы:

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

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

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

Замечательно иметь слабую связь, не так ли?

Я был в проекте, который сделал именно то, что вы делаете.EJB-компоненты на C # SOA и Java на сервере ..:)

1 голос
/ 20 октября 2011
  • Это действительно сервис-ориентированная архитектура?

SOA - модное слово . Вы также можете думать об этом как об архитектуре RBMDC => "Многоразовое использование многими различными клиентами"

Это не имеет ничего общего ни с реальным типом данных (XML, JSON, двоичным и т. Д.), Ни с протоколом (HTTP, TCP / IP, SOAP и т. Д.).

Что в действительности сводится к тому, что у вас есть X «бизнес-функций», которые вы можете использовать для внешних или внутренних клиентов. Эти бизнес-функции технически обозначены services , поэтому ваша архитектура Service Oriented.

То, что вы описываете в своем примере, это то, что модные архитекторы называют SOA => ответ ДА.

1 голос
/ 20 октября 2011

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

Затем вы можете добавить уровень пользовательского интерфейса (скажем, Java-Swing или SWT) на уровень бизнес-логики, чтобы создать клиентское приложение, аналогичномог бы создать веб-приложение.В каждом случае вы используете одни и те же веб-сервисы.Это SOA.

1 голос
/ 20 октября 2011

Все SOA означает, что «внешние» компоненты могут потреблять функциональность. Обычно SOA относится к интерфейсам XML / RESTful, но это просто соглашение.

http://en.wikipedia.org/wiki/Service-oriented_architecture

...