Почему вы используете систему, основанную на сообщениях?

double.toString() должен работать. Не тип переменной Double, но сама переменная double.

16
задан Garry Shutler 17 December 2008 в 13:05
поделиться

6 ответов

Существует несколько преимуществ для использования основанных на сообщении систем.

  1. Сообщения формируют четко определенную технологию нейтральный интерфейс между приложениями.
  2. Включает слабую связь приложений.
  3. Много опций для производительности, настраиваясь и масштабируясь:
    • Разверните запрашивающую сторону и сервисный процесс на других аппаратных средствах
    • Несколько запрашивающих сторон, совместно использующих единственный сервер
    • Несколько запрашивающих сторон, совместно использующих несколько серверов
  4. Различное промежуточное программное обеспечение обмена сообщениями реализует общие шаблоны обмена сообщениями независимо от Вас приложение.
    • Запрос/Ответ
    • Запустите и Забудьте офлайновые обновления
    • Публиковать/Подписывать
  5. Многие продукты промежуточного программного обеспечения обрабатывают преобразование сообщения (например, SWIFT к SWIFTXML).
  6. Многие продукты промежуточного программного обеспечения могут разложить единственный большой запрос на несколько меньших запросов.
  7. Они почти все поддерживают несколько платформ.

Случайно этими двумя акциями ведущих компаний в этой области является IBM со своим Websphere MQ и сопутствующими товарами, и, TIBCO с их Сервисной шиной предприятия.

23
ответ дан 30 November 2019 в 15:47
поделиться

Основанная на сообщении архитектура отделяет производителей и потребителей сообщений, оба во времени и пространстве. Это обладает большим количеством преимуществ:

  • производители и потребители могут работать на различных машинах
  • производители и потребители могут работать в разное время.
  • производители и потребители могут работать на других аппаратных средствах/программных платформах (они только должны понять тот же протокол сообщения),
  • легко скоординировать несколько производителей / потребители (например, для вычисляют - интенсивные задания, для которых нужны несколько машин, как Dave Markle описал),
  • более высокая устойчивость, когда сервисы временно unavailble (например, при выполнении обработки заказов, использовании системы обмена сообщениями может помочь постараться не "отбрасывать" заказы),

Вы теряете большинство этих преимуществ, когда Вы делаете коммуникацию стиля RPC (т.е. когда Вы блокируетесь при ожидании сервисных ответов),

11
ответ дан 30 November 2019 в 15:47
поделиться

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

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

10
ответ дан 30 November 2019 в 15:47
поделиться

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

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

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

Не думайте, что архитектура передачи сообщений требует воображения (и дорогой!) продукты промежуточного программного обеспечения, хотя, Windows работает на архитектуре передачи сообщений - каждое сообщение WM_*, переданное окну.. хорошо, сообщение, и я думаю, что показывает лучший пример архитектуры - никакая часть системы не должна знать ни о какой другой части, можно расширить его бесконечно, поскольку можно обработать столько средств управления, сколько Вам нравится на любом диалоговом окне и т.д. и т.д.

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

4
ответ дан 30 November 2019 в 15:47
поделиться

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

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

Существуют также преимущества асинхронной передачи (как электронная почта по сравнению с онлайн-чатом) и возможности преобразования и маршрутизация сообщений.

0
ответ дан 30 November 2019 в 15:47
поделиться

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

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

  • Устройство хранения данных (создал/, сохранило сообщение к базе данных),
  • Маршрутизация (разработал, куда сообщение должно быть отправлено),
  • Безопасность (удался, разрешили ли клиенту получить ее),
  • Удалите (удается, должно ли сообщение быть удалено из системы, что означает, что клиенты должны быть уведомлены, и сообщение удалено из, он - кэш и отмеченный в DB).
  • TakeOwnership (соглашения с проверкой только одного клиента могут изменить состояние сообщения за один раз как только сообщения, которые принадлежат, может быть изменен),

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

0
ответ дан 30 November 2019 в 15:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: