2013-04-24 3 views
1

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

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

Открытие прослушивателя/соединения TCP/IP для отправки данных на один и тот же компьютер кажется излишним, просто для прослушивания на определенном порту для получения информации. Какие еще существуют варианты? Я немного поглядел на карты данных, но моя единственная забота заключается в том, что пакет написан на delphi, поэтому я не уверен в совместимости между C# и delphi для доступа к datamap (может ли Delphi даже сделать такую ​​вещь исследовательский пункт, который я рассмотрю).

Таким образом, мой вопрос заключается в том, каким образом TL, DR, какие существуют варианты для транспортировки данных на уровне межпроцессного процесса?

+0

Возможный дубликат [Interprocess communication in .NET] (http://stackoverflow.com/questions/232332/interprocess-communication-in-net) –

+0

Ах, странно, что я не сталкивался с этим, введя его. Посмотрите. Кроме того, спасибо! :) –

+0

Это сообщение 5 лет, я не считаю, что удаленный доступ по-прежнему является рекомендуемым. :) –

ответ

1

В этом случае я, вероятно, использовал бы службу мониторинга как средство для обмена данными между вашими клиентами (например, с использованием системы опроса) и использование NetNamedPipeBinding для межпроцессного взаимодействия на одном компьютере. См. http://msdn.microsoft.com/nl-be/library/ms752247.aspx.

См. Также How can I communicate with WCF from Delphi using Named Pipes Binding относительно связи с WCF из приложения Delphi.

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

2

Я бы посмотрел на WCF (используя именованные каналы), он идеально подходит для взаимодействия между приложениями.

1

У вас здесь много вариантов. Я бы посмотрел на именованные каналы для быстрого и эффективного взаимодействия между процессами. Однако есть еще один вариант, который приходит на ум, и это WMI

Что бы вы сделали, это реализовать поставщика WMI в вашей программе Delphi, где вы публикуете свои данные мониторинга. Затем ваша служба мониторинга будет считывать данные с помощью запросов WMI.

У этого есть несколько преимуществ. Он не предусматривает каких-либо ограничений в настройке развертывания, поскольку он так же жизнеспособен запрашивать WMI удаленно, как локально. Таким образом, даже если вы планируете локальное решение, вы можете легко адаптироваться к удаленной настройке позже, просто позвонив WMI удаленно, а не локально.

Он также позволяет процессам работать независимо друг от друга, чтобы вы могли публиковать статистику по любой ставке, которую хотите получить в своем пакете Delphi, и опросить независимо от службы мониторинга. Здесь есть даже поддержка событий.