![]() |
command pooling примеры в as3 фреймворке?
Здравствуйте,
Может быть, вы знаете хороший пример command pooling реализации в каком-нибудь as3 фреймворке?? Я пытаюсь добавить эту функцию в mvcExpress... интересно, как это сделанна в других местах. Я думаю необходимы эти требования: - Command pooling is automatically activated by extending special command. (PooledCommand.as) - user must have functions to disable/enable pooling on command. (for asynchronous execution) - Command must be automatically removed from the pool if any of it's dependencies are changed/removed. - Framework must have a function to clear command pool. - OPTIONAL : automatically remove command from the pool after set time interval. Я думаю, что command pooling необходим в уровне фреймворкa. Каково ваше мнение? |
Присоединяюсь. Тоже хочется посмотреть на реализацию пула команд.
|
А что вы подразумеваете под "command pooling"? Отправка команд пачкой на сервер или что-то еще? От этого будут зависеть ответы на все остальные ваши вопросы.
|
Вообще требования странноватые, на мой взгляд.
Цитата:
Цитата:
Цитата:
Цитата:
PS Вообще, в плане эксперимента, у меня получилась вот такая конструкция. Не претендую на истину в последней инстанции, но вроде бы подходит под определение "пулинг команд": Код AS3:
- отнаследоваться от этого класса - оверрайдить метод run - внутри метода run (или где-то еще, если команда асинхронная) не забыть вызвать finalize() Запускать всегда через Код AS3:
Да, единственное, что придется еще дописать - это свою реализацию IEventDispatcher, унаследованную от класса Command. Но, думаю, за этим дело не станет =) |
Цитата:
Я хочу иметь автоматический pooling для них. Добавлено через 57 минут Цитата:
сценарий:
Пользователь контролирует только <do your stuff>. Все остальное делает фреймворк. сценарий с асинхронностью :
Можно использовать finalize(). что лучше?
Цитата:
Код AS3:
Цитата:
Я могу представить себе сценарий, при котором в течение некоторого времени вы используете те же команды много .. после этого вам не нужны эти команды. (можно очистить pool). Это дополнительные функции. спасибо за пример! Я избегаю static классов, но использовать finalize() - интересная идея. |
Класс можно сделать и не статичным, просто, на мой взгляд, так удобнее запускать из любого места. Да и делать как-то иначе == писать больше кода. На счет lock/unlock - не совсем очевидно получается. Что будет если вызвать unlock до того как был вызван lock? В предолагаемом мной подходе есть 2 основные мысли:
1) optional pooling 2) контроль над использованием команд вне пула. Правда, второй пункт в пример не попал =) Доработанынй вариант выглядит так: Код AS3:
|
Цитата:
Некоторые вещи делаются, чтобы сохранить контроль и ремонтопригодность. Цитата:
Цитата:
|
Я имею ввиду ограничение на запуск команд. То есть "нельзя запустить команду никак, кроме как через пул"
|
Я сделал command pooling прототип: https://github.com/MindScriptAct/mvc...ee/release_1.3
Результат выглядит хорошо! Тест для сравнения - сценарий: - send a message - execute command with dependencies - command updates proxy - proxy send data change message - mediator handles data change massage. результат: Сколько действий вы можете сделать в 1 миллисекунду. RobetLegs 1 dependency - 46 runs/1ms PureMvc cammand 1 dependency - 113 runs/1ms mvcExpress command 1 dependency, No pooling - 375 runs/1ms mvcExpress command 1 dependency, With pooling - 472 runs/1ms mvcExpress cammand 5 dependencies, No pooling - 227 runs/1ms mvcExpress cammand 5 dependencies, With pooling - 457 runs/1ms Мне еще нужно проверить, как command pool тормозит всю систему... Но результаты выглядят хорошо! как это использовать: вместо extend Command - использовать PooledCommand! Код AS3:
Код AS3:
|
|
| Часовой пояс GMT +4, время: 08:47. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.