J64_
offline
Опыт:
4,724Активность: |
Свой сервер на С++\Qt
Вот недавно начал изучать веб программирование. Ситуация с клиентом всё просто, там html\css\javascript и AJAX запросы. А вот серверная сторона, она вообще какая?
Вот скачал себе сервер Apache. Немножко погуглив узнал про CGI. Сделал. На клиенте получал ответы с сервера. Возможно бред, но подумал что эти скрипты будут слишком не оптимальными если каждый раз вызывать их. Замечу, что я делаю на C\Qt(и то Qt на ходу изучаю). Поэтому решил сделать простенький C CGI скрипт, общий для всех, который будет просто записывать присылаемый запрос в файл. А другая программа, которая будет всегда запущена, ловит изменение файла, исполняет запрос и записывает результат, опять таки, в файл. Далее скрипт ждет изменение файла-результата и просто выводит в консоль как все другие CGI программы, и всё, скрипт-программа заканчивается.
Конечно можно было прослушивать порты и так далее, но простого решения я не нашел. Ещё пытался внедрится в процесс основной программы - там тоже всё через зад, даже через Qt. Правда потом узнал что такое QML, но как это вообще поддерживается на клиенте я не понял.
Что же собственно делает Apache? Неужели там нету простой привязки с C++?
Про базы данных вообще молчу. Зачем там нужно использовать SQL? Можно же просто расположить всё по папочкам и файлам.
В общем ткните в нужную статью или вкратце расскажите. |
09.01.2014, 03:39 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
тем что ext4 и любая другая файловая система значительно проигрывает по скорости работы любой базе данных?
тут надо не про кьюти читать, а про архитектуру зачем тебе понадобился html/ajax сервер на qt? почти всегда это можно сделать проще. а если не требуется, то у qt скорее всего есть свой фреймворк для веб сервера, надо поискать
ScorpioT1000 добавил:
на c++ трудно замутить простую MVC архитектуру например www.webtoolkit.eu/wt/ru но вот тут есть решения
в целом можно что угодно замутить, вопрос цены времени =)
ScorpioT1000 добавил: дай пример кода, что ты пытался сделать, я оценю уровень твоих знаний и скину линки на статьи) |
09.01.2014, 04:39 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J64_
offline
Опыт:
4,724Активность: |
ScorpioT1000:
То есть там они нативно поддерживают SQL или что? А ведь всё упирается в работе диска. Php для слабаков, C#\Java как нибудь потом изучу... Просто кпп нативный для меня. понимаю что нуб в этом деле, но всё же
Judycaster64 добавил: ScorpioT1000, вот так я рвал целку :-) |
09.01.2014, 04:42 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
php очень мощный инструмент для быстрого написания http сервера, так же как и ruby on rails
но не суть sql - язык описания запросов к СУРБД, qt гораздо обширнее, там есть адаптеры как к sql базам, так и к nosql базам (на то они и плюсы что там всё есть) как бы сделал я:
если нет возможности перейти на дотнет, архитектура примерно следующая (первое что пришло в голову)
ScorpioT1000 добавил:
стоит заметить, что выполняется вся цепочка bootstrap -> event -> controller -> models -> views -> response каждый запрос сервера заного, все операции достаются и сохраняются в базе данных и нигде больше (кроме /user/upload), не важно, крутится ли твой сервер или его каждый раз запускает демон ScorpioT1000 добавил:
и это я ещё не говорил о миграциях и том, как организована сама бд, но начать несложно, надо просто поставить мощный инструмент управления базой, они для каждой сурбд варьируются ScorpioT1000 добавил: и да, по поводу ajax - там просто у event должно быть проперти, что это ajax и у контроллеров тоже какойто признак, что я контроллер, который работает с аяксом остальное всё так же ну и может ещё контроллен не вызывает view, а генерит json - всё отличие Отредактировано ScorpioT1000, 09.01.2014 в 05:54. |
09.01.2014, 05:57 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
Judycaster64:
Бред. Преждевременная оптимизация - корень всех зол. Время отсылки запроса >> времени обращения к базе >> времени исполнения кода. Лучше вообще забить на оптимизацию, пока не разберёшься, где и что юзается и где какие проблемы надо решать. В принципе все изначально на скорость ориентируются, но на деле редко где нужны супер оптимизации(хотя в геймдеве и модмейкинге всё же нужны), но выбор языка не решает всех проблем. Неправильно выбранный алгоритм языком врядли компенсируешь. А ещё есть архитектурные особенности железа и т.д. Тебе верно советуют, что лучше архитектуру поизучать, MV*-паттерны вполне себе тема для изучения. По ним, правда, хороших материалов не смогу посоветовать, сам ищу. Но в процессе реализации оных взгляд на это всё формируется. С другой стороны таск для изучения плюсов вполне нормальный, но не надо боготворить своё произведение, через пару лет(а скорей всего раньше) ты на него будешь с ужасом смотреть. Ну и кстати для гуёвых приложений лучше перейти на дот.нет. Если веб приложения, я бы RoR посоветовал, но есть куча альтернатив |
10.01.2014, 18:44 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Поинт?! Вот так внезапно, тебя-же еще при Тонике забанили как будто? Или ты сам ушел, уже не помню. Рад тебя видеть) |
10.01.2014, 21:50 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
Toadcop добавил: Цитата:
скажи это кеш миссам u_u |
|
12.01.2014, 22:03 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Olorin
offline
Опыт:
11,841Активность: |
Judycaster64:
Грубо говоря, серверная часть - это любая программа/скрипт, которая в итоге своей работы выдаёт html-страницу, которую передаёт клиенту через web-сервер (Apache, nginx, lighttp, whatever). Писать можно практически на любом языке, при определённой доле изврата. Можно, конечно, и на крестах, но на чистых крестах это выйдет сильно-сильно долго. Ты больше будет ковыряться в костылях C++, чем разбираться в том, как работает веб. Я бы тебе советовал выбрать что-нибудь из списка: PHP, Python, Perl, Ruby. Если очень хочется кресты, то можно и их, конечно, но выкини Qt. Qt для десктопа всё же.
Поздравляю, ты только что изобрёл модель сервера Prefork. Причём, лисапед вышел жутко кривой, т.к. ты получишь страшные потери на работе с ФС.
В процесс какой основной программы ты пытался внедриться и зачем?
Апач обрабатывает клиентские запросы, вызывает соответствующие скрипты на сервере, отдаёт статические файлы. Про то, как заставлять работать Апач с сишными бинарями, можно почитать тут - habrahabr.ru/post/61532
скорость работы бд несравнимо выше скорости работы фс. На данном этами просто прими это как факт. |
07.02.2014, 17:59 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|