Poznámky z Windows Community Standupu (únor 2018)

Visual Studio WinUI XAML

6 years ago

Výojářský videokanál Channel9 22. února hostoval další epizodu Widows Community Standup s Kevinem Gallo a Andrewem Whitechapelem. Třemi hlavními tématy o kterých se diskutovalo byly konzolové UWP aplikace, více in stanční aplikace a otevřenější přístup k souborovému systému. Záznam si můžete pustit na Channel9 anebo přímo zde. Pokud se ale jen chcete rychle dočíst o hlavních novnkách, přečtěte si zbytek článku, protože jsem pro vás připravil kompaktní výtah :-) .

Konzolové UWP aplikace

Podpora konzolových aplikací přichází do UWP. S novými šablonami projektů (prozatím dostupné pouze pro C++) ve Visual Studiu budeme moci rychle vytvářet konzolové aplikace běžící pod univerzální platformou Windows s podporou pro moderní UWP API a mnoha výhodami jako jsou automatické aktualizace skrze Microsoft Store, snadnou instalaci a odinstalaci a další. Konzolové UWP aplikaci si kladou za cíl přinést známý model vývoje velmi podobný klasickým Win32 konzolovým aplikacím. Máme zde tedy dobře známou vstupní metodu Main i s volitelnými argumenty. Prozatím jsou konzolové aplikace kompatibilní s Desktopovým a IoT SKU, protože pouze tyto nyní podporují console shell. Navíc byl zaveden koncept "execution alias", který vývojáři dovoluje vytvořit zástupný název spustitelné aplikace (.exe). Při deploy je pak aplikace zaregistrována podobně jako by byla přidána do proměnné prostředí PATH a uživatel ji tak může spouštět z konzole z jakékoliv složky v systému. V případě konfliktů rozhoduje vždy která aplikace se stejným aliasem byla nainstalována první nebo případně může také uživatel ručně spouštět a vypínat aliasy pro aplikace v sekci Nastavení -> Aplikace -> Manage app execution aliases.

<Extensions>
   <uap5:Extension 
     Category="windows.appExecutionAlias" 
     Executable="YourApp.exe" 
     EntryPoint="YourApp.App">
      <uap5:AppExecutionAlias desktop4:Subsystem="console">
        <uap5:ExecutionAlias Alias="YourApp.exe" />
      </uap5:AppExecutionAlias>
   </uap5:Extension>
</Extensions>

Pro více informací s podívejte do předběžné dokumentace a vyzkoušejte si konzolové UWP aplikace s posledním Insider Preview SDK.

Víceinstanční aplikace

Doteď se UWP aplikace chovaly rozdílně od většiny klasických desktopových aplikací v tom, že byly jednoinstanční. UWP má své kořeny ve světě mobilních aplikací a na většině zařízení jako jsou telefony, tablety a Xbox většinou má smysl omezit aplikaci na pouze jedno okno. Když se následně pokusíte aplikaci znovu spustit, je znovu aktivována již otevřená instance. Tento přístup zjednodušuje i vývoj tím, že se vývojář nemusí obávat, že by ke sdíleným zdrojům přistupovalo více procesů současně. Na druhou stranu to ale ubírá možnosti flexibility a uživatel nemůže snadno provádět více než jeden úkon současně. UWP nabízelo alternativu ve formě vícepohledových aplikací. To umožňuje jedné instanci (procesu) otevřít více pohledů (oken) najednou. Nevýhodou tohoto přístupu je, že jde stále o jeden proces, takže chyba v jednom pohledu aplikace "shodí" celý proces a potažmo tak i všechna otevřená okna. Vícepohledové aplikace jsou vhodnější pro scénáře, kdy máme jedno hlavní okno a ostatní okna jsou mu "podřízena" a zobrazují související informace. Nový víceinstanční model nám tedy umožní spustit více nezávislých procesů jedné aplikace. Na počátku toto bude podporováno pouze na bude nejprve Desktopu a IoT. Neexistuje limit počtu instancí, které mohou běžet současně (kromě hardwarového, samozřejmě :-) ).

Multi-instance UWP app

Víceinstanční UWP aplikace

Pro povolení víceinstančního módu je třeba přidat do vašeho souboru Package.appxmanifest deklaraci SupportsMultipleInstances. Pro mnoho aplikací bude tato změna dostačující, ale je vývojář si musí dát přesto pozor na situace, kdy instance budou přistupovat ke sdíleným zdrojům balíčku aplikace jako jsou soubory a ApplicationData. Aby k těmto zdrojům bylo přistupováno bezpečným způsobem, je lepší použít pojmenovaný mutex pro ochranu přístupu v kritických sekcích kódu. Visual Studio Debugger se automaticky připojí ke všem běžícím instancím aplikace, takže ladění víceinstančních aplikací je snadné. Pokud potřebujete ještě větší kontrolu nad logikou spouštění instancí aplikace, můžete dokonce poskytnout vlastní Main entry point a použít pomocí nového typu AppInstance rozhodovat v jakých situacích je vhodné otevřít novou instanci a kdy naopak aktivovat některou z již otevřených. Pro více detailů nahlédněte do předběžné dokumentace a vyzoušejte funkční ukázkový projekt.

Otevřenější přístup k souborovému systému

Jednou z nejžádanějších funkcí které enterprise vývojářům v UWP chyběly je otevřenější přístup k souborům. A ten nyní přichází rovnou ve dvou variantách. Aplikace které deklarují execution alias a jsou spuštěny z jakékoliv složky v příkazové řádce budou mít implicitně daná povolení pro přístup k souborům s souborovém stromě od této složky dolů. Pokud vám toto nestačí, můžete deklarovat capability broadFileSystemAccess. Při prvním použití bude uživatel požádán o povolení přístupu a aplikace bude poté moci přistupovat k jekékoliv lokaci v souborovém systému (včetně síťových disků). Jedinou překážkou pro deklarování této funkčnosti je, že musí být jasně zřejmé, že toto povolení aplikace opravdu potřebuje, protože to bude posuzováno při certifikaci aplikace před publikováním na Microsoft Store. Pro více informací o otevřeném přístupu k souborovému systému se podívejte do dokumentace.

Shrnutí

Únorový Windows Community Standup byl plný zajímavých novinek v Univerzální platformě Windows, na které se můžeme těšit v chystané aktualizaci Windows 10. Mohli jsme se podívat na konzolové UWP aplikace, víceinstanční aplikace a otevřenější přístup k souborovému systému. Show se natáčí každý měsíc, takže se na další epizodu můžeme těšit v březnu, pokud nebude její místo zastupovat plánovaný Windows Developer Day 7. března.