Опубликован: 01.03.2010 | Доступ: свободный | Студентов: 958 / 46 | Оценка: 4.38 / 4.31 | Длительность: 09:26:00
Лекция 4:

Создание бизнес-приложений Silverlight с использованием .NET RIA сервисов

< Лекция 3 || Лекция 4: 123456 || Лекция 5 >

Уникальные возможности

Есть вещи, которые поддерживает только одна из технологий.

WPF.

В WPF в отличие от Silverlight имеются функции печати, синтезатора речи, распознавания речи и др., поддержка тем и скинов (skins), "горячие клавиши".

Silverlight. (подробнее см. раздел )

  1. Приложению Silverlight не обязательно перегружать целую страницу для изменения одной ее части. Silverlight может вызывать методы JavaScript и наоборот и взаимодействовать с HTML document object model (DOM).

    Вызов методов JavaScript из кода

    using System.Windows.Browser;
    // call a method 
    HtmlPage.Window.Eval("customMethod();"); 
    // use invoke syntax 
    HtmlPage.Window.Invoke("customMethod"); 
    // use invoke syntax with parameters 
    HtmlPage.Window.Invoke("customMethod", "param1", 12); 
    // use invoke syntax and get return value. 
    string name = (string) HtmlPage.Window.Invoke("getName");

    Вызов методов кода из JavaScript (в коде необходимо указать атрибуты [ScriptableType] перед классом и [ScriptableMember] перед методом)

    <script type="text/JavaScript"> 
    function onPluginLoaded() 
    { 
      var sl = $get("Xaml1"); // Use ID associated with plugin. 
      var sm = sl.content.SilverlightMethods;
      var name = sm.GetUserName(); // Case sensitive. 
    } 
    </script>
  2. Поддержка высококачественного видео и звука на базе технологии Smooth Streaming: качество картинки меняется автоматически в режиме реального времени в зависимости от скорости передачи данных и мощности компьютера пользователя (подробно в разделе ).
  3. Работа с фотографиями на базе технологии Deep Zoom: технология усиленного масштабирования Deep Zoom предлагает новый стандарт просмотра и создания изображений со сверхвысоким разрешением, обеспечивая плавное и точное масштабирование и панаромирование (подробно в разделе )

Триггеры

WPF и Silverlight 3 поддерживают триггеры. Кроме триггеров Silverlight поддерживает Visual State Manager. В будущих реализациях в WPF также будет класс Visual State Manager, увеличивая сходство обеих технологий.

В настоящее время Silverlight XAML поддерживает только один тип триггеров - EventTrigger. Каждое свойство пользовательского интерфейса имеет коллекцию Triggers, которая используется для определения одного или более триггеров (т.е. одного или более объектов EventTrigger ). Итак, первый шаг в добавлении триггера в элемент управления - создание его коллекции триггеров. Затем в эту коллекцию необходимо будет добавить, по крайней мере, один триггер события. Например, если необходимо при загрузке страницы добавить анимацию, то это выглядит следующим образом:

<Rectangle x:Name="MyAnimatedRectangle"
           Width="100"
           Height="100"
           Fill="Blue">
  <Rectangle.Triggers>
    <EventTrigger RoutedEvent="Rectangle.Loaded">
      <BeginStoryboard>
        <Storyboard>
          <DoubleAnimation Storyboard.TargetName="MyAnimatedRectangle"
                 Storyboard.TargetProperty="Opacity"
                 From="1.0" 
                 To="0.0" 
                 Duration="0:0:5" 
                 AutoReverse="True" 
                 RepeatBehavior="Forever" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Rectangle.Triggers>
</Rectangle>

Данный код выводит квадрат синего цвета, затем за 5 секунд квадрат становится прозрачным. Код полностью одинаков как для приложения Silverlight, так и для WPF.

Триггеры в Silverlight

увеличить изображение
Рис. 4.16 . Триггеры в Silverlight
Триггеры в WPF

увеличить изображение
Рис. 4.17 . Триггеры в WPF

Стратегия повторного использования кода

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

Пользовательские элементы управления. Это один из способов совместного использования кода. Элементы управления построенные полностью на коде C# будут полностью совместимы. XAML код также можно сделать максимально похожим.

Классы Partial. С помощью таких классов можно организовать целый класс, определение которого хранится в нескольких файлах. Можно класс организовывать из трех файлов. В одном содержится общий код для обеих платформ, во втором уникальный код для Silverlight, в третьем уникальный код для WPF. Таким образом, проект Silverlight будет содержать 1-й и 2-й файлы, а проект WPF 1-й и 3-й.

Директивы компилятору. Использование условных директив компилятору позволит иметь в сборке только нужные фрагменты кода:

#if SILVERLIGHT 
  <код для Silverlight > 
#else 
  < код для > 
#endif

Ссылки на файлы. Можно файл *.cs одного проекта использовать в другом, подключив его как ссылку.

Выводы

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

< Лекция 3 || Лекция 4: 123456 || Лекция 5 >