Opdatering af kørende løsninger vha. Features

07/07/2010 | skrevet af: Mikael Lindberg Mortensen | CMS, SharePoint

Opgradering af kørende SharePoint løsninger kan være en udfordrende opgave, hvor kunden tror det er en smal sag at bytte om på indholdet i 2 felter, ændre navnet i et felt og tilføje et eller flere nye felter.

Andre CMS’er har løst denne udfordring væsentligt mere elegant end SharePoint, men selv om det er besværligt og tager tid at opgradere SharePoint løsninger, så bliver vi jo nødt til at forsøge at gøre som kunden ønsker.

Jeg vil her beskrive hvordan jeg mener man bedst kan slippe igennem en opgradering.

Det er en god ide at oprette en feature udelukkende med det formål at opgradere løsningen fra en version til en anden.
Hermed sikres det at opgraderingskoden kommer under source control, samt at man undgår tilfældige Console programmer til opgradering.
Det vil ofte være svært at overtale en hosting provider til at eksekvere et console program på kundens installation, men at aktivere en feature fra STSADM er væsentligt nemmere.

Anvend versionsnummeret i Featurenavnet (Feature folderen), så kan man bedst aflæse hvilken version featuren anvendes til.

Skal der eksekveres kode så placer koden i en feature receiver.

Det vil oftest være det mest anvendelige at anvende en Site Feature, som bør sættes til Hidden.

Dermed tvinges man til at anvende STSADM til at aktivere featuren. Det har 2 umiddelbare fordele.

  1. Koden kan køre så længe det behøves.
  2. Man kan skrive til konsollen med Console.WriteLine, så det er muligt at skrive progress og eventuelle fejl ud på skærmen

Når man skriver opgraderingskoden, så bør man være opmærksom på at det kan blive nødvendigt at eksekvere koden flere gange, det er derfor meget vigtigt at man tester på om en given opgradering har været udført, inden man udfører den.
Hvis f.eks. et felt skal tilføjes til en Content Type så test først på om feltet eksisterer, derpå om feltet allerede er tilføjet til content typen, derefter kan man modificere content typen, hvis det er nødvendigt.

Placer generelle rutiner i et upgrade library, så de kan anvendes til senere opgraderinger. Jeg forestiller mig at vi med tiden kan opbygge et sådant utility library med det mest anvendte rutiner.

Et sidste råd er: Anvend konstanter til angivelse af feltnavne / værdier / ID’er, det gør det meget nemmere, hvis kunden ombestemmer sig midt i processen, eller det af anden grund bliver nødvendigt at ændre navngivningen.

Ingen kommentarer

Ingen kommentarer endnu.

RSS feed for kommentarer til dette indlæg. TrackBack URL

Smid en kommentar