Frameworky pro tvorbu RESTful API #1 – ASP.NET Core (C#)
Tento článek se zabývá prozkoumáním a úvodem do frameworku ASP.NET Core.
https://docs.microsoft.com/cs-cz/aspnet/core/?view=aspnetcore-2.1
Technologie ASP.NET či její novější verze nyní představovaná jako ASP.NET Core byla vybrána k prozkoumání, jelikož se jedná o nejtypičtějšího a nejčastějšího zástupce, pokud chceme vyvíjet různé webové API na základech programovacího jazyka C\# a frameworku .NET.
ASP.NET Core je tedy open-source webový framework vyvíjený společností Microsoft a jeho komunitou. Jeho typické použití zahrnuje jak webové rozhraní (tedy včetně RESTful API), tak i další moderní webové či cloudové aplikace.
Principy technologie
První podstatnou pomůckou pro práci s tímto frameworkem je vývojové prostředí, kterým je Visual Studio. To je vyvíjeno rovněž firmou Microsoft, která tak poskytuje co nejsnadnější práci s frameworkem a jako bonus i snadný přístup k jeho dalším službám poskytnutým pomocí cloudové výpočetní platformy Microsoft Azure. Dále je zde snadný import dalších knihoven a frameworků pro .NET.
Samotná práce s frameworkem ASP.NET Core se pak zakládá na použití Model-View-Controller architektury, tedy rozdělením aplikace do tří hlavních součástí:
https://docs.microsoft.com/cs-cz/aspnet/core/mvc/overview?view=aspnetcore-2.1
Jednoduché REST API vytvořené pomocí frameworku ASP.NET Core by tedy vypadalo tak, že nadefinujeme několik základních controllerů obstarávající HTTP požadavky na klíčové zdroje (např: PUT:/articles, nebo GET:/comments/[id]) a ke každému z těchto zdrojů, který se má chovat jako kolekce, vytvoříme nějaký model.
Model pak bude standardní třída reprezentující strukturu daného zdroje. Mezi jednu z hlavních výhod ASP.NET Core patří také EntityFramework, který nám umožní snadná ukládání a načítání těchto objektů z databáze. Další výhodou těchto objektů je to, že není nutné je při vracení konvertovat do přenosových formátů (JSON,XML), ASP.NET Core toto provádí automaticky. Stejně tak je ale připraveno i na drtivou většinu všech dalších záležitostí, které při tvorbě REST API řešíme, např. připravené třídy pro vracení stavů apod.
Kromě toho lze při práci s tímto frameworkem pracovat s řadou dalších balíčků o základu C\#, .NET. Ve VisualStudiu je to více než snadné a to s použitím NuGet Package Manageru. ASP.NET Core má také dobrou podporu pro asynchronní práci s metodamy async/await.
Ukázky kódu
Model pro zdroj typu article (článek):
namespace BlogApi.Models
{
public class ArticleModel
{
public long Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
}
Metoda GET articles v controlleru pro články:
[Route("api/[controller]")]
public class ArticlesController : Controller
{
// implementuje GET /api/articles
[HttpGet]
public IEnumerable GetAll()
{
// nacitani z databaze bylo pro ukazku
// trochu zjednoduseno
return DB.ArticleItems.ToList();
}
}
Hlavní výhody
- Microsoft Azure – Snadné napojení na cloudové služby Microsoft Azure přináší řadu výhod a funkcí, které můžeme využít. Za nejpodstatnější výhodu považuji snadné provozování aplikace přímo na cloudu, tedy serverech k tomu přímo určených a vysoce spolehlivých.
- Rozsáhlá dokumentace i v češtině – Microsoft a jeho komunita poskytuje pro ASP.NET Core opravdu rozsáhlou dokumentaci a velká část z ní je dostupná i v češtině.
- Řada dostupných komponentů – Můžeme využívat řadu dalších komponentů vytvořených v jazyce C# nebo frameworku .NET.
- Asynchronní orientac – Jednoduchá práce s asynchronně volanými funkcemi.
Hlavní nevýhody
- Operační systém – Jelikož je vyvíjen společností Microsoft, můžeme logicky očekávat nižší podporu jiných operačních systému než je Windows.
- Kompatibilita mezi verzemi frameworku – Nižší kompatibilita mezi různými verzemi frameworku, aktualizování projektů může být složité, hlavně pokud se uživatel rozhodne aktualizovat z ASP.NET na ASP.NET Core
Celkové zhodnocení
1 – nejlepší, 5 – nejhorší
- [Jednoduchost a intuitivnost – 2] – Jednoduchá architektura MVC, množství ulehčujících prvků, se kterými je ale nutné se naučit pracovat.
- [Dokumentace – 1] – Výborná dokumentace v několika jazycích od Microsoftu a jeho komunity.
- [Spolehlivost – 2] – Vysoké zabezpečení obsahuje funkce pro správu ověřování, autorizace, ochrany dat, SSL vynucení, tajné klíče aplikace, žádost proti padělání, ochrana a správa CORS. Je možné za příplatek snadno hostovat na spolehlivých serverech cloudu Microsoft Azure. ASP.NET Core je nová technologii, tudíž může obsahovat ještě nevyladěné chyby.
- [Popularita – 2] – Co se týče ASP.NET Core, jedná se sice o novou, ale na popularitě rychle rostoucí technologii. Starší ASP.NET kdysi bývalo dominantním nástrojem na poli webových aplikacích, avšak jeho sláva se s klesající podporou chýlí ke konci.
Mezi další populární technologie pro jazyk C\# lze řadit:
- Nancy – http://nancyfx.org/
- Manos – https://github.com/jacksonh/manos
- a další..