Ultimize CMS

ultimize.jpg
Sideoversigten i Ultimize CMS
  • ultimize.jpg
  • Ultimize-design-20-final.png

Lanceret: 27. august 2008

Da jeg blev ansat hos Ultimate Web A/S, var der en forventning om at jeg skulle hjælpe med at bringe virksomheden over på .net platformen. Først skulle jeg lige sættes ind i de eksisterende systemer - derefter blev jeg sat igang med at lave en ny ASP.net version af deres efterhånden aldrende ASP-baserede CMS. Dette endte ud i Ultimize CMS.

Opgaven

Som udgangspunkt skulle CMS'et fungere som erstatning for et ældre ASP-baseret CMS, som kunderne med tiden skulle migreres over fra. Desuden skulle mine kollegaer kunne arbejde videre med CMS'et, så det var en fordel hvis det nye "virkede bekendt" - især da de ikke havde nogen erfaring med ASP.net af betydning.
Derfor valgte jeg at lave CMS'et med udgangspunkt i det gamle. Ikke så meget på kodebasis - der var stort set intet jeg kunne bruge - men mere det generelle koncept, - at hver side var eén individuel side, og ikke en eller flere artikler. En CMS-side kunne være af forskellige typer, men de kunne ikke blandes sammen på den samme side (med andre ord, du kan ikke have en side med et tekst indhold, så en nyhedsoversigt, derefter et galleri og til sidst en kontakt formular, på en og samme adresse). Det er en simpel tilgang i forhold til mere avancerede CMS'er, men også en lettilgængelig tilgang, der er nem at forstå for brugere der ikke er så fortrolige med hjemmesider.

Fremtidssikring

Under mit første halve år i firmaet, gik det ret hurtigt op for mig, at det var langt fra optimalt at systemet ikke var opdaterbart. Det betød at eventuelle fejlrettelser kun blev udrullet til de kunder der gjorde opmærksom på at fejlene eksisterede. Det var ikke muligt at give alle kunder mulighed for at have et opdateret system uden at skulle gennemgå alle individuelle hjemmesider og rette fejlene manuelt.
Derfor var en af de absolut første grundideer da jeg startede arbejdet på Ultimize, at det skulle være muligt, på en let og smertefri facon, at opdatere alle kunders CMS med de nyeste fejlrettelser efterhånden som de blev færdiggjort. Udover at lette vores arbejde med fejlrettelser betydeligt - vi skal kun gøre det en gang og støder vi på fejlen på en kundes side, er det bare at bede kunden opdatere systemet - har det også gjort det muligt at udvide CMS'et betragteligt med funktionalitet som der slet ikke var tænkt på i starten. Samtidig får alle kunderne glæde af fejlrettelserne og de nye funktioner, uanset om de lige har fået en hjemmeside på Ultimize, eller om de var blandt de første der blev sat op på systemet.

Fleksibilitet

En ting som dog var meget populært ved det gamle system, var dets fleksibilitet. Du kunne næsten sætte et hvert design op til at køre på systemet. Det var derfor også bidende nødvendigt at bibeholde denne fleksibilitet med det nye system, hvilket jeg har lagt meget energi i. Der er lavet kontroller og grænseflader til nær sagt alle dele af systemet, og der kommer jævnligt nye funktioner til, hvis der opstår et specielt behov i forbindelse med en given opgave. Denne fleksibilitet har medvirket til, at så forskellige sider som kan ses her og selvfølgelig selve denne side alle er sat op på samme standard platform - Ultimize CMS.

Teknisk

Ultimize er opbygget fra bunden i C# og består næsten udelukkende af objekt-orienteret kode.
Databaseforbindelser foretages via et egenudviklet datalag i ADO.net, som benytter en meget objekt-orienteret tilgang, der betyder at selve database-grænsefladen er "gemt væk" i de forskellige objekters abstraktionslag, så det ikke er noget der skal tænkes over i det daglige. Det er derfor noget der langt hen ad vejen ligner den samme struktur som LINQ to SQL autogenererer, dog med større fleksibilitet.
Præsentationslaget består af Webforms, dog uden de typiske postback issues, der ofte præger Webform applikationer. Der gøres kraftigt brug af egenkonstruerede serverkontroller, for optimal kontrol over den genererede html-kode. Alt genereret html-kode er selvfølgelig 100% valid i følge W3C standarderne for HTML5. Derudover bruges Javascript og custom Ajax-kald i stor stil, for at forbedre brugeroplevelsen.