One approach for advanced internet-programs creation on example of widget-programs developing

Considers use of methodology for advanced internet-programs creation on base of Adobe Flex 2.0, using design patterns and architecture shell. Approach illustrated by developing widget-programs.Problems in programming 2011; 4: 49-55

Gespeichert in:
Bibliographische Detailangaben
Datum:2025
Hauptverfasser: Glybovets, M.M., Koval, I.V., Koren, O.M.
Format: Artikel
Sprache:English
Veröffentlicht: PROBLEMS IN PROGRAMMING 2025
Schlagworte:
Online Zugang:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/825
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Institution

Problems in programming
id pp_isofts_kiev_ua-article-825
record_format ojs
resource_txt_mv ppisoftskievua/12/48ce7a4f4ee7735f8001a25509875512.pdf
spelling pp_isofts_kiev_ua-article-8252025-09-02T15:42:07Z One approach for advanced internet-programs creation on example of widget-programs developing Создание развитых интернет-программ на примере построения виджет-программ Створення розвинених інтернет-програм на прикладі побудови віджет-програм Glybovets, M.M. Koval, I.V. Koren, O.M. UDC 004.4 УДК 004.4 Considers use of methodology for advanced internet-programs creation on base of Adobe Flex 2.0, using design patterns and architecture shell. Approach illustrated by developing widget-programs.Problems in programming 2011; 4: 49-55 Рассмотрено применение методологии создания развитых Интернет-программ на основе Adobe Flex 2.0 с применением паттернов проектирования и архитектурного каркаса. Подход проиллюстрирован построением виджет-программ.Problems in programming 2011; 4: 49-55 Розглянуто застосування методології створення розвинених інтернет-програм на основі Adobe Flex 2.0 з використання патернів проектування та архітектурного каркасу. Підхід проілюстровано побудовою віджет-програм.Problems in programming 2011; 4: 49-55 PROBLEMS IN PROGRAMMING ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПРОБЛЕМИ ПРОГРАМУВАННЯ 2025-09-02 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/825 PROBLEMS IN PROGRAMMING; No 4 (2011); 49-55 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 4 (2011); 49-55 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 4 (2011); 49-55 1727-4907 en https://pp.isofts.kiev.ua/index.php/ojs1/article/view/825/877 Copyright (c) 2025 PROBLEMS IN PROGRAMMING
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2025-09-02T15:42:07Z
collection OJS
language English
topic
UDC 004.4
spellingShingle
UDC 004.4
Glybovets, M.M.
Koval, I.V.
Koren, O.M.
One approach for advanced internet-programs creation on example of widget-programs developing
topic_facet
UDC 004.4

УДК 004.4


format Article
author Glybovets, M.M.
Koval, I.V.
Koren, O.M.
author_facet Glybovets, M.M.
Koval, I.V.
Koren, O.M.
author_sort Glybovets, M.M.
title One approach for advanced internet-programs creation on example of widget-programs developing
title_short One approach for advanced internet-programs creation on example of widget-programs developing
title_full One approach for advanced internet-programs creation on example of widget-programs developing
title_fullStr One approach for advanced internet-programs creation on example of widget-programs developing
title_full_unstemmed One approach for advanced internet-programs creation on example of widget-programs developing
title_sort one approach for advanced internet-programs creation on example of widget-programs developing
title_alt Создание развитых интернет-программ на примере построения виджет-программ
Створення розвинених інтернет-програм на прикладі побудови віджет-програм
description Considers use of methodology for advanced internet-programs creation on base of Adobe Flex 2.0, using design patterns and architecture shell. Approach illustrated by developing widget-programs.Problems in programming 2011; 4: 49-55
publisher PROBLEMS IN PROGRAMMING
publishDate 2025
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/825
work_keys_str_mv AT glybovetsmm oneapproachforadvancedinternetprogramscreationonexampleofwidgetprogramsdeveloping
AT kovaliv oneapproachforadvancedinternetprogramscreationonexampleofwidgetprogramsdeveloping
AT korenom oneapproachforadvancedinternetprogramscreationonexampleofwidgetprogramsdeveloping
AT glybovetsmm sozdanierazvityhinternetprogrammnaprimerepostroeniâvidžetprogramm
AT kovaliv sozdanierazvityhinternetprogrammnaprimerepostroeniâvidžetprogramm
AT korenom sozdanierazvityhinternetprogrammnaprimerepostroeniâvidžetprogramm
AT glybovetsmm stvorennârozvinenihínternetprogramnaprikladípobudovivídžetprogram
AT kovaliv stvorennârozvinenihínternetprogramnaprikladípobudovivídžetprogram
AT korenom stvorennârozvinenihínternetprogramnaprikladípobudovivídžetprogram
first_indexed 2025-09-17T09:24:29Z
last_indexed 2025-09-17T09:24:29Z
_version_ 1843502587373944832
fulltext Програмування для комп’ютерних мереж та Internet УДК 004.4 Н.Н. Глибовец, И.В. Коваль, А.Н. Корень СОЗДАНИЕ РАЗВИТЫХ ИНТЕРНЕТ-ПРОГРАММ НА ПРИМЕРЕ ПОСТРОЕНИЯ ВИДЖЕТ-ПРОГРАММ Рассмотрено применение методологии создания развитых Интернет-программ на основе Adobe Flex 2.0 с применением паттернов проектирования и архитектурного каркаса. Подход проиллюстрирован по- строением виджет-программ. Введение Формирование нового подхода все- гда ставит ряд вопросов, связанных с его эффективностью, целесообразностью, на- личием преимуществ и недостатков, сфе- рами применения. Не стала исключением технология развитых Интернет-программ (РИП) как новый шаг в эволюции Интер- нет-программ, отразивший постепенный, однако неизбежный переход веб- приложений от простой модели тонкого клиента к развитой модели распределен- ных функций [1]. Продемонстрируем применение технологии Adobe Flex 2.0. Разработчики Flex-приложений пишут код MXML и ActionScript в интегрированной среде раз- работки Flex Builder или в традиционных текстовых редакторах. Flex framework – компонентно- ориентированный программный каркас разработки РИП для Flash Player среды исполнения [2], включающей MXML, ActionScript и библиотеку классов Flex. Предоставляет богатый набор расширяе- мых компонентов для интерфейса (более 100 компонентов и контейнеров), гибкую модель для контроля размещения и взаи- модействия с пользователем, устойчивую к ошибкам инфраструктуру доступа к дан- ным через удаленные сервисы, связывание этих данных с объектами данных и кон- троллерами интерфейса. Язык MXML (Multimedia eXtensible Markup Language) обеспечивает декларативный подход к со- зданию визуального представления РИП, а ActionScript 3.0 – мощный объектный язык программирования. Библиотека классов Flex содержит набор классов, компоненты, менеджеры размещения и сервисные компоненты. Ис- пользуя компонентно-ориентированную модель разработки Flex, разработчики мо- гут использовать встроенные компоненты, создавать композитные компоненты из встроенных или создавать новые, расши- ряя встроенные компоненты или их клас- сы. Для достижения эффективности разработки Flex РИП, их масштабируемо- сти и удобства поддержки, целесообразно учитывать паттерн разработки модель- представление-контроль. Удачным архи- тектурным каркасом для построения Flex РИП является Cairngorm, который базиру- ется на MVC паттерне. Использование предлагаемой мето- дологии создания Flex РИП продемонст- рируем на примере разработки РИП, кото- рая предоставляет пользователю набор виджетов (часы, новости, калькулятор, блокнот, список задач и т.п.) и панель для управления ими. Как мини-программы, виджеты обеспечивают определенную функциональность. Далее для обозначения созданной РИП используем название "РИП персонализированных виджетов". 1. Создание и настройка про- екта в Flex Для создания любой Flex РИП целе- сообразно использовать интегрированную среду разработки Adobe Flex Builder 2, что позволяет работать с библиотеками клас- сов Flex, языками программирования MXML и ActionScript 3.0 и компилятором для Flex-приложений. В Flex Builder все Flex-приложения содержатся в проектах. Для разработки РИП персонализирован- 49 © Н.Н. Глибовець, И.В. Коваль, А.Н. Корень, 2011 ISSN 1727-4907. Проблеми програмування. 2011. № 4 Програмування для комп’ютерних мереж та Internet ных виджетов использовался базовый тип проекта (Basic), предусматривающий дос- туп к данным с помощью XML или веб- сервисов на PHP / JSP / ASP.NET. Всего есть три типа проектов: Basic, ColdFusion Flash Remoting Service и Flex Data Services. Визард для нового Flex-проекта ав- томатически генерирует конфигурацион- ные файлы проекта, папку для результата проекта (bin), где будут размещаться скомпилированные SWF-файлы и основ- ной файл проекта будет иметь расширение mxml. Основной файл проекта сразу после создания будет иметь такое же название, как и проект, однако целесообразно пере- именовывать его в index.mxml. Когда проект создан, необходимо подключить внешние библиотеки. РИП персонализированных виджетов базирует- ся на архитектурном каркасе Cairngorm, поэтому надо подключить библиотеку cairngorm.swc. Библиотека cairngorm.swc общедоступна, ее можно взять из http://labs.adobe.com/wiki/index.php/Cairn- gorm:Downloads. Подключение библиоте- ки осуществляется в окне свойств проекта в разделе Flex Build Path на вкладке Library path с помощью кнопки Add SWC (Рис. 1 и 2). Рис. 1. Подключение библиотеки cairngorm.swc Рис. 2. Указание пути к дополнительным файлам с исходным кодом 50 Програмування для комп’ютерних мереж та Internet Для реализации РИП персонализи- рованных виджетов использовалась также общедоступная библиотека эффектов DistortionEffects.swc (http://weblogs.macromedia.com/auhlmann/ar chives/DistortionEffects.zip). Подключается аналогично библиотеке Cairngorm [3]. Проект Flex РИП может использо- вать дополнительные файлы с исход- ным кодом. Это один из способов обес- печения повторного использования компо- нентов. Для РИП персонализированных виджетов используются исходные файлы компонентов ResizableWindow и Debug (разработанные ранее), размещен- ные в отдельной папке под названием components. Пути к ним прописаны в окне свойств проекта в разделе Flex Build Path на вкладке Source path с помощью кнопки Add Folder. Изначальное содержание in- dex.mxml будет иметь следующий вид: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/20 06/mxml" layout="absolute"> </mx:Application> 2. Архитектура РИП персо- нализированных виджетов В создании архитектуры РИП целе- сообразно руководствоваться рекоменда- циями архитектурного каркаса Cairngorm. Согласно документации Cairngorm API содержит ряд пакетов. Flex-проект имеет такую структуру папок: • business – содержит классы, отве- чающие за обмен данными с серверной частью, использование сервисов; • commands – содержит классы для различных команд; классы команд реали- зуют интерфейс Command архитектурного каркаса и интерфейс IResponder (mx.rpc.IResponder); • control – содержит классы собы- тий, каждый из которых расширяет класс CairngormEvent архитектурного каркаса, и обработчик этих событий, расширяющий класс FrontController архитектурного кар- каса Cairngorm; • model – содержит классы, форми- рующие модель РИП, один из классов реа- лизует интерфейс ModelLocator архитек- турного каркаса; • view – содержит набор классов, формирующих пользовательский интер- фейс; • vo – содержит классы с описания- ми объектов для обмена между разными уровнями программы, (классы реализуют интерфейс ValueObject архитектурного каркаса). Структуру проекта можно расши- рить другими папками. В частности проект РИП персонализированных виджетов со- держит папку skin с файлом CSS для опи- сания стилей Flex компонентов и с файла- ми SWF, содержащими графические эле- менты, из которых формируется визуаль- ное представление каждого виджета и РИП в целом. Также есть папка constants с клас- сом, который содержит все константы РИП. 3. Структура и взаимосвязи в РИП персонализированных виджетов На структуру РИП персонализиро- ванных виджетов и взаимосвязи внутри РИП повлиял MVC паттерн и архитектур- ный каркас Cairngorm. Каждый из видже- тов имеет свое представление, т. е. собст- венный MXML файл с описанием его вида и заданием внутренней функциональности, которое не влияет на состояние модели. Каждый виджет расширяет класс Widget, который в свою очередь реализует интер- фейс IWidgetView. С каждым виджетом связывается его контроллер, расширяющий класс WidgetController, что в свою очередь реа- лизует интерфейс IWidgetController. Все контроллеры виджетов являются классами, входящими в состав модели РИП персона- лизированных виджетов. Контроллер со- держит данные, необходимые виджету, и отвечает за связь виджета с остальными элементами РИП. Для нового виджета используем WidgetFactory, реализующий паттерн Factory. Виджет может инициировать ряд событий. Каждому событию соответствует свой класс. Например, OpenWidgetEvent, RemoveWidgetEvent, SaveWidgetDataEvent 51 http://weblogs.macromedia.com/auhlmann/archives/DistortionEffects.zip http://weblogs.macromedia.com/auhlmann/archives/DistortionEffects.zip Програмування для комп’ютерних мереж та Internet используются всеми виджетами РИП. Од- нако специальные события можно ини- циировать только определенным видже- том, например, LoadRadioDataEvent, LoadNewsEvent, LoadCalendarDataEvent. Все события обрабатывает класс MYFNFrontController. В результате конкретного события выполняется заранее определенная коман- да. Каждая команда связана с обращением к серверу и имеет три public метода: execute, result и fault. Метод execute содер- жит инструкции, которые необходимо вы- полнить о передаче полномочий делегату веб-сервиса. Метод result вызывается, ко- гда успешно получен результат взаимо- действия РИП с сервисом, а метод fault – в случае неудачи (содержит код ошибки). Все доступные для РИП сервисы описаны в Services.mxml, расширяющем класс ServiceLocator архитектурного кар- каса Cairngorm. Делегаты (Delegate) отве- чают за обращение к конкретному сервису, передачу ему параметров и связывание результата взаимодействия сервиса с ко- мандой, которая делегировала вызов сер- виса. Активизация виджета в РИП и его удаление осуществляется посредством па- нели управления виджетами. Некоторые из виджетов, такие как радио и калькулятор, могут иметь только один экземпляр, ос- тальные - произвольное количество. Мо- дель РИП персонализированных виджетов реализует механизм отслеживания актив- ных виджетов. 4. Схема добавления виджета Рассмотрим схему добавления но- вого виджета радио для иллюстрации ас- пектов, описанных в предыдущем разделе. Прежде всего в папке view для нового виджета создаем представление как описа- ние графического отображения RadioWidget.mxml посредством языка MXML. Функции RadioWidget.mxml соз- даются посредством языка ActionScript 3.0 и размещаются в тезисе Script: <mx:Script> <![CDATA[ // код мовою ActionScript ]]> </mx:Script> Для представления виджета созда- ется контроллер RadioController.as в папке model/widgets. К константам РИП в MYFNConstansts.as добавляется новая константа, соответствующая названию нового виджета для его идентификации: public static const WID- GET_RADIO:String = "RadioWidget"; В WidgetFactory.as добавляется возможность создания нового виджета радио. К DashboardView.mxml, содержа- щему панель управления виджетами, до- бавляется новая кнопка, отвечающая за активацию виджета радио. С каждой кноп- кой, которая является экземпляром класса ToolbarIcon.mxml, связано событие OpenWidgetEvent, параметром которого является название виджета. private function clickI- con(name:String):void { var event:OpenWidgetEvent = new OpenWidgetEvent(name); CairngormEventDispatcher.getInsta nce().dispatchEvent(event);} Конструктор классса OpenWidgetEvent, расширяющий класс CairngormEvent, имеет следующий вид: public function OpenWidgetEvent (widgetName:String, wid:String = null) { super(MYFNFrontControll er.OPEN_WIDGET); this.widgetName = widgetName; this.wid = wid;} Класс MYFNFrontController обраба- тывает событие OpenWidgetEvent, с кото- рым связана команда OpenWidgetCommand: public function MYFNFrontController() { addCommand(OPEN_WIDGET, OpenWidgetCommand); ...} Для радио необходимо загрузить с сервера список радиостанций, которые будут проигрываться с помощью виджета. С этой целью следует создать событие LoadRadioDataEvent и соответствующую команду LoadRadioDataCommand. 52 Програмування для комп’ютерних мереж та Internet Класс LoadRadioDataEvent имеет вид: package control { import model.widgets.IWidgetController; import com.adobe.cairngorm.control.Cairn gormEvent; public class LoadRadioDataEvent extends CairngormEvent { public var widgetController:IWidgetControlle r; public function LoadRadioDataEvent (widgetController: IWidgetController) { su- per(MYFNFrontController.LOAD_RADI O_DATA); this.widgetController = widgetController; } } } Класс LoadRadioDataCommand может опи- сать следующим образом: package commands { import com.adobe.cairngorm.commands.Comm and; import mx.rpc.IResponder; ... import model.MYFNModelLocator; public class LoadRadioDataCommand implements Command, IResponder { private var widgetController:RadioController; public function execute(event:CairngormEvent):voi d { widgetController = RadioController( LoadRadioDataEvent(event).widgetC ontroller); var delegate:LoadRadioDataDelegate = new LoadRadioDataDelegate(this); var authTicket:String = MYFNModelLocator. getInstance().authTicket; delegate.loadService(au thTicket); } public function result(data:Object):void { try { var xml:XML = MYFNU- tils.strToXML(data.result); widgetController.resultStati ons( xml.LoadRssResult); } catch (e:Error) { Debug.write(e.message); } } public function fault(info:Object):void { De- bug.write(FaultEvent(info).fault. faultString); } } } Инициализация события LoadRadioDataEvent происходит в методе loadStations класса RadioController с помо- щью CairngormEventDispatcher: public function loadStations ():void { var event:LoadRadioDataEvent = new LoadRadioDataEvent(this); CairngormEventDispatcher.get Instance().dispatchEvent(event);} После инициализации событие бу- дет обработано в MYFNFrontController. Он определяет, какую команду выполнить при условии наступления того или иного собы- тия. Поэтому в MYFNFrontController необ- ходимо добавить следующий код: public static var LOAD_RADIO_DATA:String = "load radio data"; public function MYFNFrontController() { ... addCommand(LOAD_RADIO_D ATA, LoadRadioDataCommand); ...} Таким образом создано событие и добавлен код, который отвечает за его инициализацию. Обработчик событий бу- дет анализировать новое событие, связы- вая с ним созданную команду. Теперь пе- реходим к созданию делегатора LoadRadioDataDelegate, вызываемого ко- мандой LoadRadioDataCommand. Сначала следует задать сервис, который будет ис- пользовать делигатор. Описать сервис не- 53 Програмування для комп’ютерних мереж та Internet обходимо в Services.mxml, используя та- кой код, к примеру: <mx:WebService id="rssService" wsdl="http://www.flexmonster .com/myfn/RssService.asmx?wsdl" showBusyCursor="true"> <mx:operation name="LoadRss" resultFormat="xml"> <mx:request> <authTicket></authTicket> <url></url> <login></login> <password></password> </mx:request> </mx:operation> </mx:WebService> Делегат LoadRadioDataDelegate от- вечает за обращение к сервису rssService. Он обеспечивает передачу параметров authTicket, url, login и password сервису и связывание результата взаимодействия сервиса с командой, которая делегировала вызов сервиса. Ниже приведен код LoadRadioDataDelegate: package business { import mx.rpc.IResponder; import com.adobe.cairngorm.business.ServiceLocator; import mx.rpc.AsyncToken; import constants.MYFNConstansts; import mx.rpc.soap.WebService; public class LoadRadioDataDelegate { protected var command:IResponder; protected var service:Object; public function LoadRadioDataDelegate (command:IResponder) { this.service = ServiceLocator.getInstance(). getWebService("rssService") as WebService; this.command = command; } public function loadService(authTicket:String):void { var url:String = MYFNConstansts.RADIO_LINK; var login:String = MYFNConstansts.RADIO_LOGIN; var password:String = MYFNConstansts.RADIO_PASSWORD; service.loadWSDL(); var token:AsyncToken = service.LoadRss(authTicket, url, login, password); token.addResponder(command); } } } Так происходит добавление нового виджета в разработанную РИП. Выводы Развитые Интернет-программы как новый подход к созданию веб-систем, ко- торые реализуют модель клиент-серверной архитектуры с толстым клиентом. Они используют преимущества асинхронного режима взаимодействия с сервером, разви- вают сервисно-ориенти-рованную архи- тектуру и самого сервисно- ориентированного клиента. Комплексным решением для по- строения развитых интернет-программ видится технология Adobe Flex 2.0, на базе которой создана методология разработки РИП, продемонстрированная на примере 54 Програмування для комп’ютерних мереж та Internet разработки развитой интернет-программы, предоставляющей пользователю набор виджетов (часы, новости, калькулятор, блокнот, список задач) и панель для управления ими. 1. Driver. M., Valdes. R., Phifer. G. Rich Internet Applications Are the Next Evolution of the Web // Technical report, Gartner. – 2005. – P. 6–23. 2. Webster. S. Developing Flex RIAs with Cairngorm Microarchitecture / S. Webster // Adobe Consulting [Electronic resource]. – Available at: http://www.adobe.com/devnet/flex/articles/cai rngorm_pt1.html 3. Flex Application Design for Cairngorm [Electronic resource]. – Available at: http://www.digimmersion.com/support/Flex% 20UI%20Design %20For%20Cairngorm.pdf 4. Colin M. Essential ActionScript 2.0 // O'Reilly. – 2004. – 544 p. Получено 06.04.2011 Про авторів: Глибовець Микола Миколайович, доктор фізико-математичних наук, професор, декан факультету інформатики Національного університету «Києво- Могилянська Академія», Корень Олександр Миколайович, пошукувач, Коваль Ірина Володимирівна, магістр. Місце роботи авторів: Національний університет «Києво-Могилянська Академія», 04071, Київ, вул. Г. Сковороди, 2. Тел.: 067 209 0740. glib@ukma.kiev.ua 55 http://www.digimmersion.com/support/Flex%20UI%20Design http://www.digimmersion.com/support/Flex%20UI%20Design СОЗДАНИЕ РАЗВИТЫХ ИНТЕРНЕТ-ПРОГРАММ НА ПРИМЕРЕ ПОСТРОЕНИЯ ВИДЖЕТ-ПРОГРАММ Выводы