http2http proxy, на чём писать, с чего начать?
2) В клиентской стороне приложения вероятно потребуется выполнять js, для того, чтобы вычислять правильные значения куков. Существуют ли интерпретаторы js не в броузерах, а в виде библиотек?очень легко встраивать в свою программу V8, если это программа на C++.
http://code.google.com/apis/v8/embed.html
Существуют ли интерпретаторы js не в броузерах, а в виде библиотек?http://www.mozilla.org/js/spidermonkey/
Чем не подошло?
Хочется написать приложение, которое будет транслировать один протокол работающий поверх http в другой. Какой порекомендуете язык, библиотеки?Зависит от того, насколько хочется заморочиться. Если синхоронной работы с сокетами будет достаточно, то я думаю примерно монопенисуально - брать самый знакомый язык и гуглить/спрашивать под него.
В случае джавы я бы в качестве хттпклиента взял апачевский httpclient, в качестве сервера попробовал бы сановский httpserver.
Если же нужны глупости вроде асинхронности, лоад-балансинга, итп, то, возможно, стоит заморочиться например написав модуль к nginx.
. И не потому что нужна производительность, просто Це - единственный язык, который я знаю Но в поставленной задаче между протоколами совершенно нет позапросного соответствия, поэтому nginx не получится. Сысоев подтвердил.
Я уже подумал об этом до того, как предложил это вещь для себя? на продажу?
какой бюджет по деньгам/времени планируется?
какое предполагается развертывание? на одну машину? на сеть? на мир?
использовать будешь сам? или кто-то сторонний?
какая пропускная способность нужна? кол-во трафика? кол-во запросов?
под какую платформу?
ps
кстати совсем не понял, как связан js и cookie? cookie же обычно ставятся без всякого js.
Для себя и ещё нескольких человек, производительность не важна, денег нет, под FreeBSD. js нужен потому, что куки вычисляется jsом, для того, чтобы отличать броузеры от роботов.
один протокол работающий поверх http в другойТо есть протокол "один" обращается к серверу по http (т.е. используя методы GET и POST) и передает какую-то свою информацию, а сервер в ответ на это что-то делает по другому протоколу и отвечает не html страничкой, а чем-то своим?
Тогда это cgi, приложение можно писать на чем угодно: можно на C, а можно на Perl-е, благо для последнего есть куча разнообразных библиотек.
Ну или есть чуть больше конкретики, то это может быть AJAX, писать тоже на чем угодно.
Для себя и ещё нескольких человек, производительность не важна, денег нет, под FreeBSD. js нужен потому, что куки вычисляется jsом, для того, чтобы отличать броузеры от роботов.поддерживаю -а: apache+cgi(fastcgi)+php/python/perl/c++
ps
кстати я правильно понял, что требуется две вещи ?:
хранить состояние между запросами
уметь делать запрос при отсутствии внешнего запроса
кстати я правильно понял, что требуется две вещи ?:Да, примерно так. И как эти две вещи лучше всего сделать в cgi?
хранить состояние между запросами
уметь делать запрос при отсутствии внешнего запроса
хранить состояние между запросамисамый тупой способ для первого - ФС или БД
уметь делать запрос при отсутствии внешнего запроса
для второго - демона на том же языке (для удобства, чтоб использовать общий код, при необходимости можно его запускать, форканув обработчие cgi)
Да, примерно так. И как эти две вещи лучше всего сделать в cgi?в cgi - едва ли, т.к. там считается, что мы на каждый запрос новый процесс поднимаем
а вот в fastcgi проблем уже должно быть меньше, т.к. там один и тот же процесс используется между запросами.
состояние храним в глобальных переменных
а для heartbeat-а подпнимаем или отдельный тред (здесь плаваю так как никогда такое в fastcgi не делал или внешний процесс
ps
кстати nginx зря рано списали, fastcgi у него есть, а heartbeat всегда можно и внешне организовать (крутится демон, который периодически пинает nginx)
в cgi - едва ли, т.к. там считается, что мы на каждый запрос новый процесс поднимаемтак этот процесс может быть тупо прослойкой к реальному демону
так этот процесс может быть тупо прослойкой к реальному демонуможет, но меня смущает, что эту прослойку надо писать - т.е. фактически приходящие http-запросы сначала преобразуем в какие-то другие запросы к демону, где уже эти другие запросы поддерживаем
т.е. получается, вместо поддержки одного протокола (исходного) надо уже поддерживать два протокола: исходный и наш придуманный между http-сервером и демоном
Да, примерно так. И как эти две вещи лучше всего сделать в cgi?Посмотри на wsgi (pep-0333)
Stateful, простой, правда с куками я там не ковырялся, но, думаю, все нормально
Вообще, все это вместе называется Web 2.0 — когда ты через http делаешь все что угодно. Сейчас все так делают, даже непонятно как живущий Рамблер недавно разродился проектом http://myrambler.ru — открываешь по http, виджеты на странице двигаешь как хочешь, в следующий раз там и останутся (хранение состояния между запросами погоду/курсы валют сам обновляет (запрос при отсутствии внешнего запроса).
Тебе, я думаю, такого не надо, состояния можно хранить просто в каком-нить MySQL, а запросы отправлять просто из cron-а.
Посмотри на wsgi (pep-0333)Что-то я не понял, чем это круче аналогичных библиотек для любого другого языка?
Stateful, простой, правда с куками я там не ковырялся, но, думаю, все нормально
PHP, Perl, Ruby on Rails, ASP.NET, Java Servlets, just name it...
Что-то я не понял, чем это круче аналогичных библиотек для любого другого языка?Тем что это 1) не библиотека (а скорее совет аналогичный "используй cgi") 2) удобно
Хотя можно колоться, и писать такую проксю на сях...
BTW Для сей вместо гемора с "фронтендами-бекендами-дазабанными" лучше посмотреть на что-то типа этого или хттп сервера в составе libev/libevent
это 1) не библиотека (а скорее совет аналогичный "используй cgi") 2) удобнону я не имел в виду си, а скорее перл(с которым глебиус знаком)/пхп/явы всякие
Хотя можно колоться, и писать такую проксю на сях...
Мне удавалось его пересобрать и внести кое какие изменения буквально за час. мб и тебе удастся сделать то что нужно
1) Хочется написать приложение, которое будет транслировать один протокол работающий поверх http в другой. Какой порекомендуете язык, библиотеки?Проще всего попросить грамотного чувака типа Бачана осилить и написать модуль нгинкса. Но, в принципе, это не самый лучший путь, лучше всего на libevent написать прокси.
Правильно ли я понимаю, что тебе надо тупо ловить запросы, проксировать, как-то обрабатывать ответ и отвечать? Если да — по идее нгинкса с фильтром кастомным должно хватить.
2) В клиентской стороне приложения вероятно потребуется выполнять js, для того, чтобы вычислять правильные значения куков. Существуют ли интерпретаторы js не в броузерах, а в виде библиотек?Для начала нужно понять, что делать не надо:
Первое что делать не надо: Слушать тупых мудаков, которые насоветуют Явовские какие-нибудь библиотеки, они ещё сишарп насоветуют. Работать если будет — с аццкими тормозами.
Второе что делать не надо: Использовать код Мозиллы. Моя попытка использовать их чистый html-парсер не удалась. Просто потому что и сложно, и работает непонятно как. В итоге выплюнули и написали свой.
Теперь что нужно:
Для начала сформулировать задачу. Что именно ты хочешь, какая конечная цель.
Скорее всего тебе нужно заюзать curl, он запросы делать будет. Приложение обычно cgi делаешь, ну а чтобы мужду запросами хранить инфу — просто сделай fastcgi, самый простой способ я считаю.
Если входящих запросов много может быть, и зависать на делании запросов не кошерно, — libevent, и дальше пишешь ручками сам. Кстати, curl + libevent у нас работает мегакруто.
которые насоветуют Явовские какие-нибудь библиотеки, Работать если будет — с аццкими тормозами.Предубеждение. Ява для сервлетов идеальна. В меру мощная, в меру быстрая.
Ява для сервлетов идеальна.А сервлеты на чём-то ещё пишут? Это же вроде явовская терминология?
update: То бишь я не вполне верно использую термин. Я думал, что сервлет - это лёгкий сервер-фреймворк, чуть сложнее inetd, и возможность прописать всю функциональность на языке программирования. Оказалось, что я неверно трактовал название.
Да, на производительность насрать абсолютно, т.к. клиент будет обычно один.
Если имеешь представление об ООП - то можешь читать статью на интуите про яву. А вот как осваивать ООП - подсказать не могу, сам точно не знаю
В свое время не пользуясь книгами и не зная ее вообще написал даунлоадер таблицы в файл из Оракла за денек.
Основные сложности бывают - если в программе необходимо создавать свои классы - именно здесь часто проявляются ошибки в виде "плавания против течения ООП" и "плевания против ветра ООП" . Причем ошибки обычно не критичны - они лишь проявляются в излишнем запутывании кода.
в твоей задаче новых классов почти совсем делать не надо, поэтому особых проблем у тебя не дожно быть.
стоит разобраться со следующими вещами:
события
интерфейсы
виртуальные функции
generic-и (если они используется в том коде, который ты нашел)
особенности именования классов, переменных и т.д.
особенности в развертывании java-результата
Так что встаёт вопрос: чего бы почитать полному ламеру о Java?Попробуй листать по диагонали Bruce Ekkel - Thinking in Java.
Еще неплохо проглядеть Antipatterns in Java для примеров того, как не надо кодить. Линк с ходу не дам, если заинтересует - нагуглю.
http://www.pion.org/projects/pion-network-library
libevent конечно работает тоже, но он убог немного по интерфейсу и качеству исходного кода.
но он убог немного по интерфейсуочень субъективно
мне libevent и libev понравились (второй лучше а буст меня ввергает в депрессию
И в итоге накалякал на перле. Всем спасибо
все правильно сделал!
Надо заметить, что js в текущей реализации пока не пригодился. Вот как понадобится, то хз чего делать с ним на перле.
как вариант - подключать через perl xs своё расширение на С, в котором использовать Google V8 Javascript engine
Оставить комментарий
sergey_m
1) Хочется написать приложение, которое будет транслировать один протокол работающий поверх http в другой. Какой порекомендуете язык, библиотеки?2) В клиентской стороне приложения вероятно потребуется выполнять js, для того, чтобы вычислять правильные значения куков. Существуют ли интерпретаторы js не в броузерах, а в виде библиотек?