Несколько одновременных серверов .NET IPC / найти правильный по идентификатору процесса? - PullRequest
0 голосов
/ 24 июля 2010

У меня есть клиентское приложение базы данных.Некоторые люди запускают несколько его экземпляров (то есть процессов) для одновременного подключения к различным базам данных.Я хотел бы, чтобы это приложение принимало пользовательскую схему URI для простых команд, таких как «open record 123».URI содержит базу данных, к которой он относится, поэтому, в зависимости от содержимого URL-адреса, один конкретный процесс «подходит» для его обработки.

Поэтому я решил создать дополнительное приложение для URI.обработка 1) не выполняется постоянно, а вызывается только через Windows, когда где-то щелкает URI, и 2) находит нужного клиента и передает ему URL.Я использовал IpcServerChannel на клиенте базы данных и IpcClientChannel в обработчике URI, чтобы обработчик URI мог спросить клиента, за какую базу данных он отвечает.

Как мне справиться с этим длянесколько клиентов, хотя?Как обработчик URI может «обнаружить», какие клиенты (т.е. серверы IPC) работают в данный момент, и как подключиться к ним через IPC?

1 Ответ

1 голос
/ 24 июля 2010

Служба Windows, с которой каждое клиентское приложение регистрируется при запуске, была бы достаточно разумным способом обработки этого сценария, поскольку она также могла бы позаботиться об обработке URI.

Несколько вещей, которые вы, возможно, захотитеПодумайте, хотя:

  • Как служба будет обрабатывать несколько пользователей, вошедших в систему на одном ПК
  • Как служба будет обрабатывать экземпляры клиентского приложения, которые принудительно завершаются или аварийно завершают работу

Чтобы ответить на ваш комментарий о нежелании постоянно работать с обработчиком URI:

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

...