2010-05-05 3 views
0

Мой вопрос очень прост:Обмен информацией между приложениями

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

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

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

ответ

0

Если вы используете Java, JMX приходит на ум Sun's JMX tutorial. Существует много поддержки и простота в использовании.

+0

О, извините. Я пропустил этот момент. Я работаю в .NET Спасибо любым способом. –

0

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

2

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

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

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

+0

Я оценил ваш ансвейер. Вы указываете на некоторые важные проблемы, такие как синхронизм и сетевой трафик. Вы предложили использовать централизованный сервер. Я думаю, что вы sugesting я держу «общие данные» на сервере, и приложения получают данные, когда это необходимо. Это устраняет проблемы синхронизации, но создает проблему с производительностью. Мои приложения должны работать быстро. Я просто не могу каждый раз получать данные на сервер. Я должен хранить копию «общих данных» в ОЗУ. Вот почему я предпочитаю системный подход уведомления (даже если это означает работать с устаревшими данными) –

 Смежные вопросы

  • Нет связанных вопросов^_^