Macromedia Flash предоставляет огромные возможности по формированию пользовательского представления веб-ресурсов и мультимедиа. Фактически можно утверждать, что эта технология стала одним из наиболее популярных стандартов. В то же время обработка бизнес-логики, доступ к данным и их безопасность никогда не являлись ее сильными сторонами. Да, с выходом ActionScript 2.0 существенно расширены возможности обмена данными, интеграции с внешними приложениями. Однако собственные возможности Flash по-прежнему несопоставимы с технологиями Java и .NET в части работы с базами данных, обеспечения безопасных соединений, аутентификации пользователей и поддержки пользовательских сессий.
Что ж, необходимо использовать сильные стороны Macromedia Flash в части представления контента, а нововведения ActionScript использовать для интеграции с .NET при работе с базами данных, XML-представлениями и при управлении пользовательскими сессиями. В частности, рассмотрим, как можно использовать механизмы работы с внешними данными во Flash. Существует три технологии интеграции внешних данных во Flash: FlashVars, LoadVars и новая технология FlashRemoting. Рассмотрим их по порядку.
Свойство FlashVars должно устанавливаться в тегах и OBJECT, и EMBED. Тогда данная функция будет работать в любом браузере. Рассмотрим пример:
<PARAM Name="FlashVars" Value="name=Vasya&UserId=2574">
<EMBED src="test.swf" FlashVars="name=Vasya&UserId=2574"></EMBED>
В приведенном примере в ролик передаются два параметра — имя и идентификатор пользователя. Все данные, передаваемые через FlashVars, доступны в ролике на корневом уровне (_level0).
Доступ к базе данных через ASPX-страницы
Взаимодействие с реляционными СУБД
Для доступа к базе данных из ролика необходимо использовать промежуточный программный слой, например, с использованием технологии .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-пакетами
Поддержка работы с XML-данными
Flash MX содержит три метода для работы с XML-пакетами: send, load и sendAndLoad. Для создания XML-пакета во Flash MX достаточно выполнить метод send:
var sendXML:XML = new XML("<id>111</id><user>Иванов</user>");
Обратите внимание, что метод send всегда открывает новое окно браузера.
Метод sendAndLoad предназначен для формирования и отправки XML-объекта и получения ответного XML-пакета из указанного источника:
xmlObject.sendAndLoad(URL: String, targetXMLObject: XML): Void,
где
- xmlObject — экземпляр обрабатываемого XML-объекта;
- URL — адрес aspx-страницы, в которую отправляется XML-объект;
- targetXMLObject — объект, возвращаемый ASPX-страницей.
Приведем пример кода ActionScript:
var ResponseXMLObj:XML = new 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 = new XmlDocument();
fromFlashXML0.Load(Request.InputStream); // Загружаем XML-объект как поток.
FlashXmlProcessor flashXmlprocessor1 = new 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.
Ссылки по теме
- Flash and .NET Integration Using ASP.NET
- Cross Domain Data Loading
Статья получена: hostinfo.ru