Межсистемный процесс порождения и взаимодействия - PullRequest
0 голосов
/ 09 апреля 2009

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

Каков наилучший способ создания такого удаленного процесса (PSExec? WMI? System.Diagnostics.Process, возможно?) После запуска процессов, как я могу сказать ему подписаться на его хост? Что бы SO сообщество рекомендовало для базовой структуры событий / сообщений для коммуникационного процесса? WCF хорошо подходит для этой задачи? Будет ли удаленное взаимодействие легче? Какие у меня есть варианты?

1 Ответ

1 голос
/ 09 апреля 2009

Я не думаю, что System.Diagnostics.Process позволяет запускать процесс в удаленной системе. Так что WMI или обстрел чего-то вроде psexec могут быть вашими единственными вариантами здесь.

Что касается параметров подписки / взаимодействия, да, WCF - это путь. Избегайте удаленного взаимодействия: он не дает никаких преимуществ для общего случая, больше не улучшается и не рекомендуется в пользу WCF по ряду причин (в основном распределенные объекты становятся болью в шее из-за версий и состояний; обмен сообщениями обычно проще в настройке, понимании и обслуживании. Также удаленное взаимодействие не было безопасным, если я правильно помню). Для настройки этого, когда родительский процесс порождает удаленный процесс, он может передать URL-адрес в качестве аргумента командной строки. Родитель размещает службу WCF по этому URL. Теперь, если порожденному процессу нужно связаться с / подписаться на родительский процесс, он просто подключается к URL, который ему дали. Если родитель должен инициировать связь, то сделайте дуплекс службы WCF или создайте порожденный процесс своей собственной службой WCF и сообщите родительскому элементу URL через службу родителя.

...