Інтеграція додатків Flash та, Hostinfo

hostinfo

Macromedia Flash надає величезні можливості формування уявлення веб-ресурсів і мультимедіа. Фактично можна стверджувати, що ця технологія стала одним із найпопулярніших стандартів. Водночас обробка бізнес-логіки, доступ до даних та їхня безпека ніколи не були її сильними сторонами. Так, з виходом ActionScript 2.0 істотно розширено можливості обміну даними, інтеграції із зовнішніми програмами. Однак власні можливості Flash, як і раніше, не можна порівняти з технологіями Java і .NET в частині роботи з базами даних, забезпечення безпечних з'єднань, автентифікації користувачів і підтримки сесій.

Що ж, необхідно використовувати сильні сторони Macromedia Flash в частині представлення контенту, а нововведення ActionScript використовувати для інтеграції з .NET при роботі з базами даних, XML-уявленнями і при керуванні сесіями користувача. Зокрема, розглянемо, як можна використовувати механізми роботи із зовнішніми даними у Flash. Існує три технології інтеграції зовнішніх даних у Flash: FlashVars, LoadVars та нова технологія FlashRemoting. Розглянемо їх у порядку.

Властивість FlashVars має встановлюватися в тегах і OBJECT, і EMBED. Тоді ця функція буде працювати в будь-якому браузері. Розглянемо приклад:

У наведеному прикладі ролик передаються два параметри - ім'я та ідентифікатор користувача. Всі дані, що передаються через FlashVars, доступні у ролику на кореневому рівні (_level0).

Доступ до бази даних через ASPX-сторінки

hostinfo

Для доступу до бази даних із ролика необхідно використовувати проміжний програмний шар, наприклад, з використанням технології .NET. У цьому випадку схема доступу до даних виглядатиме, якце представлено малюнку. Програма користувача реалізована як ролик на основі Macromedia Flash. Дані надходять у ролик через код ActionScript, який вони, у свою чергу, надходять з ASPX-сторінки. Сторінка ASPX забезпечує повноцінний доступ до сховища даних (бази або файлу XML) на основі технологій .NET.

Розглянемо метод loadVariables мови ActionScript. Цей метод призначений для завантаження даних, які передаються методом GET протоколу HTTP. Очевидно, що його можна використовувати для передачі даних не тільки з ASP-сторінок, але й з інших. Змоделюємо ситуацію роботи веб-додатку. Нехай у флеш-ролику користувачеві пропонується вказати номер своєї клубної картки – cardID. Далі номер картки передається в ASP-додаток, який генерує запит до бази даних. Результатом запиту є ім'я користувача – userName та баланс його особового рахунку – userAccount. Перший крок – передача ідентифікатора з коду ActionScript:

OnClipEvent(load) loadvariables("getData.aspx?cardID=111", this); >

Тепер обробимо ці дані в code-behind-сторінці ASPX-додатку, реалізованого на C#:

public class getUserData: System.Web.UI.Page private void Page_Load(object sender, System.EventArgs e) // Отримуємо дані запиту. string userID = Request.QueryString("cardID"); > >

Тепер необхідно на ASPX-сторінці сформувати фрагмент коду обробки бізнес-логіки, який відповідатиме за з'єднання з базою даних та отримання результатів запиту:

UserData userrequest = New UserData(); // UserData - об'єкт типу Dataset. User = userrequest.getData("userID"); // Передаємо дані до програми Macromedia Flash. Response.Write("userName=" & User.name); Response.Write(userBalance=" &user.Balance);

Нарешті, необхідно прийняти результати запиту до бази в ActionScript-код:

OnClipEvent(data); flashUserName = userName; flashUserBalance = userBalance;

Зверніть увагу, що в коді ActionScript імена змінних повинні точно відповідати іменам змінних, що передаються в коді C#.

Обмін XML-пакетами

Flash MX містить три методи для роботи з XML-пакетами: send, load та sendAndLoad. Для створення XML-пакета у Flash MX достатньо виконати метод send:

var sendXML:XML = new XML("111 Іванов");

Зауважте, що метод send завжди відкриває нове вікно браузера.

Метод sendAndLoad призначений для формування та відправки XML-об'єкта та отримання відповідного XML-пакета із зазначеного джерела:

xmlObject.sendAndLoad(URL: String, targetXMLObject: XML): Void ,

Наведемо приклад коду ActionScript:

var ResponseXMLObj:XML = новий XML(); ResponseXMLObj.onLoad = funcOnLoad; // Тут funcOnLoad - функція перевірки об'єкта, що приймається. xmlObject.sendAndLoad("https://server/dataparse.aspx", ResponseXMLObj); function funcOnLoad(isOK:boolean) if(isOK) // Код обробки бізнес-логіки, який виконується, якщо операція прийому XML-об'єкта успішна. > >

Тепер розглянемо клас C#, який виконує функцію прийому XML-об'єкта від Flash MX:

public class GetFromFlash: System.Web.UI.Page private void Page_Load(object Sender, System.EventArgs e) XmlDocument fromFlashXML0 = null; Result res = new Result(); fromFlashXML0 = новий XmlDocument(); fromFlashXML0.Load(Request.InputStream); // Завантажуємо XML-об'єкт як потік. FlashXmlProcessor flashXmlprocessor1 = новий FlashXmlProcessor(); flashXmlprocessor1.ProcessXml(fromFlashXML0); // Передаємо документ XML-парсеру. Response.ContentType("text/xml"); Response.Write(XmlHelper.Serialize.Xml(typeof(Result),res)); // Серіалізуємо об'єкт повернення XML-об'єкта. Клас Result визначає структуру XML-документа, що повертається. > >

Ми розглянули основні способи спільного використання технологій Flash і ASP.NET для реалізації комплексних веб-рішень, що містять як функціональність роботи з даними, так і потужні уявлення користувача.

У статті використані матеріали корпорації Intel та матеріали офіційного сайту Macromedia корпорації Adobe.