![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Drago |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2006 Где: Тула Репутация: нет Всего: нет |
Всем привет! Ребят, меня интересует такой ламерский вопрос.
Клиент вводит данные, отправляет их на сервер, после чего на сервере идет их долгая обработка. На каждом этапе обработки создается событие о его завершении. При наступлении данного события хотелось бы выводить клиенту данные и продолжать обработку. Помогите плиз, желательно с разъяснениями... З.Ы. Надеюсь без аякса это можно сделать? Слышал о IHttpAsyncHander, но как его использовать не знаю совершенно. Заранее спасибо ![]() |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Как-то натолкнулся я на очень хороший топик на ixbt как раз по этой теме. В топике перечислены все способы организации асинхронных вызовов.
Для 4-го пункта там нет ссылки. Пример реализации данного подхода можно найти в этом топике того же форума. Это сообщение отредактировал(а) Idsa - 25.7.2007, 01:10 |
|||
|
||||
Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Idsa, по сути это все сторона одной монеты :о(.
Drago, сервер не может выдать кусок данных пользователю, потом сказать типа, "все", а потом ой, ты знаешь, я еще хотел тебе что-то сказать. Это так как я понимаю общение межде сервером и клиентом. Просто секьюрити не позволяет этого делать, и получается что сделать коннект можно только по запросу пользователя. Если не использовать AJAX, то мне очень даже понравилась реализация с подгрузкой данных как в виде js файла. Т.е. тебе надо будет в этом JS файле генерировать скрипт с данными что ты хочешь отобразить. И все это повесить на setInterval (JS функция) и радоваться жизни... -------------------- |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Я бы так не сказал. По крайней мере там можно выделить 2 метода: 1. с использованием фреймворка AJAX 2. использование стандартных средств JS. P. S. Метод с подгрузкой JS мне тоже очень понравился. |
|||
|
||||
Drago |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2006 Где: Тула Репутация: нет Всего: нет |
Забил я на вывод промежуточных результатов пользователю. Сделал асинхронную страницу, которая считает в фоне, а результат выводит в конце обработки. На ИИС все работало отлично, как только залил на сервер, сразу получил ошибку (там юникс стоит). Дело в том что моно не знает директиву Async, поэтому пришлось все переделывать.
Сейчас у меня появилась идея выделить метод, который обрабатывает данные, в отдельный поток. По завершении обработки так же выкидывается событие, которое перехватывается другим методом, меняющим глобальную переменную CompleteTask на true. На форму добавил кнопку, по клику на которой вызывается метод выводящий результат обработки, если CompleteTask = true. А на клиенте есть яваскрипт, который эту самую кнопочку и кликает каждые 10 секунд. Тока вот не работает нифига ))) Но это я еще завтра посмотрю, может событие не перехватывается. Во настрочил ![]() Народ как думаете работать то будет? Может как то проще можно извернутся... |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Насколько я понял, ты, до рендеринга ждешь реакции клика с клиента? Если так, то зря. Пока твой код полностью не будет выполнен, клиент его не получит, а значит ни о каких кликах не может быть и речи.
P. S. Может, все-таки внимательно ознакомишься с предложенным материалом?! В том топике указаны все возможные способы организации асинхронных вызовов. Вряд у тебя получится придумать новый. |
|||
|
||||
Drago |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2006 Где: Тула Репутация: нет Всего: нет |
Idsa ты меня немного не так понял
![]()
Т.е. на странице у пользователя лежат 2 кнопки. Одна из них вызывает Go_Click(), после чего начинается обработка данных в отдельном потоке, у пользователя выводится "Идет обработка". Вторая же кнопка вызывает ShowResult(). Я хочу ее сделать скрытой и с помощью JavaScript имитировать клик каждые 10 секунд. Я наверное извращенец, но пока еще не знаю как вызывать метод ShowResult() из JavaScript так же каждые 10 секунд... Понимая, что использование скрытых кнопок не хорошо ![]() ![]() З.Ы. Все необходимые переменные запихнул в сессию ![]() Это сообщение отредактировал(а) Drago - 26.7.2007, 11:09 |
|||
|
||||
Drago |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2006 Где: Тула Репутация: нет Всего: нет |
Сделал я то, что задумал, только вот теперь надо как нибудь избавиться от кнопки размерами 0 на 0 )) И как то извернуться вызвав метод ShowResult() с клиента... Ни у кого нет идей?
|
|||
|
||||
Drago |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2006 Где: Тула Репутация: нет Всего: нет |
Сделал на клиенте скрипт вызывающий form.submit() и вызываю его каждые 10 секунд. А на пэйдж лоад поставил вывод данных, если обработка закончена. Чем плох такой подход и есть ли альтернатива?
З.Ы. Знаю что как то можно использовать XMLHttpRequest, реализующий идею Аякс... Если кто нибудь подскажет как, буду очень благодарен ![]() |
|||
|
||||
VirusUZ |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 9.4.2010 Где: Узбекистан, Навои й обл. Репутация: нет Всего: -2 |
![]() --------------------
Virus |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |