C# és TypeScript együttműködést támogató osztálykönyvtár fejlesztése

OData támogatás
Konzulens:
Dr. Asztalos Márk
Automatizálási és Alkalmazott Informatikai Tanszék

Webes alkalmazásoknál egy népszerű felosztása a technológiai rétegeknek az ASP.NET szerver és a JavaScript kliens. Utóbbi fejlesztését segíti, ha hasonló struktúrákkal dolgozhatunk, mint szerver oldalon. Ilyenek például azok az adatstruktúrák, amelyeket a két oldal kommunikációja során használunk. A fejlesztést az is segíti, ha JavaScript helyett TypeScript-re váltunk, mivel típusos, így sok potenciális hiba fordítási időben javítható.

Dolgozatommal az volt a célom, hogy a kliens fejlesztését gyorsabbá, és hibatűrőbbé tegyem, ezért egy platformspecifikus alkalmazást készítettem, amely .NET struktúrákból generál TypeScript sturktúrákat, továbbá képes ASP.NET Web API kontrollereket leképezni kliens API-ra.

Az alkalmazásom reflection-t használva feltérképezi a DLL-ekben található osztályokat, interfészeket, enumerációkat, és leképezi a TypeScript megfelelőiket, megtartva a struktúrák közötti kapcsolatot. A kliens API generálásánál alapértelmezetten a jQuery JavaScript könyvtárat használja az AJAX hívásokhoz.

A kódgenerálásnál fontos a paraméterezhetőség: a kimenetként kapott TypeScript kód minél jobban testreszabható legyen. Továbbá fontos a kibővíthetőség is, hogy könnyen lehessen hozzáadni új funkcionalitást, anélkül hogy az alkalmazást módosítani vagy újrafordítani kellene, és, hogy minél többféle kliens oldali keretrendszerbe legyen intergálható a generált kód. Ezt plugin-ekkel értem el. A plugin-ezhetőség szemléltetésére elkészítettem egy Knockout.JS plugin-t, amellyel Knockout modelleket lehet generálni TypeScript-ben, továbbá egy kliens API plugin-t, amely az alapértelmezett jQuery könyvtár helyett a Fetch API JavaScript könyvtárat használja AJAX hívásokhoz.

A alkalmazáshoz egy példaprogramot is készítettem annak a szemléltetésére, hogy milyen módon egyszerűsíti a kliens fejlesztését a TypeWatcher. A példában szerver oldali Web API kontrollerekből generálom a kliens API-t, továbbá adatosztályokat és Knockout.JS modelleket is leképezek.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.