Вопрос

Я хочу написать небольшой веб-сервис для бега на небольшом поле Linux. Я предпочитаю код в C #, поэтому я ищу использовать моно.

Я не хочу накладных расходов запуска полного веб-сервера или версии ASP.NET. Я думаю о том, чтобы иметь один процесс с нити, посвященным каждому клиентскому соединению. Общая память между потоками вместо базы данных.

Я немного прочитал на версии Microsoft HTTPListener и как она работает с драйвером http.sys. Увы, документация MONO на этом классе - это просто автоматизированный класс интерфейса без обсуждения того, как он работает под капотом. (Linux не имеет http.sys, поэтому я представляю, что это реализовано существенно по-разному.)

Может ли кто-нибудь указать мне на некоторые ресурсы, обсуждающие этот модуль, пожалуйста?

Большое спасибо, Билл, Billppg.com

(Немного фона к моему вопросу для заинтересованного.)

Некоторое время назад я спросил этот вопрос, заинтересованы в том, чтобы держать длинный разговор открытым с большим количеством обратно. Я поселился на разработке моего собственного рекламного протокола, но люди, которых я говорил, чтобы действительно хотел интерфейс отдыха, даже на стоимость «в порядке, отправить вашу команду сейчас».

Итак, я задавался вопросом о запуске ASP.NET на сервере Linux / Mono, но наткнулся на httplistener. Это казалось идеальным, так как каждая «разговор» может бежать в отдельной нити. Нить, которая вызывает httplistener в цикле, может искать, для какого потока каждое изменяющее соединение предназначено и передает ссылку на эту нить.

Альтернатива для сервисной службы ASP.NET, будет иметь в виду код ASPX забрать состояние из базы данных и записать новое состояние, когда он заканчивается. Да, это будет работать, но это много накладных расходов.

Это было полезно?

Решение

Привет, класс HTTPLISTENER в Mono работает без особой проблемы. Я думаю, что наиболее значительная разница между его использованием в среде MS и среде Linux заключается в том, что порт 80 не может быть связан без безопасности Root / Su / Sudo. Другие порты не имеют этого ограничения. Например, если вы укажете префикс: http://localhost:1234/ httplistener работает как ожидалось. Однако, если вы добавите префикс http://localhost/, который вы ожидаете слушать порта 80, он не работает молча. Если вы явно пытаетесь привязать к порту 80 (http: // localhost: 80 /) Тогда вы бросаете исключение. Если вы вызываете ваше приложение в качестве супер пользователя или корня, вы можете явно привязать к порту 80 (http: // localhost: 80 /).
Я еще не исследовал остальные члены HTTPlistener в достаточных деталях, чтобы сделать любые полезные комментарии о том, насколько хорошо он работает в среде Linux. Однако, если есть интерес, я буду продолжать публиковать мои наблюдения.

куриный сендвич

Другие советы

Я не уверен, почему вы хотите выглядеть так глубоко в капюшон. Даже на стороне Microsoft документы о http.sys могут не предоставлять вам действительно ценную информацию, если вы используете .NET Framework.

Знать, если что-то работает на Mono достаточно хорошо, вы всегда должны загружать изображение VMware или VPC и проверить свои приложения на нем.

http://www.go-mono.com/mono-downloads/download.html.

Хотя моно гораздо более зрелый, чем несколько лет назад, мы не можем сказать, что это было проверено достаточно реальными приложениями, такими как Microsoft.net. Поэтому, пожалуйста, проверьте свои приложения и отправьте проблемы, которые вы найдете в Mono Team.

Основываясь на моем опыте, незначительные проблемы фиксированы только в течение нескольких дней, а для основных проблем требуется более длительное время. Но с доступен Mono исходный код, вы можете исправить самостоятельно или узнать хорошие обстрелы большую часть времени.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top