Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / обмен между приложениями / 25 сообщений из 40, страница 1 из 2
03.04.2007, 15:16
    #34434498
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
Здравствуйте!
У меня вопрос, какую технологию лучше выбрать для обмена данными между приложениями, если программы могут находиться как на одном компьютере, так и на разных компьютерах.

Нужно решить задачу создания диспетчерской службы, которая состоит из подсистемы сбора данных, сервера приложений, рабочих мест диспетчеров.
Подсистема сбора данных снимает данные с датчиков,позволяет управлять оборудованием (выполнять команду телеуправления) и передаёт их серверу приложений (обмена на основе TCP - это требование). Сервер приложений выполняем архивирование полученных данных (запись в БД) и предоставление данных клиента (рабочие места). Вопрос какую технологию лучше выбрать для взаимодействия клиентских программ и сервера приложений, если возможно, что программы будут находиться как одном компьютере, так и на разных? Можно ли успользовать TCP для обмена программ находящихся на однои компьютере? Насколько я знаю для данной задачи часто успользую технологию OPC, которая основана на DCOM. Но как я понимаю использование данной технологии довольно трудоёмко.
...
Рейтинг: 0 / 0
03.04.2007, 18:07
    #34435215
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
TCP - верное решение. Читай про работу с socket
...
Рейтинг: 0 / 0
03.04.2007, 19:56
    #34435503
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
White OwlTCP - верное решение. Читай про работу с socket

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

с уважением
(круглый)
...
Рейтинг: 0 / 0
05.04.2007, 09:05
    #34439203
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
Нет, много приложений, коннектящих к серваку не будет. Коннектится буду всего несколько программ, установленных на рабочих местах диспетчера.
...
Рейтинг: 0 / 0
05.04.2007, 10:35
    #34439505
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
А почему TCP ялвяется лучшим вариантом? Какие ещё варианты могут быть?
...
Рейтинг: 0 / 0
05.04.2007, 10:51
    #34439578
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005А почему TCP ялвяется лучшим вариантом? Какие ещё варианты могут быть?

RPC
...
Рейтинг: 0 / 0
05.04.2007, 12:02
    #34439917
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
А как насчёт DCOM?
...
Рейтинг: 0 / 0
05.04.2007, 12:16
    #34439992
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
...
Рейтинг: 0 / 0
05.04.2007, 12:25
    #34440025
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005А как насчёт DCOM?

Те же яйца, но от Microsoft

чем вам TCP так не угодил ???
...
Рейтинг: 0 / 0
05.04.2007, 15:30
    #34440875
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
Насколько я знаю разработчики других систем используют технологию OPC, которая основана на DCOM. Как я понимаю, существуют стандартные интерфейсы, с помощью котороых можно обращаться к сервисам сервера. Но насколько я знаю, эти стандартные интерфейс достаточно сложны и реализовать их очень трудоёмко. Если выбрать TCP, то поверх его придётся придумывать какой-то свой протокол для обмена между клиентскими программи диспетчеров и сервером приложений.
...
Рейтинг: 0 / 0
05.04.2007, 15:37
    #34440908
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005Насколько я знаю разработчики других систем используют технологию OPC, которая основана на DCOM. Как я понимаю, существуют стандартные интерфейсы, с помощью котороых можно обращаться к сервисам сервера. Но насколько я знаю, эти стандартные интерфейс достаточно сложны и реализовать их очень трудоёмко. Если выбрать TCP, то поверх его придётся придумывать какой-то свой протокол для обмена между клиентскими программи диспетчеров и сервером приложений.

Ну да протокол. Можете придумать для каждой типовой пары сервер-клиент свои протоколы. Для большой надежности впереди их означивать дискриминаторами. Это очень сложно что ли? Или в чем вопрос?
...
Рейтинг: 0 / 0
05.04.2007, 16:08
    #34441035
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
Для систем автоматизации, как я понимаю, существуют стандартные протоколы, основанные, на DCOM. Просто хотелось бы на всех уровня взаимодействия системы использовать стандартные протоколы. Например, сервер приложений часто взаимодействует с системой сбора данных по стандартному отраслевому телемеханическому протоколу, который работате поверх TCP. Конечно можно придумать свой протокол для обмена между серврером приложений и клиентами, но в идеале хотелось бы использовать в системе стандарные процедуры взаимодействия. OPC, как я по нимаю фактически является стандртом, котороый для систем автоматизации определяет интерфейсы (COM), которые нужно реализовать. Но эти интерфейсы, видимо, очень сложные и реализовать их непросто. Насколько я знаю, некоторые фирмы разрабатывают специальный ToolKit, для создания OPC сервера. Конечно, вариант реализации своего протокола, которые будет использовать TCP, тоже, по-моему является, неплохим решением, хотелось бы по возможности рассмотреть и другие варианты. Кстати по поводу TCP, если на одном компьютере установлены сервер и два клиента, как происходит обмен (простите за глупый вопрос)? Позволяет ли TCP без ограничений обмениваться с программами расположенными на том, же компьютере?
Может кто скажет, а насколько трудна реализация сервера на основе DCOM?
...
Рейтинг: 0 / 0
05.04.2007, 16:19
    #34441101
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005Для систем автоматизации, как я понимаю, существуют стандартные протоколы, основанные, на DCOM. Просто хотелось бы на всех уровня взаимодействия системы использовать стандартные протоколы. Например, сервер приложений часто взаимодействует с системой сбора данных по стандартному отраслевому телемеханическому протоколу, который работате поверх TCP. Конечно можно придумать свой протокол для обмена между серврером приложений и клиентами, но в идеале хотелось бы использовать в системе стандарные процедуры взаимодействия. OPC, как я по нимаю фактически является стандртом, котороый для систем автоматизации определяет интерфейсы (COM), которые нужно реализовать. Но эти интерфейсы, видимо, очень сложные и реализовать их непросто. Насколько я знаю, некоторые фирмы разрабатывают специальный ToolKit, для создания OPC сервера. Конечно, вариант реализации своего протокола, которые будет использовать TCP, тоже, по-моему является, неплохим решением, хотелось бы по возможности рассмотреть и другие варианты. Кстати по поводу TCP, если на одном компьютере установлены сервер и два клиента, как происходит обмен (простите за глупый вопрос)? Позволяет ли TCP без ограничений обмениваться с программами расположенными на том, же компьютере?
Может кто скажет, а насколько трудна реализация сервера на основе DCOM?

DCOM. Наверное, надо искать тематическую документацию.

2 клиента на разных портах будут коннектится к серверу на 3-м порте. Сервер будет иметь в свою очередь 3 сокета на своем порте - один базовый, и два для каждого из клиентов для обмена. Т.е. все то же, что и на удаленных компах, единственное отличие - данные не будут вываливаться в сеть, а будут проходить через циклический интерфейс (loopback, так называемый).

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

Кстати, для udp есстествено, что порты должны быть разными, а для tcp теоретически это не обяазательно, т.к. он является сессия-ориентированным.
...
Рейтинг: 0 / 0
05.04.2007, 17:02
    #34441284
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
Если на одном компьютере N-клиентов, то нужно использовать N+1 портка (N - для клиентов и один для сервера). Я понимаю, что это случай не типичный, в таком случае, система не очень масштабируема.
...
Рейтинг: 0 / 0
05.04.2007, 17:32
    #34441400
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005Если на одном компьютере N-клиентов, то нужно использовать N+1 портка (N - для клиентов и один для сервера). Я понимаю, что это случай не типичный, в таком случае, система не очень масштабируема.DСОМ тоже не по воздуху летает, кроме того масштабируемость DCOM не бесконечна. Разворачивать приложения DCOM у заказчика - это всегда головная боль. В отличие от сокет связи, достаточно прописать ПК в сети, даже ресурс не надо расшаривать..
Но глядя на твою задачу, я не вижу, где у тебя N клиентов на одной машине?
Аналогичную по архитектуре службу для охраны я сделал на сокетах. Хотя первоначально мы моделировали на DCOM.
...
Рейтинг: 0 / 0
05.04.2007, 22:50
    #34441948
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
сокеты или corba. Если опыта с сокетами нет, особенно для многопоточных прог, то я бы для C++ использовал библиотеку ACE. corba даст переносибельность между языками и платформами, но с ней прийдется предварительно плотно поразбираться. Для с++ можно например использовать ORBs: MICO или TAO.
Для несложной проги я бы выбрал сокеты+ACE.
...
Рейтинг: 0 / 0
06.04.2007, 08:43
    #34442195
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
А что за библиотека ACE?
А кто-нибудь знаком с технологоией OPC. В интернете есть кое-какие статьи, но по-моему, очень уж поверхностные?
...
Рейтинг: 0 / 0
06.04.2007, 08:57
    #34442219
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
Вот любят некоторые люди искать себе геморой :(
...
Рейтинг: 0 / 0
06.04.2007, 09:01
    #34442225
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005А что за библиотека ACE?
А кто-нибудь знаком с технологоией OPC. В интернете есть кое-какие статьи, но по-моему, очень уж поверхностные?
библиотека имени Дага Шмидта . Даже книжка есть на руссском Программирование сетевых приложений на С++ 2 тома
...
Рейтинг: 0 / 0
06.04.2007, 09:53
    #34442358
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005А что за библиотека ACE?
А кто-нибудь знаком с технологоией OPC. В интернете есть кое-какие статьи, но по-моему, очень уж поверхностные?
OPC это один из стандартов подключения различного hardware к ПК. Разработка серверной части с нуля не тривиальна. Клиенты проще и есть в open source. Здесь есть кое-что и основные ссылки.
...
Рейтинг: 0 / 0
06.04.2007, 12:30
    #34443076
pirovindos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005Насколько я знаю разработчики других систем используют технологию OPC, которая основана на DCOM. Как я понимаю, существуют стандартные интерфейсы, с помощью котороых можно обращаться к сервисам сервера. Но насколько я знаю, эти стандартные интерфейс достаточно сложны и реализовать их очень трудоёмко. Если выбрать TCP, то поверх его придётся придумывать какой-то свой протокол для обмена между клиентскими программи диспетчеров и сервером приложений.

По моим сведениям, с DCOM начнуться принципиальные проблемы как только нужно будет вылезти из пределов локальной сети.
А придумать протокол придется, не Вы первый, также как и писать спецификацию интерфейсов СОМ.
...
Рейтинг: 0 / 0
06.04.2007, 13:02
    #34443227
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
pandrewDСОМ тоже не по воздуху летаетвроде должен на тцп летать? Он же умрёт, если не на тцп.
Лучше юзать сокеты, т.к. никакой фреймворк с твоём случае ничего не даст кроме тормозов и сложности. Протокол обмена данными придётся придумывать в любом случае, разницы никакой. Кроме того, тцп – всем стандартам стандарт
...
Рейтинг: 0 / 0
06.04.2007, 16:22
    #34444091
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
Насколько я понимаю, за пределы локальной сети вылазить не надо. Но нужно, чтобы программы, который обмениваются, могли находиться как на одной машие (несколько клиентских програм и сервер), так и на разных компютерах в локальной сети.
...
Рейтинг: 0 / 0
06.04.2007, 16:24
    #34444098
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005Насколько я понимаю, за пределы локальной сети вылазить не надо. Но нужно, чтобы программы, который обмениваются, могли находиться как на одной машие (несколько клиентских програм и сервер), так и на разных компютерах в локальной сети.

Клиенту не обязательно привязываться к определенному порту, система сама может ему выделить любой свободный. Поэтому клиенты могут не заботиться о своих портах. И поэтому им абсолютно параллельно на локальной машине сервер или на удаленной.
...
Рейтинг: 0 / 0
06.04.2007, 16:33
    #34444135
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обмен между приложениями
OLEG_2005Но нужно, чтобы программы, который обмениваются, могли находиться как на одной машие (несколько клиентских програм и сервер), так и на разных компютерах в локальной сети.и какие с этим могут быть проблемы?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / обмен между приложениями / 25 сообщений из 40, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]