Blazor WebAssembly představuje moderní a flexibilní způsob, jak vyvíjet webové komponenty pomocí frameworku Blazor, který je součástí .NET ekosystému. Tento přístup přináší významné výhody, mezi které patří možnost vývoje v C# místo tradičního JavaScriptu, čímž usnadňuje vývojářům přechod mezi serverovou a klientskou logikou a umožňuje sdílení byznys logiky mezi serverem a klientem. V tomto kontextu je důležité pochopit, jak Blazor WebAssembly funguje, jaké jsou jeho výhody a omezení, a jaké možnosti nasazení nabízí.
Blazor WebAssembly je hostováno přímo v prohlížeči, což znamená, že veškerý kód běží na straně klienta. To zajišťuje vyšší výkon a lepší škálovatelnost, protože náročné výpočty a operace jsou prováděny na straně uživatele, čímž se uvolňuje serverová zátěž. Tento přístup také umožňuje aplikacím běžet offline, což je výhodné v situacích, kdy uživatel není připojen k síti. Aplikace je možné hostovat na statických webových stránkách nebo pomocí CDN, což dále zjednodušuje a zrychluje její nasazení.
Jednou z klíčových vlastností Blazor WebAssembly je, že všechny .NET sestavení a runtime jsou staženy do prohlížeče a následně cachovány pro budoucí použití. Tento mechanismus výrazně zkracuje dobu načítání aplikace po prvním stažení a zajišťuje její efektivní běh. Navíc s Blazor WebAssembly můžete využívat starší knihovny .NET, což značně rozšiřuje možnosti aplikace.
Důležitým aspektem Blazor WebAssembly je jeho kompatibilita s moderními webovými prohlížeči, jako jsou Chrome, Firefox, Edge a Safari. To znamená, že aplikace běžící v Blazor WebAssembly budou funkční napříč širokou škálou zařízení a operačních systémů. Tento přístup také zahrnuje plnou podporu pro mobilní platformy, což je nezbytné pro vývoj webových aplikací v dnešním mobilním světě.
Pokud jde o nasazení Blazor WebAssembly aplikace, existují dvě hlavní možnosti. První možností je nasazení pouze klientské části aplikace, což je výhodné pro statické webové servery jako Azure Static Web Apps. Druhá možnost zahrnuje nasazení serverového projektu, který odkazuje na klientskou aplikaci a může hostovat služby, jež jsou volány z Blazor WebAssembly aplikace. Tento přístup je vhodný pro složitější aplikace, které potřebují serverové zázemí pro zpracování dat a další operace.
Blazor WebAssembly však není bez omezení. I když Blazor využívá veškeré .NET API, musí být kód spuštěn v sandboxu prohlížeče, což znamená, že některé API mohou být pro webové aplikace nepodporována. Microsoft proto poskytuje nástroje pro analýzu kompatibility kódu, které upozorní vývojáře na případné nekompatibilní funkce. Tento nástroj je dostupný i pro projekty Blazor WebAssembly a automaticky upozorňuje na nekompatibilní API, čímž pomáhá vývojářům vyhnout se chybám, které by mohly aplikaci poškodit.
Důležité je si uvědomit, že pro dosažení optimálních výsledků v Blazor WebAssembly je nutné dbát na správnou strukturu a správné využívání komponent. Blazor WebAssembly je silně orientován na práci s komponentami, což znamená, že každá část aplikace by měla být navržena jako samostatná komponenta. Tímto způsobem lze aplikace snadno rozšiřovat a spravovat, což je výhodné jak pro malé projekty, tak pro velké a komplexní systémy.
Jak povolit výběr souborů a médií ve více platformách v aplikacích .NET MAUI?
V aplikacích vytvořených pomocí .NET MAUI je často nezbytné umožnit uživatelům vybírat soubory nebo média ze zařízení. Ať už jde o nahrání textového souboru nebo výběr fotografie z galerie, správné nakonfigurování oprávnění a integrace s nativními rozhraními jednotlivých platforem je klíčové pro zajištění funkčnosti napříč prostředími, jako jsou Windows, Android a iOS.
Na platformě Windows je nutné upravit soubor Package.appxmanifest, který se nachází ve složce Platforms/Windows. Výchozím editorem tohoto souboru ve Visual Studiu je grafický editor, nicméně pro přímé úpravy XML struktury je nutné zvolit "XML (Text) Editor". Do sekce <Capabilities> je třeba přidat odpovídající položky, aby aplikace získala oprávnění k přístupu k souborovému systému.
Na Androidu se úpravy provádějí v souboru AndroidManifest.xml, který se nachází ve složce Platforms/Android. Je nutné přidat požadovaná oprávnění přímo do uzlu <manifest>. Od verze Android 11 (API 30) a vyšší je třeba přidat další specifická oprávnění pro přístup k úložišti a médiím. Bez těchto úprav nebude možné přistupovat k souborům v zařízení nebo využívat výchozí selektory médií.
V prostředí iOS se potřebné klíče přidávají do souboru Info.plist, který se nachází ve složce Platforms/iOS. Tento soubor je možné upravit buď pomocí integrovaného editoru, nebo opět jako XML. Pro přístup k fotoaparátu, mikrofonu nebo knihovně médií je třeba výslovně deklarovat důvody použití skrze klíče jako NSCameraUsageDescription, NSMicrophoneUsageDescription, NSPhotoLibraryUsageDescription a další. Bez těchto záznamů iOS aplikaci nedovolí přístup k daným funkcím a uživateli nezobrazí příslušné dialogy s oprávněními.
Při implementaci této funkcionality je vhodné přímo v aplikačním kódu vytvořit obslužné metody, které se spouštějí při stisknutí odpovídajících tlačítek – pro výběr textového souboru, výběr obrázku nebo pořízení nové fotografie. Pro výběr textového souboru se použije komponenta FilePicker, kde se specifikuje, jaké typy souborů jsou na jednotlivých platformách podporovány – například text/plain na Androidu nebo .txt na Windows.
Jak správně navrhnout a používat klíče pro dělení dat v Azure Cosmos DB?
Při navrhování systému správy databází v prostředí Azure Cosmos DB je zásadním krokem výběr správného klíče pro dělení dat. Tento klíč, známý jako "partition key", je klíčovým prvkem pro efektivní distribuci dat a zajištění rovnoměrného rozložení zátěže mezi jednotlivé části databáze. Partition key je přiřazen k nádobě (container) a není možné jej měnit po vytvoření. Je proto důležité se zamyslet nad tím, jaký klíč bude nejvhodnější pro efektivní rozložení operací mezi jednotlivé části.
Pro optimální volbu partition key je třeba zohlednit několik klíčových faktorů. K tomu, aby se zabránilo vzniku tzv. „hot partitions“ – což jsou partice, které přetížené velkým množstvím požadavků, je nutné, aby klíč rozdělení zajistil rovnoměrné rozložení požadavků mezi všechny partice. Příkladem dobrého kandidáta na partition key může být unikátní vlastnost položky, která bude často využívána pro vyhledávání konkrétního záznamu. Například, pokud jde o databázi občanů USA, číslo sociálního zabezpečení jednotlivce by mohlo být vhodným kandidátem. Nicméně je důležité si uvědomit, že partition key nemusí být vždy unikátní. Hodnota partition key je totiž kombinována s ID položky, aby bylo možné jednoznačně identifikovat každý záznam.
Azure Cosmos DB automaticky vytváří a spravuje partice podle potřeby. Tento proces je pro aplikace a služby transparentní a neovlivňuje jejich výkon. Každá partice může růst až do velikosti 20 GB, a pokud je tato hranice překročena, Cosmos DB automaticky rozdělí partici na menší části. Kromě toho je důležité, aby klíč pro dělení dat splňoval následující požadavky: vysoká kardinalita, rovnoměrně rozložené požadavky mezi partice a rovnoměrně rozložené využití úložného prostoru.
Zatímco relační databáze mají pevně stanovené schéma, což je v některých případech výhodné pro řízený přístup k datům, semi-strukturované úložiště jako Azure Cosmos DB poskytuje větší flexibilitu při správě různých typů dat. Například pro systém, který prodává širokou škálu produktů, od oblečení po elektroniku, je možno využít flexibilní struktury, které se přizpůsobí specifickým vlastnostem každé kategorie. Schéma může vypadat následovně:
-
Oblečení: velikosti (S, M, L, XL), značka, barva.
-
Obuv: velikosti (7, 8, 9), značka, barva.
-
Televize: úhlopříčka (40", 52"), technologie obrazovky (OLED, LCD), značka.
-
Knihy: počet stran, autor, vydavatel.
Tato flexibilita umožňuje snadno přidávat nové typy produktů bez nutnosti měnit základní strukturu databáze. Tímto způsobem je možné snadno přizpůsobovat systém rostoucím potřebám společnosti nebo novým kategoriím produktů, které mohou mít zcela odlišnou strukturu od těch předchozích.
Pokud jde o migraci dat do Cosmos DB, lze využít nástroj pro migraci dat Azure Cosmos DB Data Migration Tool. Tento nástroj je open-source a umožňuje importovat data z různých zdrojů, včetně SQL databází, MongoDB, Azure Table Storage, textových souborů v JSON nebo CSV formátu a dalších. Nástroj nabízí jak verzi pro příkazovou řádku, tak i verzi s grafickým rozhraním. Pro konkrétní případy migrace dat si čtenář může prostudovat podrobnou dokumentaci, která je dostupná na oficiálním webu Microsoftu.
Při práci s Cosmos DB je klíčové také porozumět nákladům spojeným s jeho používáním. Ačkoli existují možnosti pro bezplatné nebo zkušební účty, vytváření a používání prostředků Cosmos DB v cloudu bude zpravidla znamenat náklady. Pro testovací účely je však k dispozici emulátor, který umožňuje simulační prostředí na lokálních počítačích. Tento emulátor podporuje pouze operační systém Windows, ale je možné vyzkoušet i preview verzi emulátoru pro Linux nebo macOS, případně jej spustit na virtuálním stroji.
Pro praktické vytvoření prostředků Azure Cosmos DB pomocí emulátoru, čtenář může postupovat krok za krokem podle návodu na vytvoření databáze a kontejneru, jak bylo uvedeno v textu. K vytvoření prostředků je potřeba stáhnout emulátor, nainstalovat jej a následně v prohlížeči přistupovat k rozhraní pro správu Cosmos DB.
Důležité je, že při práci s Cosmos DB není potřeba provádět změny v databázovém schématu při přidávání nových produktů nebo nových datových typů. Tento přístup umožňuje flexibilitu a snadné škálování, což je zvláště důležité pro dynamicky se vyvíjející aplikace a systémy.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский