WinRT Development – First Impressions

Преди няколко дни се проведе NASA Space Apps Challenge – състезание организирано от NASA, където те поставят реални проблеми с техни разработки пред света и състезателите представят своите решения. Бях на обявяването и първоначално смятах да не участвам, заради ангажиментите си като курсист в Академията, но в последствие реших, че това би ми дало добра възможност да разработя win 8 app за първи път и то с реално приложение. Тази статия не е толкова за самият app, колкото първите ми впечатления от разработката на такива приложения.win8logo-11324441

Защо избрах тази технология?

Главната причина е че WinRT поддържа x86 и ARM архитектури. Пишем един път приложението и то може да се рънва на всички устройства, които са на тази ОС.winrt Единственото за което трябва да се грижим е поддръжката на голям обхват от резолюции – което май само по себе си не е много лесна задача. Вече знам C# и се насочих към разработка с C# + XAML, но е възможно да се използва C++/CX + DirectX или HTML5 + JavaScript. Поддръжката на няколко стека от технологии за разработване също ми се вижда като голямо предимство, макар, че не виждам защо някой би искал да прави HTML5 приложения за win 8.

Колко време ми трябваше, за да навляза в нещата и какво е добре да знаем?

Мераците ми към тази платформа не са съвсем отскорошни, но реално 4 дни четене на книги и преписване на уроци ме запознаха с основите и вече в development процеса научих много неща(което се оказва не най-добрият вариант, но май е неизбежно). Като основни източници – любимият на всички ни MSDN, Windows 8 Samples и книжлето Windows 8 Appsmaking-a-smarter-rat Revealed Using XAML and C Sharp. Apress имат и още книги по темата, които предполагам също биха били полезни. Трябва да имате Windows 8 като операционна система на компютъра и Visual Studio 2012. XAML е доста обемен и екрана много бързо се претъпква със стилове или други пропъртита. Силно препоръчвам използването на Resource Dictionary, за да се изнесат повтарящите се стилове в отделен файл. Трябва да се усвои новата парадигма за програмиране – използване на нова нишка за всяка операция, която може да отнеме малко повече време. Това нововъведение произлиза от концепцията, че win 8 apps трябва да са fast and fluid. Всичко, което бави UI thread-а разваля юзър експириънса и winrt спира всеки app, който нарушава това правило. Писане по файлове, работа с мрежата, времеотнемащи операции се извършват асинхронно – на отделен thread. За щастие синтаксиса е максимално улеснен с добавянето на ключовите думи await и async, а за собствени асинхронни методи и background действия е добре да се запознаете с класа Task. Познаване на lifecycle-а на приложенията е много важен момент, за да се осигури win 8 поведението – тук има много какво да се каже, но има достатъчно информация в линковете, които съм посочил.

Основен начин за свикването с workflow-a поне при мен беше преписването на примери. Книжлето на Apress и няколко от по-важните семпли в MSDN съм ги преписвал буква по буква и този метод се оказва доста по-ефективен от “прочитане и опит за възпроизвеждане”.

Малко за API-тата. Използва се .NET 4.5 за WinRT, а не нормалният .NET. Не се учудвайте, ако не намерите някой метод в клас или има липсващи неймспейси и класове. За повечето има алтернативи, а за други няма. Това е положението.

Какво не харесвам в Windows Store Apps?dd

Въпреки, че VS за мен е много читаво IDE, когато разработвах приложението си за NASA от време на време имаше замръзване за по 30 секунди. Предполагам зарежда някакви ресурси, но все пак е дразнещо, за други видове проекти никога не ми се е случвало. При много XAML елементи е възможно intellisense да се бъгне – компилирал съм с 81 грешки.

Някои контроли имат изключително дразнещо поведение. Добър пример е фокуса на WebView. Ако имаме ListView, изберем даден елемент и отворим WebView, няма да можем да върнем фокуса на ListView без да цъкнем на него. Това не е проблем в touch ситуация, но при работа с мишка е изключително дървено. Workaround-a е при евента за focus на WebView да дадем focus на листа. Ако го зададем от друго място няма да се получи. Друг бонус е, че WebView е винаги над другите контроли. Ако извикаме прозорец или appbar те ще се покажат под WebView – доста недоклатено.

В определени ситуации писането във файлове става много бавно. В моят случай имах twitter канали, които запазвам OnSuspend, големина 1kb. Ако апликейшъна се отвори след по-малко от 5-10 секунди, промените не са отразени, но ако се изчака повече файлът е презаписан. Така и не разбрах на какво се дължи това, но сигурно има начин да се направи по-бързо.

Защо мисля, че разработката на такива приложения е перспективна?

05-Windows-Store

Все още WinRT е много нова технология и има своите недостатъци, тя тепърва ще се развива. Windows Store е също нов пазар, но е много благосклонен към indie девелъпъри. Рядкост са приложенията, които използват пълният потенциал на платформата и повечето популярни app-ове са сакати портове или манга рийдъри. С девелъпърите обаче ще дойдат и добрите приложения, а след тях и процъфтяването на екосистемата.

Posted in Programming Tagged with: , , , , , , , , , ,

Leave a Reply

Your email address will not be published.