2009-03-19 3 views
1

В нашем приложении (системе управления документами) мы должны быть уведомлены об изменениях экрана (или уведомлять о другой программе изменений экрана), чтобы оба приложения смотрели одинаково данные, один из которых является приложением для выполнения заказов, а другой - средством просмотра документов оригинального факса. Приложение для выполнения написано на vb6, а диспетчер документов находится в .net 3.5 (C#). Он работает на терминальном сервере, поэтому он также должен быть осведомлен о сеансе. Средство просмотра документов или приложение выполнения могут быть открыты первым, и оба могут использоваться без другого. Каким будет лучший метод МПК?Лучший IPC для приложений VB6 и .net

ответ

2

Если вы хотите работать в Vista или Windows 7, лучшей формой IPC будет TCP (что очень легко делается с VB6 с помощью Winsock control).

Преимущество этого состоит в том, что два приложения могут общаться, даже если они не работают как один и тот же пользователь, они могут общаться (вы не можете делать это с помощью SendMessage или Named Pipes под Vista +). Единственное, что вам нужно запомнить, - установить правило в брандмауэре, чтобы оно не блокировалось. Это может быть сделано в установщике с:

netsh.exe firewall set allowedprogram "{PROGRAM PATH}" "{PROGRAM NAME}" enable 
+0

Проблема с этим - это также выгодно. Я использую много экземпляров каждого приложения на сервере терминалов, как и в нескольких возможных сеансах для одного пользователя. Таким образом, я не могу использовать то, что не знает сеанс. – 2009-03-20 00:17:37

0

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

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

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

1

Именованные трубы и почтовые ящики по-прежнему являются одними из лучших доступных вариантов, и они работают как кросс-пользователь, так и кросс-процесс. Конечно, в Vista + есть проблемы с процессами, запущенными на разных уровнях целостности, а безопасность применяется и для более ранних ОС, так же как и для безопасности файлов.

TCP всегда значительно медленнее в пределах одной машины, возможно, даже хуже, чем WM_COPYDATA через процессы.

Используя трубки или почтовые ящики, вы можете обращаться с терминальными службами, указав идентификатор сеанса имени. TCP всегда будет оспариваться ограниченным «пространством имен» номеров портов (представьте себе жесткий диск, который может иметь только файлы с именем от 0 до 65535), и для каждого подключения требуются два номера порта).