Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Паттерн для обмена данными клиент-сервер (http://www.flasher.ru/forum/showthread.php?t=99793)

: hr : 13.08.2007 18:01

Паттерн для обмена данными клиент-сервер
 
Друзья, хочется грамотно распланировать будущее Flash-приложение. Вроде все классы спроектированы, остается вопрос обмена данными с сервером - какой паттерн ООП можно для этого применить? Отправка запроса(взаимодействие через HTTP) -> ожидание - обработка ответа: есть для этого стандартные механизмы?

Ромастый 14.08.2007 16:36

Если бы через XMLSocket - я бы советовал синглтон, но для запросов по HTTP экземпляры XML удобнее каждый раз создавать заново. И на onLoad удалять.
Еще может быть порекомендовал бы паттерн 'команда' и 'итератор' - если необходимо сделать несколько последовательных запросов по ответу на предыдущий. Часто так делаю, причем несколько итераторов могут работать асинхронно.

: hr : 14.08.2007 17:32

Цитата:

для запросов по HTTP экземпляры XML удобнее каждый раз создавать заново. И на onLoad удалять
аналогично всегда и поступаю... Кстати, Ромастый, а как Вы поступаете при необходимости послать новый запрос до прихода ответа предыдущего. Как сбрасываете старый объект XML?
Цитата:

Еще может быть порекомендовал бы паттерн 'команда' и 'итератор'
спасибо, попробую...

Ромастый 14.08.2007 18:40

Цитата:

Сообщение от : hr :
Кстати, Ромастый, а как Вы поступаете при необходимости послать новый запрос до прихода ответа предыдущего. Как сбрасываете старый объект XML?

А в чем проблема? Создается новый экземпляр XML и все.
Все запросы идут асинхронно, поэтому нет необходимости дожидаться ответа предыдущего, если это не предусмотрено логикой приложения.
Созданные экземпляры XML в самом простом случае можно хранить в массиве, и по необходимости удалять (это, если я правильно понял, чтобы не объявлять кучу свойств :XML напрямую в классе). Короче вариантов масса, в зависимости от задачи.

Если что-то конкретное, то распиши задачу подробнее.

: hr : 14.08.2007 19:20

Цитата:

Созданные экземпляры XML в самом простом случае можно хранить в массиве, и по необходимости удалять
все верно, проблема в том, как их правильнее удалять. Ведь пока ответ на запрос не получен, старый :XML существует. Лично я обычно, если требуется новый запрос, удаляю такой старый XML оператором delete и удаляю обработчик события onLoad. Но знаю, что на самом деле объект не удалился, и когда сборщик мусора удалит его всегда остается загадкой. (в подтверждение моих слов, если сделать delete .xml, но оставить onLoad - он все равно выполнится).

Psycho Tiger 14.08.2007 19:27

Если я правильно понял, ты отсылаеш запрос на сервер о скачивании .xml файла, и сразу же его удаляеш, а запрос все равно прошел?
Странно... я на год забил на флэш где то может чего и не понимаю...

Расскажи поподробнее, как ты собрался сделать delete .xml (просто тупо удалить переменную, в которую должен был придти запрос?)

: hr : 14.08.2007 19:41

Цитата:

как ты собрался сделать delete .xml (просто тупо удалить переменную, в которую должен был придти запрос?)
именно так, тупо удалить переменную в которую должен прийти запрос

Цитата:

Если я правильно понял...
на самом деле я отсылаю запрос на сервер к серверному сценарию, выдающему файл xml. Через 2-3 секунды по логике работы программы иногда требуется послать повторный запрос к тому же скрипту. Размер файла xml может быть достаточно большим, или сервер может не успеть обработать, и таким образом клиент может успеть послать запрос не дожидаясь ответа на предыдущий. А предыдущий в итоге может и прийти, но позднее (и плэйер будет хранить в памяти тот первый объект xml не понятно до каких пор).
..кстати, варианты дожидаться ответа первого запроса для отправки последующего не подходят.

Ромастый 14.08.2007 21:57

Паттерн "оболочка". Подписывайся не на события экземпляров XML, а на события оболочек.
При необходимости от них можно отписаться, после чего не опасаться, что onLoad уже ненужного xml вызовет какие-то методы главного класса.
А оболочка в автономном плавании на onLoad удалит экземпляр xml и удалится сама. Кроме того, оболочке можно доверить дополнительную работу с xml-документом- это зачастую часто намного удобнее, чем делать это в основном классе, или расширять класс XML.

: hr : 15.08.2007 10:58

Ромастый - гениально! То что нужно, спасибо! :victory:


Часовой пояс GMT +4, время: 07:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.