Miroslav Holec
Premium

Blazor v .NET 6

Miroslav Holec   28. října 2020

Článek se vztahuje k verzi produktu .NET 6

Tento článek byl napsán v roce 2020. Vývojářské technologie se neustále inovují a článek již nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.

Verze .NET 5 ještě nevyšla ve své finální variantě, přesto stojí za to podívat se trochu blíže na roadmapu. V tomto článku ani tak nejde o soupis toho, čeho se dočkáme v listopadu 2021 (což nikdo přesně neví) jako spíše o tom, co by si vývojáři přáli a nad čím nyní budovatelé v Microsoftu uvažují v souvislosti s Blazorem.

V .NET 6 půjde především o Blazor

Microsoft nadále investuje úsilí zejména do technologie Blazor a vypadá to, že by ji chtěl v roce 2021 dotáhnout tam, kde jsou JS frameworky již několik let. Nelze přitom s jistotou potvrdit, že úsilí je striktně spojené s poptávkou. Někteří .NET vývojáři skutečně místo studia JS frameworků čekají na spásu v podobě Blazoru, jiní už však dávno nastoupili do nového stacku v JS/TS světě a Blazor je nechává chladnými. Sám ze své zkušenosti mohu potvrdit, že většina mých klientů již používá kombinaci REST API a některého JS frameworku. O Blazoru již většina týmů slyšela a občas některé týmy potvrzují, že jej již použili.

Recept na úspěch

Aby byla technologie úspěšná, musí splňovat určitá kritéria.

V první řadě musí být sexy. Na první pohled musí vývojáře zaujmout a vzbudit v nich zájem o další studium a zkoumání. Zde má Blazor našlápnuto výborně v Microsoft komunitě (ostatní v podstatě vůbec nezajímá).

Dále je nutné mít dobré portfolio. Vidět ty úžasné aplikace, které byly nad technologií postaveny. No a tady naopak nemá Microsoft nic, s čím by se pochlubil. Existuje sice hromada Blazor klonů a experimentů propojujících například Blazor a gRPC, ale neexistují velké reálné projekty. I nad často kritizovaným Vue.js již postavil aplikace Google, Adobe, Apple nebo BMW. Portfolio má ale mnohem širší.

Když výše uvedenou nevýhodu přeskočíme, začneme hledat výukové materiály. Tady zaboduje Microsoft dokumentace nebo server Blazor University. Když ale odmyslíme další články z blogů, už toho moc dalšího není. Opět bych vytáhl Vue.js, kolem kterého se každý rok koná řada konferencí, existují specializované portály s hromadou videí a věnují se mu i čeští vývojáři.

Dále je důležitá vyspělost samotného frameworku. I když tedy nebudeme mít dokumentaci, pořád máme ten frameworkový kód, který můžeme při troše fantazie zavolat. Potíž je v tom, že některé klíčové funkce frameworku Blazor se teprve dostávají do Preview a jiné se objeví až právě za rok. Vývojářské týmy potřebují zatloukat hřebíky a netrpělivě čekají na vhodné kladivo. Blazor je ale zatím spíše palička na maso. Příliš účelový z pohledu Blazor Server a příliš nedokončený a nedůvěryhodný z pohledu Blazor WebAssembly.

To samozřejmě odrazuje mnoho vývojářů a nadšenců, kteří by za normálních okolností již postavili zajímavé aplikace, napsali užitečné návody, vytvořili specializované portály nebo uspořádali konferenci. Tím se dostáváme ke komunitě, která tvoří on-line obsah ale i poptávku. Na základě poptávky školící centra a nezávislí konzultanti věnují technologii větší úsilí a jsou ochotni školit ve firmách a mluvit o dané technologii na konferencích. Tím se technologie dostává více do firem. Všechno začíná dávat smysl. V případě Microsoftu by se do toho ještě daly zamotat certifikace a další specifika.

Abych to shrnul: Blazor vypadá nadějně a jeho serverovou variantu osobně používám i na svých projektech. Potíž je, že se nehodí na všechny projekty. Kdybych se měl jako product owner rozhodovat pro univerzální technologii, dal bych přednost něčemu jinému než Blazor WebAssembly.

Co by mohlo přijít v Blazoru do .NET 6

To je celkem jednoduché, protože se zde mé představy shodují s poptávkou vývojářů. A tu Microsoft shromažďuje prostřednictvím GitHubu a anket. Takže mezi nejpoptávanější funkce, nad kterými nyní Microsoft špekuluje patří:

  • AoT kompilace
  • podpora HotReloadu (zatím řeším pomocí livesharpu)
  • globální handlování výjimek (zejména u Blazor Server je to docela dost problém)
  • oficiální komponenty od Microsoftu ve Fluent Designu (teprve v .NET 5 se totiž dočkáme základních věcí jako radio buttony nebo file upload)
  • lepší debugging experience pro WebAssembly
  • lepší podpora SVG

a potom desítky dalších drobností.

Závěr

V listopadu 2020 nám vyjde .NET 5, jehož součástí budou nezbytně nutná vylepšení Blazoru. Bez těchto vylepšení čeká vývojáře mnoho dodatečné práce v podobě skládání různých komponent a jejich propojování. V horším případě vlastní psaní kódu včetně interoperability s JS. Do další verze .NET 6 se dostane pár klíčových funkcí, bez kterých bude Blazor v následujícím roce poněkud hůře "ovladatelný", zejména v Blazor WebAssembly.

Zatímco Blazor Server díky nepotřebě REST API a odstínění od světa JS má v řadě scénářů smysl a dokáže perfektně enhancovat existující řešení, Blazor WebAssembly stále více připomíná marný konkurenční experiment vůči zaběhnutým JS frameworkům. Přitom Microsoftu by pomohlo právě svůj svět a své backendové technologie více k JS světu přiblížit.