Обмен информацией между приложениями - PullRequest
0 голосов
/ 05 мая 2010

Мой вопрос очень просто разоблачить:

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

Мой вопрос о том, какие технологии могут быть полезны для меня. Решение, которое я понимаю на данный момент, состоит в том, чтобы иметь базу данных для совместного использования данных и внешнюю систему публикации-подписки (например, http://pubsub.codeplex.com/), чтобы уведомлять все приложения об изменении данных. Но я верю, что могут существовать некоторые полезные решения.

Знаете ли вы что-нибудь из этого? Спасибо.

Ответы [ 4 ]

2 голосов
/ 05 мая 2010

Хм, будьте осторожны, когда делаете что-то подобное, на практике они никогда не работают хорошо. Первая проблема - это большой объем сетевого трафика, который вы создаете, который никогда не масштабируется хорошо. Более серьезно, вы столкнетесь с огромными проблемами параллелизма. По определению, уведомление «данные изменены» будут доставлены с опозданием, и нет гарантии, что они будут заказаны. Все работает хорошо, если между уведомлениями имеется достаточно длительная задержка, позволяющая подсистемам иметь синхронизированное представление данных.

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

Использование централизованного сервера, с параллелизмом работать намного проще.

0 голосов
/ 10 мая 2010

Я могу использовать Sql Server для хранения своих данных и Sql Server Notification Services (http://msdn.microsoft.com/en-gb/library/ms172483(SQL.90).aspx) для получения уведомлений при изменении данных.

0 голосов
/ 05 мая 2010

Вы можете использовать Windows Communication Foundation (WCF) для связи между клиентами и сервером. Обмен данными может осуществляться двумя способами, поэтому клиент может уведомить сервер об изменении, и сервер отправит сообщение всем соответствующим клиентам, которым необходимо получить уведомление. Двухсторонняя связь называется дуплексный контракт в WCF. Таким образом, вам не нужно использовать базу данных, если она вам действительно не нужна.

0 голосов
/ 05 мая 2010

Если вы используете Java, на ум приходит JMX Учебник Sun по JMX . Существует множество вариантов поддержки и простота использования.

...