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.

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.

Autor článku

  • 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?

Design Sprinty při vývoji softwaru: Těžkosti, poučení a radosti

Vyplatí se Design Sprint zkoušet? Jaké dny jsou nejnáročnější? Kde číhají nebezpečí a dá se jim vyhnout? Odpovědi čekají hned na následujících řádcích! Zjistili jsme je pro vás při rozhovoru se Scrum …

V kategoriích Rozhovory, Development a UX

Seznamte se s Kentico Kontent

Na trhu jsme už 12 let. Na začátku jsme vytvořili skvělý produkt Kentico CMS. Ten označuje americký Gartner za jeden z nejlepších systémů pro správu webového obsahu na světě.

V kategorii Kentico Kontent

Aby se nám tu lépe žilo...

Věděli jste, že v České republice se vyprodukuje v průměru 30 mil. tun odpadu ročně? To jsou 3 tuny odpadu na osobu. Kdybychom každý rok viděli tu svou pěkně nasypanou v obýváku, asi bychom se pořádně…

V kategorii Život v Kentico