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?

Kentico Xperience se mění – malé flexibilní týmy, komunikace přímo se zákazníky a časté iterace...

V Kentico Xperience jsme se pustili do komplexní modernizace. S tou je úzce spojen i způsob práce ve vývojových týmech. Nevstupujeme ale do neznámých vod – v Kentico Kontentu jsme si všechno už řádně …

V kategoriích Rozhovory, Kentico Xperience a Život v Kentico

Promyšlený proces, žádná střelba od boku

Jaké to je vyvíjet nový produkt v zavedené firmě? S naším developerem Romanem Konečným jsme zavzpomínali na začátky cloudového týmu.

V kategoriích Kentico Kontent a Rozhovory

Kentico slovy Petra Palase #1: Kdo jsme a kam jdeme

Jaké bude Kentico za 10 let? Kolik zaměstnanců budeme mít v roce 2025? Do jakého produktu se pustíme po Kentico Kontent? Odpovědi na takové otázky by byly asi podobně přesné, jako kdybychom předpovída…

V kategorii Život v Kentico

Potkejte se s námi offline

  • Frontendisti.cz

    Přednáška Web Components - jak a proč je v Kenticu používáme od Petra Petřince na online meetupu Frontendisti.cz

  • DevOps Workshop 1/2

    Nudíte se na home office? Okořeňte si ho nadupaným dvoudenním workshopem. Naučíte se třeba, jak snadno jde automatizovat důležité části vývoje softwaru.  Navíc v přímém přenosu zboříme mýty, které o DevOps kolují po internetech. 

  • DevOps Workshop 2/2

    Pokračování středečního workshopu.