Вы можете симулировать CGI или даже использовать CGI. В основном вам нужен сервер, который отслеживает входящие запросы и создает сеанс для каждого нового пользователя. Затем каждый сеанс запускает новый процесс, который загружает DLL. Процесс - просто песочница для рассматриваемой DLL.
Итак, у вас есть следующие части:
- Сервер (HTTP, TPC, SOAP, что угодно ...)
- Процесс песочницы клиента
- Ваша DLL
Клиентский процесс - это просто фиктивный процесс, единственной целью которого является загрузка DLL, и он действует как мост связи между DLL и сервером. Используйте IPC (межпроцессное взаимодействие) для делегирования связи между сервером (сеансами) и изолированными процессами, содержащими DLL. Таким образом, у вас есть отдельные процессы для каждого клиента, и вы получаете стабильность системы. Отказ одной DLL не является отказом всей системы.
Многие современные системы работают так:
- CGI
- Google Chrome
- Последние IIS и Apache ISAPI
...
Просто будьте осторожны, чтобы иметь ограничение сеанса, в противном случае многие процессы могут быть запущены, что приведет к отключению ОС хоста. Для справки об ограничениях процесса читайте большое сообщение в блоге Марка Руссиновича:
Расширение границ Windows: процессы и потоки