77223

Конвертор приложений Windows Forms в приложения Silverlight

Курсовая

Информатика, кибернетика и программирование

Первый интернет-сайт был запущен Тимом Бернерс-Ли в 1991 году. Вряд ли кто-то догадывался, какой потенциал заключало в себе это событие. Теперь стало возможно обмениваться гипертекстовыми документами. Любой пользователь Сети мог щелкнуть на ссылке, и сервер выдавал ему требуемый документ.

Русский

2015-02-02

268.5 KB

2 чел.

Санкт-Петербургский государственный университет

математико-механический факультет

Кафедра системного программирования


Конвертор приложений Windows Forms

в приложения Silverlight

Курсовая работа студента 444 группы
Гагарского Алексея Константиновича

Научный руководитель, ст. преп.      ………………       Ю.А.Губанов

Санкт-Петербург

2009

Оглавление 


  1.  Введение

Первый интернет-сайт был запущен Тимом Бернерс-Ли в 1991 году. Вряд ли кто-то догадывался, какой потенциал заключало в себе это событие. Теперь стало возможно обмениваться гипертекстовыми документами. Любой пользователь Сети мог щелкнуть на ссылке, и сервер выдавал ему требуемый документ.

Но со временем пользователю стало мало просто путешествовать по гиперссылкам, потребовались  новые интерактивные возможности для работы и отдыха, общения и досуга. И тогда возможностей гипертекста стало недостаточно.

  1.  Немного о богатых интернет-приложениях

Термин «Web 2.0» [] появился тогда, когда такое отношение к содержимому страниц стало распространенным среди пользователей интернет. Некоторые задачи по добавлению новых интерактивных возможностей были решены с помощью Flash, JavaScript, Java-аплетов и ActiveX-компонент.  

Термин «RIA» (Rich Internet Applications, богатые интернет-приложения) ввела фирма Macromedia в марте 2002 года, выпустившей Macromedia Flash MX, который  содержал революционные возможности, объединенные в одной среде исполнения. Фирма Adobe, купившая Macromedia, продолжила развитие в этом направлении всего семейства продуктов на базе Flash-платформы.

  1.  Требования, предъявляемые к богатым интернет-приложениям

К богатым интернет-приложениям предъявляются следующие требования  []:

  1.  Эффективная высокопроизводительная среда исполнения для кода, контента и взаимодействия. Под эффективностью в данном случае понимается множество факторов. Это и поддержка бинарных протоколов, экономящих трафик и быстрых в обработке, и возможность загружать программный код из внешних источников, и сохранение текущего состояния на стороне клиента, и работа с потоковыми данными, и кэширование кода и содержания, и производительность исполнения программного кода (здесь преимущество у скомпилированных программ), и т. д.
  2.  Интеграция контента, коммуникации и пользовательского интерфейса в одной среде исполнения. Выбранная технология должна иметь встроенную поддержку аудио/видео (в том числе потокового) плюс микрофона и веб-камеры, широких графических возможностей (анимация, векторная графика, визуальные эффекты, переходы, функции работы с текстом), набора пользовательских компонент и, конечно, взаимодействия в реальном масштабе времени. Это касается передачи любых данных, в том числе и мультимедийных.
  3.  Мощная и расширяемая объектная модель. Для создания RIA-приложения, нужен мощный объектно-ориентированный язык программирования, позволяющий эффективно и единообразно управлять всеми возможностями, предоставляемыми средой исполнения (включая графику, медиа и клиент-серверное взаимодействие), на основе богатой событийной модели. Также язык должен иметь мощный интерфейс программирования приложений (API).
  4.  Быстрая разработка приложений (RAD) с помощью повторно используемых компонент. Web представляет собой динамичную, бурно развивающуюся платформу, где очень важно сократить время от возникновения идеи до ее воплощения. При этом необходимо иметь возможность легко вносить изменения в приложение, предоставляя пользователю то, что он хочет в данный момент. Чем лучше предоставляемая среда разработки справляется с визуальным расположением этих компонент, тем быстрее можно получить желаемый результат. Самые современные технологии создания RIA добавляют к таким возможностям декларативное программирование и механизм связывания данных (data binding).
  5.  Возможность использования веб-сервисов, предоставляемых серверами приложений. Ориентация на работу с серверами лишь одного типа — устаревшая парадигма. Современные среды исполнения RIA могут работать с большим числом протоколов и форматов, использовать уже имеющиеся серверы и интегрироваться в существующие решения. Кроме того, важно не упустить из виду поддержку двустороннего обмена сообщениями между клиентом и сервером в реальном времени.
  6.  Возможность работы в офф-лайновом режиме. Не всегда устройства, на которых запущены насыщенные интернет-приложения, могут быть подключены к Интернету. Люди могут испытывать временные трудности с соединением, например, во время путешествий. И тогда традиционные интернет-страницы становятся бессильны. RIA-технологии позволяют хранить уже полученные данные на клиентском компьютере и пользоваться ими при отсутствии соединения с сетью.
  7.  Поддержка большого числа платформ и устройств. Интернет уже по определению лишен привязки к какой-либо конкретной операционной системе, устройству или браузеру. RIA должны запускаться повсюду, выглядеть одинаково и не дискриминировать пользователей менее распространенных систем или браузеров.
    1.  Преимущества  и недостатки RIA

Богатые интернет-приложения обладают следующими преимуществами:

  •  Отсутствие необходимости устанавливать приложения, доступные через браузер.
  •  Снижение нагрузки на сервер, которому не надо на каждый запрос генерировать пользователю всю HTML-страницу, что способствует экономии трафика.
  •  Асинхронность взаимодействия с сервером позволяет пользователю продолжать работу с приложением, когда загружаются данные.

Впрочем, у этих приложений есть и недостатки:

  •  Снижение производительности по сравнению с настольными аналогами.
  •  Необходимость загрузки и установки среды исполнения отпугивает некоторых пользователей.
  •  Невозможность индексации подгружаемого контента, которым оперирует большинство RIA.
  •  Сложность интеграции с браузером – сохранения истории и адресной строки, перетаскивания файлов из операционной системы.
    1.  Обзор RIA-технологий
      1.  Flash-плеер 

Flash-плеер доступен на всех основных платформах и во всех основных браузерах. Кроме того, существует версия для мобильных устройств; по статистике, он установлен на 98% современных компьютеров.

  1.  Adobe Flash

Представляет собой среду разработки приложений для Flash-плеера. Она предназначена прежде всего для медиадизайнеров, аниматоров и художников. Ее основная особенность — наличие иерархически-организованной временной шкалы, благодаря чему удается получать сложные анимации. Сама среда обладает широкими возможностями создания и редактирования графики, импорта аудио- и видеофайлов. Имеется базовый набор компонентов и документация

  1.  Adobe Flex 

Также позволяет разрабатывать приложения на базе Flash-платформы, но без применения временной шкалы. Вместо этого появляется язык разметки MXML, дающий возможность в декларативной форме задавать изменения состояний и переходы между ними. Adobe Flex предназначен исключительно для разработчиков.

  1.  Adobe AIR (Adobe Integrated Runtime)

Позволяет запускать веб-приложения на Рабочем столе. Это могут быть приложения как на базе HTML, так и на базе Flash-платформы. Таким образом, веб-разработчики могут создавать настольные приложения, используя уже существующие навыки. AIR-приложения могут устанавливаться прямо из Интернета.

  1.  Ajax 

Представляет собой смесь технологий, в основе которых лежат язык JavaScript и объект XMLHttpRequest. Благодаря этому приложения могут получать данные с сервера и отображать их без перезагрузки страницы. Формально Ajax не является RIA-технологией, так как не интегрирует в себе медиавозможности, не обладает стандартными средствами прорисовки векторной графики, а JavaScript по-разному исполняется в различных браузерах.

  1.  Java-аплеты

Были самой первой RIA-технологией, которая стала доступной еще в 1995 г. Однако аплеты не получили такого широкого распространения, как, например, Flash-плеер, так как для запуска Java-аплета может требоваться специфическая версия виртуальной машины Java, обладающая большим объемом, при этом не предусмотрено прозрачной для пользователя процедуры ее установки и обновления в браузере.

  1.  Microsoft WPF и Silverlight

WPF (Windows Presentation Foundation) предоставил новый подход к описанию пользовательских интерфейсов, облегчающий взаимодействие разработчиков и дизайнеров. Браузерные WPF-приложения (WPF Browser Applications) могут запускаться в ограниченном числе браузеров на платформе Windows.

Именно на базе WPF и была создана технология Silverlight. Ее первая версия, выпущенная в сентябре 2007 г., сконцентрирована на предоставлении пользователю медиаконтента, в том числе видео высокого разрешения. Microsoft Silverlight представляет собой встраиваемый модуль для браузеров, подобный Adobe Flash Player. Его сердцем является декларативный язык разметки XAML, который изначально был частью WPF.

Что же касается кросс-платформенности, то Microsoft подписала партнерское соглашение с Novell, изготовителем Linux-версии (Moonlight), полностью совместимой с Windows и Macintosh.

Предоставленные Microsoft инструменты разработки, с помощью которых можно создавать Silverlight-приложения, доступны только на платформе Windows.

  1.  Немного о Silverlight

Microsoft Silverlight является официальным названием основанной на XML и .NET технологии под названием WPF/E (Windows Presentation Foundation Everywhere), призванной конкурировать с Adobe Flash от Macromedia и JavaFX от Sun Microsystems. Silverlight представляет собой модуль расширения для браузера, в котором реализованы векторная графика, анимация и средства воспроизведения видео.

Основой возможностей Silverlight является язык XAML (eXtensible Application Markup Language, расширяемый язык разметки приложений)[]. Это XML-декларативный язык, который описывает содержимое страницы, отображаемый подсистемой Silverlight.

С помощью XAML описывается, прежде всего, пользовательский интерфейс. XAML может использоваться как для браузер-базированных приложений, так и для локальных настольных приложений. XAML включает четыре категории элементов: панели, элементы управления, элементы связанные с документом и графические фигуры. Также заявлено семь классов панелей, которые задают принципы отображения вложенных в них элементов. Для задания положения элементов относительно границ родительской панели используются атрибуты, похожие на свойства в объектно-ориентированных языках. Подобный синтаксис более привычен программистам настольных приложений, например так описывается элемент управления «кнопка»:

<Button Name="button1" Content="button1" Click="ClickBut1" Width="75" Height="23" Margin="0, 0, -264,49"/>

Основой технологии Silverlight является модуль расширения для браузера, который обрабатывает XAML и отображает итоговое изображение в поле браузера. Загрузочный файл невелик (менее 10 MБ), и может быть установлен при посещении пользователем узла с содержимым, создававшимся с использованием Silverlight. Модуль предоставляет разработчикам доступ к функциям XAML-страницы; таким образом, становится возможным взаимодействие с содержимым на уровне страницы, и разработчик может, например, создать обработчики событий или управлять содержимым XAML-страницы с помощью JavaScript-кода. Язык XAML очень гибок, как по структуре описания, так и по стилю описания.

Поскольку технически XAML – это XML, он представляет собой простой текст, а значит, не вызывает конфликтов с брандмауэрами, легко доступен для просмотра, и при этом описывает различное содержимое. Некоторые технологии – Java, ActiveX, Flash – в настоящее время широко применяются в дополнение к языкам DHTML, CSS и JavaScript и расширяют содержимое веб-страниц, но их роднит один недостаток – данные передаются в обозреватель в двоичном виде. Такую информацию сложно проверить на предмет безопасности, не говоря уже о сложности ее обновления – для реализации любых изменений требуется повторная загрузка всей страницы, что неудобно для пользователя и зачастую приводит к медленной загрузке веб-страниц. При изменении содержимого страницы средствами Silverlight новый XAML-файл создается на стороне сервера и при  следующем просмотре страницы происходит загрузка только этого файла [].

Итак, с помощью XAML описывается, прежде всего, пользовательский интерфейс,  а логика приложения по-прежнему управляется процедурным кодом на .NET языке. Silverlight включает в себя .NET вместе с CLR (Common Runtime Language - «общеязыковая исполняющая среда» — компонент .NET Framework, виртуальная машина, исполняющая программа), таким образом, предоставлен довольно широкий выбор, на каком .NET языке писать приложение под SilverlightC#, VB или F# [].

Silverlight поставляется с библиотекой, включающей элементы управления, XML веб-сервисы, сетевые компоненты.

Использование технологии Silverlight позволяет:

  •  Разгрузить программиста от процесса "рисования форм". Теперь ему не надо заботиться о внешнем виде программы, об этом позаботится дизайнер. Задача программиста будет заключаться только в описании бизнес-логики приложения.
  •  Отделить данные от их представления. Это означает, что в любой момент можно сменить внешний вид программы, при этом не затрагивая логику работы.
  •  Ускорить процесс разработки веб-приложений благодаря простоте использования XAML для описания страниц.
  •  Предоставить возможность разработчикам настольных приложений быстро переключиться на разработку веб-приложений.


  1.  Постановка задачи

Конвертор приложения на Windows Forms в приложение на Silverlight необходим по следующим причинам:

  1.  Вместо настольного Windows Forms приложения можно получить веб-приложение
  2.  Приложение из Windows Application становится кросс-платформенным
  3.  Способствует дальнейшему развитию приложения, т.к. Windows Forms устаревают

Целью работы является реализация такого конвертора с сохранением внешнего вида и логики работы.

  1.  Варианты реализации

Рассматривались два варианта реализации данного конвертора, которые приведены ниже. Также приводится их сравнение.

  1.  Использование библиотеки

Первым вариантом является использование библиотеки, аналога System.Windows.Forms.dll. В этом случае файл формы необходимо добавить в проект на Silverlight, при компиляции и запуске этого проекта будет создана веб-страница с элементами управления и логикой исполнения, которые присутствовали в форме. Это происходит на этапе компиляции приложения следующим путем: при инициализации страницы вызывается метод Run у приложения Windows Forms, и с помощью подмененной  библиотеки System.Windows.Forms.dll (содержащей уже определения  элементов управления не Windows Forms, а Silverlight) производится замена элементов управления Windows Forms на аналогичные элементы Silverlight []. При каждой компиляции это происходит заново, исходных кодов приложения на Silverlight не генерируется. Соответственно, при этом часть работы должна быть выполнена вручную.

Рис. : Конвертация с использованием библиотеки

  1.  Использование лексического анализатора

Вторым вариантом является использование лексического анализатора, который  разбирает исходный код приложения на Windows Forms (если логика приложения независима от формы, то достаточно разбирать только файлы описания формы). По составленному дереву разбора генерируется исходный код приложения с той же логикой и аналогичными элементами управления на Silverlight [].

Рис. : Конвертация с использованием лексического анализатора

  1.  Сравнение подходов

В случае использования библиотеки, аналогичной System.Windows.Forms.dll, для конвертации файл со всеми данными о форме необходимо скопировать в шаблон приложения на Silverlight. При использовании лексического анализатора достаточно только указать конвертору на нужную папку с приложением, поэтому первый вариант проще реализуем. Не нужно, например, производить анализ исходного кода приложения, но требуется ручное вмешательство для копирования данных, что может снизить скорость конвертации приложений.

В случае с библиотекой преобразование будет происходить при компиляции приложения, во втором – во время работы конвертора, который будет формировать исходные коды нового приложения, т.е. в двух случаях необходимо наличие среды разработки, Visual Studio версии не меньше 2008, которая скомпилирует приложение. Производительность же итоговых приложений в обоих вариантах будет одинакова, т.к. на выходе этих 2 конверторов идентичные по функциональности приложения.

При использовании библиотеки для дальнейшей разработки приложения  необходимо использовать дополнительное ПО (с помощью которого получается веб-страница)  и дорабатывать старое приложение в контексте Windows Forms. Затем необходимо снова все данные о форме каким-либо образом копировать в шаблон приложения на Silverlight и проводить преобразование заново. Во втором варианте на выходе получается готовое самостоятельное приложение на Silverlight, и дальнейшая разработка может происходить уже в контексте Silverlight благодаря получению исходных кодов.

Возможность поддержки новых версий Silverlight зависит от того, насколько существенные изменения будут сделаны в новых версиях – если структура приложения изменена не будет, то версия будет поддерживаться, и от использующихся в исходном приложении элементов управления. Это связано с тем, что в каждой следующей версии Silverlight появляются новые элементы управления (например, в Silverlight 3.0 появился SaveFileDialog),  и если конвертор рассчитан на определенную версию, то новые элементы управления из следующих версий не будут перенесены.

Итоги сравнения приведены в таблице:

Параметр сравнения

Использование библиотеки

Использование лексического анализатора

Возможность получения исходных кодов приложения на Silverlight

+

Возможность не анализировать исходный код приложения на Windows Forms

+

Возможность использовать конвертор единожды и  дальнейшую разработку проводить только с использованием Silverlight

+

Отсутствие ручного вмешательства в работу конвертера

+

Преимущество в  скорости конвертации

+

Производительности итоговых приложений

равны

Таблица 1. Сравнение подходов к реализации конвертора

  1.  Предлагаемое решение

Было решено реализовывать вариант с лексическим анализатором, как более перспективный из-за получения исходных кодов приложения на Silverlight после конвертации.

Работа конвертора состоит из трех основных частей:

  1.  Построение дерева разбора
    1.  Перенос  элементов управления
    2.  Перенос программной логики приложения
    3.  Лексический анализатор и структура дерева

Лексический анализатор строит синтаксическое дерево по исходным файлам форм (*.Designer.cs) приложения Windows Forms, и после работы анализатора имеется набор элементов управления исходного приложения, инициализация которых и задание свойств (расположение, размер и т.п.) содержатся в дереве.

Для построения синтаксического дерева было решено выбрать лексический анализатор  Irony [], отличающийся от других тем, что в качестве примера в нем уже реализована грамматика C#. В дереве, являющемся результатом работы анализатора, присутствует несколько типов вершин, таких как инициализация переменной, выражение и т.п. Для того, чтобы выбрать среди объявления переменных именно элементы управления, тип каждой переменной сравнивается со списком типов элементов управления Windows Forms (т.е. со списком типов элементов управления, которые конвертор может перенести на Silverlight).

  1.  Перенос элементов управления

Из вершин дерева, представляющих собой инициализацию элемента управления, составляется список элементов управления. Также следует учитывать, что некоторые элементы управления расположены не на форме, а на других элементах, например, панель с несколькими кнопками или надписями. Поэтому также составляется список, в котором для каждого элемента управления указан его родитель – элемент, содержащий его.

Заполнение файла описания страницы (*.xaml) происходит следующим образом: проходится список считанных элементов, у которых нет родителей. На каждом шаге этого цикла выполняется считывание из дерева свойств этого элемента (размеры, расположение и т.п.). Эти данные с соответствующим синтаксисом записываются в файл описания страницы. Тоже самое делается для каждой дочерней вершины элемента (если они есть) [].

Рис. : Процесс переноса элементов управления

  1.  Перенос логики

Помимо переноса элементов управления необходимо каким-либо образом переносить и логику, относящуюся к форме, т.к. в Silverlight некоторые свойства имеют отличное от Windows Forms название (например, Checked -> IsChecked) в зависимости от элемента.    Помимо этого, не все методы, свойства и события, реализованные в Windows Forms, реализованы в Silverlight. Поэтому не все методы, свойства и события исходных элементов управления могут быть поддержаны конвертором.

Существуют следующие варианты переноса логики:

  1.  У лексического анализатора нет возможности генерировать код из своего дерева (только наоборот). Поэтому возможно самостоятельно провести обход дерева в глубину, расставляя в нужных местах точки с запятой и скобки (только их отсутствием последовательность листьев дерева отличается  от исходного кода).  

Плюсы: все автоматически

Минусы: реализация сложнее реализации третьего варианта

  1.  Предоставить сделать это пользователю самостоятельно.

Плюсы: отсутствие необходимости  реализации

Минусы: такое приложение может оказаться никому не нужным, т.к. исправлять вручную файл с логикой большой сложной формы может прийтись не всем по вкусу.

  1.  Читать файл формы, например, с помощью StreamWriter, если находится вхождение имени элемента управления в считанную строку (при этом необходимо убедиться, что это именно имя элемента управления, а не начало какого-либо другого имени), а затем вхождение свойства, название которого нужно заменить, то заменяем его нужным свойством:

RadioButton radioButton1 = new RadioButton(); //Designer.cs

......

radioButton1.Checked = true -> radioButton1.IsChecked = true;

Плюсы: все автоматически, реализация проще, чем в первом случае

  1.  Поддерживаемые элементы управления

В качестве одного из результатов разработки конвертора далее перечислены поддерживаемые на данный момент видимые элементы управления:

  •  Button
  •  CheckBox
  •  ComboBox
  •  DateTimePicker
  •  DomainUpDown
  •  GroupBox
  •  HScrollBar
  •  Label
  •  LinkLabel  
  •  ListBox
  •  ListView
  •  MonthCalendar
  •  NumericUpDown
  •  Panel
  •  ProgressBar
  •  RadioButton
  •  TabControl
  •  TextBox
  •  TrackBar
  •  VScrollBar

Теперь поддерживаемые невидимые элементы управления:

  •  MenuStrip
  •  OpenFileDialog  
  •  SaveFileDialog  (для поддержки необходимо установить Silverlight 3.0)
  •  Timer

  1.  Дальнейшее развитие

Дальнейшее развитие приложения может идти по пути добавления новых элементов управления, их свойств, методов и событий. Новые элементы могут добавляться как с помощью использования новых версий Silverlight, так и путем собственной реализации.

  1.  Список используемой литературы
  2.  Web2.0: http://www.computerra.ru/think/234100/

  1.  RIA:  http://www.osp.ru/pcworld/2008/03/4950952/

  1.  http://ru.wikipedia.org/wiki/XAML
  2.  http://msdn.microsoft.com/ru-ru/library/bb404300.aspx
  3.  Matthew MacDonald – Pro Silverlight 2 in C# 2008
  4.  http://www.codeplex.com/irony


 

А также другие работы, которые могут Вас заинтересовать

62394. Язык и речь. Общие сведения о языке и речи 24.6 KB
  Язык как и все другие человеческие способности входит в социальный опыт человечества развивается вместе с человеческим обществом и усваивается каждым отдельным человеком только благодаря общению с другими людьми.
62397. Словарное богатство русского языка 29.16 KB
  Обратить внимание на информационное и словесное богатство русского языка. Поговорить о важности расширения словарного запаса. Развивать навыки работы со словарями.
62398. СОЦИАЛЬНЫЕ ОТНОШЕНИЯ И ВЗАИМОДЕЙСТВИЯ 15.87 KB
  В повседневной жизни мы совершаем множество элементарных актов социального взаимодействия например: мы приветствуем человека в автобусе мы уступаем место пожилым и др. Взаимодействия осуществляются на разных уровнях: 1 межличностные; 2 личностно-групповые; 3 межгрупповые.
62399. Социология как наука 24.46 KB
  Отраслевые теории формируются на стыках социологии с другими науками например экономическая социология политическая социология социология права и др. Объектом политологии то что исследуется является политическая реальность и ее различные стороны и отношения.