Я хочу написать небольшую веб-службу для работы на маленьком ящике Linux. Я предпочитаю код на С#, поэтому я хочу использовать Mono.
Мне не нужны накладные расходы на запуск полного веб-сервера или моно-версии ASP.NET. Я думаю о том, что у меня есть один процесс с потоком, связанным с каждым клиентским соединением. Общая память между потоками вместо базы данных.
Я немного почитал версию Microsoft HttpListener и о том, как она работает с драйвером Http.sys. Увы, документация Mono по этому классу - это просто интерфейс автоматизированного класса без обсуждения того, как он работает под капотом. (Linux не имеет Http.sys, поэтому я предполагаю, что он реализован по-разному.)
Может ли кто-нибудь указать мне на некоторые ресурсы, обсуждающие этот модуль, пожалуйста?
Большое спасибо, Bill, billpg.com
(Немного о моем вопросе для заинтересованных.)
Некоторое время назад я спросил этот вопрос, заинтересованный в том, чтобы держать длинный разговор открытым с большим количеством back-and-forth. Я решил разработать собственный ad-hoc-протокол, но люди, с которыми я разговаривал, действительно хотели интерфейс REST, даже ценой сигнала "Хорошо, отправьте свою команду сейчас".
Итак, я задавался вопросом о запуске ASP.NET на сервере Linux/Mono, но наткнулся на HttpListener. Это казалось идеальным, поскольку каждый "разговор" мог работать в отдельном потоке. В потоке, который вызывает HttpListener в цикле, можно найти, к какому потоку подключено каждое входящее соединение, и передать ссылку на этот поток.
Альтернативой для службы, основанной на ASP.NET, должно быть, чтобы код ASPX забирал состояние из базы данных и записывал новое состояние, когда он заканчивается. Да, это сработает, но это накладные расходы.