Всем хай. Сколько ни задавался этим вопросом, но так досконально и не пойму как внутри этого XmlHttpRequest все работает? Можно ли к примеру написать на ассемблере сервер, назовем его XmlHttpServer, который поймет XmlHttpRequest применяемый в Java-Script`e ?
XmlHttpRequest это вроде просто набор методов для работы в скриптах браузера. По сути xml файл переданый через HTTP. Любой вебсервер работать должен. Речь идет об AJAX так понимаю.
Gordon Да именно! Я как полагаю, это обычный XML-документ, но переданный по протоколу HTTP. Вот и возникает вопрос, каким должен быть XML-документ? Таким каким я его задумал? К примеру: Code (Text): <?xml version = "1.0" encoding = "utf-8"?> <asutp> <ThechnologicalParameters> <Parameter Id="0" Value="232.322" Timestamp="2007-Oct-31 19:30:00" Quality="GOOD"/> <Parameter Id="1" Value="144.122" Timestamp="2007-Oct-31 19:33:00" Quality="GOOD"/> </ThechnologicalParameters> </asutp> Если я такой XML передам по HTTP протоколу, то как XmlHttpRequest меня поймет?
Ну я сам только разбираюсь пока. Как скрипт напишешь, так и будет работать. Здесь даже с примерами что то http://ru.wikipedia.org/wiki/XMLHttpRequest. Насколько я понял из практики туда проще всего засунуть (передать) кусок HTML кода, и потом его в браузер подсунуть в нужное место. Иначе нужно будет самому Xml через DOM парсить (хотя тоже не сказать что сложно). Хотя Java-скриптов (библиотек) написано не мало уже для работы, может с ними и проще.
Gordon Насколько я понимаю, серверная программа должна включать: 1. Серверную часть по работе с TCP\IP, со слов друга SnugForce я понял, что лучше это будет на портах завершения 2. HTTP-сервер, который поймет метод XmlHttpRequest.Open с параметром GET и указанием ссылки на мою ЭВМ 3. Тута сложности, как подружить XmlHttpRequest.setRequestHeader с моей прогой, которая будет реализовывать п1, п2 ?
EvilsInterrupt Ты явно из категории людей, придерживающихся принципа "проще спросить, чем самому читать". Каким угодно. Вообще, это не обязательно должен быть XML — просто его проще парсить в JS, чем plain text, и он структурированней, чем HTML. Он просто отправит запрос на сервер. Вроде бы, он не интерпретирует данные запроса. setRequestHeader просто добавляет заголовок к запросу, а любой HTTP-сервер понимает заголовки. Соответственно, из CGI можно получить их и обработать по-своему задаваемые в JS.
IceStudent Долго думал? Наверное. Я не знаю как у тебя, наверное ты сидишь только и только за одним проектом и только и только на одном средстве. Видемо тебе ни один пользователь не звонит и тебя никогда не беспокоил начальник "Мля, я тебе дал задание написать COM-сервер в понедельник, а сегодня уже вторник в чем сложности?", ты наверное никогда не знал, что в компаниях может быть интернет со скоростью скачки не выше 1 КБ\сек. Ты наверное никогда не знал, что в лучшем книжном магазине города есть лучшая книга по компьютерам и это "Excel для чайников". Я очень рад за тебя, что ты всего этого не знал! И очень желаю, чтобы ты этого никогда не узнал! Но я сейчас сижу наработе и пишу: 1. Гребанный OPC-клиент, с большим количеством ф-ций и нюансов, из-за того что не все разработчики придерживаются OPC спецификации 2. Просмотрщик технологических данных из базы данных, с нехилой аналитикой 3. При этом продумываю кусок экспертной системы для предсказывания, когда же нафиг турбогенератор из строя выйдет 4. Отвечаю на дохрена звонков от юзеров и поясняю, что программист нешарит как позвонить в гараж! 5. Поясняю начальству, что COM-клиента написать это тебе не провода спаять, что не все так просто и т.д. Я не буду перечислять. Если ты и вправду считаешь, что я могу на все и вся найти время и что я никогда не устаю, то ты жутко ошибаешься!!! Мля, задрали. Форум существует не для посыла в RTFM, основная задача форума позволить решить задачи его обидателей. Если не знаешь, нефиг писать чего либо в тему, пройди мимо, это же элементарно! Сорри, но не сдержался, бесид когда из себя грамотеев строят!
off EvilsInterrupt В соседнем топе ты сказал, что нацелен на столицу Всея, так что приглашать в гости отдохнуть не буду ) А отхаживать - это работа сестёр милосердия..
IceStudent По теме: Я вот подумал, и пришел к выводу, что клиент должен вводить в браузер нечто вроде этого: http://<IP адрес, где моя программа>:<Порт который прослушивает моя программа>/<Название моей программы>?Username=<его логин>&DataType=<тип данных> Пример: соглассно этому урлу браузер на машину 10.128.1.1 по порту 3210 для программы Asutp_value пошлет запрос по данным за последний час от главного инженера станции. Вопрос, как сделать в программе "понимание" параметров, что следуют после символа '?', т.е. как сделать Response ? Нюансы: 1. На машину нельзя ставить кроме моей програмы !!! Т.е Apache и др. программы запрещены. Т.е. не вспоминайте даже про это Все это вызвано,что машина поставляется соглассно лицензии и в лицензии оговоренность, только и только на мою программу! Вслучае если я поставлю еще и веб-сервер и произойдет какая либо программная ошибка, то фирма за свою программу нести ответственность не будет! 2. В моей программе должен свой аналог web-сервера, потому и такие вопросы
да не надо ничего дружить. это же просто HTTP запрос. У него есть header и есть body. setRequestHeader - просто выставляет заданый хидер с заданным значением. Можно и свои хидеры добавлять. В методе send посылается само тело. Просто посмотри тогда уж сниффером запрос, сам все увидишь. А раз сам пишешь, так придется самому весь HTTP парсить да декодировать. Так просто текст. Хотя лучше уж взять какую нибудь реализация вебсервера чем самому все с нуля писать. Есть же либы некие.
Не обязательно, т.к. твоя прога уже является веб-сервером. Это если предполагается несколько типов запросов, тогда актуально. Это Request. Как — парсить урл. Ничего сложного, первый параметр идёт после "?", остальные разделяются символом "&". Response — это ответ. Тебе его также придётся генерить в виде HTML + заголовки. А возьми лучше делфи или BCB. Там есть всё для упрощения работы с HTTP.
EvilsInterrupt Gordon Вы CGI и DSO от SOAP можете отличить? google "SOAP" google "WebService" EvilsInterrupt Ну я вообще в ауте!!! Вы что думаете напишите аналог Apache для своей забавы лучше чем бородатые дядьки из opache.org????? Тогда я это обхожу стороной...
wsd Простой web-сервер написать не очень сложно, к тому же можно воспользоваться SHTTPD - встраиваемый сервер на C.
Aquila Я про то что они ставят под сомнение Apache!!! Тут на сайте есть хороший пример miniweb А если на java WebService делать - то вообще не программирование , а глупые бизнес методы Мне здесь просто сомнение в качестве апача не понравилось
wsd Читать умеем нет? Внимательно читаем: Специально для тебя еще раз выделию: поставляется соглассно лицензии и в лицензии оговоренность, Т.е. хочу я или нет, но мне придется придерживаться лицензии !!! И я никак немогу поставить туда еще одну программу, окромя своей!!! А c XmlHttpRequest нужно подружиться. Вывод какой? Вот и я о том же, писать самому! IceStudent ты писал: Я бы не мучился и применил бы Indy-компоненты, но на машину может быть громадное кол-во клиентов законнекчено, самый лучший случай это 60 клиентов и каждый опрашивает раз в 1 сек. и каждому отослать XML-документ весом в 2КБ, повторюсь это самый лучший для меня случай. Но может быть и час-пик! Вывод? Заюзать модель порта завершения, т.е. CreateIoCompletionPort и работа с этой ересью, которую можно почитать тут. сложность в понимании, того как надо правильно распарсивать параметры. Сложность выбора, чего лучше выбрать HTTP/1.1 или HTTP-ng ?