Přejít na hlavní obsah
Prst na tepu doby – přepisujeme knihovny do .NET Core

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.


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.

Co říkají kolegové z týmu

  • Marek Fešar

    Na Kenticu se mi líbí, jak moc záleží na kvalitě kódu. Důsledně se řeší code review, refaktoring 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

Chcete si číst dál?

RealUXCamp 2019 očima osmi designérů

Zeleno, kam se člověk podívá. Praskající oheň, voňavé dobroty v kotlíku, léto… a hlavně spousta známých, ale i nových tváří UX světa. RealUXCamp je zkrátka akce, na které nemůžeme žádný rok chybět! Př…

V kategoriích UX a Život v Kentico

Design Sprinty při vývoji softwaru: Experimenty s metodikou

V pondělí definujete problém a cíle. V úterý shromáždíte nápady. Ve středu je řádně proškrtáte. Ve čtvrtek vytvoříte prototyp řešení a hned v pátek ho otestujete s uživateli… Znáte metodiku Design Spr…

V kategoriích Rozhovory, Development a UX

Zákulisí vzniku fairznamka.cz v nesestříhaném rozhovoru s účastníky

Zaujal vás příběh e-shopu s dálničními známkami, naceněného na 401 milionů, který nakonec vznikl za jeden víkend a zdarma? Vyzpovídali jsme dva účastníky hackathonu, kteří neváhali prozradit detaily o…

V kategoriích Rozhovory, Život v Kentico, Development a Video