Анонсуючи третій великий реліз WPF

Минулого тижня компанія Microsoft представила публічну бета-версію нової версії WPF. З тих пір, як в кінці минулого року компанія представила. NET Framework 3.5, команда розробників старанно працювала над додаванням багатьох додаткових функцій, виправленням виявлених помилок, збільшенням продуктивності і реалізацією нового модернізованого установника для підмножини профілів. NET Framework, оптимізованих для клієнтських сценаріїв. Цей новий реліз буде поставлятися як частина. NET Framework 3.5 SP1, який вийде цього літа. У бета-версії представлена ​​тільки частина нових функцій. У даній статті ми поговоримо про прийдешні в. NET Framework 3.5 SP1 змінах, роблячи основний упор на WPF.

Протягом останнього року-двох було дуже цікаво спостерігати за балансом між WPF-додатками, створеними для бізнесу і для звичайних користувачів. Спочатку ми очікували, що WPF в основному буде використовуватися для споживчих додатків: передумовою для цього була анімація, багата підтримка мультимедіа, потокові документи, двох-і тривимірна графіка і так далі, які могли стати основною причиною інтересу для створення подібних додатків. Навіть дивно, наскільки багато корпоративних додатків теж використовують всі ці переваги: ​​структура архітектури, наприклад, можливість шаблонування даних, модель компонування і відділення для користувача інтерфейсу від коду програми, виявилися достатніми причинами, щоб у багатьох випадках перейти на WPF.
Хоча Windows Vista включає в себе WPF за замовчуванням, ми побачили необхідність надати легкий спосіб розгортання платформи на комп’ютерах, що працюють під управлінням Windows XP. Якщо ви поширюєте користувальницький додаток через Інтернет, то дуже важливо мати інсталяційний пакет, який швидко скочується і встановиться, в той же час надавши користувачу дані про прогрес. Поряд з повним. NET Framework, у нас є Client Profile, який важить близько 25 Мб (тобто, приблизно, як і Acrobat Reader) і встановлюється за пару хвилин.
Як ми настільки зменшили розмір. NET Framework? Ми прибрали безліч компонентних вузлів, які зазвичай не використовуються в користувальницьких додатках (додатках, якому треба було б запускати локально ASP.NET). Список файлів для дистрибутива був вибраний за допомогою вивчення безлічі користувальницьких додатків. Якщо говорити на більш високому рівні, то даний дистрибутив включає в себе ядро ​​CLR, базові бібліотеки класів, WPF, Windows Forms і WCF. Ми також використовували деякі новітні технології стиснення, щоб суттєво зменшити розмір дистрибутива. Звичайно ж, ви як і раніше можете використовувати повну версію. NET Framework, просто це додаткова опція. Важливо відзначити, що і в Client Profile і в. NET Framework всі поставляються компоненти однакові.
У Visual Studio 2008 SP1, який знаходиться в стані бета-тесту, ви також можете орієнтуватися на Client Profile за допомогою відповідного пункту в меню настроювання шаблону. Якщо під час збирання виявиться, що ви посилаєтеся на компоненти, яких немає в Client Profile, то ви, звичайно ж, отримаєте попередження. При компіляції додатка у вас буде можливість інтегрувати установник Client Profile в ваш додаток, зробивши, таким чином, безшовний, єдиний установник для кращого користувацького досвіду. Ми забезпечили дуже невеликий – приблизно 200 Кб – розмір завантажувального установника, який зводить до мінімуму час між тим, коли користувач запускає установник і отримує результат. Ми навіть зробили движок доступу до файлів під час установки. NET Framework повністю асинхронним, так що ніщо не буде конкурувати з вашим застосуванням під час першого запуску.
Як додаток може знати, чи достатньо встановлених компонентів. NET Framework для його роботи? Тільки додаток, який було скомпільовано для роботи з Client Profile буде містити спеціальний маніфест, в якому буде зазначено, що дане додаток може працювати на комп’ютерах навіть тільки з даними підмножиною. Net. Якщо ви запустите програму, що не буде належним чином марковане, то Client Profile покаже користувачеві спливаюче вікно, яке допоможе користувачеві оновитися до повної версії середовища виконання. Також важливо відзначити, що Client Profile повністю сумісний з ClickOnce.
Для кінцевих користувачів, які вирішать використовувати Windows Update,. NET Framework, Client Profile буде оновлено до повної версії. NET Framework за допомогою фонового процесу, так що додатки, які використовують повну версію середовища виконання, зможуть використовувати всі переваги зростаючої кількості користувачів WPF.
І нарешті, незабаром після випуску Visual Studio 2008 SP1, ми випустимо доповнення, яке дозволить розробникам повністю налаштовувати вигляд і відчуття установника Client Profile – змінювати фоновий малюнок, графіком, і т.д. Також ми співпрацюємо з розробниками сторонніх установників, такими як InstallShield, для реалізації підтримки Client Profile в їх технологіях упаковки.
І про ще однієї функції, не пов’язаної з розгортанням Client Profile – ми злегка ослабили політику запуску керованих додатків з мережі, дозволивши їм запускатися з повним рівнем довіри. Як показало опитування Бреда Абрамса (Brad Abrams), цього зміни чекали багато.
Графіка
Версія. NET Framework 3.5 включає декілька великих змін в графічному движку WPF. Зокрема, були додані класи UIElement3D і Viewport2DVisual3D, які забезпечують повну підтримку двомірних елементів на тривимірних поверхнях. Ми також зробили істотні поліпшення в продуктивності у роботі з багатошаровими вікнами і виправили проблему з випадковими запинками анімації. Але в цій версії ми пішли далі і додали безліч цікавих графічних функцій.
Як вже демонструвалося на MIX2008, в. NET 3.5 SP1 додана підтримка HLSL-шейдерів і класу ShaderEffect, що дозволить застосувати до WPF-вмісту нескінченну кількість фільтрів. Шейдери повністю прораховуються на відеокарті (якщо вона підтримує Pixel Shader 2.0) або за ефективною програмної реалізації – це означає, що ви можете додавати відблиски, фокусування, перекручення або розмиття, при цьому абсолютно не навантажуючи процесор.




Ви можете задати властивості шейдера пов’язаним даними або анімації, що дозволить реалізувати ще більш досконалі ефекти, і так як WPF – повністю інтегрована платформа, то будь-який елемент управління, до якої застосовано шейдер, залишиться повністю активним.
Якби цього не було достатньо для фінальної версії. NET 3.5 SP1, ми б забезпечили навіть більш глибоку підтримку інтеграції з Direct X. По суті будь-яка Direct3D-поверхня може бути використана як кисть для WPF-контенту за допомогою нового класу D3DImage, який дозволяє вам накладати або змішувати Direct3D-контент взаємозамінне з WPF-контентом. Ви можете використовувати безліч класів D3DImage одночасно, і так як вони візуалізуються за допомогою Direct X, на продуктивність особливо ефекту їх використання не впливає. Ви навіть можете використовувати альфа-змішування для Direct3D-контенту. Якщо навіть цього не достатньо, то ви можете взяти Direct3D-поверхня і використовувати її як текстуру в тривимірній WPF-сцені. Більше інформації доступно в блозі Грега Шехтера (Greg Schechter)
Ми дуже сильно вдосконалили клас WriteableBitmap, який дозволяє реалізувати ефективні маніпуляції із зображеннями. WriteableBitmap являє собою растрове зображення, розміщене в системній пам’яті, що дозволяє вам змінювати його вміст і автоматично виводити його на екран, використовуючи переваги моделі зберігання в пам’яті в WPF. Оригінальна реалізація даного класу розміщувала в пам’яті нове зображення при кожній зміні кадру, що робило його досить повільним для більшості сценаріїв. Новий механізм заміни зображення швидкий, синхронізується зі змінами в інтерфейсі і має постійну стабілізовану споживання пам’яті, що дозволяє реалізувати в WPF безліч нових сценаріїв – наприклад, програми для малювання, рендери фракталів і ПЗ для роботи з веб-камерами.
Ми також зробили деякі покращення в єднальні API, дозволивши вам, наприклад, перевіряти, чи підтримує апаратне забезпечення піксельні шейдери. Ми також додали можливість семплірованія найближчого зображення як режим масштабування зображення. Останнє, але не менш важливе – ми виправили найбільш частий растровий ефект в WPF – розмиття і тіні більше не візуалізуються програмно: якщо ви використовуєте нові API розмиття і тіней, реалізовані в SP1, то вони будуть обраховуватися повністю потужностями відеокарти. Успадковані API розмиття і тіні теж стали вважатися апаратно, ознаменувавши серйозне поліпшення в продуктивності додатків, які використовують дані ефекти.
Продуктивність
Як любить казати Ієн Еллісон-Тейлор (Ian Ellison-Taylor), директор по розробці WPF, над продуктивністю ми ніколи не припинимо працювати. Як і з будь-якої іншої високорівневої графічної платформою, у нас завжди є оптимізації, які можна реалізувати. У даній сфері ми зробили серйозні поліпшення в усіх областях, пов’язаних з продуктивністю і споживанням пам’яті WPF-додатків. Ви помітите ці поліпшення незалежно від того, розроблено ваш додаток для WPF 3.5 SP1 або більш ранньої версії.
Холодна завантаження додатка – область, в якій люди дуже чутливі до продуктивності. За короткий час необхідно виконати дуже багато операцій: необхідно прочитати компоненти з диска, перевірити їх маніфести на сувору відповідність імені, а крім того, перевірити і завантажити все залежності. Як автор програми ви можете істотно вплинути на час завантаження вашого застосування: ви повинні завантажувати тільки ті компоненти, які потрібні, щоб відобразити початкове вікно вашої програми, і відкласти завантаження інших компонентів, поки вони не будуть необхідні. Якщо вам потрібен Windows Forms для відображення декількох форм, захованих у додатку, не додавайте залежність у перший файл, що запускається – це збільшить час завантаження додатка. Ми пройшлися по компонентам WPF і зробили велику роботу по оптимізації, щоб переконається, що ви побачите свої перші пікселі якнайшвидше: до RTM-версії ми сподіваємося, що час холодної завантаження покращиться на 45% в залежності від розміру програми та сценарію. Загалом, чим більше додаток, тим швидше воно завантажиться.
Для XBAP-додатків початкове вікно завантаження ми зробили в HTML, так що ви негайно бачите прогрес завантаження при кліці на XBAP, замість того, щоб бачити протягом декількох секунд збиває з пантелику порожню сторінку. Крім тих поліпшень, про які ми згадували, також ми реалізували кілька додаткових змін у завантаженні додатків з холодного старту для XBAP-сценаріїв, що дає додаткові 10% збільшення швидкості завантаження.


У RTM ми також реалізуємо підтримку вікна заставки (splash screen) в Visual Studio 2008 SP1, щоб мінімізувати роботу з побудови додатки, негайно відображаючи початкове вікно, що має велике вплив на сприйняття швидкості реакції додатка і зменшує ризик того, що користувач запустить два екземпляра додатка одночасно. Ви також можете зробити вікном заставки зображення, позначивши растровий джерело за допомогою елемента завантаження SplashScreen, або підтримувати ваш власний повністю настроюється клас, заснований на нашому шаблоні, який завантажується до Application object під час завантаження.
В оптимізації WPF ми працювали не тільки над холодною завантаженням. Тепер у нас є контейнер, що видаляє елементи управління, грунтуючись на класі VirtualizingStackPanel (такому як ListBox, ListView і TreeView). Це опціональна функція, ви повинні включити властивість VirtualizationMode, через деяких невеликих семантичних змін в поведінці цих елементів управління, але ця функція може поліпшити продуктивність скролінгу аж до 40%, якщо можливо повторно використовуючи елементи управління, які виходять за межі екрану під час скролінгу. Також ми тепер пропонуємо таку опцію, як відкладений скролінг, схоже на те, як працює скролінг в папці “Вхідні” в Outlook.
Також було зроблено багато оптимізацій в інших елементах управління віртуалізації: TreeView тепер пропонує віртуалізацію сценаріїв типу Explorer, а колонки відтепер можуть бути віртуалізованих, що дозволяє набагато простіше створити ефективний елемент DataGrid. Ми також знайшли і виправили кілька інших причин падінь продуктивності, поліпшивши візуалізацію тексту і часті проблеми з маніпуляціями Z-типу.
Нові елементи
На це пішло багато часу, але ми таки додали елемент DataGrid в WPF. Даний елемент вийде найближчим часом, після виходу 3.5 SP1. DataGrid дозволить використовувати безліч оптимізацій віртуалізації, про які я згадував вище, так що даний елемент повинен бути відносно ефективним, і, звичайно, як і з усіма елементами WPF, за допомогою шаблонів можна буде повністю змінити поведінку і відчуття від роботи з елементом. Ми внесли безліч поліпшень в API для поліпшення підтримки сценаріїв DataGrid: мультиперемикача, автоматичні конвертери нульових значень, междейственний елемент редагування, альтернативна підтримка рядків, підтвердження рівня елемента, і, звичайно, всі ці поліпшення доступні стороннім компаніям для поліпшення їх високорівневих елементів управління таблицями даних.
Ще одним елементом, який у нас просили реалізувати, є Office Ribbon, і ми раді повідомити, що також випустимо і цей елемент, але вже до кінця року. Стрічки будуть реалізовані повністю на WPF, сумісні з гідом по розробці користувальницького інтерфейсу і мати інтуїтивно зрозумілі API.
Третім елементом управління, який поставляється в комплекті з. NET Framework 3.5 SP1, є багатофункціональний елемент WebBrowser. З часів першого релізу WPF дозволяє відображати інтернет-контент за допомогою елемента Frame, який, по правді кажучи, має безліч обмежень: ви не можете взаємодіяти з контентом фрейма програмно, HTML-вміст могло відображатися тільки з URL-адреси, а не з потоку або рядки пам’яті, ви не могли програмно переглядати історію і не могли взаємодіяти з будь-яким JavaScript. Елемент управління WebBrowser пропонує вам всі ці можливості, дозволяючи реалізувати набагато більш гладку інтеграцію WPF і HTML-контенту. Також даний елемент управління надає відмінний спосіб для зберігання Silverlight в WPF – просто вкажіть це в Silverlight. XAP-файлі. Ще одна приємна дрібниця: цей елемент керування підтримує режим часткового довіри для XBAP, що дозволяє включати в XBAP внутрішній фрейм HTML-контенту, з яким він може взаємодіяти.
Інші зміни
У даному релізі є безліч маленьких, але не менш корисних змін, які не можна віднести до якої-небудь категорії. Тепер WPF підтримує форматування рядка тексту пов’язаного з даними: це дозволяє обійтися без написання класу, який реалізує IValueConverter просто для того, щоб реалізувати щось настільки просте, як форматування числа. Ми провели деяку роботу над полегшенням і поглибленням підтримки LINQ в XML, і LINQ в DataSet для об’єднання даних. І нарешті, ми розширили підтримку браузера Firefox, додавши повну підтримку ClickOnce (файлів додатків), а не тільки XBAP-файлів.
Дизайнер WPF в Visual Studio 2008 SP1 також був серйозно переглянутий – тепер він завантажується швидше. Ми також зробили велику роботу з підтримки деяких найбільш рідкісних сценаріїв роботи XAML, які викликали проблеми з редактором. В панелі-вікні властивостей тепер є вкладка подій, яка реалізує рівність з Windows Forms по створенню та перегляду обробників подій в дизайнері. Одна функція, яка буде оцінена гідно, – рефакторинг XAML, що раніше було завданням складним і вимагає багато сил. Нарешті, ми додали підтримку налагодження BAML під час налагодження, що дозволить вам виловлювати помилки, які інакше вам було дуже складно виловити.
Підсумки
Може це і злегка невідповідний вираз, але. NET Framework 3.5 SP1 являє собою абсолютно нову ревізію WPF, яка дозволить вивести WPF в прайм-тайм. Я щиро вірю, що з даною версією WPF ми зможемо викорінити всю критику про WPF, адже новий реліз володіє наступними достінствамі: набагато краще розгортання, деякі нові можливості графіки, повсюдні поліпшення продуктивності, три найбільш часто запитуваних елемента керування та нові можливості при редагуванні. Коли ви об’єднаєте всі ці фактори разом, то зрозумієте, чому даний сервісний реліз настільки великий крок вперед для WPF – він дозволяє відкрити нові горизонти, демонструючи зрілість нашої стратегічної платформи наступного покоління користувальницького інтерфейсу для Windows.
На даний момент SP1 знаходиться в стані бета-тесту, фінальну версію ми маємо намір випустити цього літа. Як і з будь бета-версією, завжди є безліч ризиків безпеки. І це я дуже хочу підкреслити ще раз. Я не рекомендую встановлювати цю бета-версію на ваш основний комп’ютер для розробки. Через деяких проблем з нестачею часу, дана версія не сумісна з Silverlight 2 Beta 1, однак буде сумісна з Beta 2, яка вийде через кілька тижнів. Під час недавніх тестувань ми виявили проблему, яка може викликати збій Blend. Для попередньої версії 2.5 є оновлення, яке виправляє дану проблему, і, звичайно, до виходу SP1 ми розробимо повноцінне рішення. Нарешті, якщо ви працюєте в Windows Vista, то повинні встановити Vista SP1 перед тим, як встановлювати Visual Studio 2008 SP1 Beta. І врахуйте, що якщо б все було готове – ми б так і сказали, не дарма ж ми називаємо це бета-версією.
І ще одне, хоча я згадував про удосконалення в самому WPF, дане оновлення містить в собі зміни для ASP.NET, ADO.NET, WCF і Team Foundation Server. За додатковими подробицями звертайтеся в блог Скотта Гутрі (Scott Guthrie).
Отже, де ж ви можете отримати додаткову інформацію про даній версії? Якщо цієї статті недостатньо, ласкаво просимо на Week of WPF на Channel 9. Протягом тижня ми будемо публікувати інтерв’ю з основною командою WPF, кажучи і демонструючи зміни в даній версії. Адам Кинни (Adam Kinney) і я отримали справжнє задоволення, знімаючи ці ролики, тому ми щиро сподіваємося, що і ви його отримаєте. У першому інтерв’ю з іенам Еллісон-Тейлором (Ian Ellison-Taylor) і Кевіном Г’ерстадом (Kevin Gjerstad) ми обговорювали філософію даній версії і майбутнє WPF.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*