Prst na tepu doby – přepisujeme knihovny do .NET Core
Práce v Kentico, Produkty

Prst na tepu doby – přepisujeme knihovny do .NET Core

Když začal Petr Palas, CEO Kentico, v roce 2004 psát první verzi svého produktu, vytvářel jednoduchý systém pro správu obsahu postavený na platformě Microsoft .NET. Od té doby uteklo hodně vody. V roce 2020 je Kentico Xperience úspěšný moderní produkt, který stále inovujeme. A tak jsme jednoho dne museli vyřešit otázku, jak se postavit k nové platformě .NET Core. Jak jsme se s ní v Kentico sblížili a co plánujeme do budoucna?

Platforma .NET se v čase měnila stejně jako potřeby vývojářů, kteří na ni spoléhají. I my v Kentico jsme průběžně přecházeli na její nejnovější verze – udržovat produkt aktuální je pro nás samozřejmost. Díky tomu jsme při vývoji produktu měli k dispozici nové funkce a nebo vlastnosti jazyka C#. 

.NET Core – čas rozhodování

V roce 2016 ovšem přišla zásadní změna. Microsoft představil .NET Core – novou vývojovou platformu, postavenou nezávisle na původním .NETu. Její první verze 1.0 neobsahovala nic moc zajímavého, proto ji vývojáři přijali spíše vlažně. Ale s postupem času se její možnosti zdokonalovaly, a tak rostl i zájem developerů.  

U verze 2.0 a později ještě 3.0 už bylo jasno – .NET Core se stával stále více relevantní náhradou za původní .NET. Ruku v ruce s tím se čím dál naléhavěji nabízela otázka pro nás, vývojáře v Kentico. 

Jak se k nové platformě postavíme? 

Čekal nás krok ven ze zaběhaných pořádků. Pravda, průběžně jsme aktualizovali .NET, abychom mohli s každým vylepšením využívat  všech jeho možností. Jenomže teď tu byla úplně nová platforma, vyvinutá nezávisle na té původní. 

To už by neznamenalo jen prostou aktualizaci v použité infrastruktuře a vývojových nástrojích. Museli bychom se pustit do něčeho daleko většího – do přepisu desítek existujících knihoven do jiné technologie. I přes značnou podobnost programových rozhraní totiž obě platformy vykazují značné odlišnosti, zejména s přihlédnutím k vývoji webových aplikací. To je i náš případ v Kentico. 

Obezřetné krůčky směrem k nové platformě

Rok 2018 teprve začínal, když jsme dospěli k rozhodnutí začít přepisovat první knihovny do .NET Core. Namísto přímého targetování .NET Core jsme však nejprve zvolili .NET Standard 2.0. Jedná se o standard, který specifikuje podmnožinu programových rozhraní dostupných v .NET Core i v původním .NET frameworku. Protože jsme začínali od obecných knihovních projektů, byl Standard přiléhavější volba než Core. 

U webových projektů jsme potom už zvolili jiný postup. 

Cílem přepisu v té době nebylo poskytnout co nejdříve hotové řešení, tedy všechny knihovny použitelné v .NET Core. Nejprve jsme potřebovali ověřit pracnost přepisu a podle toho potom upravit naše další plány. Cesta od prvních prototypů a přepsaných knihoven po investici do kompletního přepisu trvala nakonec několik měsíců.  

.NET Core – nástupce .NET v Kentico Xperience

Na technologiích Microsoftu staví spousta firem. Společně s nimi jsme sledovali průběžná sdělení MS o budoucnosti původního .NETu i situaci okolo nového .NET Core. Jistě, ujišťování o pokračující podpoře zákazníků s původní technologií potěšila. Jenže jak čas ubíhal, začínalo být zřejmé, že nové funkce, nastavení a verze jazyka C# jsou zamýšleny především už jen pro .NET Core

Byla už jen otázka času, kdy i my svým zákazníkům dokážeme nabídnout plnohodnotný framework pro stavbu webových stránek na nejnovější technologii. A tak jsme začali s přepisem. 

Jak přepis knihoven probíhá

V Kentico máme desítky knihoven a několik webových projektů podporujících vývoj v MVC 5. Proto jsme se rozhodli pro přístup zdola nahoru – od nejnižších knihoven jsme začali přepisovat kód tak, aby byl kompatibilní s .NET Standard 2.0. Pro zachování zpětné kompatibility i nadále targetujeme .NET framework. 

Každá knihovna má tedy dva výstupy – jeden pro novou technologii a druhý pro udržení zpětné kompatibility. Podpora existujících zákazníků je totiž pro nás důležitý závazek, ke kterému přistupujeme se vší poctivostí. Udržet binárně kompatibilní rozhraní v nejvyšší možné míře je proto pro nás zásadní. 

Quo vadis, Kentico Xperience

Pěkně jsme s prací pohnuli. V současné chvíli už máme drtivou většinu obecných knihoven přepsanou a zaměřujeme se na ty vyšší. Které to jsou? Ty, které cílí přímo na podporu vývoje v ASP.NET Core (především v MVC 6). Tady už targetujeme přímo .NET Core, neboť zmíněný .NET Standard se pro daný typ projektů spíše nehodí. 

A kam to všechno směřuje? 

Na podzim 2020 původní verzi knihoven pro .NET opustíme, protože i naši zákazníci adoptují vývoj na knihovnách nových. A my tu pro ně celou cestu budeme.

Autor

Marek Fešar

Na Kentico se mi líbí, jak moc záleží na kvalitě kódu. Důsledně se řeší code review, refactoring i testy, aby se minimalizovalo množství chyb nebo návrhových nedostatků. Myslím, že takto by to mělo být samozřejmostí všude.

Marek Fešar, Principal Technical Leader

Více o tématu .NET Core

Projděte si další články na toto téma z naší dílny:

Hledáme nové kolegy/yně

Zajímá vás práce s nejnovějšími technologiemi a zaujal vás .NET Core? Máte štěstí, zrovna se poohlížíme po developerech do týmu Kentico Xperience! Podívejte se na naši aktuální nabídku pozic a ozvěte se nám. Třeba hledáme právě vás.

Zajímá vás, jak to u nás chodí, a chcete vědět všechno mezi prvními? Sledujte nás na Facebooku, LinkedIn nebo Instagramu.

Další podobné články

Jak se žije .NET developerům v Kentico – část I

Představujeme vám .NET brainiaky, Aleše z Kontentu a Marka z Kentico Xperience. Povídali jsme si o rozdílech v developmentu a jejich týmech. A taky o tom, jak oni sami pomáhají ...

Chci vědět víc

Vývoj produktu – NOVĚ

Děje se to poměrně běžně. Firma s přátelsky nastavenými vztahy začne růst. Jak čas běží a lidí v kancelářích přibývá, zdá se, že se něco zároveň vytrácí. Věci najednou trvají dé...

Chci vědět víc

Experiment: tak trochu jiný tým

Léto v Kentico pravidelně zasvěcujeme sebevzdělávání a inovacím, zkoušíme nové věci. A tak se v červnu 2018 zrodil nový tým – Experiment. Byl to nápad, od kterého se neočekávaly...

Chci vědět víc