Skoro každá webová aplikace má nějaký skoro statický obsah. Obsah, který sice není měněn zcela pravidelně a nejde o její hlavní úkol, ale přesto je dobré mít možnost ho editovat jinak než zásahem do zdrojáku. Různé pomocné texty jako podmínky použití, kontakty a podobně. V osmidílném seriálu jsem vám ukázal, jak lze specifické řešení pro jednu aplikaci přeměnit v univerzální komponentu.
To vše formou "skoro live codingu". Z různých logistických důvodů jsem to nechtěl dělat jako přímo živé kódování, ale zároveň jsem nechtěl, aby to bylo jako připravené demo. Takže ve videu najdete různé moje záseky a chyby, které pobaví, protože škodolibost je nejčistší lidská radost, ale také vám umožní se z cizích, tedy mých, chyb poučit.
Díl první: Prvotní aplikace
V prvním dílu vytvořím řešení pro konkrétní ukázkovou aplikaci. Používá jako úložiště Entity Framework, formátuje pomocí Markdownu a asi jste něco takového psali mnohokrát.
Díl druhý: Základní abstrakce a View Component
Ve druhém dílu do architektury zavedu základní abstrakci pomocí jednoduchého rozhraní (což mi umožní konkrétní implementaci později změnit). Také zařídím syntakticky snazší použití celé věci pomocí vlastní view komponenty.
Díl třetí: Lepší abstrakce
Minule jsme skončili vytvořením jakési abstrakce pomocí rozhraní. Nebylo to ale příliš elegantní, proto v tomto dílu rozdělíme funkcionalitu získávání dat a formátování - v zásadě jde o snahu o dodržování SOLID principů a zejména ISP - Interface Separation Principle.
Díl čtvrtý: Abstrakce DbContextu a logování
V našem putování od specifického řešení k univerzální komponentě zbývá poslední překážka: Přílišná vazba na konkrétní DbContext. Ve čtvrtém dílu vám ukážu, jak pomocí interface umět napojit našeho providera na jakýkoliv DbContext. Také do našeho řešení přidáme standardní logování, abychom mohli sledovat co dělá.
Díl pátý: GitHub repozitář a vytvoření komponenty
Dosud jsem pracoval stále s jednou konkrétní aplikací. V tomto pokračování vytvořím repozitář na GitHubu a proof of concept aplikaci přetvořím ve dva projekty: Samostatnou komponentu pro správu obsahu a ukázkovou aplikaci, která ji využívá.
Díl šestý: Konfigurace
Podmínkou pro univerzální použitelnost kódu je možnost jeho konfigurace. Proto v tomto pokračování vytvořím konfigurační infrastrukturu: pevně zakódované parametry nahradím vlastními konfiguračními objekty, injectovanými pomocí Options patternu.
Díl sedmý: Registrace služeb
S tvorbou komponenty pro statické texty se blížíme do finále. V tomto díle bude mým cílem odstranit nepohodlnou registraci služeb do IoC/DI. Vytvořím registrační extension metody, které budou sloužit uživatelům naší komponenty k její inicializaci a konfiguraci.
Díl osmý: Tvorba a publikace NuGet balíčku
Komponenta pro statické texty je hotová. V posledním dílu seriálu z ní udělám NuGet balíček a publikuji ji na serveru NuGet.org.
A co dál?
Komponenta je hotová a můžete ji začít používat. Její zdrojáky najdete na GitHubu, takže se můžete zapojit do vývoje. Už mi tam přistály nějaké pull requesty, které jsem zatím neměl čas zkoumat. Rozhodně je také dobré napsat nějakou dokumentaci, protože README.md
zeje prázdnotou. Snad se k tomu brzo dostanu.