Как из Flash читать/писать в базу данных (MySQL или MSSQL)

Планирую написать Flash-приложение, которое будет помимо всего прочего обращаться к базе данных.
Подскажите пожалуйста оптимальные решения или ссылки на статьи на эту тему.
  • Вопрос задан
  • 8739 просмотров
Пригласить эксперта
Ответы на вопрос 10
mihailt
@mihailt
рекомендовал бы помотреть в сторону AMF3.
Это родной для flash/flex формат передачи данный.

На серверной стороне если php то Zend_Amf (http://framework.zend.com/download/amf) или php-amf3 (http://sourceforge.net/projects/php-amf3/), последний в разы быстрее, если python тогда pyAMF в связке с django, twisted или чего-то другого по вкусу )) про java не в курсе.
Ответ написан
@verwolfdotss
Coldfusion продвигаемая Адобом серверная платформа для веб-приложений основанная на J2EE.
По сути для общения с базой данных в любом случае прийдется писать некий серверный компонент обрабатывающий запросы клиентов на swf и производящий различные операции с БД. По сути выбор сводиться к языку программирования с которым вам удобнее работать.
Ответ написан
@jcrow
«Как swf объект, который выполняется на стороне клиента, сможет читать/писать в базу данных, которая находится на стороне сервера?» — вот это правильно поставленный вопрос.
Ответ написан
@lehha
Для транспорта использовать HTTP или XML — а в них заворачивать нужные данные и распаковывать на стороне сервера.

Достаточно универсальный подход в любом случае, учитывая что во Flash есть прямые функции работы по HTTP/XML
Ответ написан
Не большой специалист по Flash, но разве у него нет достаточно высоко развитых средств обращения к сетевым сервисам? Если всё, что нужно сделать — это предоставить доступ приложению к БД, то просто поднимете СУБД на внешних интерфейсах сервера (если речь про клиентские приложения с центральной БД) или на локальных (если речь про локальные приложения) и обращайтесь :) Возможно даже для Flash (Actionscript?) существуют различные адаптеры, облегчающие и абстрагирующие работу с БД и, например, писать SQL запросы не придётся.

Но только подумайте, действительно ли вам нужен именно доступ к БД или вам нужны данные, которые в ней хранятся, и/или возможность их записывать, но с дополнительной логикой, например, развитой аутентификацией и авторизацией? Тогда надо вводить трехзвенную архитектуру — клиентское приложение -> серверное приложение -> база данных
Ответ написан
lsdima
@lsdima
Здесь уже достаточно много и правильно сказали выше. Может и мой опыт окажется полезным. Сейчас в одном проекте использую прямые SQL запросы из ролика, через php скрипт (в простейшем варианте — 10 строк кода). PHP-скрипт выполняет входящий запрос и отдает данные обратно ролику в JSON. Могу сказать, что это очень удобный и простой способ: возможностей sql запросов полностью хватает для выполнения сложных выборок, лишние данные между клиентом и сервером не бегают. В флеше мы получаем массив или объект с результатами выборки. В моем sql2flash классе запросы выглядят примерно так: sql2flash(«select * from table», slqHandler), где sqlHandler — обработчик результатов запроса. Если интересно, могу выслать код.
Ответ написан
lsdima
@lsdima
Что значит «Их оттуда можно элементарно достать»? Особенно если они генерируются программно. Напишите об этом в Adobe.

И каким боком здесь онлайн-игра? Я написал выше, что нужно понимать целесообразность такого решения. У меня например таким образом вытаскиваются данные из ~10 взаимосвязанных баз, в которых исключительно публичная информация. Я хочу посмотреть на этот монструозный велосипед с API, который вы предлагаете, особенно, если структура данных может меняться.

А если нужно получить доступ к секретным данным — никто не мешает написать отдельный php скрипт.

И что вы опять с этой базой с паролями, закрыта она, за-кры-та. Ну если человек не понимает, то ему ни один туториал не поможет обезопасить систему, ообенно в случае с таким довольно нетривиальным решением как flash<-->mysql.
Ответ написан
zwie
@zwie
garbage-collector.ru/2007/05/assql_actionscript_mysql_driver.html — здесь что-то на эту тему. Сути не помню (давно уже читал), но вроде как работа с сокетами напрямую происходит.
Ответ написан
@Robotex
Напрямую никак.

Но реализуется очень просто, через PHP.

Создаем объект URLRequest(«путь_к_PHP_скрипту»). Ему в data присваиваем URLVariables, в которые предварительно заносим данные необходимые для записи в базу (их может и не быть, если мы, например, читаем из базы). Далее создаем объект URLLoader и вызываем его метод load, в который передаем в качестве параметра наш URLRequest.

Скрипт получает данные, работает с базой и выводит результат через echo.

После этого срабатывает событие COMPLETE у URLLoader'а и в поле data у него лежит результат.
Ответ написан
@ssneg
SWF исполняется у клиента и посылает данные PHP-скрипту методом POST (или GET). Скрипт получает данные и пишет их в таблицу. РНР-код писать не буду, вот то, что на стороне клинта, AS3:

var loader : URLLoader = new URLLoader();
var request : URLRequest = new URLRequest("www.server.com/somescript.php");

request.method = URLRequestMethod.POST;
var variables : URLVariables = new URLVariables();
variables.peremennaja1 = "value1";
variables.peremennaja2 = "value2";
request.data = variables;

// Handlers
loader.addEventListener(Event.COMPLETE, on_complete);
loader.load(request);

function on_complete(e : Event):void{
trace("Всё послано, шеф!");
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы