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

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

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

Различия между WPF и Silverlight

Silverlight - основанная на XAML технология. Приложение Silverlight работает как плагин к браузеру и в песочнице браузера. WPF поддерживает ТОЛЬКО! платформу Windows, Silverlight - кросс-платформенная технология

Архитектурные различия. Архитектура WPF аналогична архитектуре WinForms. Приложение WPF исполняется на платформе клиента и использует его .NET framework. Silverlight, будучи плагином и с целью снизить загрузку канала при установке Silverlight Tools, является дополнением к .NET framework. Это означает, что нельзя использовать одни и те же библиотеки в обоих платформах.

Развертывание. Приложение Silverlight размещается (хостится) на веб-странице сайта. С целью уменьшений нагрузки на канал используется XAP файл, т.е. архивный *.zip файл. Его генерирует Visual Studio при компиляции проекта. WPF разворачивается как автономное приложение ClickOnce или XAML Browser. Приложение WPF (3 ранее упомянутых файла) полностью загружается на клиентский компьютер перед началом его выполнения. Важным аспектом производительности XBAP является его время запуска. Если XBAP является первым загружаемым приложением WPF, время холодного запуска может составить десять или больше секунд. Это связано с тем, что WPF выполняет прорисовку страницы хода выполнения, но для ее отображения должен быть выполнен холодный запуск среды CLR и WPF. Приложение Silverlight начинает выполняться быстрее, т.к. загружает только выполняемый в данный момент код.

BAML/XAML. BAML - бинарная форма XAML. Бинарная форма повышает производительность. Ее использует WPF приложение. Silverlight использует только XAML. Хотя языки в большинстве случаев совпадают, но есть много различий при работе с элементами управления, используемыми в двух платформах. Элементы управления разные, поэтому и параметры их разные. Например, Silverlight требует, чтобы корневой элемент содержал пространство имен xmlns, тогда как WPF поддерживает неявное задание пространства.

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
…

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

WPF
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}"/>
Silverlight
<Style x:Key="MyButtonStyle" TargetType="Button"/>
WPF
<Rectangle x:Name="MyShape"
    SnapsToDevicePixels="True"/>

    this.MyShape.SnapsToDevicePixels = true;
Silverlight
<Rectangle x:Name="MyShape"
    UseLayoutRounding="True"/>
    this.MyShape.UseLayoutRounding = true;

Обработчик событий. Множество взаимодействий между клиентом и сервером осуществляется с помощью обработчика событий event. В WPF и Silverlight большинство событий маршрутизируемые Routed Events.

public delegate void RoutedEventHandler( Object sender, RoutedEventArgs e )

Но обработчику события передаются разные параметры (см. табл. 4.1).

Таблица 4.1. Различия WPF и Silverlight. RoutedEventArgs
Свойство WPF Silverlight
Device Да Нет
Handled Да Да
InputSource Да Нет
OriginalSource Да Да
RoutedEvent Да Нет
Source Да Нет
Timestamp Да Нет

По-разному две технологии реагируют на нажатие клавиш и мыши.

public delegate void KeyEventHandler( Object sender, KeyEventArgs e )
Таблица 4.2 . Различия WPF и Silverlight. KeyEventArgs
Свойство WPF Silverlight
ImeProcessedKey Да Нет
IsDown Да Нет
IsRepeat Да Нет
IsToggled Да Нет
IsUp Да Нет
Key Да Да
KeyboardDevice Да Нет
KeyStates Да Нет
SystemKey Да Нет
PlatformKeyCode Нет Да
public delegate void MouseButtonEventHandler(Object sender, MouseButtonEventArgs e)
public delegate void MouseEventHandler(Object sender, MouseEventArgs e)
public delegate void MouseWheelEventHandler(Object sender, MouseWheelEventArgs e)
Таблица 4.3 . Различия WPF и Silverlight. MouseButtonEventArgs, MouseEventArgs, MouseWheelEventArgs
Свойство WPF Silverlight
LostMouseCapture Да Да
MouseDoubleClick Да Нет
MouseDown Да Да
MouseEnter Да Да
MouseLeave Да Да
MouseLeftButtonDown Да Да
MouseLeftButtonUp Да Да
MouseMove Да Да
MouseRightButtonDown Да Нет
MouseRightButtonUp Да Нет
MouseUp Да Нет
MouseWheel Да Нет
PreviewMouseDoubleClick Да Нет
PreviewMouseDown Да Нет
PreviewMouseLeftButtonDown Да Нет
PreviewMouseLeftButtonUp Да Нет
PreviewMouseMove Да Нет
PreviewMouseRightButtonDown Да Нет
PreviewMouseRightButtonUp Да Нет

Доступ к локальным файлам. WPF имеет практически неограниченный доступ к локальным ресурсам. В то время как Silverlight имеет множество ограничений и использует OpenFileDialog элемент управления браузера. Соответственно браузер может и не разрешить это делать. Записывать данные ( SaveFileDialog ) Silverlight может только в изолированное хранилище на диске. В будущем это будет исправлено.

Шрифты. WPF использует набор шрифтов операционной системы клиента. Silverlight поддерживает стандартный ограниченный набор и, в случае необходимости, подгружает их или содержит в файле *.ttf архива *.xap. Во 2-й версии Silverlight были доступны шрифты: Arial, Arial Black, Comic Sans MS, Courier New, Georgia, Lucinda Grande / Lucida Sans Unicode, Times New Roman, Trebuchet MS, Verdana. В третьей версии их около 230.

<TextBlock 
FontFamily="customfont.ttf#Custom Font">
  Text
</TextBlock>

Набор элементов управления. WPF и Silverlight часто используют разные элементы управления. В Silverlight 3 доступно 79 элементов.

Таблица 4.4 . Различия WPF и Silverlight. Элементы управления
Элемент управления WPF Silverlight
AccessText Да Нет
AdornedElementPlaceholder Да Нет
AdornerDecorator Да Нет
AutoCompleteBox Нет Toolkit
Border Да Да
BulletChrome Да Нет
BulletDecorator Да Нет
Button Да Да
ButtonChrome Да Нет
Calendar Да SDK
Canvas Да Да
CheckBox Да Да
ClassicBorderDecorator Да Нет
ComboBox Да Да
ComboBoxItem Да Да
ContentControl Да Да
ContentPresenter Да Да
ContextMenu Да Нет
Control Да SDK
DataGrid Да SDK
DatePicker Да SDK
Decorator Да Нет
DockPanel Да Toolkit
DocumentPageView Да Нет
DocumentReference Да Нет
DocumentViewer Да Нет
Ellipse Да SDK
Expander Да Toolkit
FixedPage Да Нет
FlowDocumentPageViewer Да Нет
FlowDocumentReader Да Нет
FlowDocumentScrollViewer Да Нет
Frame Да Нет
FrameworkElement Да Нет
Glyphs Да Нет
Grid Да Да
GridSplitter Да SDK
GridViewColumnHeader Да Нет
GridViewHeaderRowPresenter Да Нет
GridViewRowPresenter Да Нет
GroupBox Да Нет
GroupItem Да Нет
HeaderedContentControl Да Toolkit
HeaderedItemsControl Да Toolkit
HyperlinkButton Нет Да
Image Да Да
ImplicitStyleManager Да Toolkit
InkCanvas Да Нет
InkPresenter Да Да
ItemsControl Да Да
ItemsPresenter Да Да
Label Да Toolkit
Line Да Да
ListBox Да Да
ListBoxChrome Да Нет
ListBoxItem Да Нет
ListView Да Нет
ListViewItem Да Нет
MediaElement Да Да
Menu Да Нет
MenuItem Да Нет
MultiScaleImage Нет Да
NavagationWindow Да Нет
NumericUpDown Нет Toolkit
Page Да Нет
PageContent Да Нет
PageFunction Да Нет
PasswordBox Да Да
Path Да Да
Polygon Да Да
Polyline Да Да
Popup Да Да
ProgressBar Да Да
RadioButton Да Да
Rectangle Да Да
RepeatButton Да Да
ResizeGrip Да Нет
Ribbon Да Нет
RibbonWindow Да Нет
RichTextBox Да Нет
ScrollBar Да Да
ScrollChrome Да Нет
ScrollContentPresenter Да Да
ScrollViewer Да Да
Separator Да Нет
Slider Да Да
StackPanel Да Да
StatusBar Да Нет
StatusBarItem Да Нет
SystemDropShadowChrome Да Нет
TabControl Да SDK
TabItem Да SDK
TabPanel Да Нет
TextBlock Да Да
TextBox Да Да
Thumb Да Да
TickBar Да Нет
ToggleButton Да Да
ToolBar Да Нет
ToolBarOverflowPanel Да Нет
ToolBarPanel Да Нет
ToolBarTray Да Нет
ToolTip Да Да
Track Да Нет
TreeView Да Toolkit
TreeViewItem Да Toolkit
UniformGrid Да Нет
UserControl Да Да
ViewBox Да Toolkit
Viewport3D Да Нет
VirtualizingStackPanel Да Нет
WebBrowser Да Нет
Window Да Нет
WindowsFormsHost Да Нет
WrapPanel Да Toolkit

Farmework. Silverlight framework и .NET framework, используемый WPF имеют ряд отличий.

Таблица 4.5 . Различия WPF и Silverlight. Коллекции
Класс WPF Silverlight
System.Collection
ArrayList Да Нет
BitArray Да Да
HashTable Да Нет
Queue Да Нет
SortedList Да Нет
Stack Да Нет
System.Collection.Generic
Dictionary<TKey, TValue> Да Да
KeyedByTypeCollection<TItem> Да Да
HashSet<T> Да Нет
LinkedList<T> Да Да
List<T> Да Да
Queue<T> Да Да
SortedDictionary<TKey, TValue> Да Нет
SortedList<T> Да Нет
Stack<T> Да Да
SynchronizedCollection<T> Да Нет

Различаются также сетевые, шифровальные возможности, возможности создания потоков, блокировок, 3D графики, стилей, тем, валидаторов.

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