Сравнение технологий WinForms и WPF

Сравнение технологий WinForms и WPF

Мы хотели бы рассказать про две графические системы, которые используются в составе .NET. В наше время активно используются WinForms и WPF. Возникает вопрос какую же технологию использовать в разработке приложения. Мы рассмотрим подробно каждую систему, плюсы и минусы, а также расскажем об особенностях использования в продуктах FastReport .NET и FastReport WPF. Перейдём же непосредственно к сравнению.

WinForms

В начале поговорим об уже считающейся классикой старой системе WinForms. Данная система была выпущена в далеком 2002 году на базе Framework 1.0, и предоставляет собой “традиционный” способ создания десктоп приложений. У нас имеются базовые элементы по типу “Кнопка”, “Текстовый объект”, “Текстовое поле” и т.д., которые можно настраивать почти, как угодно. Это в целом довольно удобно, но, к сожалению, мы не сможем создать современный дизайн приложения, что может не устроить либо нас, либо клиентов. В наше время есть довольно много приложений, которые используют WinForms, например, FastReport .NET. Но стоит учитывать, что зачастую, подобные приложения разрабатывались и поддерживались большое кол-во времени. И это уже по большей части вынужденная мера, ведь внешний вид приложения играет действительно важную роль.

Плюсы и минусы:
+ Технология практически вся протестирована и лучше испытана, что дает надежность.
+ Существует множество готовых решений и элементов управления.
+ Простота и интуитивное понятие при создании приложения.
- Не отвечает современным стандартам разработки.
- Нет активной поддержки.

WPF

А вот тут уже всё намного интереснее. Вышла технология WPF тоже давно, в 2006 году, на базе Framework 3.0. Но имеет кардинальное различие в ходе разработки. Здесь теперь нет привычных элементов, которые мы можем поставить в форму и настроить их. Нам теперь придется писать код на XAML, чтобы поставить ту же кнопку или текстовый объект. И действительно, намного удобнее просто перетащить нужный объект и настроить его, чем с нуля все это прописывать и настраивать. В данном случае мы получаем даже преимущество. Но как? Сейчас рассмотрим.

Возьмем пример, где будет кнопка с изображением и текстом. WinForms не предоставляет готовых решений. Поэтому вам нужно самим создавать изображения и реализовывать собственные кнопки, поддерживающие изображения, либо использовать готовое нестандартное решение. Кнопка в WPF может иметь внутри что угодно, так как это просто "рамка" с контентом внутри себя. Например, нажатие или не нажатие с реакцией на наведение курсором.

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

Плюсы и минусы такого подхода:
+ Графическая система более новая и отвечает стандартам разработки.
+ Microsoft использует ее во многих своих приложениях, например Visual Studio.
+ Более гибкая система настройки.
+ Есть готовые решения под любые нужды.
+ С помощью XAML можно разделять работу дизайнера и программиста.
+ Для лучшей производительности можно использовать аппаратное ускорение.
+ Можно создавать интерфейс как для Windows, так и для Web приложений.
- Нужно научиться работать с XAML.

WinForms и WPF в FastReport

И так, мы разобрались в двух графических системах, узнали о их преимуществах и недостатках. Давайте теперь разберем их в FastReport .NET. Основные различия — это способ подключение и визуальные составляющие.

В случае WinForms нам нужно подключить FastReport.NET.nupkg или FastReport.dll, написать необходимый код и запустить проект. Или же просто запустить FastReport .NET. В итоге мы получим привычную нам форму.

Дизайнер на WinForms

В случае WPF нам нужно подключить пакет FastReport.WPF. И также написать необходимый код и запустить проект. В случае WPF мы получим более современный дизайн и похожий интерфейс.

Дизайнер на WPF

Также хочется отметить, что при использовании WPF у нас есть возможность пользоваться Intellisense от Roslyn, что поможет в написании кода.

Таким образом, мы разобрали две графические системы. Какую из них использовать в разработке своего приложения, решать только вам. Лично мы рекомендуем всё же использовать WPF. Да, это может быть неудобно и непривычно после WinForms, но мы получаем дизайн, который будет современный и удобный, а также долгосрочную поддержку WPF.