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?

O čem mluvíme, když mluvíme o agilním přístupu k práci

To, jak si organizujeme práci dnes, není konečný stav. Věci měníme podle toho, jak se postupně rozrůstáme a zlepšujeme. Pár let zpátky u nás proběhl takový malý převrat. Agilní převrat.

V kategorii Development

Nejčastější úkoly pro marketingového analytika

Sdílíte nadšení pro data? Možná by vás mohlo zajímat, jak s marketingovými daty pracujeme u nás v Kentico. Šli jsme totiž rovnou ke zdroji, podívali se pod ruce našemu marketingovému analytikovi a při…

V kategorii Marketing

B2B marketing je pro mě větší výzva

Ačkoliv se Martina Hatoňová ucházela původně o pozici Junior UX Designera, osud tomu chtěl jinak. Kolegové si přeposlali její životopis a Martina nastoupila do marketingového oddělení, ve kterém pracu…

V kategoriích Rozhovory a Marketing