Вот мое резюме того, как я думаю, что они функционируют:
Исключение приложения -> разрешает указанному приложению открывать любые порты
Исключение порта -> разрешает любому приложению открывать указанный порт
Как таковой, какой из них лучше подходит, зависит от ситуации. Как правило, исключение приложения будет предпочтительным. В то время, когда приложение пытается открыть порт, брандмауэр Windows (если он включен), по существу, будет выполнять проверку, чтобы определить, было ли этому приложению или самому порту предоставлено исключение.
MSDN гласит: "[Исключение приложения] более безопасно, чем открытие порта, поскольку брандмауэр открыт только в то время, когда программа ожидает получения соединения."
Более подробное описание MSDN и технические статьи: http://technet.microsoft.com/en-us/network/bb545423.aspx
В конечном итоге системный администратор развернутого программного обеспечения должен быть осведомлен и / или быть тем, кто вносит изменения в брандмауэр. Мы планируем сделать шаг в установщике, где клиент может отказаться от исключения брандмауэра, но объяснять, что удаленные клиенты не смогут общаться без него. И, конечно, в ручной документации также будут указаны необходимые порты для сценариев, если установлены другие программные или аппаратные брандмауэры, которые необходимо настроить вручную.