Sdílet prostřednictvím


Doporučení pro vývoj aplikací připravených pro produkční prostředí

Důležité

Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.

Při vývoji aplikací pro zařízení Azure Sphere je potřeba zvážit několik věcí, které zajistí, že vaše aplikace budou připravené pro produkční prostředí. Toto téma obsahuje kontrolní seznam osvědčených postupů pro ověření připravenosti vašich aplikací na pilotní nebo produkční nasazení. Potvrzení, že jsou tyto položky dokončené, může snížit počet problémů, se kterými se setkáte v produkčním prostředí, a usnadnit diagnostiku jakýchkoliv problémů, ke kterým dochází.

Při vývoji aplikace Azure Sphere se rozhodněte, jestli se bude spouštět na jádru vysoké úrovně (HL), jádru v reálném čase (RT) nebo hybridním systému obojího. Aplikace vysoké úrovně spouštějí kontejnerizované v operačním systému Azure Sphere a aplikace podporující v reálném čase (RTApps) běží na holých počítačích nebo s operačním systémem v reálném čase (RTOS) na jádrech v reálném čase.

Zde uvedená doporučení vám pomůžou zvýšit kvalitu a produktivitu v aplikacích připravených pro produkční prostředí. Níže uvedený kontrolní seznam obsahuje stručný seznam návrhů návrhu pro oba typy aplikací a také doporučené základy kódování a aspekty návrhu řešení, včetně odkazů na témata, která jednotlivé body probírají podrobněji. Tyto návrhy jsou odvozené od našich partnerství se zákazníky, včetně analýzy polí, revizí kódu a podpory interakcí aplikací nasazených v produkčních aplikacích v reálných řešeních a návrzích zařízení.

Základy kódování

  • Běžné problémy

    • Ujistěte se, že aplikace připravené pro produkční prostředí nepoužívají sady beta nástrojů.
    • Při cílení na sadu rozhraní API použijte nejnovější nástroje CMake a Azure Sphere.
    • Pokud chcete zajistit úplnou optimalizaci a velikost kódu, před nasazením aplikace do produkčního prostředí zvažte kompilaci konečných balíčků imagí v režimu vydání. Před nasazením nezapomeňte sestavit a otestovat balíček verze.
    • Při provádění úplného sestavení použijte zásadu s nulovými upozorněními, abyste zajistili, že se upozornění kompilátoru záměrně řeší.
    • Nastavte konzistentní kanál CI/CD a použijte správnou strategii větvení.
  • Problémy související s pamětí

    • Pokud je to možné, definujte všechny běžné pevné řetězce jako global const char* místo pevného kódování, aby je bylo možné použít jako datové ukazatele.
    • Pokud jsou globální datové struktury přiměřeně malé, zvažte poskytnutí pevných délek členům pole místo použití ukazatelů na dynamicky přidělenou paměť.
    • Pokud je to možné, vyhněte se přidělení dynamické paměti.
    • U funkcí, které vracejí ukazatel na vyrovnávací paměť, zvažte převod na funkce, které vracejí odkazovaný ukazatel vyrovnávací paměti a jeho související velikost volajícím.
  • Dynamické kontejnery a vyrovnávací paměti

    • Zvažte použití přístupu přírůstkového přidělování kontejnerů, jako jsou seznamy a vektory.

Návrhy návrhu základní aplikace vysoké úrovně

  • Obecné základy

    • Správně inicializovat a zničit všechny obslužné rutiny při ukončení nebo chybě.
    • Vždy používejte ukončovací kódy.
    • Pokud aplikace zjistí, že je v neobnovitelném stavu a vyžaduje restartování, ujistěte se, že se vždy zpracovává jako "čistý" konec aplikace, a ne riskujte zablokování.
    • Implementujte zpracování a protokolování chyb. Další informace naleznete v tématu Zpracování a protokolování chyb.
    • Pomocí systémového časovače jako sledovacího zařízení můžete zjistit, jestli je aplikace v neobnovitelném stavu nebo zastavení (například zablokování, vyčerpání paměti nebo nenapravování připojení, přestože implementovaná logika) neobnovuje, a má vliv na správné obnovení. Další informace naleznete v tématu Použití systémového časovače jako sledovacího zařízení.
  • Zpracování souběžnosti

    • EventLoop používejte, kdykoli je to možné.
    • Hledejte efektivitu souběžných úloh.
    • Vyhodnoťte, kdy použít vlákna a obor pouze pro konkrétní úlohy. Další informace o tom, kdy použít vlákna, naleznete v tématu Zpracování souběžnosti.
  • Monitorování připojení

    • Implementujte správnou úlohu kontroly stavu připojení na základě robustního stavového počítače, který pravidelně kontroluje stav připojení k internetu.
    • V případě řešení, která vyžadují řízení spotřeby, zapněte čip Azure Sphere po odeslání dat, sledujte celkovou dobu provozu a nastavte časovač vypnutí.
    • Nástroj cURL nedávno aktualizoval chování zpětného volání a osvědčené postupy. I když se Azure Sphere snažila zajistit, aby starší verze chování cURL fungovaly podle očekávání, doporučujeme při používání curl_multi postupovat podle nejnovějších pokynů k zabezpečení a spolehlivosti, protože použití rekurzivních zpětného volání může vést k neočekávaným chybám, výpadkům připojení a potenciálním ohrožením zabezpečení. Pokud se timerCallback aktivuje s vypršením časového limitu 0 ms, považuje se za časový limit 1ms, aby se zabránilo rekurzivním zpětným voláním. Nezapomeňte také volat curl_multi_socket_action explicitně alespoň jednou po voláních curl_multi_add_handle.
  • Správa a využití paměti

    • Sledujte využití paměti aplikací pomocí rozhraní API operačního systému Azure Sphere a zajistěte, aby aplikace správně reagovaly na neočekávané využití paměti.

Návrhy návrhu aplikací jádra v reálném čase

  • Povolte časovač watchdog MT3620, abyste zjistili vzájemné zablokování a implementovali správnou logiku obnovení.
  • Implementujte komunikaci mezi jádry pro hybridní aplikace HL-core a RT-core.

Aspekty návrhu řešení

  • Požadavky na připojení a řešení potíží

    • Ujistěte se, že jsou splněné všechny požadavky na síť. Další informace najdete v tématu Požadavky na připojení a řešení potíží.
    • Řešení potíží s připojením pomocí a OSNetworkRequirementCheck-HLApp OSNetworkRequirementChecker-PC.

Další položky, které je potřeba vzít v úvahu při přesunu řešení IoT do produkčního prostředí, najdete v tématu Přesun řešení IoT z testování do produkčního prostředí.