Одно из самых слабых мест HTML – невозможность хранить состояния. Предлагаемый вариант решения проблемы – использование CGI (Common Gateway Interface – общий шлюзовой интерфейс) или других Web API (Application Programming Interface - интерфейс прикладного программирования) для реализации связующего ПО (middleware). С помощью этого метода можно обеспечить хранение состояний, а также буферизацию строк, возвращаемых на клиент, и выполнение некоторых вычислений над передаваемыми данными.
В случае использования такой архитектуры переносимость для клиентских платформ обеспечивается за счет использования HTML в качестве интерфейса. Однако в зависимости от того, как реализовано приложение Web-сервера, проект может также переноситься с одной серверной платформы на другую. Это, в частности, касается CGI-приложений, обладающих высокой переносимостью. О большинстве других Web API этого сказать нельзя. Например, серверное приложение, разработанное с использованием API Microsoft Internet Information Server (ISAPI) вероятнее всего будет работать только на Internet Information Server.
Однако и в этом случае использование только HTML налагает ограничения на интерфейс. Правильное отображение графиков и отчетов будет затруднено. Эта проблема решается с помощью Java-апплетов, которые обладают большими возможностями по управлению выводом информации на монитор.