|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
Коллеги, день добрый. Подскажите, плиз, как решать такую задачу. Есть две программы на С#. Каждая из них что-то делает с данными. Как реализовать функционал по прямому обмену данными между ними (т.е. без промежуточных файлов и т.п.)? Вопрос синхронизации – не стоит. Просто обмен данными. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2014, 17:54 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
Одна программа - "сервер", остальные клиенты. То есть классический Self-Hosting + WCF или Web API. Я бы взял OWIN + Web API. Use OWIN to Self-Host ASP.NET Web API 2 И всё. Остальные программы (их может быть сколько угодно) внятно обращаются к "серверу", что-то передают и получают. Можно и посложнее: SignalR Self-Host . Делаешь хаб и отсылаешь на него. Получается что-то подобие чата. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2014, 18:18 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
S70, Как понимать, обмениваться? Кто из них инициатор обмена, кто один или оба? По какому принципу они должны обмениваться: «на, возьми!» или «слыш, дай мне»? Пока нет ответов на эти вопросы, трудно что-то посоветовать. К сожалению, свой хрустальный шар я куда-то посеял. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2014, 18:23 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
hVostt, первая программа обработала данные, получила результат. Он в памяти лежит. Вторая программа также обработала другие данные, тоже результат в памяти. Надо дописать обе программы так, чтобы они могли друг у друга по результату очередной итерации расчета данные забирать и использовать дальше внутри себя для дальнейшей обработки. И так далее... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2014, 23:13 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
S70hVostt, первая программа обработала данные, получила результат. Он в памяти лежит. Вторая программа также обработала другие данные, тоже результат в памяти. Надо дописать обе программы так, чтобы они могли друг у друга по результату очередной итерации расчета данные забирать и использовать дальше внутри себя для дальнейшей обработки. И так далее... Ещё раз, кто инициатор обмена? Кто к кому в гости будет ходить? Или вы хотите, чтобы обе программы по договорённости устраивали в некой нейтральной зоне стрелку? Если обе программы будут забирать друг у друга данные по собственной инициативе, то обе программы должны выставить наружу WCF интерфейс и через pipe сливать данные. Подробнее об WCF на MSDN: Пошаговое руководство. Создание служб WCF и доступ к таким службам ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2014, 23:21 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
S70, вы уж определитесь - c# или с++ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2014, 13:56 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
Изопропил, Вас беспокоит как я буду реализовывать?.... Но если отвечать, то - оба. Мне надо решить на чем эффективнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 03:03 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
hVostt, спасибо за ссылку, буду пробовать. В моем случае - обмениваются обе. У каждой свой функционал. Хотя.... А если реализовать, что только одна спрашивает - это что-то даст с точки зрения скорости обработки? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 03:15 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
S70hVostt, спасибо за ссылку, буду пробовать. В моем случае - обмениваются обе. У каждой свой функционал. Хотя.... А если реализовать, что только одна спрашивает - это что-то даст с точки зрения скорости обработки? Никаких "хотя". Вы почитайте, делается ли что-нибудь в мире не по "клиент-сервер" технологии. В вашей ситуации - правильным (маштабируемым и стабильным при этом) решением будет сервер, который все делает, и два клиента, которые отображают, в том числе и те данные, которые совместно выдали серверу. Вам же сейчас все равно придется делать серверную часть - если программа выставляет что-то для получения данных наружу - она сервер, и клиента - раз она ищет в сети что-то куда можно данные положить - только два сервера и два клиента. Плюс при такой архитектуре - "программы обмениваются" - как вы будете реализовывать "3 программы обмениваются" "4 программы обмениваются"? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 09:43 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
D129Никаких "хотя". А как же p2p? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 12:13 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
S70Но если отвечать, то - оба. Мне надо решить на чем эффективнее. тогда и механизм выбирать общий, никакого WCF эффективнее с какой точки зрения? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 13:20 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
hVosttD129Никаких "хотя". А как же p2p? Банально: приложение работает как клиент и как сервер в одно и то же время. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 22:28 |
|
Обмен данными между программами
|
|||
---|---|---|---|
#18+
sphinx_mvА как же p2p? Банально: приложение работает как клиент и как сервер в одно и то же время.[/quot] Чисто технически - можно и на ежа сесть. Как клиент другого сервиса - понятно. Но как клиент своего же клиента? Что такое умеет код такого, чего не может делать другой написанный код? :-) Для полного "дуплекса" наступает веселое время синхронизации и разруливания различных конфликтных ситуаций, из серии "кто первый начал". :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2014, 15:22 |
|
|
start [/forum/topic.php?fid=20&tid=1402240]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 330ms |
total: | 473ms |
0 / 0 |