Я разрабатываю программу, которая должна запускаться на интернет-серверах (базовый компонент, который будет использоваться несколькими кросс-платформенными программами). Я знаком с мерами предосторожности безопасности (например, для предотвращения переполнения буфера и атак SQL-инъекций), но никогда ранее не писал серверную программу или какую-либо программу, которая будет использоваться в этом масштабе.Написание программы для работы на сервере с запросом опытных советов
Программа должна быть способна обслуживать сотни или тысячи клиентов одновременно. Протоколы предназначены для обработки скорости и для минимизации объема данных, которые должны быть обменены, а серверная сторона будет записана на C. Будут и Windows, и версия Linux из того же кода.
Вопросы:
- Как должны программа рукояток связи - несколько потоков, один обработки всех сокетов в свою очередь, нить, или породить новый процесс для каждого так много входящих соединений (или для каждого из них) ?
- Нужно ли беспокоиться о таких вещах, как фрагментация памяти, так как эта программа должна запускаться в течение нескольких месяцев?
- Какие еще проблемы с дизайном, специфичные для такого рода программирования, может быть опытным разработчиком кросс-платформенных программ для настольных и мобильных систем, о которых не известно?
У вас нет предложения использовать другой язык. Это решение уже принято, по причинам, по которым я не свободен.
Поскольку «эта программа должна работать в течение нескольких месяцев», это, вероятно, хорошая идея также иметь * отдельный * процесс мониторинга, чтобы перезапустить вашу программу, если он сбой или что-то еще пойдет не так. – Dukeling
"Неконструктивный"? Он состоит из трех практических ответных вопросов, основанных на реальной проблеме, с которой я сталкиваюсь - само определение хорошего вопроса, в соответствии с FAQ. –
Ваш вопрос также должен быть [разумно ограниченным] (http://stackoverflow.com/faq#dontask). – RandomSeed