Из вашего описания я думаю, что служба WCF, размещенная в службе NT, кажется очень подходящей.
1) Мне нужна серверная программа, которая постоянно получает события,
Ничего страшного, служба NT будет работать постоянно, даже если никто не вошел в систему.
2) Эти события будут генерироваться как сигналы от многих клиентских WPF-программ и поэтому могут быть поставлены в очередь.
Опять же, нет проблем для службы WCF - вы можете создать конечную точку очереди http, net.tcp, MSMQ - на самом деле все в одной службе. Вы получаете всю необходимую вам гибкость.
4) Для связи между клиентом и сервером будет использоваться эксклюзивный порт.
Работает просто отлично - если вы самостоятельно размещаете службу WCF в службе NT, вы можете полностью контролировать адреса конечных точек.
5) По соображениям безопасности передача данных через эксклюзивный порт должна быть зашифрована.
Все сообщения WCF зашифрованы по умолчанию, если вы не отключите их.
6) Наконец, клиенты должны будут отслеживать результаты выполнения программы.
Опять же - не проблема.
Для очереди MSMQ вы можете создать несколько очередей ответов, которые клиенты могут прослушивать. Для HTTP или NetTCP вы можете создать ответное сообщение (если обработка выполняется очень быстро) или создать операцию «проверка состояния», которая позволяет клиентам проверять состояния. Или вы можете смешивать и сочетать по мере необходимости.
В общем, я уверен, что WCF действительно послужит вам очень хорошо!