Является ли QtCore слишком «тяжелым» для использования на стороне сервера? - PullRequest
2 голосов
/ 03 августа 2011

Я пытаюсь написать автономный http-сервер с использованием библиотек Qt, хотя многие считают, что QtCore слишком раздут и что издержки будут слишком большими.Будет ли http-сервер QtCore управлять загрузкой около 50 одновременных соединений с использованием пула потоков.

Библиотека QtCore динамически связана на Linux, скомпилированном для выпуска с оптимизацией o2

.

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Ваш вопрос очень широкий, и ответ зависит от того, как вы хотите создать свой http-сервер. Вы можете создать его как «однопоточный реактор», «многопоточный проактор» или «полусинхронный полуасинхронный» сервер.

QT в основном использует небольшие классы-обертки над нативными или posix API и наверняка имеет свой собственный избыточный вес, а 50 соединений звучат не слишком много, но опять же ответ зависит от того, что эти соединения будут делать? Обслуживать простые страницы или выполнять тяжелые вычисления?

Я думаю, что сложность проекта заключается в реализации полноценного http-сервера, который является безопасным, надежным и масштабируемым. Вам придется много писать, чтобы обеспечить жизненный цикл простой модели Java-сервлета. Требуется много интерфейсов / абстракций.

Вы можете найти уже проверенные http-серверы с открытым исходным кодом. Я бы даже не стал писать свой собственный для программного обеспечения.

2 голосов
/ 03 августа 2011

Нет причин, по которым нельзя было бы написать сервер с Qt, однако на самом деле нет никакого способа заранее определить, будет ли производительность именно такой, какой вы хотите (зависит от того, что делает ваш сервер).Обратите внимание, что оптимальное количество одновременных потоков обычно зависит от количества аппаратных ядер, а также от уровня параллелизма в вашей программе.Мое предложение состояло бы в том, чтобы реализовать все, что вы можете, за наименьшее количество времени, а затем настроить производительность по мере необходимости.Даже если сервер не может обработать такое количество одновременных подключений, вы можете использовать параллелизм на уровне процесса (запуск нескольких экземпляров вашего многопоточного сервера), пока вы не улучшите производительность.

0 голосов
/ 03 августа 2011

50 подключений - это немного.

Но я надеюсь, что вы добавите модуль QtNetwork: -)

...