Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.07.2014, 10:09
Vasyaga вне форума Посмотреть профиль Отправить личное сообщение для Vasyaga Найти все сообщения от Vasyaga
  № 1  
Ответить с цитированием
Vasyaga

Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
Cool Асинхронные вызовы в AS3: best practices

Хотел бы устроить небольшое обсуждение правильной, по вашему мнению, реализации обработки цепочек асинхронных вызовов в AS3.
Итак, имеем серверную часть, которая может возвращать данные через асинхронные вызовы. Это может быть все, что угодно - как вызов методов Web-сервиса через RPC, так и загрузка XML с результатом через равные промежутки времени или, вообще, остановка вызова по таймауту. Основная соль в том, что результаты могут быть в различных форматах и их инициализация также может быть различной (различные параметры и имена методов RPC, разные URL у XML и т. д.). Далее - алгоритм имеет цепочку последовательных асинхронных вызовов, при этом, каждый уровень (звено цепи) может содержать несколько параллельных вызовов, при удачном выполнении любого из которых происходит переход на следующий уровень. Алгоритм может быт отменен на любом этапе. При ошибке - действие алгоритма прекращается.
Основные вопросы - как и какие паттерны здесь уместно использовать? Какую примерную иерархию классов вы бы написали? Какие специфические особенности AS3 могут быть полезны? Как и где в коде лучше инициализировать такой "комбайн"? Какие готовые решения могут быть полезны, дабы не изобретать велосипед в 100500-й раз?
Полезные ссылки категорически приветствуются!

Старый 10.07.2014, 12:40
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 2  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
https://github.com/CodeCatalyst/promise-as3 пригодится

Старый 10.07.2014, 14:08
Vasyaga вне форума Посмотреть профиль Отправить личное сообщение для Vasyaga Найти все сообщения от Vasyaga
  № 3  
Ответить с цитированием
Vasyaga

Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
fljot, спасибо, ценно. Положил в копилку.
Возвращаясь к задаче: паттерн FSM здесь не будет уместен?

Старый 11.07.2014, 02:13
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 4  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
FSM это более общий паттерн. А для асинхронных систем давно уже придуманы и используются основные три шаблона: Mutex, Semafor, Condition variable (там довольно нативно описано, но всё реализуется и в AS3 на Worker'ах). На основе которых можно решить любой вопрос синхронизации/асинхронизации и взаимодействия друг с другом. А иерархии классов, последовательность выполнения и прочее это всё мишура - у каждого всё по своему, как удобнее, под задачу. В комбайне смысла не вижу, потому что сделать обще не получится никогда, так как вариантов взаимодействия тьма. Проще посмотреть на задачу, рассмотреть варианты и нарисовать схему (какой производительный, какой масштабируемый, какой узкий, какой широкий, какой понятный), и написать оперируя простыми инструментами.


Последний раз редактировалось Nooob; 11.07.2014 в 02:34.
Старый 11.07.2014, 13:16
Vasyaga вне форума Посмотреть профиль Отправить личное сообщение для Vasyaga Найти все сообщения от Vasyaga
  № 5  
Ответить с цитированием
Vasyaga

Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
Noob, спасибо за инфу. Вот я и столкнулся с тем, что реализуя задачу на текущий момент потом часто возникают сложности, когда надо внести изменения. Про FSM я имел в виду достаточную легкости инициализации. Если надо поменять что-то в цепочке вызовов, то это делается достаточно легко.

Старый 11.07.2014, 16:33
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 6  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Читаю и мне кажется, что Вам команда и очередь нужна.
Можете вот ещё что посмотреть as3-commons-async.
Если, это окажется тем, что Вам нужно, то дайте знать, я Вас кое-что спрошу, изучать код все равно придется.

Старый 11.07.2014, 17:22
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 7  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
as3-commons-async использую почти во всех проектах.
Очень удобно.
__________________
Отряд Котовскага

Старый 11.07.2014, 19:59
Vasyaga вне форума Посмотреть профиль Отправить личное сообщение для Vasyaga Найти все сообщения от Vasyaga
  № 8  
Ответить с цитированием
Vasyaga

Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
Цитата:
Сообщение от LifeIsRhythm Посмотреть сообщение
Читаю и мне кажется, что Вам команда и очередь нужна.
Можете вот ещё что посмотреть as3-commons-async.
Если, это окажется тем, что Вам нужно, то дайте знать, я Вас кое-что спрошу, изучать код все равно придется.
Да, пожалуйста, расскажите Ваши мысли - я собираю любую информацию.

Старый 14.07.2014, 13:27
dendrit вне форума Посмотреть профиль Отправить личное сообщение для dendrit Найти все сообщения от dendrit
  № 9  
Ответить с цитированием
dendrit
 
Аватар для dendrit

Регистрация: May 2014
Сообщений: 13
Записей в блоге: 1
Я пользуюсь для этого командами из spicelib и parsley. Мануал на английском раздел 7 Managed Commands.
Позволяет определить последовательные (CommandSequence), параллельные (ParallelCommands) команды и их сочетание.
Так же можно задать порядок выполнения в зависимости от результата предыдущих команд (CommandFlow)

Старый 14.07.2014, 20:18
Vasyaga вне форума Посмотреть профиль Отправить личное сообщение для Vasyaga Найти все сообщения от Vasyaga
  № 10  
Ответить с цитированием
Vasyaga

Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
dendrit, Parsley - отличный фреймворк. У меня практически нет опыта работы с ним, но теперь, видимо, обращу на него свое внимание. Благодарю за полезную информацию.
Я часто пользовался PureMVC. Там, конечно, есть свой набор утилит и helper-ов, но чего-то целостного, представляющего управление цепочкой вызовов я не увидел.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
asynchronous , ООП , паттерн

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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