Z>Ага. Z>Значит, упаковка-распаковка данных запроса клиента (или данных ответа сервера) для передачи по протоколу — это можно считать слоем инфраструктуры. Z>Верно?
Да.
Z>А если я делаю свою собственную реализацию классов WebServer, IRouter, ProtocolParser, ... Z>Есть какая-нибудь общепринятая схема\архитектура\паттерн как должны взаимодействовать эти объекты?
Едва ли будет возможность определить, как эти объекты будут взаимодействовать. Это уже проще с нуля самому написать.
Картинку как взаимодействие устроено внутри и в целом можно найти в гугле по ключевым словам и поиску по картинке.
Свои реализации иметь можно, но это просто реализации соотв. интерфейсов скорее всего. А как и для чего нужны соотв.
интерфейсы надо читать в доке.
Z>И как они должны быть устроены "внутри"?
Надо читать соотв. документацию. В целом, решения скорее всего будут типовые: компонент принимает входящий запрос,
парсит его, типизирует, вызывает соотв. обработчик (метод), получает результат, обрабатывает его как-то и возвращает
в сеть адресату.