Абстрактный базовый класс имеет на издержках виртуальных вызовов, но это имеет преимущество, что все производные классы являются действительно базовыми классами. Не, итак, когда Вы используете шаблоны †“Car< Brake> и Car< BrakeWithABS> не связаны друг с другом, и Вы будете иметь или к dynamic_cast и проверке на пустой указатель или иметь шаблоны для всего кода, который имеет дело с Автомобилем.
Мне очень нравится SocketSniff . Он подключается к одному запущенному процессу и показывает весь трафик, связанный с сокетами. У него нет отличного декодирования, как у WireShare, но он также удаляет много шума.
Вы можете использовать утилиту Wireshark для захвата всех пакетов, исходящих из машины, на которой работает служба. Затем вы можете фильтровать эти пакеты на основе содержимого в нем, чтобы ограничить те пакеты, которые вам нужны. Используя эту информацию, вы можете найти нужные показатели.
Вы можете попробовать MS Visual Roundtrip Analyzer (который использует MS Network Monitor ) или, возможно, только сам Network Monitor.