117
Webbwidgets f ¨ or SharePoint Hannes Kock 30 augusti 2008 Examensarbete i Datavetenskap, 20 po¨ ang (30 HP) Handledare vid CS-UmU: Anders Broberg Examinator: Per Lindstr¨ om Ume ˚ a Universitet Institutionen f¨ or datavetenskap SE-901 87 Ume˚ a Sverige

Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Webbwidgets for SharePoint

Hannes Kock

30 augusti 2008Examensarbete i Datavetenskap, 20 poang (30 HP)

Handledare vid CS-UmU: Anders BrobergExaminator: Per Lindstrom

Umea UniversitetInstitutionen for datavetenskap

SE-901 87 UmeaSverige

Page 2: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter
Page 3: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Sammanfattning

Program arkitektur och design har alltid varit en uppskattad och hogt varderad bitav programmering. For att bevisa att ett visst programmeringssatt ar den bastalosningen pa just det och det problemet har ett otal forskartimmar lagts ned. Andatrevar manga programmerare i det blinda nar nya moderna metoder och teknikersom t.ex. Ajax och webbtjanster skall tillampas. Denna studie har tillkommitsom ett led i forbattring och forenkling for webbutvecklare. I samband med attforfattaren anstallts av Acino for ett uppdrag som involverade kommunikationmot en kalender pa en SharePoint-server borjade tillvagagangssattet ifragasattasoch fragan for detta exjobb blev klar. “Vad skulle det innebara att skicka all visuellinformation via webbtjanst redo for anvandarens webblasare i jamforelse med detmer traditionella sattet att skicka enbart strukturerad data?”. Uppgiften blev attgora en webbwidget som anvander ovan namna angrepp. For att med ratta kunnagora ett uttalande om hur bra webbwidgeten fungerade sa skapades aven en annanwidget med hjalp av ASP.NET 3.5 teknik som anvander det traditionella sattet.Efter en jamforelse av prestanda, anvandarvanlighet, utvecklingssvarigheter samtunderhallningsmojligheter kunde stora brister observeras i den forstnamndawidgeten. Prestandan visade sig vara alldeles for lag pa grund av for mangaanrop mot SharePointservern. Detta patvingades eftersom for lite ansvar hadelagts pa anvandarsidan som var en foljd av att inte strukturerad data hadeanvants fran forsta borjan. Utvecklingssvarigheterna blev ocksa hoga pa grundav flertalet sammarbetande system var tvungen att kopplas samman med olikaansvar samtidigt som ingen bra felsokning eller hjalpmedel fanns att tillga.

Page 4: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter
Page 5: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Abstract

Webb widgets for SharePointProgram architecture and design have always been a highly regarded part ofcomputer programming. Much effort have been invested in this field of researchin order to find the most efficient way to solve a certain programming problem.Despite this, many programmers are uncertain when confronted with new methodsand techniques - like Ajax and Web Services. This work should be viewed uponas a means of simplification and improvement for the single web developer whenfaced with such a problem. When working at Acino with a task that involvedaccessing a calender on a SharePoint Server the underlying question in this workcrystallized; “What would sending all visual information by web service to theclient’s browser mean, in comparison to the traditional way of sending structureddata?” The task at hand was to create a Web Widget which uses the approachdescribed above. For comparison a traditional ASP.NET 3.5 Widget was alsocreated. After a comparisonstudy taking into account performance, usability,development potential and maintenance issues big issues with the web widgetwas found. The performance was low because of too many web service querys tothe SharePointserver. This was forced because of the lack of responsibility theJavaScript in the browser had received when not receiving structured data. Ithad too little information to be able to be part of any operation except retrieveHTML from SharePoint. Another issue with the web widget was great difficultieswhile implementing it because several systems would have to cooperate while notproviding any good support or debuggers.

Page 6: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter
Page 7: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Innehall

1 Introduktion 1

1.1 Bakgrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Disposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Problembeskrivning 5

2.1 Problemet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2 Gemensamma krav . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3 AJWH-widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3.1 Icke-funktionella krav . . . . . . . . . . . . . . . . . . . . 7

2.4 Mal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.5 Syfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.6 Metoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.6.1 Web services . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.6.2 Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.7 Utrustning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.8 Relaterade arbeten . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 SharePoint 13

3.1 CMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.2 Varfor SharePoint? . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.3 Fragestallningar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.4 Windows SharePoint Services . . . . . . . . . . . . . . . . . . . . 15

3.5 Oversikt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.6 Webbplatser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.7 Mallar och definitioner . . . . . . . . . . . . . . . . . . . . . . . . 20

3.7.1 Skraddarsydd mall . . . . . . . . . . . . . . . . . . . . . . 21

3.7.2 Webbplatsdefinition . . . . . . . . . . . . . . . . . . . . . 22

iii

Page 8: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.8 Sidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.8.1 “Site Pages” . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.8.2 “Application Pages” . . . . . . . . . . . . . . . . . . . . . 23

3.9 Kataloger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.10 “Features” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.11 Listor och innehallstyper . . . . . . . . . . . . . . . . . . . . . . . 26

3.11.1 Webbplatskolumner . . . . . . . . . . . . . . . . . . . . . 26

3.11.2 Innehallstyper . . . . . . . . . . . . . . . . . . . . . . . . 27

3.12 Vyer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.13 Webbdelar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.14 Objektmodellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.15 Autentisering och Auktorisering . . . . . . . . . . . . . . . . . . . 33

3.16 Web service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.16.1 Autentisering . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.16.2 UpdateListItems . . . . . . . . . . . . . . . . . . . . . . . 34

3.16.3 GetListItemChangeSinceToken . . . . . . . . . . . . . . . 36

4 Val av jamforelsewidget 37

4.1 ASP-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.1.1 Icke-funktionella krav . . . . . . . . . . . . . . . . . . . . 39

5 AJWH-Widget 41

5.1 Planering och teknisk genomgang . . . . . . . . . . . . . . . . . . 41

5.2 Systemoversikt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.2.1 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . 43

5.2.2 Autentisering . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.3 Implementering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.3.1 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.3.2 SharePointserver . . . . . . . . . . . . . . . . . . . . . . . 44

5.3.3 Webbservern . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.3.4 Klienten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.3.5 Filuppladdning . . . . . . . . . . . . . . . . . . . . . . . . 53

5.3.6 SharePoint JavaScript . . . . . . . . . . . . . . . . . . . . 53

5.4 Det fardiga systemet . . . . . . . . . . . . . . . . . . . . . . . . . 54

Page 9: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

6 ASP-Widget 55

6.1 Planering och teknisk genomgang . . . . . . . . . . . . . . . . . . 55

6.1.1 UpdatePanel . . . . . . . . . . . . . . . . . . . . . . . . . 55

6.1.2 ListView . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.2 Systemoversikt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6.2.1 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . 58

6.3 Implementering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.3.1 Webbservern . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.4 Det fardiga systemet . . . . . . . . . . . . . . . . . . . . . . . . . 63

7 Resultat - En Jamforelsestudie 65

7.1 Prestanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

7.1.1 Hamta hem en lista . . . . . . . . . . . . . . . . . . . . . 68

7.1.2 Klicka pa att editera ett objekt i listan . . . . . . . . . . . 70

7.1.3 Spara andringar av objekt . . . . . . . . . . . . . . . . . . 70

7.1.4 Lagg till ett nytt objekt . . . . . . . . . . . . . . . . . . . 73

7.1.5 Ta bort ett objekt . . . . . . . . . . . . . . . . . . . . . . 74

7.1.6 Dubblering . . . . . . . . . . . . . . . . . . . . . . . . . . 76

7.1.7 Slutsatser fran prestandajamforelse . . . . . . . . . . . . . 76

7.2 Anvandarvanlighet . . . . . . . . . . . . . . . . . . . . . . . . . . 77

7.3 Modularitet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

7.3.1 Krav - SharePointserver . . . . . . . . . . . . . . . . . . . 78

7.3.2 Krav - Webbservern . . . . . . . . . . . . . . . . . . . . . 78

7.4 Att underhalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

7.5 Vidareutvecklingsmojligheter . . . . . . . . . . . . . . . . . . . . 80

7.6 Implementeringssvarigheter . . . . . . . . . . . . . . . . . . . . . 81

7.6.1 SharePoint . . . . . . . . . . . . . . . . . . . . . . . . . . 81

7.6.2 Webbservern . . . . . . . . . . . . . . . . . . . . . . . . . 81

7.6.3 Klient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

8 Slutsats 83

8.1 Begransningar och restriktioner . . . . . . . . . . . . . . . . . . . 84

8.2 Fortsatt arbete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

9 Tillkannagivanden 85

Referenser 87

Page 10: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

A Appendix 91A.1 AJWH-widget bilder . . . . . . . . . . . . . . . . . . . . . . . . . 91A.2 ASP-widget bilder . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Page 11: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Figurer

2.1 Kommunikationsoversikt for AJWH-widgeten. Det speciella ar attHTML/JavaScript returneras fran SharePoints web service . . . 8

2.2 Oversikt av kommunikationen pa en traditionell hemsida och ensom anvander Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1 Windows SharePoint Services 3.0 (bild fran [19]) . . . . . . . . . 163.2 WSS farm med ett flertal front webbservrar och en dedikerad

server som databas . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3 Komponenter och floden i en traditionell ASP.NET webbapplika-

tion (bild fran [21]) . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4 Komponenter och floden i en Windows SharePoint Services webb-

sida (bild fran [21]) . . . . . . . . . . . . . . . . . . . . . . . . . . 193.5 Webbplatser i en webbplatskollektion. Varje webbplatskollektion

maste ha en toppnivawebbplats och kan innehalla en hierarki avunderwebbplatser . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.6 IIS webbplats med dess fyra virtuella kataloger som lankar tillkataloger i “12-hive” . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.7 Bild over hierarkin under den viktiga katalogen kallad “12-hive”.Layout katalogens innehall ar “Application pages” och dess under-katalog 1033 innehaller resurser . . . . . . . . . . . . . . . . . . . 25

3.8 Arv mellan innehallstyper (bild fran [24]) . . . . . . . . . . . . . 293.9 Olika vyer for en “Task”-lista . . . . . . . . . . . . . . . . . . . . 303.10 En oversikt over hur SharePoints objektmodell ar uppbyggd . . . 32

4.1 ASP-Widgetens kommunikationsmonster . . . . . . . . . . . . . . 39

5.1 Systemoversikt nar en anvandare hamtar hem lista . . . . . . . . 435.2 Visuell representation av XSD schemat over hur en konfiguration

till AJWH-widgeten bor se ut . . . . . . . . . . . . . . . . . . . . 45

vii

Page 12: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

5.3 Diagram over de olika element som ingar vid en XSLT transforma-tion (bild fran wikipedia) . . . . . . . . . . . . . . . . . . . . . . 47

6.1 Ett XML dokument mottaget fran SharePoint som har matchasmot olika vardeobjekt . . . . . . . . . . . . . . . . . . . . . . . . 60

6.2 Hur objekt modellen i ASP-widgeten ar uppbyggd . . . . . . . . 60

7.1 Systemoversikt over servermaskiner och vad dess specifika uppgifti prestandamatningarna ar . . . . . . . . . . . . . . . . . . . . . . 67

7.2 Visuell representation av att hamta widgeten (listan). Siffrornadefinierade i tabell 7.1 . . . . . . . . . . . . . . . . . . . . . . . . 68

7.3 Visuell representation av att editera ett objekt i listan. Siffrornadefinierade i tabell 7.2 . . . . . . . . . . . . . . . . . . . . . . . . 71

A.1 AJWH-widgeten visar listan “Tasks” fran SharePoint . . . . . . . 91A.2 Formular for insattning i AJWH-widget . . . . . . . . . . . . . . 92A.3 Menysystem i AJWH-widgeten . . . . . . . . . . . . . . . . . . . 92A.4 Editeringsknappen i AJWH-widgetens meny har tryckts och en

ny kolumn har skapats . . . . . . . . . . . . . . . . . . . . . . . . 93A.5 Formular for editering i AJWH-widget . . . . . . . . . . . . . . . 93A.6 Fore en bilaga har lagts till . . . . . . . . . . . . . . . . . . . . . 94A.7 Efter bilagan “jamforelser.doc” har lagts till i “Testar insatting” 95A.8 Efter paginering, de tre sista objekten i listan . . . . . . . . . . . 95A.9 AJWH-widgeten sorterad efter “% Complete” . . . . . . . . . . . 96A.10 ASP-widgeten visar listan “Tasks” fran SharePoint . . . . . . . . 97A.11 Formular for insattning i ASP-widget . . . . . . . . . . . . . . . . 98A.12 Efter insattning i ASP-widget . . . . . . . . . . . . . . . . . . . . 99A.13 Formular for editering i ASP-widget . . . . . . . . . . . . . . . . 100A.14 Fore en bilaga har lagts till i ASP-widgeten . . . . . . . . . . . . 101A.15 Efter bilagan “jamforelser.doc” har lagts till i “Testar insatting” 102A.16 Efter paginering, andra sidan visas av tva, i ASP-widgeten . . . 102A.17 Efter bortagning av ett objekt (med titeln “Attachments ...” i

listan. Se bild A.16 som en forebild . . . . . . . . . . . . . . . . . 103A.18 ASP-widgeten, listan sorterad efter “% Complete” . . . . . . . . 103

Page 13: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Tabeller

3.1 Oversattning mellan den nya terminologin anvand i WindowsSharePoint Services och den gamla i SharePoint Team Servicessamt en svensk oversattning av WSS termen . . . . . . . . . . . . 31

7.1 Prestandajamforelse for att hamta lista (Lists/Calendar) . . . . . 697.2 Prestandajamforelse for att andra ett objekt i lista (Lists/Calendar) 727.3 Prestandajamforelse for att lagga till nytt objekt i listan (Lists/Calendar).

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747.4 Prestandajamforelse for att ta bort ett objekt i listan (Lists/Calendar) 757.5 Delresultat fran att ta bort en handelse i kalendern for ASP-widgeten 76

ix

Page 14: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter
Page 15: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 1

Introduktion

Ajax1 och web services ar tva tekniker som idag anvands flitigt pa natet, densenare exponerar API:er2 och tjanster samt skapar anslutningar mellan olika webapplikationer, medan den forstnamnda hjalper utvecklaren att skapa imponerandegranssnitt mot anvandaren. Dessa tva tekniker och vad de erbjuder ar vad dennaavhandling kommer kretsa runt.

Forfattaren till denna avhandling blev ombedd av Acino, ett litet mjuk-varuforetag i Umea, att skapa en prototyp for en liten widget3 som skulle anslutatill en SharePoint server4 dar information om aktiviteter hamtades och sedanvisades i en kalender. Resultatet blev en relativt snygg applikation, inte heltfunktionell men tillracklig for att bevisa att skapandet av riktiga applikation-er via web services mot SharePoint som datakalla kan fungera som en fullgodlosning. En alternativ losningside uppstod dock, en ide som denna avhandlingkommer utforska och utvardera. Iden i grund och botten var enkel: skulle mankunna implementera hela widgeten pa SharePoint-servern och skicka all HTML5,CSS6 och JavaScript over web services och integrera det i klientens hemsida?Fordelen med en sadan losning vore tillgangen till SharePoints valdigt rika API igenererandet av anvandargranssnittet.

For att kunna utvardera det system som den nyss gjorda fragestallningenskulle ge upphov till ska en till losning skapas. Den kommer vara en mer traditionellapplikation med web service i grunden, implementerad pa server-sidan. For attgora dessa system jamforbara kommer aven detta system anvanda Ajax-tekniksamt mota ett antal gemensamma krav, denna widget ar en referenswidget.

Efter slutforandet av de tva systemen kommer en jamforelsestudie utforasdar ett antal punkter kommer att bedomas och diskuteras.

1Asynchronous JavaScript + XML2Application Programming Interface3sv. Pryl, liten applikation i applikationen4En Windows SharePoint Services server ar en Microsoftprodukt gjord for hantering av

innehall i en organisation5HyperText Markup Language6Cascading Style Sheet

1

Page 16: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

2 Kapitel 1. Introduktion

Foljande kapitel ger en mer detaljerad beskrivning av problemet, orsaken tillvarfor denna jamforelsestudie gjordes och hur malen ska uppnas. Sedan kommerlitteraturstudien som beror vad en CMS7 ar och dess kannetecken. Darefterkommer studien fortsatta med att pa djupet undersoka hur SharePoint fungerar,ar uppbyggd och vilka kommunikationsvagar som den tillater. Orsaken till attSharePoint valts till studien ar pa grund av att det ar datakallan for bada widgets,hur allt ar uppbyggt och vilka mojligheter som finns ar viktigt for att kunna des-igna, utfora och forsta jamforelsen av widgetarna. Fragor som kommer besvarasar bland annat: vad ar SharePoint? Vilket problem/problemomrade ar den riktadmot? Vilka funktioner finns det i SharePoint som skulle kunna anvandas tillproblemets forman? Efter litteraturstudien kommer diskussion om hur refer-enswidgeten kommer att implementeras. Forhoppningsvis kan litteraturstudienge insikter i vad som passar bast. Darefter foljer tva systembeskrivningar omhur de tva systemen blev designade, implementerade och vad resultatet blev.Jamforelsestudien gar sedan in pa ett antal jamforelsepunkter och steg for stegutvarderar de bada widgetarna mot varandra. Darefter foljer ett kapitel med deslutsatser som dragits

1.1 Bakgrund

Acino ar ett foretag lokaliserade i Umea med tva olika inriktningar: konsultupp-drag och egen produktutveckling. De egna produkter Acino bade forvaltar ochbygger ar kompletta webb-baserade systemlosningar i .NET. Acino samarbetarbland annat med forskare vid UCIT pa Umea universitet men har aven rotter imanga andra verksamheter som t.ex. forsakringsbranschen och telekomindustrin.En av Acinos produkter ar internetkontoret [1] som ar en produkt riktat motforsakringsmaklare for att skara ned pa deras pappersexercis.

Acinos intresse i denna avhandling ligger i att fa en personal med erfarenhetav SharePoint och de nya tekniker som nu mer eller mindre ar ett krav for attlyckas skapa en interaktiv och anvandarvanlig webbapplikation.

1.2 Disposition

Kapitel 2 ger en mer detaljerad beskrivning av problemet tillsammans med enlista pa funktionella och icke-funktionella krav. Detta kapitel gar aven inpa vilka malen ar for denna jamforelsestudie

Kapitel 3 ar litteraturstudien som kommer gora en djupgaende studie i vadSharePoint ar

Kapitel 4 kommer med hjalp av bland annat litteraturstudien resonera kringhur jamforelseapplikationen skall utformas

7Content Management System

Page 17: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

1.2. Disposition 3

Kapitel 5 ar en systembeskrivning over hur AJWH-widgeten ar implementeradoch fungerar

Kapitel 6 ar dito for ASP-widgeten

Kapitel 7 innehaller en jamforelsestudie som tar upp och jamfor prestanda,anvandarvanlighet, utvecklingssvarigheter samt aspekter kring att un-derhalla de bada applikationerna

Kapitel 8 ar en genomgang av denna studie och resonerar kring hur vida dennajamforelsestudies resultat var bra

Kapitel 9 ger berom till de som hjalpt till med detta projekt.

Appendix innehaller resultat med bilder over hur de bada widgetsarna klaradeolika uppgifter

Page 18: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

4 Kapitel 1. Introduktion

Page 19: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 2

Problembeskrivning

I detta kapitel kommer krav, mal, syfte sa val som metoder anvandbara forimplementeringen tas upp. Tva kravlistor har upprattas, en for AJWH1-widgetenoch en gemensam som bada widgetarna bor folja. Valet av referenswidgetenkommer att goras efter litteraturstudien, for att med ratta kunna besluta vadsom bast tillampar sig.

Problemet som namndes i introduktionen grundar sig i datahamtning franSharePoint. Exakt vad problemet innebar skall i detta kapitel bli framlagt.

2.1 Problemet

Problemet som skall losas i detta exjobb ar att skapa tva widgets pa olika sattoch jamfora sattet de implementerats pa och ett antal andra aspekter, som t.ex.prestanda och modularitet.

En widget ar en tredjeparts objekt inbaddad i en webbsida, ett skrivbordeller i en mobil. Widgeten kommunicerar nastan alltid mot nagon viss kalla, t.ex.en vaderstation och visar hamtade data pa nagot effektfullt satt. Uppdraget fordenna uppsats ar att skapa tva widgetar for en webbsida ansluten till en listai SharePoint, eftersom allt i SharePoint ar uppbyggt av listor kommer valdigtmycket data vara tillgangligt.

En webbwidget ar egentligen bara en portabel bit av kod som kan bli “in-stallerad” och exekverad, inom vilken HTML-baserad webbsida som helst, avanvandaren (webbutvecklaren) utan att krava kompilering. Ett valdigt bra exem-pel pa en webbapplikation som nastan enbart kretsar kring widgets ar Facebook2

dar utvecklare kan skapa egna widgets och sedan lata anvandare importera dem.Av de tva widgets som kommer att skapas utgor den ena grunden for denna

uppsats medan den andra kommer att agera som jamforelseobjekt.

1Asyncronous JavaScript with Web service and HTML2www.facebok.com

5

Page 20: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

6 Kapitel 2. Problembeskrivning

2.2 Gemensamma krav

For att jamfora de skapade widgetarna ar det hogst relevant att systemen inteskiljer sig allt for mycket fran varandra och de uppfyller gemensamma krav. Harfoljer tva listor krav framtagna i ett antal brainstorming sessioner:

– Funktionella krav

• Widgeten ska visa data fran en lista i SharePoint

• Man bor kunna konfigurera vilken lista och vilka kolumner man villvisa i listan pa ett enkelt satt, alla kolumner skall vara tillgangliga

• Man skall kunna lagga in ny data till listan, oberoende av om det aren kalender eller ett dokumentbibliotek

• Man skall kunna andra data i listan

• Data i listan skall kunna tas bort

• Hjalpmedel vid skapandet av data bor finnas i foljande situationer

∗ “Rich text editor” bor finnas for kolumner som innehaller HTML∗ En datumvaljare bor finnas for datumkolumner

• Anvandaren skall kunna sortera efter en viss kolumn, bade i stigandeoch fallande ordning

• Sa kallad paginering maste finnas. Att paginera ar att dela upp enlista i dellistor med bladdringsmojligheter mellan dem

– Icke-funktionella krav

• Modularitet ar viktigt for att en widget ska kunna laggas till i enhemsida med sa fa steg som mojligt

• De data som visas i listan skall vara formaterade efter vad det ar fortyp av data. T.ex. skall procentdata visas som X % dar X kan varafran 0 till N

• Anvandarnamn och losenord skall inte vara statiskt inkodade

• Tva eller fler likadana widgets bor kunna existera pa samma sida

• Svenska tecken maste kunna anvandas

2.3 AJWH-widget

Denna widget kommer anvanda sig av en teknik inte tidigare namnd pa webbeneller i litteratur. Eftersom ingen riktig forkortning eller teknik passade in padenna losning kommer en ny akronym anvandas: AJWH. Pa svenska star den for

Page 21: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

2.3. AJWH-widget 7

Asynkron3 JavaScript med Web services och HTML. Denna widget kommer franoch med nu att benamnas AJWH-widget.

Widgeten kommer att anvanda sig av web services for att skicka HTMLmellan JavaScript pa klienten och SharePoint-servern. Beslutet att skicka HTMLinbaddad i XML over web services istallet for rakt over HTTP har foljande grund:

– Query-strangen for ett HTTP-anrop har en maxlangd[2]. Denna restriktiongaller enbart GET anrop, om istallet en POST utfors sa finns det ingengrans. Daremot sa

– En web service har en discovery-tjanst och ar starkt typat. Med starkttypat menas att de parametrar som anvands i web servicen maste matchaen viss datatyp eller kan specificeras utifran ett XML schema, pa sa sattbor inte fel datatyper skickas

– Har battre felhantering

– Battre stod for skraddarsydda sakerhetsprotkoll, t.ex. SSEK[3]

Widgeten kommer att forsoka utnyttja SharePoints inbyggda webbkontroller ochJavaScript sa mycket som mojligt. Den kommer fungera som foljande:

Da en anvandare surfar in pa en hemsida som innehaller widgeten skickas ettanrop till en specialanpassad web service pa SharePoint-servern som utifran enkonfiguration av XML skapar sidan, konverterar den till en strang och skickarden som svar tillbaka over web servicen. Pa klienten tas svaret emot och placeraspa ratt plats i sidan med hjalp av ett DOM-anrop. Om script-taggar existerar istrangen evalueras de av JavaScriptet. Ett JavaScript laddas aven fran SharePointservern for att hantera handelser som sker i widgeten da en anvandare klickar.

Vid klick anropar JavaScriptet pa anvandarens dator SharePoint web servicen,beroende pa vad anvandaren gor, med olika attribut. SharePoints inbyggda webservice anvands for att lagga till, ta bort och andra objekt i listan medan denskraddarsydda web servicen anvands for att hamta om listan. Om inte en heluppdatering av listan behovs anvands sidans DOM-objekt for att gora andringar.

Systemet kommer att implementeras med hjalp av JavaScript, ASP.NET 2.0och C# i utvecklingsmiljon Visual Studio 2005. Se figur 2.1 for en oversikt.

2.3.1 Icke-funktionella krav

– Sa mycket som mojligt av SharePoints JavaScript bor ateranvandas fordatumvaljaren och text-editorn

– SharePoints CSS bor anvandas sa att anvandaren far intryck av att anvandarenanvander SharePoint

3Om man t.ex. anropar en metod asynkront menas att man inte invantar resultat utan direktfortsatter exekvering

Page 22: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

8 Kapitel 2. Problembeskrivning

Figur 2.1: Kommunikationsoversikt for AJWH-widgeten. Det speciella ar attHTML/JavaScript returneras fran SharePoints web service

2.4 Mal

Malet for detta exjobb kommer vara att skapa tva webbwidgets som uppfylleralla krav som blivit utstakade och sedan utfora en jamforande analys pa ett antalgemensamma punkter for att dra slutsatser och lardomar.

2.5 Syfte

Syftet med denna jamforelsestudie ar att utforska olika tekniker for att kunnana insikt i vad man bor och inte bor gora vid utnyttjandet av SharePoints webservices samt skapandet av en Ajax-fardig widget.

Manga foretag anvander SharePoint som intern hemsida for att halla sigajour med sina kollegors kalendrar, projektets deadlines och milestones, listor avolika slag eller bara for att diskutera nagonting. Mer om vad SharePoint ar ochvad det erbjuder kommer tas upp i kapitel 3. Pa grund av att det ar en flitigtanvand tjanst och som for tillfallet ar valdigt popular i foretagskretsar sa finnsdet ett behov att skapa applikationer och battre forsta hur man pa basta sattkan utnyttja SharePoint.

2.6 Metoder

Web 2.0 ar vid det har laget ett vedertaget begrepp pa internet och har hangt med iett antal ar. Web 2.0 ar inte en teknik utan snarare en kollektion av innovativa ideersom fortfarande har stark paverkan pa webben. Termen myntades av O’Reilleyoch MediaLive International i en brainstormsession [4]. Termen var enligt demberattigad efter Dotcom-kraschen 2001 som en vandpunkt i webbapplikationer.

Page 23: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

2.6. Metoder 9

Vid det laget trodde manga att webben var over, medan det egentligen baravar en naturlig process for att exkludera gammal och trist teknik [5] och ta inden nya eran av “Web 2.0”. De viktiga webbsidorna som overlevde var stora ochkraftfulla, ofta med nya ideer som erbjod fria och aldrig forr skadade tjanster tillden stora massan. Vad de hade gemensamt var av gruppen formulerad till ettantal ideer, teknologier och “buzzwords” 4 som nu var de nya och framgangsrikakoncept som paverkat webben oerhort. I detta arbete kommer fokus ligga pa tvaav dessa tekniker: web services och Ajax.

2.6.1 Web services

Nar XML anvandning tog ta fart efter millenniumskiftet borjade foretag, utveck-lare och andra leta efter nya satt att anvanda det. Loftet att separera data ochpresentation hade blivit mott men hur skulle man kunna ta XML till nya hojder?

Svaret kom i form av web services. En web service ar ett satt for tva datorer attkommunicera pa webben utan att involvera mansklig interaktion. En web serviceanvander HTTP for att skicka XML fram och tillbaka mellan konsumenten(applikationen som anvander data) och producenten (servern som innehallerdata). Inte helt olikt traditionella distribuerade kommunikationsmodeller somt.ex. CORBA eller RMI, dar metodanrop exekverar over en natverksanslutning. Destora skillnaderna med en web service ar att de data som skickas ar XML istallet forett binart format samt att meddelandena oftast skickas over HTTP. Att anvandaport 80 (valfritt) som oftast inte ar blockeras av brandvaggar och vara textbaseratgor en web service valdigt generell och kan anvandas som kommunikationkanalmellan vilket OS, program eller programmeringssprak som helst. Dock bor detnoteras att det fortfarande finns problem med interoperabiliteten som forsokerbekampas av WSIO5 t.ex. kan det uppsta problem vid skickandet av vissadatatyper som enbart ar specificerade for ett visst sprak [6](t.ex. dataset i .NET).Sen bor aven papekas att web services inte ar den snabbaste tekniken utanpresterar samre an t.ex. Java RMI [7].

Web services ar inte en enkel teknik eller plattform utan ar faktiskt enmix av flera protokoll, sprak och format. SOAP och REST ar de tva storakonkurrerande inriktningarna for hur en web service kan formedlas. Den forstaar ett mer sofistikerat protokoll jamfort med den senare som istallet har battreinteroperabilitet [8].

SOAP

SOAP, som inte langre ar en akronym, ar ett komplicerat sprak med ett antalelement och attribut gjord for att beskriva de flesta typer av data. Informationenkan transporteras over antal protokoll men oftast over HTTP tillsammans med

4(sv. modeord) Buzzwords ar ord som hela tiden “ligger i luften”, men vars konkreta innebordar oklar

5Web Service Interoperability Organization

Page 24: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

10 Kapitel 2. Problembeskrivning

annan webbtrafik. Det finns tva ledande satt att anvanda SOAP: RPC6stilenoch dokumentstilen. Det ar utanfor denna rapport att ta upp vad skillnadernaar, men vart att notera ar att Visual Studio .NET anvander dokumentstilen.Dokumentstilad SOAP anfortror sig pa XML scheman (WSDL7) for att definieraformatet pa anrop och resultat. Schemat maste vara tillgangligt for bada parterfor att kommunikationen skall fungera.

REST

REST8 beskriver ett satt att anvanda det existerande HTTP-protokollet foratt formedla data. REST anvands mestadels for web services men kan detaven anvandas for vilket typ av HTTP-baserad anrop/svar system som helst.I kontexten web service later REST anvandaren anropa en given URL9 i ettspecifikt format att returnera data. Aven svaret kommer vara i ett specifiktformat och kan innehalla information om hur man kan hamta annu mer. For enweb service kommer informationen bli returnerad som XML.

2.6.2 Ajax

Ajax ar en relativt ny teknik. Att anvanda Ajax pa en hemsida ar ett satt attundvika kompletta omladdningar av sidan(eng. Page-loads) sa fort anvandarenhar gjort nagot pa sidan . Istallet anvands JavaScript for att dynamiskt stoppain, editera eller ta bort innehall utifran anvandarens onskemal. For att erhalladetta maste ett lager stoppas in mellan webblasaren och webbservern, en sakallad “Ajax engine” [9] (sv. Ajax-motor) se bild 2.2. Istallet for den traditionellamodellen att tillhandahalla lankar till andra resurser (t.ex. en annan webbsida,fil eller bild) gor varje lank ett anrop till Ajax motorn som schemalagger ochexekverar begaran fran webblasaren. Motorn uppdaterar sidan endast partiellt.Under ytan hamtas information asynkront, d.v.s. koden vantar inte pa svar, viaHTTP eller web service och nar svar erhallits manipuleras sidan eller nagon internaktion utfors. Den primara tekniken som Ajax anvander sig av hos webblasaren arXmlHttpRequest (XHR) samt XMLHTTP ActiveX som ar Microsoft motsvarighettill XmlHttpRequest. De fordelar som denna teknik ger upphov till ar manga.Detta ar de viktigaste bade for programmeraren och anvandaren:

– Ta bort oonskade pauser. Utan AJAX trycker anvandaren pa en knapp,vantar darefter en liten stund. Sedan blinkar sidan till och ersatts med enhelt ny

– Buffra data fore anvandaren behover den[10]

6Remove Procedure Call (sv. Fjarrmetodanrop)7Web Service Description Language8Representational State Transfer9Uniform Resource Locator

Page 25: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

2.7. Utrustning 11

– Reducera antalet “network round trips” (googles soksida ar ett bra exempelpa detta som enbart kraver en[11]). En natverksrundtur ar en tripp franklienten till servern och tillbaka

– Reducera storleken pa nedladdad och uppladdad data eftersom AJAXtillater programmeraren att ta kontroll over exakt vad som skickas. Tillexempel om en anvandare utfor en sokning sa kan informationen returnerasi ett kompaktare format an HTML

En stor nackdel med AJAX ar att anvandare med handikapp, som t.ex. anvandersig av skarmlasare har problem att navigera i sadana webbsidor [12].

Figur 2.2: Oversikt av kommunikationen pa en traditionell hemsida och en somanvander Ajax.

Ajax anvands av manga nya sa kallade “startup” foretag som forsoker goraen paverkan pa webben med att tillfora nagon ny tjanst. Aven storre foretag somt.ex. Google har tagit till sig den nya tekniken. Google anvander AJAX i tjanstersom Google Maps, Google Mail och Google Calendar for att namna nagra.

2.7 Utrustning

Fore arbetet kan borja maste foljande system sattas upp och konfigureras.

– Satta upp en SharePoint server

• Windows SharePoint Services 3.0 maste installeras pa en dator somkor Windows server 2003. Sedan maste foljande konfigureringar goras

Page 26: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

12 Kapitel 2. Problembeskrivning

∗ Satta igang formularautentisering. Nar den ar igang sa kraverinte SharePoint att alla anvandare har AD10-konton, istallet saautentiseras anvandare via en inloggningsruta mot en SQL server2003 databas som anvander sig av ASP.NET Membership provider

∗ Skapa en sa kallad “site” pa SharePoint-servern som tillater anony-ma anvandare fran webben

• Installera Windows SQL Server 2003

∗ Konfigurera databasen sa fjarranslutningar tillats, om webbservernonskar autentisera anvandare mot den direkt

– Satta upp en webbserver

• Installera Windows server 2003 aven pa denna dator

• Installera Visual Studio 2005 och 2008

• Installera .NET 2.0 och 3.5 Extensions

2.8 Relaterade arbeten

Inga direkt relaterade arbeten som kunde aterfinnas i digitala vetenskapligabibiloteken ACM11, TechRepublic12 eller Google scholar13.

10”Active Directory“ - Ett centraliserat inloggningssystem over ett natverk med windowsda-torer

11Association for Computing Machinery, acm.org12techrepublic.com13scholar.google.se

Page 27: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 3

SharePoint

I detta kapitel foljer litteraturstudien som forst kommer ga igenom vad en CMSar och hur marknaden idag ser ut. Darefter foljer en ingaende beskrivning avSharePoint och ett antal relaterade fragestallningar kommer besvaras.

3.1 CMS

CMS ar en forkortning av “Content management system” som ar ett samlingsordfor mjukvara som anvands for att skapa, andra, hantera och publicera innehall (eng.content) pa ett organiserat satt. Innehallet kan vara exempelvis foretagsspecifikadokument som artiklar, manualer, rapporter, guider och broschyrer som i enCMS enkelt kan versionshanteras, andras och hanteras. Fordelen med en CMSjamfort med att t.ex. ha en delad natverksenhet kan vara foljande:

– Anvandarbehorigheten kan enkelt restriktionernas. Roller, grupper ochansvar kan associeras till olika kategorier, typer eller sidor

– Abstraktion av filsystemet, anvandaren behover inget veta om hur innehalletar lagrat om det sa sker i databas, lokalt, centralt eller pa nagot annat satt

– Mojlighet till att spara, aterstalla och migrera mellan olika versioner avsamma dokument.

– Forhindra anvandare fran att andra pa samma sak samtidigt. Mojlighetenatt kunna lasa dokument brukar vara vanlig.

– Kunna definiera arbetsfloden. Ett bra exempel ar det kanda journalist-kontrollant arbetsflodet som finns pa de flesta tidningar. Sa fort artikeln/dokumentet/filenhar skapats sa skickas en notifiering till en kontrollant som sedan harmojlighet att godkanna (och i och med det publisera) eller inte godkannaoch skickas ater till journalisten

13

Page 28: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

14 Kapitel 3. SharePoint

En CMS kan skapas pa valdigt manga satt och kan innehalla valdigt varierandefeatures beroende pa produkt och vem som gjort systemet, men ovan namndapunkter ar sa pass generella och grundlaggande att de flesta system stodjer det.Vanligtvis anvands nagon slags webbinterface mot innehallet. Pa sa satt sa harden tidigare utbrytargruppen Web Content Management(WCM) blivit nastanlikstalld med CMS i och med att de flesta CMS:er ar en WCM i dagslaget.

CMS:er ar idag en enorm marknad med manga mogna kommersiella produktersom tillsammans med en lika stora prislappar ar inriktade pa foretag med hogakrav pa prestanda och funktionalitet, ofta benamnda att tillhora kategorin“Enterprise content management” (ECM). Denna term ar en vision, en strategieller kanske till och med en ny industri, huruvida sa ar fallet har inte visat sigannu[13]. Den officiella definitionen av en ECM enligt AIIM1 ar “the technologiesused to capture, manage, store, preserve, and deliver content and documentsrelated to organizational processes” [14]. Att marknaden for liknanden system arstor kan bland annat markas pa priset2, men aven pa att det finns foretag somspecialiserat sig pa att enbart halla sig ajour med alla system och sedan overleverpa att konsultera at andra foretag [15]. For att gratis jamfora olika features hosolika system kan man anvanda sidan cmsmatrix.com som listar ett hundratal.

CMS:er ar skapade for statiskt innehall som har givna tillstand och ar saledesinte anpassade for strommande medier som t.ex. TV eller radio[16].

Vart att namnas ar att det finns manga system med oppen kallkod som kantavla mot dess kommersiella konkurrenter. Ett av dem ar Alfresco som 2007 varmed pa EContent Magazine 100 Awards lista, dar enbart foretag som gor ensignifikant paverkan pa den digitala innehallsindustrin far vara med.

2007 gav sig Microsoft och Oracle Corporation sig in pa marknaden medtva tunga konkurrerande CMS system. For tillfallet ar det manga stora foretagetablerade pa denna marknad: IBM, Oracle, Microsoft, EMC for att namnanagra.

3.2 Varfor SharePoint?

Bada widgets som skulle implementeras anvande sig av data som inte finnslokalt, utan hamtade fran en extern kalla. Problembeskrivningen specificeradeatt SharePoint skulle anvandas dels som datakalla, men aven som en aktiv del iskapandet av widgeten. Att just SharePoint valdes foll sig naturligt pa grund avett antal anledningar vid specificerandet av problemet:

– SharePoint fanns redan installerat pa servern. Detta utfordes automatisktnar Windows Server 2003 installerats.

– Ingen ytterligare licens kravs

1Association for Information and Image Management22450$ exempelvis for SharePoint Enterprise Edition

Page 29: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.3. Fragestallningar 15

– Anvander sig av ASP.NET 2.0, precis som webbservern och alla produkterAcino underhaller och utvecklar

– Ar en valdigt popular produkt just nu. Microsoft havdar att det ar enav deras bast saljande serverprodukt nagonsin och har salt 100 miljonerlicenser [17]. Som kuriosa sa har SharePoint Portal Server anvants paUmeas psykologiska institution for att ge alla kursdeltagare en gemensammotesplats [18]

3.3 Fragestallningar

Denna litteraturstudie ar i grund och botten till for att skapa en forstaelse forhur SharePoint lagrar innehall och pa vilka satt man som kan komma at den.

Litteraturstudien utfordes efter fragestallningen och upprattandet av speci-fikationen for AJWH-widgeten, men inte for jamforelsewidgeten. Darfor kommerdenna litteraturstudie hjalpa till att fa en forstaelse for hur referenswidgetenskall designas och hur bada widgetar skall implementeras. Foljande fragor kandesspeciellt aktuella och kommer besvaras

– Hur maste SharePoint konfigureras for att kunna erbjuda widgetarna accessoch data

– Hur hanteras sakerhet?

– Pa vilket satt anvander SharePoint sig av ASP.NET? Existerar SharePointvid sidan av eller vilar SharePoint ovanpa ramverket?

– Hur ser hierarkin ut for lagringen av innehall?

– Pa vilka satt kan man anpassa SharePoint efter behov och onskemal?

– Pa vilka satt kan man programmatiskt komma at information?

3.4 Windows SharePoint Services

SharePoint ar en informationsportal fran Microsoft som kan bli konfigureras for in-tranatet, extranatet och internet. Microsoft Office SharePoint Server 2007(MOSS)ar en portal som tillater foretag, grupper eller organisationer att ansluta ochsamarbeta. SharePoint Server har ocksa valdigt god integration mot Officepaketet,vilket oppnar helt nya vagar att kunna ansluta och formedla information. Dessu-tom kan anvandare fortfarande anvanda valbekanta program som Word och Exceloch arbeta mot SharePoint utan att oppna en webblasare. Windows SharePointServices 3.0(WSS) heter ramverket som MOSS vilar pa. MOSS kraver en egenlicens och har valdigt manga funktioner som inte finns som standard i WSS.WSS ingar i Microsoft Windows Server 2003, behover ingen egen licens och kan

Page 30: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

16 Kapitel 3. SharePoint

anvandas fristaende. Da SharePoint namns i denna rapport sa menas WindowsSharePoint Services 3.0.

Figur 3.1: Windows SharePoint Services 3.0 (bild fran [19])

3.5 Oversikt

I WSS karna ar den en motor for att generera webbplatser. Arkitekturen avWSS har specifikt blivit designad for att operera i en webbfarm miljo. Pa nagraminuter via att fylla i ett webblasarformular kan en medlem av IT-avdelningenskapa en webbplats i WSS. Det finns inget behov for en databasadministrator attskapa en ny databas eller nya tabeller. Det finns inget behov for en ASP.NETutvecklare att skapa en ny ASP.NET webbplats eller en administrator for attkopiera filer eller konfigurera nagra IIS3 installningar [20].

Motorn ar baserad pa en integrerad lagringsmodell som involverar ett flertalSQL-Server databaser for att lagra innehall och konfigurationsdata. Nar WSSinstalleras sa kan man valja att anvanda SQL Express, SQL Server 2005 eller SQLServer 2000. SQL Express rekommenderas for enkel utveckling och driftsattningav Microsoft.

Varje driftsattning av WSS ar baserad pa konceptet av en farm. En farmar i grunden en eller flera servrar som arbetar tillsammans for att tillgodoseanvandares onskemal, i detta fall av WSS-funktionalitet. I det enklaste scenariotkan WSS farmen besta av en enkel server som agerar som bade en front-webbserveroch SQL-server databasserver. I ett mer komplicerat system kan WSS farmenbesta av ett flertal front webbservrar med en dedikerad databas som i figur 3.2.Om en eller flera front-webbservrar existerar i farmen sa utfors samma processer

3Internet Information Services, ASP.NET:s webbserver

Page 31: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.5. Oversikt 17

pa varje server, fran och med nu kommer de benamnas SharePoint-webbserveraven om de ar flera.

Figur 3.2: WSS farm med ett flertal front webbservrar och en dedikerad serversom databas

Varje WSS farm anvander en SQL databas som konfigurationsdatabas. Databaseninnehaller viktig farm-relaterad information som t.ex. vilka front-webbservrarsom farmen anvander sig av.

Eftersom WSS ar byggt pa ASP.NET 2.0 sa anvands IIS 6.0 som webbserverfor att hantera HTTP anrop. En IIS webbplats ger en intradespunkt in i IISwebbserverns infrastruktur. Som standard skapas en webbplats automatiskt avIIS som lyssnar for inkommande HTTP anrop pa port 80. Det ar givetvis mojligtatt skapa ytterligare IIS webbplatser for att ge fler intradespunkter med olikaportnummer eller IP4-adresser om sa onskas.

En viktig aspekt hos en IIS webbplats ar att dess sakerhetsinstallningarkonfigureras oberoende av andra webbplatser, pa sa satt kan olika autentiser-ingsprotokoll anvandas pa samma server.

Varje IIS webbplats kan pa en SharePoint-webbserver anvandas for enSharePoint-webbapplikation ett antal andringar i dess installningar. Detta kanutforas via SharePoints kommandoradverktyg sdsadm, via SharePoints API ellervia “WSS Central Administration Application”. Den senare ar en SharePoint-webbapplikation, enbart for administratorer, som ger tillgang till att skapa,konfigurerar och administrera webbapplikationer samt globala installningar forWSS-farmen. Da en webbapplikation skapas sa utfors samma aktion pa allafront-webbservrar.

For att enklare forsta skillnaderna mellan en SharePoint-applikation och envanlig ASP.NET-applikation sa kan observationer av ett typiskt anrop utforas.Figur 3.3 visar hur ett sadant anrop kan se ut for en ASP.NET-applikation.Anvandaren skickar anrop till servern som kor IIS for nagon specifik resurs.Anropet tas emot av IIS och delegeras till en DLL som arver av ISAPI5 for vidare

4Internet Protocol5Internet Server Application Programming Interface

Page 32: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

18 Kapitel 3. SharePoint

processering. Vanligtvis sa hamtas resurser fran filsystemet, t.ex. konfigurations-filer, aspx sidor, ASP.NET User Controls och egenskapade DLL:er6. De hjalps atatt skapa det svar som anvandaren onskar, oftast tillsammans med nagon slagsdatalagring dar data hamtas och lagras.

Figur 3.3: Komponenter och floden i en traditionell ASP.NET webbapplikation(bild fran [21])

I figur 3.4 kan ett flodesdiagram for en SharePoint webbserver ses. En hog ab-straktionsniva erhalls av WSS for att enkelt kunna erbjuda anvandarna skalbaraoch malldrivna sidor. Som tidigare namnts ar WSS i grunden en webbplatspro-visioneringsmotor. Nagon som inte namnts ar att WSS till stor del beror paschemadefinitioner for mallar som definierar olika artefakter, som sidomallar,infrastrukturmallar, listor, bibliotek och andra hjalpsidor som gor interaktionenmellan anvandaren och innehallet enkel.

Da ett anrop skickas till en specifik sida i en WSS applikation sa sker in-teraktion med konfigurationsdatabasen och innehallsdatabasen som ger merinformation om applikationen som efterfragats. XML filer tolkas och bildar in-nehall i databaserna for att bygga en objektmodellen som sedan anvandas for attgenerera innehall t.ex. en webbdelar. WSS motor sammanfor alla dessa processer.

Om fler ASP.NET applikationer skulle laggas till pa webbservern sa skullefigur 3.3 bli mycket mer komplicerad, i och med att mycket av infrastrukturenskulle behova kopieras for varje applikation. Givetvis skulle modulara block kunnaskapas med hjalp av t.ex. “best practice”-losningar eller monster, men mycketskulle anda behova kopieras.

Jamforelsevis kan om sa onskas flera tusen applikationer skapas i WSS utan

6Dynamic-link library - Microsofts implementering av delade programbibliotek

Page 33: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.6. Webbplatser 19

Figur 3.4: Komponenter och floden i en Windows SharePoint Services webbsida(bild fran [21])

att motorn som generera webbplatser behover utokas, systemet skulle se likadantut. Detta ar en av WSS styrkor.

3.6 Webbplatser

Fore vidare diskussion kring hur provisioneringen fungerar behover en merfundamental fragestallning besvaras: “Vad ar en WSS webbplats?”.

En WSS webbplats ar en lagringsbehallare av information. Webbplatsensinnehall lagras i form av listor, dokument i dokumentbibliotek och webbsidor.

En webbplats ar en saker entitet vars innehall ar tillgangligt for en vissmangd av anvandare. En webbplats kan antigen definiera en egen mangd avanvandare eller arva anvandarna fran en annan. Webbplatsen kan aven innehallaett konfigurabelt antal grupper och tillstand som anger vilken sakerhetsniva deolika grupperna har.

WSS tar inte hand om anvandarautentisering, utan forlitar sig pa de un-derliggande lager som IIS och ASP.NET autentiseringsforsorjare ger. Daremotsa tar WSS full kontroll gallande auktorisering som kan konfigureras bade viaSharePoints API samt dess granssnitt. WSS 3.0 introducerade en vardefullsakerhetsfunktion i det att lankar och kommandon till webbplatselement enbartvisas for de anvandare som har tillgang till dem.

En webbplats ar en applikation med ett utokningsbar, fullt andringsbaranvandargranssnitt. En webbplatsadministrator kan skapa sidor och skraddarsydess layout och utseende samt andra en webbplats navigeringsstruktur enbartmed med hjalp av webblasaren.

Page 34: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

20 Kapitel 3. SharePoint

Till sist ar en webbplats grunden for att anvanda Microsofts webbdelssida ochwebbdelsteknologi. En webbplatsadministrator kan skraddarsy en webbdelssidagenom att lagga till och konfigurera webbdelar. En anvandare kan vidare goraen mer personlig webbdelssida genom att modifiera, addera och/eller ta bortwebbdelar. Alla sadana andringar av anvandare, eller vid andring av administratorsparas automatiskt i webbplatsens innehallsdatabas.

Alla WSS webbplatser maste provisioneras inom ett omfang av en existerandewebbapplikation. Dock kan inte en webbplats existera som en oberoende entitetinom en webbapplikation, utan varje WSS webbplats maste bli skapad inomomfanget av en webbplatskollektion. En webbplatskollektion ar en behallare avwebbplatser. Varje webbplatskollektion kraver en toppnivawebbplats. Dessutomkan en webbplatskollektion innehalla en hierarki av underwebbplatser. Figur 3.5visar flera mojliga webbplatskollektioner. Den till vanster i figuren innehallerenbart en toppnivawebbplats. Den i mitten innehaller en niva av underwebbplatserunder toppnivawebbplatsen. Den till hoger bestar av en mer komplex hierarki avwebbplatser.

Figur 3.5: Webbplatser i en webbplatskollektion. Varje webbplatskollektion masteha en toppnivawebbplats och kan innehalla en hierarki av underwebbplatser

3.7 Mallar och definitioner

Da en webbplats provisioneras (skapas) fran ett webbinterface, kommandoradverk-tyget sdsadmin eller fran SharePoints API (ocksa kallad objektmodell) anvands en

Page 35: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.7. Mallar och definitioner 21

sa kallad “site definition”. En webbplatsdefinition bestar av flera XML filer, somfinns belagna i filsystemet hos varje farms front-webbservers. En webbplatsdefini-tion anger en unik typ av SharePoint-webbplats. Som standard ingar i WSS 3.0ett antal av dem, exempelvis “Team Site”, “Blank Site”, “Document Workspace”och “Basic Metting Workspace”. En definition kan innehalla sa kallade “coreXML”(sv. karnXML)-filer, aspx sidor, dokumentmallar och innehall (.gif, .doc,.docx o.s.v.). Beroende pa vad karnXML-filerna innehaller skapas webbplatsenmed olika listor, listdefinitioner, innehallshanterare och navigeringsmojligheter[22].

Som tidigare namnts och som kan ses i figur 3.4 hamtas webbplatsdefinitionenfran innehallsdatabasen da ett anrop skickas till webbplatsen. Den sparas sedani cache-minnet pa servern av IIS, vilket forbattrar skalningsmojligheterna ochprestandan. Dessutom sa kan samma webbplatsdefinition anvandas till andrawebbplatser, om den inte blivit andrad.

Det finns tva olika satt att andra en webbplatsdefinition: via en skraddarsyddmall (“Custom Template”) eller direkt i webbplatsdefinitionen.

3.7.1 Skraddarsydd mall

Det forsta alternativet ar en andring utford pa en webbplatsdefinition viaanvandargranssnittet eller objektmodellen som sparar andringen i innehallsdatabasen.Den skraddarsydda mallen bestar da av differensen mellan det ursprungligatillstandet av webbplatsen eller listan enligt definitionen och det tillstand damallen genererades.

En skraddarsydd mall kan innehalla bada webbplatsmallar( “Site Template”)och listmallar( “List Template”).

En listmall innerhaller filer, vyer, falt, webbdelar och om sa onskas aveninnehallet i listan. Anvandare kan skapa listmallar via anvandargranssnittet(“Save As Template” sidan) eller via en metod (SaveAsTemplate) for listklasseni SharePoints API. Mer om listor pa sida 26.

Nar en listmall sparas i listmallsgalleriet (“List Template Gallery”) pa entoppnivawebbplats i en webbplatskollektion sa ar den tillganglig for alla webb-platser som arver fran samma webbplatsdefinition och sprak som webbplatsen pavilket listan ursprungligen skapades.

En webbplatsmall kan innehalla samma information som en listmall, men aveninformation om en webbplatsen. Precis som listmallen kan aven en webbplatsmallspara innehallet pa sidan.

Pa ungefar samma satt som listmallen kan webbplatsmallen skapas frananvandargranssnittet eller API:t. Mallen sparas i webbplatsmallsgalleriet (“SiteTemplate Gallery”) och blir tillganglig for skapandet av underwebbplatser hosalla webbplatser i webbplatskollektionen. Till skillnad fran listmallen sa kanwebbplatsmallen flyttas till ett annat galleri (“Central Site Template Gallery”) viaverktyget sdsadm for att bli tillganglig aven vid skapandet av toppnivawebbplatser[19].

Page 36: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

22 Kapitel 3. SharePoint

3.7.2 Webbplatsdefinition

Skillnaden mellan en webbplatsdefinition och en webbplatsmall ar att definitionenbestar av flera XML-filer i varje front webbservers filsystem, istallet for som denskraddarsydda mallen som enbart existerar i innehallsdatabasen. I och med detar oftast prestandan battre, speciellt i farmmiljo da informationen kan hamtaslokalt. Webbplatsdefinitionen erbjuder ocksa en hogre niva av abstraktion och gertillgang till att andra pa vissa saker som inte gar via webbplatsmallen. Fordelarnakommer pa kostnad av bland annat hogre komplexitet, hogre sakerhet kravs forden som vill andra, kansligare for fel.

Att andra i webbplatsdefinitionen ar mojligt, aven om det inte rekommenderasav ett antal anledningar [22].

3.8 Sidor

Tva viktiga koncept i SharePoint ar “customization” och “personalization” somtillater administratorer och anvandare att andra och personalisera webbsidorefter behag. Dessa tva funktioner ar de som gor den losa kopplingen mellanfarmens webbserverar och dess filsystem mojlig i och med att de sparar andradeversioner i webbapplikationens innehallsdatabas. Sidor som tillats att andrasoch/eller personaliseras ar sa kallade “Site Pages”. Att andra i en “Site page”pa en SharePoint applikation kan utforas genom att efter inloggning klicka paediteraknappen.

Skillnaden mellan “customization” och “personalization” ar att den tidigarear en andring pa en sida som sedan blir tillganglig for alla anvandare, vilket oftautfors av personer med stora rattigheter. Den senare innebar att en anvandareandrar en sida for sitt eget bruk, andringen blir inte tillganglig for andra. Om ensida inte ar andrad, sa kallas den i SharePoint-termer “ghosted”.

3.8.1 “Site Pages”

“Site Pages” tillhandahalls av farmens innehallsdatabas efter en andring ellerpersonalisering, annars sa anvands den version som finns i webbserverns filsys-tem. Da en andrad/personaliserad sida efterfragas sa hamtas aspx-sidan uppav SharePoint som sedan later ASP.NET utfora samma sak som den utfor pavanliga sidor; kompilera, tolkning och generering av HTML. Eftersom anvandarekan andra i dessa sidor sa tillampar WSS en strikt sakerhetspolicy via en sakallad “safe mode parser” som ser till att ingen kod eller scripttaggar anvandspa sidan. Enbart deklarativ programmering far utforas, d.v.s. anvandandet avASP.NET‘s Server/User Controls. Vilka kontroller som far anvandas bestams viaen deklaration <SafeControls> i webbapplikationens konfigurationsfil (placeradi wwwroot-katalogen).

En “Site page” anvander sa kallad “no-compile mode”, som inte tillater attsidan kompileras, utan tolkas vid exekvering. Instinktivt sa kan man tycka att

Page 37: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.9. Kataloger 23

detta borde paverka prestandan negativt, men sa ar faktiskt inte fallet om WSSservern har valdigt manga eller stora applikationer. Nar en sida som inte farkompileras anropas sa skapas ingen assemblatorkod for sidan som sedan sparastill disk. Istallet skapas och sparas en instans av sidbyggarkomponenten i minnetoch anvands for att generera sidans resultat (HTML) vid exekvering (som utforsda ett anrop gors). En annan fordel ar att denna komponent sedan kan tas bortfran minnet pa ett satt som om sidan kompilerats inte vore mojligt eftersom.NET ramverket inte riktigt stodjer borttagandet av en DLL fran minnet [23].

3.8.2 “Application Pages”

Om alla sidor vore “unghosted” som det kallas da sidan existerar i innehallsdatabasenskulle SharePoint vara valdigt langsamt och hela farmkonceptet skulle varameningslost eftersom flaskhalsen da skulle vara databasen. Som tur ar behover ensida inte tillata personalisering och andringar utan kan forbli en sida i filsystemet.En sadan sida kallas en “Application page” och ar skapad som en aspx sida ilayouts-katalogen. Pa sidan tillats all slags kod, eftersom da access till katalogen

har erhallits sa maste anvandaren som laddar upp den ha goda avsikter och ingen“safe mode parser” behover anvandas.

I katalogen existerar manga av SharePoints inbyggda sidor: t.ex. sidor foratt hantera anvandare, listor och andra konfigureringssidor. Detta ar ingetanvandaren behover andra pa eftersom funktionaliteten som erbjuds mastefinnas.

Om en skraddarsydd sida ska skapas for atkomst fran alla webbplatser sa ardet enklaste sattet att skapa en ny “Application page”.

3.9 Kataloger

“ 12-hive” ar en katalog som skapas da SharePoint installeras, vanligtvis under:c:\program files\common files\microsoft shared\web server extensions\12.

Alla filer i “12-hive” ar virtuella for att kunna anvandas av alla SharePoint app-likationer fran webbserver. Har finns exempelvis SharePoints JavaScript, CSS,“Application pages” och andra resurser.Varje IIS webbplats har fyra virtuella kat-aloger som skapas da applikationen skapas, dessa lankar sedan till olika katalogeri “12-hive”, se bild 3.6. Varje katalog spelar en speciell roll i den overgripandeWSS arkitekturen.

Katalogen vti bin ger WSS en mojlighet att exponera DLL:er och asmx-webservice filer under en sokvag inuti en URL-strang (hos en webbapplikation). Varjewebbapplikation har i och med det tillgang till sokvagen vti bin och gor att webservices och DLL:s kors i just den webbapplikationens kontext. Det ar har allaSharePoints inbyggda web services aterfinns.

Katalogen controltemplates anvands for att tillhandahalla ASP.NET UserControls som kan anvandas inuti en sida. En ASP.NET User Control ar ett enkelt

Page 38: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

24 Kapitel 3. SharePoint

Figur 3.6: IIS webbplats med dess fyra virtuella kataloger som lankar till katalogeri “12-hive”

satt att ateranvanda en viss del av en webbsida pa andra sidor. En User Controlar en “behallare” i vilket taggsprak och andra kontroller kan definieras antingendeklarativt eller programmatiskt. Till skillnad fran en ASP.NET Server Controlsom skapas programmatiskt och kan kompileras i forvag och anvands som vilkenDLL som helst sa maste en User Control vara en fil i filsystemet. Bada typernakan innehalla andra kontroller i sin tur och pa sa satts byggs en hierarki upp.

wpresources ar en virtuell katalog som innehaller olika resurser som anvandsav olika webbdelar (“Web Parts”). En genomgang av webbdelar finns pa sida 28.

Den sista katalogen heter layouts och innehaller “Application pages” medtillhorande resurser som t.ex. JavaScript, bilder och CSS. Se bild 3.7 for en visuellrepresentation av katalogstrukturen.

3.10 “Features”

“Features” i SharePoint ar en mekanism for WSS 3.0 som ger utvecklare enmojlighet att definiera webbplatselement och sedan integrera dem in i en webbplatseller webbplatskollektion genom en process kallad “feature activiation”. De typerav element som kan definieras ar menykommandon, linkkommandon, sidmallar,sidinstanser, listdefinitioner, listinstanser, webbplatskolumner, innehallstyper,handelsehanterar och arbetsfloden.

En feature bestar av en katalog skapad i en speciell katalog pa SharePoint-webbservern. Katalogen innehaller en eller flera XML-baserade filer innehallandesCAML. Varje featurekatalog bor innehalla en manifestfil vid namn “feature.xml”som ett antal feature-specifika attribut som t.ex. ID och en titel men som avenrefererar till andra XML filer.

Forutom “feature.xml” sa innehaller oftast katalogen en fil vid namn “ele-

Page 39: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.10. “Features” 25

Figur 3.7: Bild over hierarkin under den viktiga katalogen kallad “12-hive”. Layoutkatalogens innehall ar “Application pages” och dess underkatalog 1033 innehallerresurser

ments.xml” som definierar de faktiska webbplatselementen vilka utgor innehalletav feature:n. Oftast refererar elementet till en DLL. Aven andra typer av filerkan finnas i katalogen som listdefinitioner, sidmallar eller andra resursfiler somt.ex. CSS, JavaScript och bilder.

Mycket funktionalitet i WSS som ar implementerad kan aktiveras vid behov.T.ex. finns alla SharePoint webbplatskolumner definierade i feature:n “fields”,den aktiveras da en webbplatskollektion skapas.

En feature maste installeras pa farmniva via kommandoverktyget sdsadm. Narden val har installeras kan den aktiveras. Da en feature aktiveras sa installeraswebbplatselement pa angiven niva i WSS webbplatshierarki: antingen i en webb-plats eller i en webbplatskollektion. Utover det kan aven en feature innehalla enwebbplatsdefinition, den fungerar som en ritning for hur en hel webbplats borskapas.

Page 40: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

26 Kapitel 3. SharePoint

3.11 Listor och innehallstyper

Den centrala komponenten i en applikation for samarbete ar en flexibel data-modell, dar anvandare kan lagra, hantera data. Dessa objekt kan representeramanniskor, saker eller dokument och kan lagra en stor mangd metadata. Metadataar information om data, exempelvis vem och nar ett dokument skapades. WSShanterar data via listor och innehallstyper, vilka bada ar definierade av XML-scheman som antingen skapas vid korning pa grund av anvandarens andringareller via filer i en feature. Filerna ar skrivna i ett sprak unikt for WSS: CAML7.Det hela fungerar pa ungefar samma satt som en webbplats skapas; antingen viadefinitioner gjorda i CAML, eller via skraddarsydda mallar. Pa samma satt kan enlista med skraddarsydda innehallstyper definieras i ett XML dokument och provi-tioneras da en feature installeras. Eller sa kan anvandare via anvandargranssnittetutfora samma sak via ett antal formular.

I hjartat av WSS arkitekturen finns infrastruktur for att definiera listtyperoch skapas listinstanser for att lagra data. Dokumentbibliotek ar en hybridlistasom anvander och utokar en standardlistas lagringsmodell.

De listtyper som ingar i WSS kan hantera ett antal olika foretagsproblem.Dessa ar tillgangliga via anvandargranssnittet da en lista skall skapas och kananvandas rakt av. Exempel pa sadana listor ar: “Document library”, “Formlibrary”, “ Wiki page library”, “ Calendar” och “Tasks”.

Pa en lagre niva kategoriserar WSS listtyper med hjalp av bastyper. Exem-pelvis har standardlistor typ 0 medan dokumentbilbliotek har typ 1. Bastypendefinierar ett antal gemensamma kolumner och alla listyper som ar baserad pabastypen arver de kolumnerna. Alla bastyper har en kolumn vid namn ID som arett unikt varde for varje objekt i listan.

Da en ny lista skapas via anvandargranssnittet sa kan den baseras pa en stan-dardlista, om daremot en skraddarsydd lista valjs sa skapas enbart en editerbarkolumn: title (sv. titel). Darefter kan falt(kolumner) laggas till.

3.11.1 Webbplatskolumner

Listor sparar data i kolumner som kan vara unik for varje lista. WSS 3.0 intro-ducerade webbplatskolumnen (eng. “Web site column”), som gor det mojligt attskapa falt pa ett ateranvandningsbart vis. Istallet for att skapa ett falt vid namnFirstName flera ganger sa definierar WSS en webbplatskolumn en gang for alla iden inbyggda WSS feature:n fields [20]. Denna webbplatskolumn ser i CAML utsom foljande:

<Field ID="{4a7222d4-d406-4356-93f9-2550b8f50dd0}"Name="FirstName"SourceID="http://schemas.microsoft.com/sharepoints/v3"StaticName="FirstName"

7Collaborative Application Markup Language

Page 41: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.11. Listor och innehallstyper 27

Group="$Resources:Person_Event_Columns"DisplayName="$Resources:core, First_Name;"Type="Text">

</Fields>

DisplayName ar kolumens titel. I taggen Group anvands en speciell syntax meden “$” karaktar framfor. Denna syntax blev introducerad i ASP.NET 2.0 som ettsatt att erhalla den lokaliserade texten fran en resursfil. WSS stodjer ett flertalsprak.

Vidare ar att alla falt ar uppbyggda av falttyper (eng. “Field types”). Enfalttyp kan vara som i exemplet ovan “Text” eller “Number”, “Choice”, “Currency”med mera. Varje falttyp ar skriven i kod och ar sedan kompilerad till en DLL.En falttyp maste aven implementera ett antal serverkontroller som renderas dada ett objekt i en lista vars kolumn anvander falttypen skall editeras, visas ellerskapas. Pa sa satt blir det enkelt for anvandargranssnittet att hantera listansformular och utseende. Ett exempel pa denna goda design ar da en anvandareskall lagga till ett nytt objekt i listan Uppgifter som har en kolumn vid namn‘StartDate’ som anger nar uppgiften skall borja. StartDate har falttyp “DateTime”och falttypens serverkontroll for att satta in genererar HTML for hur ett datumbor anges i formularet.

Det gar att skapa egna falttyper genom att arva fran nagon av de inbyggdafalttyperna, implementera de kravda metoderna, darefter kompilera och gora WSSmedveten om att DLL:en finns. Det gor man via att lagga till ett CAML baseratfaltschema i katalogen TEMPLATE/XML under en fil vid namn fldtypes*.xml(* ar ett wildcard). Da WSS tolkar XML-filerna sammanfors alla falttyper somblivit definierade av alla (eller bara en, som standard i WSS) faltschemafiler, pasa satt slipper utvecklaren editera WSS standardfil som det finns risk att andrasvid ny version av WSS.

3.11.2 Innehallstyper

Innehallstyper (eng. “Content types”) ar en ny funktion introducerad med WSS3.0 [20]. Iden ar att en innehallstyp definierar det underliggande schemat forantingen ett objekt i en lista eller ett dokument i ett dokumentbibliotek oberoendeav listan eller dokumentbiblioteket. Ett exempel pa det kan vara om anvandarenbehover en Kontrakt-innehallstyp. Innehallstypen far ett antal falt specifik forett kontrakt som t.ex. kontrakt typ, datum signerad, vem som ager det osv.Darefter kan innehallstypen bli associerad med ett dokumentbibliotek och narett dokument laddas upp maste de falt som innehallstypen definierar fyllas i.

En innehallstyp har ett antal nyckelformagor [24]

– Innehallstyper ar hierarkiska sa att varje ny innehallstyp arver fran enbefintlig. Alla foralderns egenskaper arvs till barnet. Inga nya innehallstyperskapas fran grunden, utan for att skapa en sa enkel som mojlig arvs fran

Page 42: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

28 Kapitel 3. SharePoint

innehallstypen “Item”. Denna arvfunktionalitet ar valdigt lik objektorien-tering i programmering, dar innehallstypen ar en klass och falten utgorvariabler som deklarerats som “protected”.

– Om andringar sker i en innehallstyp kommer det att paverka alla de listoroch bibliotek samt de innehallstyper som arver fran den. En innehallstypar valdigt flexibel.

– Falt i en innehallstyp kan inte skapas direkt baserade pa en underliggandefalttyp, utan falten maste baseras pa redan existerande webbplatskolumner.

For ett exempel pa hur arvet kan fungera se figur 3.8. I exemplet sa skapas tvainnehallstyper i rotsidan: “Spec” och “Memo” som bada arver fran innehallstypen“Document” som ingar i WSS. I och med att bada arver sa erhaller de “Document”faltet “author”. Utover det anger de nagra egna falt.“ProductXSpec” arver fran“Spec” och definierar faltet SKU. En lista i underwebbplatsen anvander sig avinnehallstyperna “ProductXSpec” och “Memo”. Eftersom de bada har faltet“Author” som ar en webbplatskolumn med namn for bada innehallstyperna saslas de ihop och enbart en kolumn med “Author” visas i listan.

En innehallstyp kan forutom att lagga till falt aven definiera beteenden. In-nehallstyper anvandas till att binda handelser och arbetsfloden till listobjekteller dokument. Exempelvis kan man konfigurera Kontraktinnehallstypen tillsam-mans med en handelsehanterare som exekverar kod for att utfora validering pakolumnens varden. Eller sa kan ett arbetsflode associeras med innehallstypensom initierar en process som kraver att kontraktet godkanns fore kontraktet kanladdas ned.

Innehallstyper definieras via CAML som sedan kan anvandas i en “feature”for installation i de webbplatskollektioner eller webbplatser den kravs.

3.12 Vyer

Vyer (eng. “Views”) i WSS gor att en lista kan visas pa olika vis. Till varje listafinns en standardvy (“default”) som visar de kolumner som blivit tilldelade listanda den skapats. Utover det kan aven andra vyer bli skapade samtidigt som listan.Exempelvis skulle en anvandare kunna valja en vy som enbart visar anvandarensuppgifter fran en lista med hela foretagets uppgifter. Detta val utfors enkelt viagranssnittet, se figur 3.9. En vy kan skapas pa tva satt: via granssnittet for enspecifik lista, eller via att definiera en vy i en features listschema som sedanskapar listan vid aktivering.

3.13 Webbdelar

Webbdelar ar ett viktigt koncept i WSS som bade ger upphov till valdigt godamojligheter for anvandarna att skraddarsy sidor, samtidigt som det ger utveck-

Page 43: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.13. Webbdelar 29

Figur 3.8: Arv mellan innehallstyper (bild fran [24])

larna ett satt att skapa modulara delar som kan ateranvandas och samarbeta.Webbdelar ar det fundamentala byggblocket for SharePoints anvandargranssnitt.

De inbyggda webbdelarna i WSS ar skapad efter god design och ar generiska ochbyggda for att ateranvandas. Ett bra exempel pa en sadan webbdel ar Data FormWeb Part som kan bli konfigurerad for att ansluta till en datakalla och visa dessa

Page 44: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

30 Kapitel 3. SharePoint

Figur 3.9: Olika vyer for en “Task”-lista

data pa olika satt.En webbdel ar en speciell webbkontroll som existerar i en sa kallad webbdel-

szon. En webbdel ar lost kopplad till sidan som litar pa att den har tagit hand omden infrastruktur som kravs. En webbdel interagerar med en webbdelshanteraresom tar hand om skapandet och behaller instanserna av webbdelarna som harlagts till i webbdelszonerna antingen deklarativt eller programmatiskt. Webb-delshanterare hamtar webbdelarna fran innehallsdatabasen da sidan initieras. Idatabasen ar webbdelarna sparade i serialiserat format.

Aven den mest triviala webbdel som arver fran klassen “WebPart” renderasmed ett sa kallat “chrome” da den anvands fran SharePoints anvandargranssnitt.“chrome” ar de granssnittselement vilka ar standard for varje webbdel, t.ex. enformaterad titel ovanfor webbdelen och en ram runt som passar in i SharePointslayout. Rendering av “chrome” hanteras och renderas av ramverket (WSS) enbartom webbdelen existerar inom en webbdelszon.

3.14 Objektmodellen

SharePoint har ett gediget API som kan hantera valdigt manga aspekter i dessfunktionalitet och finns tillganglig genom en DLL vid namn “Microsoft.SharePoint.dll’,vilken installeras i GAC:en samtidigt som WSS. Ett enkelt exempel pa hur ob-jektmodellen skulle kunna anvandas i en applikation ar foljande bit av kod darett webbplatskollektionsobjekt hamtas. Utifran dess toppnivawebbplats sa iter-erar programmet over alla listor och skriver ut listans titel till kommandoraden.Eftersom SharePoints API anvander sa kallad ohanterad kod i bakgrunden sa borenligt rekommendationer[25] objektet tas bort fran minnet nar det anvants klart.

using Microsoft.SharePoint;class Program {

static void Main() {string sitePath = "http://myserver.com";

Page 45: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.14. Objektmodellen 31

SPSite webbplatskollektion = new SPSite(sitePath);SPWeb webbplats = webbplatskollektion.RootWeb;foreach(SPList lista in site.Lists) {

Console.WriteLine(lista.Title);}webbplats.Dispose();webbplatskollektion.Dispose();

}}

Ibland ar dokumentationen och API:n lite forbryllande eftersom olika terminologianvands mellan WSS och dess version 1.0 foregangare SharePoint Team Ser-vices(STS). Eftersom inte allt har blivit omgjort sa hanger de gamla uttryckenkvar, bland annat i SharePoints objektmodell. For en oversattning mellan debadas termer och den svenska ekvivalenten som kommer anvands genom heladenna rapport, se tabell 3.1 [20]. Ett exempel pa terminologiproblematik ses iovanstaende kodsnutt dar en SPSite ger en referens till en webbplatskollektionoch SPWeb ar en webbplats.

STS gammal WSS ny term Svensk oversattningSite Site Collection WebbplatskollektionWeb Site WebbplatsRoot Web Top-level Site Toppnivawebbplats

Tabell 3.1: Oversattning mellan den nya terminologin anvand i Windows Share-Point Services och den gamla i SharePoint Team Services samt en svenskoversattning av WSS termen

Se figur 3.10 for en oversikt pa hur SharePoints objektmodell hanger samman.Ett antal punkter finns med i bilden som kommer att forklaras [26].

1 ContentDataBase-attributen av SPVirtualServer returnerar en SPContent-DatabaseCollection som representerar en samling av innehallsdatabaseranvanda av en virtuell server. Varje SPContentDatabase-objekt ger accesstill attribut hos innehallsdatabasen.

2 WebServers-attributen hos SPGlobalConfig returnerar en kollektion med avde front-webbservrar som WSS anvander sig av. Varje SPWebServer objektger access till egenskaper hos webbservern.

3 VirtualServer attributen hos SPGLobalAdmin ger access till kollektio-nen av virtuella servrar i WSS driftsattningen. Sites ar en attribut forvarje SPVirtualServer-objekt som ger access till kollektionen av alla webb-platskollektioner (site collections), dess add metod kan anvandas for attskapa fler webbplatskollektioner.

Page 46: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

32 Kapitel 3. SharePoint

Figur 3.10: En oversikt over hur SharePoints objektmodell ar uppbyggd

4 Varje webbplatskollektion representeras av en SPSite objekt. Via AllWebsattributet kan ett SPWebCollection-objekt erhallas som representerar allawebbsidor i webbplatskollektionen.

5 En webbplatskollektion kan innehalla de SPWeb objekt som i sin tur kananvandas for att hantera en unik webbplatsen. Saker som dess mallar,teman, filer och kataloger kan hanteras via SPWeb-objektet. For varjewebbsida (SPWeb-objekt) finns ett attribut Webs som tillhandahaller en

Page 47: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.15. Autentisering och Auktorisering 33

SPWebCollection som representerar alla undersidor for en specifik sida.Varje undersida har i sin tur, precis som toppsidan ett attribut benamntLists som returnerar en SPListCollection genom atkomst till varje lista armojlig.

6 Varje SPList-objekt har metoder och attribut som kan anvandas for atthantera listan och for atkomst till de objekt som den innehaller. Fieldsattributet ger tillgang till SPFieldCollection-objektet som representerar allafalt (kolumner) i listan. Items attributet returnerar en SPListItemCollectionsom kan anvandas for atkomst till rader i listan.

7 Varje SPField-objekt har medlemmar som innehaller uppgifter om hur justdet faltet bor visas och hanteras

8 Varje SPListItem-objekt representerar en rad i listan

3.15 Autentisering och Auktorisering

WSS utfor sjalv ingen autentisering utan overlater det at IIS eller ASP.NET-ramverket. Som standard anvander sig WSS av sa kallad “Intergrated Win-dows Authentication” som utfors av IIS tillsammans med operativsystemet hoswebbserverautentisering mot ett Windows-anvandarkonto (som kan vara lokal-eller domankonto). Om WSS ar konfigurerat att anvanda formular autentiser-ing sa ar det ASP.NET-ramverket som utfor autentiseringen mot nagon slagsanvandarlagring, oftast en SQL databas. Formular autentisering ar ett tillskotttill WSS i senaste versionen, tidigare existerade en valdigt tight koppling motAD-tjansten som gjorde WSS obrukbart for externa nat och internet.

I ASP.NET 2.0 introducerade Microsoft en nytt satt att enkelt anvanda sig avautentisering och auktorisering via deras nya Membership ramverk. Membershipabstraherar bort den underliggande datalagringen for att lagra kreditiv informa-tion som t.ex. anvandarnamn och losenord och tillhandahaller ett API for attenkelt validera anvandare samt hantera databasen. ASP.NET 2.0 tillhandahallertva sa kallade forsorjare (eng. Providers), en for SQL Server och en for ActiveDirectory. Det ar ocksa mojligt att skapa och anvanda egna forsorjare.

I WSS 3.0 erbjods i och med ASP.NET 2.0 stod for Membership ramverketatt samexistera tillsammans med “Integrated Windows Authentication”. For-mular autentisering sker da en membership-forsorjare anvands for att autentiseraanvandare mot nagot datalager.

Aven om ingen autentisering utfors sa hanterar WSS anda auktorisering paett effektivt satt via sa kallad “user security token” (anvandarsakerhetsmarkor).Denna markor identifierar en anvandarens grupper och roller. Markoren kansnabbt jamforas mot resursers ACLs8 for att avgora om tillgang bor ges.

8Access Controls Lists

Page 48: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

34 Kapitel 3. SharePoint

3.16 Web service

Web services for SharePoint som ar SOAP-baserad oppnar upp valdigt mycketfor en anvandare med rattigheter. Det finns totalt 20 stycken web services iWindows SharePoint Services 3.0, dar varje innehaller ungefar 15 metoder varavde flesta returnerar resultat i XML format. Att nastan all information finnstillgangligt icke-lokalt ar en stor forman, som dock kan bli lite overvaldigandei vissa situationer. Ett exempel pa det ar web servicen Lists och dess metodGetList(listname). Resultatet av ett sadant anrop ar pa hela 39 Kibyte data, totalt582 rader med XML. Det som SharePoint skickar med ar all XML-baserad CAMLsom innehaller listans faltscheman som antingen kan vara webbplatskolumner,anvandarens skraddarsydda kolumner eller de som ingar som standard da listanprovitionerats. Nedan tas de viktigaste metoderna for synkronisering mot WSSupp.

3.16.1 Autentisering

Autentiserings web servicen ar en viktig del av SharePoints web services utbudda nagot annat an den integrerade Windows sakerheten anvands. WSS webservice anvander NTLM9 autentisering, som ar ett sakerhetsprotokoll utvecklatav Microsoft som utfor en slags handskakningsprocess.

Denna web services har egentligen bara en viktig metod, “login”. Via den kananvandarnamn och losenord anges som sedan autentiseras mot den forsorjare vilkaangivits i webbapplikationens konfigurationsfil. Om det lyckades sa returneras enkaka som sedan kan anvandas for andra web services anrop.

3.16.2 UpdateListItems

UpdateListItems ar en metod som finns med i Lists web servicen. Med hjalpav den kan man lagga till, ta bort eller uppdatera ett visst objekt i en lista.Metoden tar tva parametrar, dar den ena ar listans namn eller GUID (om sluteti masvingar) och den andra en XMLnod. Noden ar ett sa kallat batch elementsom tillater multipla processer att utforas pa SharePointservern. Batch elementethar fyra attribut:

ListVersion - Frivillig int, specificerar versionnummret pa listan

OnError - Frivillig, foljande varden ar tillaten

Return - Stannar exekveringen av fler operationer efter ett fel uppstatt(standard)

Continue - Fortsatter att exekvera efterliggande metoder aven om ett feluppstatt

9NT LAN Manager

Page 49: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

3.16. Web service 35

Version - Frivillig strang. Specificerar ett versionsnummer av WSS som kor paservern

ViewName - Frivillig GUID, Specificerar ett GUID for en vy. Om inget ViewName-attribut har deklarerats sa anvands standardvyn

Ett batch element maste ha en eller flera undernoder vid namn “Method” sominnehaller de operationer som skall utforas. Dess syntax ar

<Method ID="Text" Cmd="Text" ></Method>

dar attributet Cmd ar kommandot for operationen, mojliga varden ar “Delete”,“New”, “Update”. ID ar ett strang som inte anvands pa serversidan men som kananvandas for att lanka samman metoden med dess svar. ID:t maste vara uniktoch har inget att gora med indexet av objektet i objektkollektionen for listan.

En metod-nod kraver vid “Delete” och “Update” ett falt vid namn ID somar listobjektet som operationen skall utforas pa. Vid “Update” maste aven andraField-element bifogas. Ett exempel pa en valid batch med tillhorande metoderoch falt ar:

<Batch OnError="Continue" ListVersion="1"ViewName="270C0508-A54F-4387-8AD0-49686D685EB2">

<Method ID="1" Cmd="Update"><Field Name="ID">4<Field><Field Name="Title">Nyttvarde</Field>

</Method><Method ID="2" Cmd="Update">

<Field Name="ID" >6</Field><Field Name="Title">Nyttvarde</Field>

</Method></Batch>

Har uppdateras titeln for ID 4 och 6 med ett nytt varde. For ett exempel pa ettsvar fran UpdateListItems se foljande XMLData fragment:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/"><Result ID="1,Update">

<ErrorCode>0x00000000</ErrorCode><z:row ows_ID="4" ows_Title="Nyttvarde"

ows_Modified="2008-05-18 20:31:21"ows_Author="2;#User1_Display_Name"... />

</Result><Result ID="2,Update">

<ErrorCode>0x00000000</ErrorCode><z:row ows_ID="6" ows_Title="Nyttvarde"

Page 50: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

36 Kapitel 3. SharePoint

ows_Modified="2008-05-18 20:31:22"ows_Author="2;#User1_Display_Name"... />

</Result></Results>

I svaret bifogas alla falt for de uppdaterade objekten. ows Author faltets svarar lite annorlunda eftersom det ar ett sa kallat “lookup” falt. Vardet har dahamtats i en annan tabell, ett ID ar ocksa bifogat fore vardet for att indikeravilket ID anvandaren har, i detta fall i UserInfo tabellen dar mer information omanvandaren kan hamtas.

3.16.3 GetListItemChangeSinceToken

GetListItemChangeSinceToken ar en metod i Lists web servicen som till stor del arallt som behovs for att halla en extern lista synkroniserad mot en SharePointlista.

Vad den gor ar att vid forsta anropet da ingen token bifogas returnerar enXML representation av hela listan samt allt innehall i den. Som svar erhalls avenen token, som ar en strang. Om denna token sedan anvands vid nasta anropsa returnera enbart de andringar i listan som skett mellan de tva anropen. Ettexempel pa ett svar om ett objekt tagits bort i listan sedan forra anropet

<listitems MinTimeBetweenSyncs="0"RecommendedTimeBetweenSyncs="180"MaxBulkDocumentSyncSize="500"AlternateUrls="http://acinohannesvm:81/,http://acinohannesvm/"xmlns:rs="urn:schemas-microsoft-com:rowset"xmlns="http://schemas.microsoft.com/sharepoint/soap/">

<ChangesLastChangeToken="1;3;a5c1ccf7-78c6-47ec-9c6c-a5b345235a2d;633426596701770000;1630"><Id ChangeType="Delete"xmlns="http://schemas.microsoft.com/sharepoint/soap/">64</Id>

</Changes><rs:data ItemCount="0"></rs:data>

</listitems>

XML attributet LastChangeToken ar den token som bor anvandas vid nastaanrop. Under changes XML-noden finns alla andringar till listan, denna gangenbart ett inlagg med en ChangeType av Delete. Inuti XML-noden sa finns detID objektet som har tagits bort. Det finns ett fleratal andra ChangeType:s somenligt rekommendationer skall hanteras med en full resync, d.v.s. hela listan borhamtas hem igen och ny token erhallas. Den andra viktiga ChangeTypen forrutomDelete ar Update. Vid Update sa finns all data om objektet som uppdateratsunder <rs:data> noden.

Page 51: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 4

Val av jamforelsewidget

Vid utvecklandet av en jamforelsewidget overvagdes flertalet tillvagagangssatt.Har foljer en beskrivning av dessa samt en motivering av det slutliga valet avtillvagagangssatt.

Alternativ 1: Allt implementerat i JavaScript

Att inkludera ett JavaScript i huvudet hos en webbsida och sedan deklarera nagotelement t.ex. en div med attribut som indikerar att har bor widgeten sattas in.All HTML genereras fran JavaScript vilket gor hela processen valdigt jobbig forHTML-intensiva widgets. Denna losning pa problemet skulle vara valdigt enkeltatt anvanda for webbutvecklare, och det ar pa detta satt manga enklare widgetsanvands. En annan positiv sak med denna losning ar att den ar oberoende avplattform eller programmeringssprak. Den stora nackdelen ar att allt ar gjort iJavaScript, vilket inte ar ett objektorienterat sprak.

Alternativ 2: Anvanda ASP.NET serverkontroll, lat C# och .NEThantera webbtjanst mot SharePoint

Denna approach ar inte helt en widget i den traditionella bemarkelsen att ensadan ska kunna injiceras i alla HTML-baserade hemsidor, istallet baserar densig pa att webbservern anvander ASP.NET. Daremot skulle den kunna vara likaenkel att anvandas som ovanstaende alternativ.

I denna approach sa skapas alla HTML i serverkontrollen, AJAX-anrop gorsfran genererad JavaScript kod mot webbservern som i sin tur hanterar kontaktenoch utvaxlandet av data mot SharePoint. De stora fordelarna med denna approachvore tillgang till handelsehantering da en anvandare klickar pa nagonting samtatt ett objektorienterat sprak (C#) skulle kunna anvandas. En nackdel voreantagligen prestanda och att widgeten inte fungerar pa alla plattformat ochprogrammeringssprak.

37

Page 52: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

38 Kapitel 4. Val av jamforelsewidget

Alternativ 3: IFrame mot en sida i SharePoint

IFrames ar en enkel och valdigt vanlig approach till att skapa widgets. IFramesfungerar likt ett extra fonster i webbsidan som visade en helt annan sida. Fordelenmed denna approach vore att man skulle kunna skapa en sida pa SharePointservern som visar det som onskades. Anropstrangen skulle kunna precisera vilkenlista som onskas. Klick och andra handelser skulle enbart ske i IFramen om detvar dar de utfordes. Den stora nackdelen ar att JavaScript inte kan anvandasfor att extrahera information fran IFramen om sidan som visas i den inte arpa samma doman som webbservern. Dock finns det satt att ta sig runt dennasakerhetsaspekt [27], men uppmuntring till sadana aktiviteter vore omoraliskt.

Alternativ 4: Inbaddad plugin-objekt

Webblasarnas funktionalitet ar idag utokad med valkanda tillagg som t.ex. AdobeFlash, Apple QuickTime och Microsoft SilverLight . Nagon av dessa eller andratillagg skulle kunna anvandas. Den enda nackdelen, ar att precis som med forraalternativet sa blir interaktionen mellan foraldersidan och widgeten problematisk.

Utvardering och val

Alternativ tre (IFrame) har inte valts pa grund av det faktum att innehallet intehar atkomst till foraldern som innehar IFrame:en. Alternativ fyra skiljer sig safor mycket fran AJWH-widgeten sa en jamforelsestudie skulle bli valdigt svart.For detta exjobb kommer alternativ tva implementeras som referenswidget.

Valet av alternativ tva kan dock diskuteras eftersom alternativ ett vore minstlika bra for jamforelsesyfte. Det som lockade med alternativ tva var att forsokaefterlikna klientbaserad programmering som JavaScript fast pa serversidan ochanvanda genererad JavaScript kod for att gora AJAX-anrop.

Det som enligt forfattaren ar problemet med AJAX ar att JavaScript masteanvandas for att tolka informationen erhallet i nagot strukturerat format ochsedan generera/editera befintlig HTML. Att gora detta med cross-browser funk-tionaliteten intakt kan vara problematiskt. Ett annat problem med JavaScriptar att forsoka strukturera data som erhalls pa ett bra satt internt, vilket inte arlatt da JavaScript inte stodjer objektorientering. Pa grund av dessa orsaker kandarfor alternativ tva visa sig vara en god opponent.

For att realisera dessa tva ideer kravs det gedigen kunskap inom olika AJAX-tekniker, XML, web services, SharePoint samt aven ASP.NET som ar den plat-tform som dels anvands av SharePoint men aven kommer anvandas pa webb-servern.

Page 53: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

4.1. ASP-Widget 39

4.1 ASP-Widget

Denna widget kommer implementeras i C# med ASP.NET 3.5 Extensionssom ar den i skrivande stund nyaste versionen som innehaller mycket bra stodfor AJAX-teknik, bade pa serversidan och anvandarsidan. Widgeten kommerbenamnas ASP-Widget fran och med nu. Webbservern kommer kommuniceramot SharePoint-serverns inbyggda web services for att halla listan synkroniseradefter rekommendationer fran Microsoft [28]. En objekthierarki kommer byggasupp pa serversidan som kommer efterlikna SharePoints objektmodell till viss del.Klienten kommunicerar enbart mot webbservern som i sin tur hanterar synkronis-eringen med SharePoint En oversikt pa hur kommunikationen mellan anvandare,webbserver och SharePoint server se figur 4.1.

Figur 4.1: ASP-Widgetens kommunikationsmonster

4.1.1 Icke-funktionella krav

– Widgeten ska implementeras som en serverkontroll

Page 54: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

40 Kapitel 4. Val av jamforelsewidget

Page 55: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 5

AJWH-Widget

I detta kapitel kommer en grundlig beskrivning av hur AJWH-widgeten fungeraroch ar uppbyggd.

5.1 Planering och teknisk genomgang

Eftersom tre system var involverade i att skapa denna widget kan inte allagoras samtidigt, utan arbetet borjar vid informationens kalla: SharePointservern.Forst och framst var en SharePointsida tvungen att skapas med tillhorandeformularautentisering.

SharePoint anvander som standard Active Directory for autentisering (se sida33) av anvandare, men eftersom denna widget skulle kunna anropa SharePointfran JavaScript sa var autentiseringsforsorjaren tvungen att bytas ut.

Ett antal andringar utfordes pa SharePoint webbservens konfigurationsfilfor att istallet autentisera via formularautentisering. Formularautentiseringenskulle sedan anvanda en SQLdatabas som forsorjare. En Windows SQL server2003 fanns redan pa SharePointservern, denna anvandes som anvandardatabas.SQL-databasen kunde installeras i SQL Server via ett program vid namn “asp-net regsql” som automatiskt skapar en databas med tillhorande tabeller och stodfor Membership.

Databasen kan efter installation aven fungera som forsorjare till tva andraAPI:n Roles och Profile. Roles ger enkelt tillgang till rollbaserad sakerhet, t.ex. sakan man i webbapplikationens konfigurationsfil deklarera att enbart en viss rollkommer in i en avsedd katalog. Profile tilldelar varje anvandare extra informationsom webbutvecklaren fritt kan hantera sa lange anvandaren ar inloggad. Profilefungerar aven pa anonyma anvandare om modifikationer utfors.

I och med att SharePointservern autentiserar mot en SQL server sa gor avendess web services det.

Nasta mal var att skapa en egen web service i SharePoints vti bin katalogsom returnerar en trivial strang.

41

Page 56: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

42 Kapitel 5. AJWH-Widget

Webbsidor i ASP.NET anvander filandelsen aspx, web services anvanderfilandelsen asmx. Varje webbsida har som standard en “code-behind” fil, vilketar en klass som aspx-sidan arver information ifran. I och med att det ar ettarv sa kan attribut deklareras i code-behind och atkomst kan fas direkt franaspx-sidan. Alla deklarationer i aspx-sidan kan ocksa nas i code-behind omattributet “runat=server” finns i taggen. Koden i code-behind kompileras videxekveringstidpunkt. Ett antal handelser sker da ASP.NET sidans livscykel satterigang for att visa en sida, varje handelse kan overlagras i code-behind i och medatt den arver ifran Page klassen. ASP.NET:s sidolivscykel ar en viktig del attforsta vid skapandet av webbapplikationer.

For att skapa en web service i ASP.NET behover man enbart skapa en .asmx filmed tillhorande kod i code-behind som arver fran System.Web.Services.WebServiceoch som innehaller metoder med attributet [WebMethod]. Automatiskt skaparASP.NET en WSDL fil utifran den klassen vid anvandning, samtidigt som code-behind kod kompileras.

SharePoint anvander som tidigare namnts virtualiserade URL:s vilket gor attautogenererade .disco och .wsdl filer maste modifieras vid skapandet av egna webservices for att gora nodvandiga omdirigeringar och bibehalla virtualisering. Detfinns inget verktyg for detta, utan det maste utforas manuellt. For att erhalla.wsdl och .disco filen for en web service ar enklaste sattet att forst publiceraden i en ASP.NET webbsida och sedan anvanda .NET verktyget DISCO.exe forgenerering av filerna.

SharePoint tillater av sakerhetskal inte code-behind kod for web servicesi vti bin katalogen. Problemet kan losas pa tre satt. Det forsta sattet ar attlagga till den kompilerade koden i GAC1:en. I och med att fa har tillgang tillatt lagga till assemblatorkod till GAC:en sa kan SharePoint med sakerhet litapa koden. Det andra sattet ar att sanka kraven pa SharePoints sakerhet, vilketman gor via att andra till “medium trust” i SharePointsidans konfigurationsfil(Web.konfig). Det tredje sattet ar att skapa en egen sakerhetspolicy. Att installeraden kompilerade koden i GAC:en ar enda losningen som inte sanker sakerhetendarfor valdes detta alternativ.

I den initiala specifikationen sa var tanken att anvandaren skulle kunnaha direktkontakt med SharePoint, detta visade sig vara svart eftersom ensakerhetsfunktion forhindrar sa kallade “cross-domain calls”. Med det menas attanrop som t.ex. XmlHttpRequest mot en annan doman inte ar tillatet pa grundav de sakerhetsrisker som det kan innebara. En proxy pa webbservern ar detenda sattet att kommunicera fran JavaScript mot SharePointservern. Aven omdenna sakerhetsfunktion inte existerade sa skulle JavaScript anda inte kunna hadirektkontakt mot SharePointservern pa grund av det sakerhetsprotokoll somanvands, vilket behandlas senare.

1Global Assembly Cache

Page 57: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

5.2. Systemoversikt 43

5.2 Systemoversikt

Denna widget bestar av tre delar: JavaScript hos anvandaren, web service proxy pawebbserver och slutligen det program som genererar listan pa SharePointservern.

Figur 5.1: Systemoversikt nar en anvandare hamtar hem lista

5.2.1 Kommunikation

Den kommunikation som fors i denna widget ar alltid initierad fran JavaScript somhanterar de uppgifter anvandaren skall kunna utfora. Webbservern maste ageraproxy, d.v.s. vara mellanhand for alla kommunikation till och fran SharePoint.Alla anrop fran JavaScript har valts att vara asynkrona.

Page 58: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

44 Kapitel 5. AJWH-Widget

5.2.2 Autentisering

Autentisering ar en viktig del i denna widget i och med att SharePoint aldrigtillater anonyma anvandare att anvanda dess web service. SharePoint anvandersig av NTLM som ar ett autentiseringsprotokoll skapat av Microsoft. For atttillatas anvanda en web service fran SharePoint maste en kaka bifogas. For atterhalla kakan maste ett anrop goras till SharePoints autentiserings web service(Authentication) som har metoden Login dar anvandarnamn och losenord kananges. Anvandarnamn och losenord sparas i en konfigurationsfil for listan sa attom flera widgets skulle finnas pa samma sida sa kan anda olika anvandare varainloggade. Ingen inloggningsruta har skapats for denna widget, utan fortroendehar lagts i att da konfigurationsfilen skapades sa angavs ratt uppgifter. Om sainte ar fallet visas ett felmeddelande att dar widgeten egentligen skulle ha varit.

5.3 Implementering

5.3.1 Konfiguration

Ett krav for bada widgets var att de skall kunna konfigureras, d.v.s. en widget skallinte vara begransad till en lista och ett visst antal kolumner. Efter overvagandenover hur manga attribut som bor kunna andras skapades till slut ett XSD2-schema. Ett XSD-schema ar ett satt att specificera hur ett XML-dokument borse ut, problem kan upptackas med validering mot schemat. Med hjalp av .NET:sXSD program (XSD tool) skapades C# serialiserbara klasser utifran schemat.Serialisering betyder att man utifran objekt skapar en textrepresentation, somsedan kan deserialiseras for att ateruppbygga objektet. Det definierade schematkan ses i bild 5.2. Serialisering/deserialisering anvands av ASP.NET:s web servicesvid anrop och svar for att gora om allting till XML. I alla anrop till SharePointvar en XML-konfiguration av listan tvungen att bifogas.

5.3.2 SharePointserver

SharePointservern agerar i denna implementation som en webbserver, skillnadenar att den HTML som genereras skickas over web service. Da ett anrop anlandertill servern med tillhorande XML sa deserialiseras det och ett objekt av typListConfig byggs upp. Detta objekt kommer fungera som guide under helaanropet.

En ASP.NET-webbsida ar uppbyggd av webbkontroller, som ar ett instantier-bart objekt som arver fran Controlklassen och implementerar en rad funktioner.Webbsida kan skapas pa huvudsakligen tva vis eller genom en kombination avdem, deklarativt och programmatiskt. Nar en sida skapas deklarativt sa anvandsfardiga webbkontroller som deklareras i aspx-filen. Har ar ett exempel pa hur etttextfalt kan anvandas:

2XML Schema Definition

Page 59: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

5.3. Implementering 45

Figur 5.2: Visuell representation av XSD schemat over hur en konfiguration tillAJWH-widgeten bor se ut

<asp:TextBox runat="server" ID="TB1" Text="Hello World" ></asp:TextBox>.Via Visual Studio designer kan utvecklaren direkt deklarera ett stort antal web-bkontroller pa kort tid. Detta gors genom att enbart dra ut dem fran en verk-tygspanelen och satta ett antal attribut. Da en webbkontroll anvands deklarativtsa erhaller den mycket gratis jamfort med en programmatiskt anvand kontroll.Ett exempel pa hur om samma textfalt skulle anvandas programmatiskt:

protected void Page_Load(object sender, EventArgs e) {TextBox tb = new TextBox();tb.ID = "TB1";tb.Text = "Hello World";Controls.Add(tb);

}

Page 60: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

46 Kapitel 5. AJWH-Widget

Fordelen med programmatisk deklarering ar att vilka kontroller som visas kanandras dynamiskt vid exekvering, i detta fall beroende pa konfigurationsfilen.

Pa SharePointservern for att skapa listan anvands en aspx-fil(ListView.aspx)som deklarerar alla sina kontroller programmatiskt i dess code-behind. ListViewarver fran WebPartPage som ar en webbkontroll i SharePoints API som tillaterSharePoint web parts och web zones att anvandas i dess kontrollmangd. For attgenerera HTMLkod for listan anvands SharePoints web part DataFormWebPart.Webbsidan ListView.aspx ar en “Application page” (som tidigare namnts pa sida23) som precis som andra applikationssidor ar ghostad och befinner sig i “12-hive”katalogen under layouts/.

DataFormWebPart

Kontrollen for att visa listan(MyDataFormWebPart) arver fran DataFormWeb-Part klassen, som ar en mangfunktionell web part skapad for att visa data i olikaformer. DataFormWebPart anvands flitigt av SharePoint Designer.

SharePoint Designer(SPD) ar en visuell arbetsmiljo for att snabbt skapaskraddarsydda losningar for SharePoint. Ofta nar data skall visas i utveck-lingsmiljon anvands DataFormWebPart, pa grund av att mojligheten for attandra och konfigurera efter anvandarens behov, ar stora i och med anvandandetav XSLT3. SPD har ocksa valdigt bra stod for editering av XSLT.

DataFormWebPart ar en klass som anvander sig av XSLT for att utifrandatakallan generera HTML. Datakallan kan t.ex. vara en SQL-databas, en XML-fileller en web service, den accepterar allt som implementerar interfacet IData-Source. I AJWH-widgeten anvands SPDataSource som kan agera datalager overSharePoints listor. Till datakallan anges en SPList som hamtas fran ett SPWebobjekt. Som tidigare namnts i litteraturstudien om SharePoint ar SPWeb enklass som representerar en webbsida (t.ex. http://mySharePoint/mybusiness/ darmybusiness ar sidan) pa en SharePointserver. Utifran den kontext web servicenagerar i, eftersom SharePoint web services ar virtualiserade, sa finns alla webservice pa alla sidor. Da kan ett SPWeb objekt erhallas.

I en DataFormWebPart kan aven parametrar specificeras som sedan kananvandas i XSLT:n och pa sa satt gora den mer dynamisk. Parametrarna kanbli satta programmatiskt eller sa kan de bli hamtade fran en sessionsvariabel, enkaka eller en anropsstrang. Vid sortering och sidning (dela upp listan i delsidor)anvands ett antal parametrar for att lata XSLT:n veta vilken kolumn den borsortera pa, eller om listan skall delas upp. Dessa parametrar satts programmatiskt.

I och med att MyDataFormWebPart enbart arver fran DataFormWebPartsa kan den utokas. Eftersom XSLT:n bara kan anvanda SharePoints webbkon-troller, sa kunde en skraddarsydd meny skapas harifran. Darfor skapades menynprogrammatiskt och stoppas in i MyDataFormWebPart:s kontrollmangd. Menynbestar av flera delar:

3XSL Transformations

Page 61: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

5.3. Implementering 47

– Tva Menu-objekt som ar stommen, beroende pa vart i kontrollmangdendessa injeceras hamnar menyn pa webbsidan

– Tva FeatureMenuTemplate:s som innehaller ett antal MenuItemTemplatesom var och en har: ett JavaScript-anrop, en lank till en bild samt enbeskrivande text. De ar menyns innehall och kan existera pa vilken platssom helst pa webbsidan

– For att ge Menyn det karakteristiska SharePointutseendet anvands enuserkontroller vid namn Toolbar.ascx

XSLT

XSLT ar en teknik utvecklat av W3C4 for att transformera XML till annanXML eller ett mer representationsvanligt format t.ex. HTML. XSLT andrar intei ursprungsdokumentet utan skapar ett nytt dokument baserat pa innehallet avdet befintliga.

Figur 5.3: Diagram over de olika element som ingar vid en XSLT transformation(bild fran wikipedia)

XSLT ar ett deklarativt sprak som definierar regler for att hantera XML noderefter ett XPath-liknande monster [29]. Ett exempel pa en enkel transformationfran XML till XHTML. Forst XML:en

<?xml version="1.0" ?>

4World Wide Web Consortium

Page 62: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

48 Kapitel 5. AJWH-Widget

<personer><person anvandarnamn="JB1"><namn>John</namn><familjenamn>Blund</familjenamn>

</person><person anvandarnamn="MI1">

<namn>Mattias</namn><familjenamn>Alfredsson</familjenamn>

</person></personer>

XSLT ser ut som foljer

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns="http://www.w3.org/1999/xhtml"><xsl:output method="html"/><xsl:template match="/personer">

<html><head> <title>Testar XML exempel</title> </head><body>

<h1>Personer</h1><ul><xsl:apply-templates select="person"><xsl:sort select="familjenamn" />

</xsl:apply-templates></ul>

</body></html>

</xsl:template><xsl:template match="person">

<li><xsl:value-of select="familjenamn"/><xsl:text>, </xsl:text><xsl:value-of select="namn"/>

</li></xsl:template>

</xsl:stylesheet>

En template fungerar likt en metod som kan anropas. Forsta templaten matchar“/persons”, vilket betyder att rotnoden maste heta persons. Darefter matchasvarje template inuti ul-noden mot varje person, i detta fall tva stycken. Dessutomskall sortering utforas pa personens undernod familjenamn fore varje template.XHTML resultatet efter transformationen blev

Page 63: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

5.3. Implementering 49

<?xml version="1.0" encoding="UTF-8"?><html xmlns="http://www.w3.org/1999/xhtml"><head> <title>Testar XML exempel</title> </head><body>

<h1>Personer</h1><ul>

<li>Alfredsson, Mattias</li><li>Blund, John</li>

</ul></body></html>

Ett smidigt och relativt enkelt satt att gora om strukturerad data, till onskatformat.

DataFormWebPart anvander XSLT for att transformera dess datakallasXML-data till HTML pa ett satt liknande det ovan beskrivna, fast i storre skala.Forutom att enbart skapa en tabell med listans data sa deklarerar aven XSLT:nett antal SharePoint webbkontroller for att skapa ett formular for insattning ilistan. Sharepoints webbkontroll FormField som enbart tar namnet pa faltet somparameter anvands. XSLT:n i DataFormWebPart ar begransad till att endastanvanda SharePoints webbkontroller (deklarativt), SharePoints ddwt, standardXSLT-operationer samt Microsofts MSXSL. Blockerade operationer ar dock:“msxsl:script”, “xsl:include” och “xsl:import” [30] pa grund av sakerhetsrisker. Enannan nackdel ar att JavaScript inte heller ar tillatet.

I MyDataFormWebPart sa anvands klassen XsltConstructor som ar en klassgjord for att producera ett XSLT-dokument utifran den konfigurationsfil somerholls vid anropet till web servicen med hjalp av XmlTextWriter. Sortering varett gemensamt krav (se sida 6) sa XSLT:n utokades till att aven kunna sorterapa en kolumn.

Eftersom det ar kravande att i C# kod skapa stora strangar, sa lagras XSLT:ni en SharePointlista vid namn XSLTTransformations. Finns det redan en XSLTsparad i SharePointlistan sa anvands den istallet for att generera en ny. For attta reda om den har skapats tidigare sa sparas aven vilka falt listkonfigurationenanvander, om menyn anvands och hurvida den ar sorterad i listan. Om de trear identiska sa anvands den XSLT lagrad i SharePointlistan. Se bild 5.1 for enoversikt.

Oversikt

Da ett anrop har anlant pa SharePointservern sa utfors foljande algoritm

1 Skapa ett Page-objekt, innehallandes aspx-sidan ViewList

2 Via reflections, satt den publika attributen for listans konfiguration hosPage-objektet.

Page 64: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

50 Kapitel 5. AJWH-Widget

3 Anvand HttpServerUtility for att exekvera sida utifran den kontext webservicen befinner sig i

3.1 Aterskapa listans konfiguration till ett objekt via deserialisering

3.2 Skapa en instans av MyDataFormWebPart och lagg i sidans kontroll-struktur

3.2.1 Erhall en referens till den lista som ar specificerad i konfigurationen3.2.2 Hitta de falt som har specificerats i konfigurationen, spara dess

interna namn for SharePoint3.2.3 Skapa en SharePoint datakalla och tilldela den listan. Detta utfors

via att ett sa kallat “CAML query” byggs upp som anger vilkakolumner och lista som skall hamtas fran SharePoints API.

3.2.4 Utifran vilken sortering och paginer som skall anvandas, satt ettantal parametrar i objektet som skall kunna nas via XSLT:n

3.2.5 Kolla om XSLT:n for denna listkonfiguration redan har skapats.Om inte skapa en, annars hamta den

3.2.6 Skapa en meny och lagg till i kontrollens hierarki

3.3 Skapa ett gomt falt for listans konfigurationsfil och tilldela det resul-tatet av en serialisering av konfigurationsobjektet

3.4 Skapa en gomd bildkontroll som skall utgora den bild som visas narwidgeten gor ett AJAX-anrop

4 Ta bort all overflodig HTML som inte ar innesluten i tabellen

5 Ersatt alla relativa URLs i det resultat som erholls i forra punkten tillabsoluta

6 Returnera den skapade HTML-strangen

5.3.3 Webbservern

AJWH-widgeten gor ibland flera web service anrop fran JavaScript pa en ochsamma anvandaraktion, for varje anrop sa maste anvandaren autentiseras i proxynmot SharePoint pa nytt eftersom en sa kallad “stateless” (sv. Tillstandslos) webservice anvands (enligt rekommendationer [31]).

5.3.4 Klienten

Pa anvandarens browser kommer ett JavaScript(ajaxWS.js) laddas ned som kanladda hem widgeten asynkront fran den skraddarsydda web servicen samt utforaoperationer via SharePoints web service. Aven SharePoints JavaScript kommeratt lankas in for att ge tillgang till funktionalitet som Meny, Datumvaljare ochrik texteditor.

Page 65: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

5.3. Implementering 51

JavaScript som ar ett scriptsprak utvecklat av Netscape. Det ar ett dynamiskt,svagt typat, prototyp-baserat sprak som hanterar funktioner som forsta klassobjekt [32]. Enligt mozilla sa ar JavaScript objektorienterat [33], men inte itraditionell bemarkelse utan via prototyper som ar ett satt att simulera klass-baserade egenskaper. Prototyper har inte anvands i AJWH-widgeten, i och medatt skapade objekt inte sparas mellan anvandarinteraktioner.

Eftersom det var specificerat som krav att flera likadana widgets skall kunnabefinna sig pa samma sida sa kan inte globala variabler anvandas i JavaScriptetfor att spara konfigurationen som ar en XML strang samt annan temporardata. Istallet anvands ett input-falt som ar gomt, pa sa satt kan informationsparas mellan sidladdningar. Det gomda falten befinner sig i slutet av den tabellsom listan ar uppbyggd av. Eftersom mycket i konfigurationsfilen behovs i flerametoder sa skapades en parser-klass som gick igenom XML konfigurationen efterett visst falt. Att parsa XML i JavaScript ar problematiskt pa grund av att olikawebblasare anvander olika satt. Det lilla cross-browser bibliotek som anvandes(zXML) erbjod ett satt att parsa XML oavsett vilken browser som anvandarenutnyttjar.

Pa grund av att JavaScript anvander asynkrona anrop sa var ett sa kallatfunktionshandtag, en referens till en funktion, bifogad vid varje anrop. Narwebblasaren erhaller svar sa anropas den funktion funktionshandtaget leder till.I AJWH-widgeten ar alltid funktionen funktionshandtaget leder till definieradi den funktion som gor det asynkrona anropet, pa sa satt har den tillgang tillsamma variabler som dess foralder eftersom JavaScript anvander syntaktisktomfang.

Menysystemet

Listan i widgeten ar uppbyggd av en tabell, for att inte gora tabellen storre ochha knappar bredvid varje objekt i listan sa anvands en SharePointmeny for attvisa knapparna nar anvandaren onskar, se bild A.3. Menyn anropar en funktionnar nagot valts i listan, funktionen gor andringar i webbsidans DOM objekt ochvid “remove” och “edit” sa laggs en extra kolumn till i tabellen se figur A.4 forett exempel pa utseendet da edit har valts.

Att hamta listan

For att hamta hem listan fran SharePointserver sa anropas webbserverns webservice med den onskade listans konfigurationsfil som i sin tur anropar Share-Pointservern. Da svar erhallits, stoppas det in via innerHTML attributet pa endiv-tagg.

Satta in

Vid insattning av ett nytt objekt i listan sa exekveras foljande algoritm:

Page 66: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

52 Kapitel 5. AJWH-Widget

1 Listans konfigurationsfil parsas och for varje falt angiven i listan finns det ettID. Detta ID blev tilldelat pa SharePointservern for att vid insattning ocheditering lokalisera vilka falt anvandaren kan editera for just denna widget.Pa grund av att det ar liten skillnad mellan det ID som var tillganglig paSharePointservern och det riktiga ID:t pa faltet sa maste aven datatypenpa SharePointfaltet vara kand. Darefter utfores en djupet forst sokning avwebbsidans DOM-objekt, med start vid widgetens tabellnod. Sokningenletar efter ett partiellt matchande ID med en tagg (d.v.s. lank/textfalt/select-falt) som stammer overrens med datatypen. For att ge ett exempel sa kanman veta att datatypen Choice alltid anvander en select-tagg.

2 Ar listan ett dokumentbibliotek?

2.1 Filen som angivits laddas upp via en IFrame (se sektion 5.3.5). Efter-som listan ar ett dokumentbibliotek sa maste filen laddas upp forst.Pa sa satt skapas en inlagg i listan.

2.2 Har en titel pa filen angivits sa anropas SharePoints web serviceUpdateListItems med en XML-strang innehallande namnet pa faltetoch dess varde samt ID pa inlagget i listan.

2.3 Avsluta om allt gick bra

3 En XMLnod skapas med faltnamn och varden utifran vad SharePoints webservice metod UpdateListItems vill ha

4 Webbserverns proxy anropas med det nya objektet (angiven i XML), ettfunktionshandtag ges till en funktion som skall hantera svaret

5 Om inget fel uppstod och ett filfalt (d.v.s. objektet har en “attachment”)finns sa laddas filen upp via IFrame (mer om det i kapitel 5.3.5). For attfilen skall associeras med objektet som nyss skapades sa maste ett ID paobjektet parsas fran det svar som erholls i punkt 4. ID bifogas via ett gomtfalt.

6 Om allt gick ratt till, anropa webbserverproxyn och hamta hem en helt nylista med det nya objektet insatt

Detta ar en lang och tidskravande algoritm. Sista steget att hamta hem listanar tyvarr behovligt, i och med att JavaScriptet inte kan sortera eller paginerasom serversidan.

Editera

Denna operation utfor samma algoritm som ovan, med skillnaden att ett ID paobjektet redan finns och att UpdateListItems skall anropas som en uppdateringistallet for en insattning.

Page 67: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

5.3. Implementering 53

Ta bort

For att ta bort ett objekt fran en lista kravs ett ID. Detta ID erhalls via forstakolumnen i listan dar ID:t ar gomt. Da knappen for delete skapades via DOM-modifikationer sa parsades aven ID:t fram. SharePoints UpdateListItems anropasmed kommandot att ta bort samt med objektets ID som parameter. Darefter tasraden bort via DOM fran listan.

Sortera

Sortering pa listan utfors via att i JavaScript andra i widgetens konfigurationsfiloch ange att sorteringen skall utforas pa det falt som markerats. Darefter hamtaslistan som vanligt, d.v.s. konfigurationsfilen skickas forst till proxyn som skickartill SharePoint som i sin tur bygger listan och skickar den tillbaka.

5.3.5 Filuppladdning

Filer laddas upp genom att gora en post pa det formular som innesluter helawebbsidan. En gomd IFrame skapas dynamiskt och tar emot resultatet. Pawebbservern maste funktionaliteten for uppladdningen finnas i och med att filerinte kan laddas upp via JavaScript. Webbservern maste veta ett antal sakerfor att kunna ladda upp ett dokument, bland annat var filen skall hamna paSharePointservern, anvandarnamn och losenord samt SharePointserverns URL.Darefter anropas en web service pa SharePointservern vid namn SPFiles som taremot en bytearray, filnamn och en full sokvag till vart den bor hamna. Dennaweb service ingar inte i ursprungsversionen av SharePoint utan har laddats nedfran en MSDN artikel [34].

5.3.6 SharePoint JavaScript

For att implementera rik texteditering och datumvaljare sa maste SharePointsJavaScript modifieras.

SharePoints rika texteditor byter ut ett textfalt mot en dynamiskt instoppadIFrame. Allt innehall i IFramen skapas via JavaScript sa src-taggen i IFramen,som annars anvands for att peka mot en annan webbsida, ar tom. I och meddetta kan den rika texteditorn anvandas nastan rakt av, den enda modifikationensom gjordes var att aterimplementera tre redan skapade JavaScript funktion-er: RTE GetServerRelativeImageUrl, RTE GetServerRelativeStylesheetUrl ochRTE GetServerRelativeScriptUrl. Dessa metoder returnerar URL:er till var olikaresurser kan hamtas, men istallet for att anvanda relativa URL:s som forrut savar SharePointserverns URL tvungen att anvandas. Pa sa vis fungerar alla bilder,CSS och JavaScript i IFramen.

Nar anvandaren arbetar med texteditorn sa andras innehall i IFramen och intei det textfalt som existerade fran borjan. For att overfora informationen tillbakaigen sa anvands redan implementerade metoden RTE TransferIFrameContentToTextArea.

Page 68: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

54 Kapitel 5. AJWH-Widget

SharePoints rika texteditor fungerar bara i Internet Explorer vilket ar en stornackdel, orsaken till detta kan enbart Microsoft svara pa.

Datumvaljaren anvander ocksa en IFrame. Denna pekar pa en aspx-sida paSharePointservern. I och med att atkomst mot en IFrame som anvander en annandoman ar forbjuden i JavaScript, var flera modifikationer pa datumvaljarennodvandiga. Att andra i SharePoints JavaScriptfiler vore ingen losning, efter-som det skulle paverka aven SharePointservern. En losning som inte involveradeandringar var darfor nodvandig. Datumvaljaren som anvands pa SharePoint-severn aterfinns i katalogen http://myserver/mysite/ layouts/iframe.aspx ochden relativa URL som anvandes av IFramen var / layouts/iframe.aspx. Denfungerande losningen pa problemet var att skapa en egen sida med samma namnpa webbservern: / layouts/iframe.aspx som i sin tur via JavaScript anroparwebbservers proxy. Proxyn initierar ett HTTP-request mot SharePointsidans/ layouts/iframe.aspx med exakt samma anropsstrang som den lokala kopianblev anropad med. Da resultatet erhallits visas det i den lokala iframe.aspxsidan och da anvandaren interagerar med den, sker allt via JavaScript som intebehover gora fler AJAXanrop. Steget med att JavaScript anropar webbservernsproxy skulle kunna hoppas over och istallet direkt fran webbservern gora attanrop mot SharePoint. I och med att enbart proxyn pa webbservern skulle vararamverksberoende, valdes denna omstandiga losning.

5.4 Det fardiga systemet

Se appendix for bilder pa den fardiga widgeten

Page 69: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 6

ASP-Widget

I detta kapitel kommer en genomgang av hur ASP-widgeten ar implementeradoch de tekniker som anvands.

6.1 Planering och teknisk genomgang

Denna widget implementerades efter AJWH-widgeten, sa alla konfigurationerpa SharePointservern var redan gjorda. ASP.NET 3.5 installerades pa webb-servern. ASP-widgeten anvander sig av ASP.NET 3.5:s mest omtalade teknik:UpdatePanel.

6.1.1 UpdatePanel

UpdatePanel ar ett satt att berika en vanlig ASP.NET sida med AJAX-stod.Det bygger pa att de kontroller som ska uppdateras innesluts partiellt. FleraUpdatePanels kan finnas pa en och samma sida, dar var och en av dem ageraroberoende av de andra. UpdatePanel stodjer tyvarr inte alla serverkontrollersom finns i ASP.NET utan endast ett par stycken, t.ex. TreeView[35]. Oftast harkontrollerna nagon slags AJAX-funktionalitet sjalva.

Nar en kontroll innesluts i en UpdatePanel och gor en ompostning sa hanterasden av UpdatePanel istallet for av ramverket direkt. En ompostning ar i ASP.NETen handelse som utforts pa sidan som tvingar den att kontakta webbservern igen.Vid ompostning sa anvands ASP.NETs ViewState for att aterskapa de kontrollersom i det initiala anropet till sidan skapades. ViewState ar en base64 kodadstrang som kan vara valdigt lang da manga kontroller finns pa sidan.

Da en ompostning sker for en kontroll som ar innesluten i en UpdatePanel saskickas precis som vanligt all ViewState med for aterbyggandet av kontrollstruk-turen. Jamfort med det vanliga fallet sa sker ompostningen via JavaScript, d.v.s.ett HTTP anrop utfors var pa resultat hamtas utan anvandarens kannedom. AllHTML som hamtats som inte ingar i UpdatePanel:en ignoreras.

55

Page 70: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

56 Kapitel 6. ASP-Widget

6.1.2 ListView

ListView ar en ny serverkontroll i ASP.NET 3.5. Till skillnad fran version 2.0 kannu databundna listor skapas med mindre restriktioner. ListView anvander sig avtemplates, som ar ett satt att kunna definiera visuella delar utan allt for myckethansyn till de data som den ar bunden till. Ett exempel pa en enkel templatetillsammans med en ListView i en aspx-sida ar foljande bit kod

<asp:ListView runat="server" id="lw1" ><LayoutTemplate>

<ul><asp:placeholder id="itemPlaceholder" runat="server" />

</ul></LayoutTemplate><ItemTemplate>

<li><%# eval(’firstname’) %></li><li><%# eval(’lastname’) %></li>

</ItemTemplate></asp:ListView>

I koden ovan deklareras faktiskt tva templates. ListView anvander sig av Lay-outTemplate for att skapa strukturen for listan. I LayoutTemplate kan ett antalolika placeholders sattas in. En placeholder ar precis som det later, enbart ettutrymme dar nagonting annan bor hamna. I detta fall sa ar det ItemTemplatesom satts in for varje objekt som hamtats fran ListViews datakalla. I exempletangavs ingen datakalla. Datakallan kan antingen deklareras i aspx-sidan ellersattas programmatiskt i dess code-behind. Ett exempel en programmatiskt skapaddatakalla som fungerar tillsammans med ListViewn ovan ar:

protected void Page_Load(object sender, EventArgs e) {MyData[] mydata = new MyData[2];mydata[0] = new MyData("Fornamn1","Efternamn1");mydata[1] = new MyData("Fornamn2","Efternamn2");lw1.DataSource = mydata;lw1.DataBind();

}public class MyData {

public string firstname,lastname;public MyData(string firstname, string lastname){

this.firstname = firstname;this.lastname = lastname;

}}

Page 71: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

6.2. Systemoversikt 57

I exemplet skapas en ny klass med tva publika attribut firstname och lastname.Tva instanser av klassen stoppas in i en array som sedan tilldelas som datasourcetill ListView:n. Darefter databinds datakallan. Vid databindning lankas innehalleti ListViewn mot datakallan, nar detta sker hamtas, via reflections, de attributpa varje objekt som bundits eller som skall evalueras. Resultatet da webbsidanladdas blir foljande:

<ul><li>Fornamn1</li><li>Efternamn1</li><li>Fornamn2</li><li>Efternamn2</li>

</ul>

Istallet for att anvanda eval, som enbart hamtar data, kan ocksa bind anvands.Bind ar en forkortning, som ersatts vid compiletime, med (string)Databinder.Bind(string).Aven eval ar en forkortning for (string)Databinder.Eval(string). Skillnadenmellan de tva ar att bind tillater tva-vagskommunikation, d.v.s. varden kanhamtas samt sattas in. ListView anvander for insattning en annan template vidnamn InsertTemplate som blir synlig antingen i slutet eller i borjan av listan.For editering sa finns en EditTemplate som ersatter den ItemTemplate for detobjekt som skall editeras.

Att programmatiskt skapa en template maste en klass arva ifran ITemplate in-terfacet som enbart kraver implementering av en funktion: InstantiateIt(Control container).Metoden har en parameter av typ Control som ar basklassen for alla webbkon-troller. For att skapa innehall i templaten sa maste nya kontroller adderas tillcontainer-kontrollen. Om klassen skulle anvandas i ListView:s ItemTemplatesa skulle templaten bli instantierad sa manga ganger som det finns objekt ilistan. For varje gang skulle, om samma LayoutTemplate som anvandes ovan,container-kontrollen vara en referens till ul-taggen.

Databindning vid skapandet av en template ar mer problematisk. For allakontroller som adderas i templatekontrollen kan ett event vid namn DataBindhanteras. Da ListViewn databinds mot datakallan sa triggas DataBind eventetfor alla barnkontroller till templatens container. Da ett event har triggats ochden hanteras i nagot barn sa ar ett objekt av typ ListViewDataItem tillgangligtfor det. Objektet innehaller all information om just det objektet i listan, pa sasatt kan databindning utforas programatiskt.

6.2 Systemoversikt

Denna widget skiljer sig ratt avsevart jamfort med AJWH-widgeten, t.ex. sa harinte en rad JavaScript kod skrivits i detta arbete, utan ansvaret for AJAX harhelt lagts pa ramverket.

Page 72: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

58 Kapitel 6. ASP-Widget

6.2.1 Kommunikation

Kommunikationen mellan webbservern och klient ar i denna widget frekvent, allahandelser hanteras pa webbservern. Webbservern i sin tur anvander SharePointsinbyggda web service for att erhalla information om listan.

6.3 Implementering

6.3.1 Webbservern

All kod for denna widget har skapats pa webbservern . Widgeten foljer n-tiermonstret med klar separation mellan presentationslager, affarslogiklager ochdatalager. En ofta ford diskussion i webbutvecklingskretsar ar hur man borformedla datat fran datalagret och uppat. Ett alternativ som oftast anvandsfor mindre applikationer ar att anvanda ett DataSet objekt. En av dess storafordelar ar att om datakallan ar en databas sa kan objektet skapas ratt enkelt.En av nackdelarna ar att data ar uppbyggt med tabeller som lankats samman vianycklar, vilket inte ar allt for latt att konfigurera efter behov. Men om data somerhalls fran databasen inte behover manipuleras allt for mycket sa ar det ett gottval. Ett annat populart alternativ ar att skapa sa kallade vardeobjekt som datainnesluts i. For lite storre applikationer ar det nastan ett krav att vardeobjektanvands i och med att objekt orienterad programmering ar sa mycket enklare.

For denna widget har vardeobjekt anvants, dels pa grund av att det intear en databas som ar datakallan, men aven pa grund av att mycket andringarbehovdes goras fran det XML-data som erhalls fran SharePoint.

Vardeobjekt

Ett antal vardeobjekt ar implementerade i widgeten. Uppbyggnaden av dem harinspirerats av SharePoints objektmodell. Efter grundlig forskning om hur falt ochlistor ar uppbyggda (se sida 26) och hur de anvands av SharePoints web servicessa kom strukturen for vardeobjekten att se ut som foljande:

SPField - Varje lista bestar av ett antal falt som ar val beskrivet i XML dainformation om listan erhalls via web services. Informationen tolkas och ettantal objekt skapas

SPxxxxField - Varje typ av falt har en klass, varje klass har olika satt attrepresentera sin data t.ex. SPIntegerField lagrar ett heltal medan SPChoice-Field ar ett val mellan strangar. Alla klasser arver fran SPBaseField sominnehar en referens till ett SPField objekt som tilldelas vid instantiering.De olika mojliga typerna ar: SPAttachmentsField, SPChoiceField, SPCoun-terField, SPDateTimeField, SPFileField, SPIntegerField, SPLookupField,SPNumberField, SPTextField och SPUserField.

Page 73: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

6.3. Implementering 59

SPListItem - Varje lista bestar av listobjekt som beroende pa listans typ harolika falt. Faltdefinitionen och vardet for faltet sparas som ett SPxxxxField,beroende pa vilken typ faltet ar. Alla listobjekt arver fran SPListItem sominnehaller ett antal falt som ar gemensamt for alla listobjekt.

SPList - Innehaller information om listan. Listan innehaller aven alla listobjektsamt all falt objekten kan anvanda sig av

SPList och ListItem har statiska metoder som tolkar XML och instantierarobjekt. Eftersom vilken web service metod som an anvands sa serialiseras andalistan och dess objekt till samma XML-syntax.

Datalagret

Datalagret bestar i denna widget av hantering av SharePoints web services.Datalagret ar en klass vid namn ListAccess. Den implementerar alla metodersom behovs for att hantera CRUD1-funktionalitet. Dessa metoder anvander sigav en foralderklass som de olika listornas listitemklasser arver av. Nar klasseninstantieras sa bifogas aven ett anvandarnamn och losenord, med dem anropasAuthentication web servicen pa SharePointservern for autentisering av anvandare.Om allt lyckas sa erhalls en kaka som sparas internt for senare bruk.

GetList - Den metod som anvands for att hamta listan fran SharePoint arGetListItemChangeSinceToken som finns i Lists web servicen (beskriven pasida 36). Den returnera en XML fil som innehaller all information om listanoch vilka falt (kolumner i listan) som kan anvandas samt listans objekt(rader) och vad dess varden ar for alla falt.

Vid tolkning sa matchas de olika delarna i XML:en av parse-metoder somfinns i SPList och ListItem for instantiering. Ett exempel pa det kan ses ifigur 6.1 dar GetListitemChangeSinceToken anropats utan en token for atthamta Tasks-listan. I exemplet har mycket XML tagits bort pa grund avirrelevans samt platsbrist.

Vid instantiering av vardeobjekten fran XML binds aven objekten samman.Som kan ses i figur 6.2 sa skapas ett antal SPTaskListItems vid tolkning aven lista med ServerTemplate 107 (mer om servertemplates pa sida 26).

Varje SPTaskListItem har ett falt som heter author som kraver en referenstill ett objekt vid av SPUserField. I figuren sa ar den hogra rutan for varjeklass ett exempel pa hur det kan se ut.

InsertListItem - Metod for att satta in ett objekt i listan. Ett skapat listob-jekt av ratt typ anlander som inparameter till denna metod. Web servicemetoden UpdateListItems (forklarat narmare pa sid 34) anvands for attlagga till objektet pa SharePointservern. For att skapa den XML som

1Create, Read, Update, Delete

Page 74: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

60 Kapitel 6. ASP-Widget

Figur 6.1: Ett XML dokument mottaget fran SharePoint som har matchas motolika vardeobjekt

Figur 6.2: Hur objekt modellen i ASP-widgeten ar uppbyggd

Page 75: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

6.3. Implementering 61

UpdateListItems kraver sa implementerades en metod for varje SPxxxFieldsom tog en referens till ett XML-dokument relevant information satts in.Ett exempel pa ett sadant falt ar SPDateTimeField som implementerar enmetod for att ge datumet i det format som SharePoint vill ha den i: UTCsom ar i GMT tidzonen pa ISO6801-formatet t.ex. 2006-10-04T10:00:00Z.Om faltet enbart kraver ett datum sa har aven SPDateTimeField kannedomom det i och med att objektet har en referens till dess ratta SPField objekt.I SPField sa finns ett attribut vid namn Format som kan vara “DateOnly”.

For att hantera filuppladdningar sa finns ett falt hos det objekt somskall sattas in i listan dar nagot ovanstaende lager satter in en referenstill en fil. Precis som i AJWH-widgeten anvander sig denna widget avSPFiles web servicen som installerades pa SharePointservern om listan arav typ dokumentbibliotek. Om listan ar av annan typ ar filen en bifogad fil(attachment), sa Lists web servicens metod addAttachment anvands istalletefter UpdateListItems har anropats, eftersom ett ID for objektet da kravs.AddAttachment metoden tar en byte-array, ett ID for ett objekt i listansamt listans ID. Darefter laddas filen upp till foldern“http://minSPServer/minSida/../Lists/listNamn/ID/attachments/”.

UpdateListItems returnerar det objekt som nyss serialiserats till XML-format, men denna information anvands inte. Anledningen till detta ar attweb service metoden GetListItemChangeSinceToken anvands sa kommerdet nya objektet anlanda dar i vilket fall. Vid det tillfallet kan aven andrauppdateringar hittas, t.ex. att en annan anvandare har tagit bort eller lagttill nagot.

UpdateListItem - Uppdaterar ett objekt i listan pa liknande satt som In-sertListItem gor. Skillnaderna ar att ett ID redan finns, som maste bifogasfor att kunna uppdatera. Da ett listobjekt i ett dokumentbibliotek skalluppderas maste en URL till dess fil ocksa bifogas, denna erhalls genom attkonkatenera objektets filnamn med dess ServerUrl falt.

DeleteListItem - En metod for att ta bort ett objekt i listan. UpdateListItemsmetoden anvands for detta andamal. Ett ID maste bifogas. Om listan ar ettdokumentbibliotek maste aven precis som vid uppdatering en fullstandigURL till filen bifogas.

GetUserId - Varje falt som ar av typ User, som egentligen ar ett lookupfalt (mer om falt pa sida 26), har ett ID och ett anvandarnamn. Omett ID inte har specificerats vid editering eller insattning anvands dennametod for att erhalla ett ID utifran anvandarnamnet. Metoden anvandersig av UserGroup web servicens metod GetUserInfo for att ta reda pamer information om anvandaren utifran anvandarnamnet. Ett problem vidanvandandet av GetUserInfo ar att kannedom om vilken anvandarforsorjaresom SharePoints Membership kravs. I den SharePointkonfiguration som

Page 76: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

62 Kapitel 6. ASP-Widget

utforts for denna widget var anvandarforsorjaren dopt till “fbamembers”.For atkomst till ett ID for en anvandare pa SQL servern (som anvands somanvandarforsorjare) sa kravdes foljande syntax: fbamembers:user1. Ingenenkel losning pa detta problem hittades, sa “fbamembers” strang ar fortillfallet inkodat

RemoveAttachments Att ta bort en attachment ar valdigt enkelt via Share-Points Lists web service och dess metod removeAttachment som enbartkraver ett ID pa listobjektet, listans namn och namnet pa den bifogadefilen.

Affarslogiklagret

Detta lager ger en abstraktion over datalagret. For tillfallet anvander inte dennawidget nagon affarslogik, eftersom varken begransningar eller logik existerar idenna widget. For varje typ av lista finns en klass som hanterar enbart listobjektav samma typ. T.ex. AnnnouncementList hanterar SPAnnouncementListItemsfor insattning, uppdatering och borttagning.

Presentationslagret

Widgeten ar implementerad som en User-control, d.v.s. en ascx fil med tillhorandecode-behind fil. Widgeten anvander tva deklarerade serverkontroller, en ListViewoch en ObjectDataSource, eftersom ASP.NET da tar hand om databindningenmellan de tva. En ObjectDataSource (ODS) ar en serverkontroll som abstraherarbort den underliggande datakallans funktionalitet. For ODS:en finns foljandeattribut som skall tilldelas

TypeName - Namnet pa den klass som kommer instantieras av ODS, om deninte ar statisk. Objektet forstors efter anvandning

SelectMethod - Namnet pa metoden som hamtar listan. Listan kan vara enarray eller vara en klass som implementerar IList interfacet

DataObjectTypeName - Namnet pa typen av objekt som listan skall bestaav. Kommer att anvandas som parameter vid instattning, uppdatering ochborttagning

InsertMethod, UpdateMethod, DeleteMethod - Namnet pa metodernasom anvands for instattning, uppdatering och borttagning

Vanligtvis nar en ObjectDataSource anvands deklarativt sa brukar alla dessattribut tilldelas deklarativt, i ASP-widgeten kunde inte detta goras eftersomlistan maste kunna visa olika listor.

Att anvanda sig av en klass som ODS har flera fordelar jamfort med hanterakontakten mot affarslogiken sjalv.

Page 77: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

6.4. Det fardiga systemet 63

– ODS har ett flertal publika handelser dar handelsehanterare kan sattas attavlyssna, t.ex. vid skapandet eller borttagandet av objekt

– Den hanterar sjalv nar datakallan bor databindas

– Ger ett rent snitt mellan presentationslager och affarslogik lager

– Erbjuder sorteringshjalp

– Skapar automatisk paginering

En nackdel enligt forfattaren ar att reflections som anvands av ODS inte kanhantera foljande struktur av underliggande data: DataObjectTypeName ar enklass som andra klasser arver av. Om t.ex. olika typer av listobjekt arver aven foralder som sedan bor skickas som parameter for instattning, uppdateringoch borttagning. Detta fungerar inte eftersom objektet maste kunna instantierasoch dess properties skall vara synliga utifran, om en foralderklass anvants sasyns inte de properties ett barn innehar. Givetvis skulle da barnets namn varatvunget att specificeras och sattas programmatiskt nagonstans. Men da skulleanda ODS:ens TypeName och DataObjectTypeName kunna vara statisk. I ASP-widgetens fall andras de parametrarna programmatiskt beroende pa vilken listasom skall anvandas och instantieras.

Eftersom ODS:en forstor det underliggande objekt den skapat vid varjeoperation andrades det beteendet till att istallet hamta objektet fran anvandarenssession da objektet skall skapas och att spara undan det istallet for att forstoradet. Att forstora objektet vore inte idealiskt eftersom kakan for autentiseringsparas i datalagrets objekt och extra web service anrop ar aldrig optimalt.

Att anvanda ASP.NET session ar en klar fordel jamfort med kakor i ochmed att de maste skickas pa varje HTTP request, aven for bilder/javascript ochdylikt [36]. Sessions fungerar som en kaka pa webbservern, enbart ett ID tillsessionen bifogas vid varje request som sedan pa webbservern hamtar sessionen.Detta paverkar dock webbservern prestandamassigt, i jamforelse med kakor.

ListViewn var tvungen att goras sa flexibel som mojligt. Detta uppnaddesgenom att skapa ett antal klasser som implementerade ITemplate interfacet. Enfor ItemLayout samt EditLayout och en for LayoutTemplate. Dessa instantierarett antal kontroller utifran vilka falt och andra konfigurationer som gjorts palistan.

6.4 Det fardiga systemet

Se appendix for bilder pa den fardiga widgeten

Page 78: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

64 Kapitel 6. ASP-Widget

Page 79: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 7

Resultat - En Jamforelsestudie

Ett dra slutsatser och resonera kring uppgifter som inte kan kontrolleras arinte akademiskt godtagbart. I och med att inga referenser kunde aterfinnas tillden problematik som denna studie baserar sig kring sa var en referens tvungenatt skapas. I detta kapitel redovisas resultatet av jamforelsen mellan de tvawidgetarna.

Foljande attribut ingar i jamforelsestudien

Prestanda - Forst kommer prestandan dar framfor allt vantetiden jamfordesfor ett antal handelser som en anvandare kan tankas gora

Anvandarvanlighet - Darefter fortsatter kapitlet med anvandarvanlighet somsubjektivt bedomer vad som skiljer de bada widgetarna at

Modularitet - Modulariteten som i problembeskrivningen angavs som ett viktigtattribut gar igenom vad varje widget har for slags beroenden och hur passaharda de ar i sa fall

Att underhalla - Underhall ar viktigt for att med tiden kunna rensa ut alla bug-gar som kan ha uppstatt vid utvecklingen, att snabbt och utan krangligheterkunna erbjuda anvandarna av en ny version utvarderades i denna punkt

Vidareutvecklingsmojligheter - Att ge goda forutsattningar for vidare utveck-ling ar alltid viktigt att tanka pa vid skapandet av en applikation, underdenna punkt fors ett resonemang om vilken widget som lampar sig bast forfunktionella utokningar

Implementeringssvarigheter - Att implementera de bada widgetarna var intealltid helt enkelt. Vilka for- och nackdelar hade de bada widgetarna da deskapades?

65

Page 80: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

66 Kapitel 7. Resultat - En Jamforelsestudie

7.1 Prestanda

“Great engineering comes from creating predictable results atpredictable costs. In fact, I like to say that if you’re not measuringyou’re not engineering”(Rico Mariani, Chief Architect of Visual Studio, Microsoft Corporation, July,2007 [37])

Att gora natverkprestandamatningar, speciellt internetbaserade sadana, har varitoch ar fortfarande av stort intresse i forskningsvarlden [38]. Det finns mangamatvarden man kan utvinna fran ett natverk, t.ex. trafik (via paketovervakning),topologi matningar (via traceroutes) och direkta prestandamatningar (via ak-tiva sa kallade “probes”, se t.ex. [39]). Om abstraktionsnivan hojs sa kommernatverksprestandan vara en delmangd av den prestanda observerad for applika-tioner, fokus for denna studie kommer darfor att ligga pa att applikationsniva.

Ett prestandatest ar en typ av testning avsedd att bestamma responstiden,genomstromning, palitlighet, och/eller skalningsmojligheterna for ett systemunder belastning. I vanliga fall brukar ett prestandatest utforas for att bestammafoljande [37]:

– Uppskatta om systemet ar klart for produktionssattning

– Jamfora mot prestandakriterier som satts upp fore paborjan av projektet

– Jamfora prestanda mellan olika system eller systemkonfigurationer

– Hitta kallan till prestandaproblem (flaskhalsar)

– Ge stod at systemanpassningar (prestandamassiga sadana)

– Hitta genomstromningsnivaer (eng. throughput levels)

I denna studie kommer prestandamatningar att utforas med avsikt att gorajamforelse av system, dar tva widgets har implementeras.

Prestandatest utfors normalt i en simulerad miljo, med hjalp av nagot pre-standatestningsverktyg. I detta fall kommer .NET:s prestandaraknare och tid-tagare anvandas pa serversidan, emedan anvandarsidan kommer att anvandaFirebug som ar ett plugin till Firefox for att berakna sa kallad “User Delays”(sv. Anvandarvantetid). Firebug kommer ocksa att anvandas som en konsol dartidtagningar i anvandarsidans JavaScript kommer att skriva ut sitt resultat. “Tidar pengar”1 varfor det ar betydelsefullt att mata vilka vantetider en anvandarekan forvanta sig da operationer utfors pa dessa widgets. Aven ett komplettprestandatest skulle kunna utforas pa var och en av widgetsarna, men det arutanfor ramen for detta exjobb.

1Enligt Benjamin Franklin

Page 81: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

7.1. Prestanda 67

Om de bada widgetsarna ska kunna jamforas med varandra, maste de utforasamma saker och det enda de har gemensamt ar de gemensamma kraven (se 2.2).En systemoversikt over vilka datorer som anvants och var varje server ligger kanses i bild (7.1). Pa grund av att SharePoint installerats pa en virtuell maskin(korandes Microsoft Virtual PC) var den servern prestandamassigt i underlage.

Figur 7.1: Systemoversikt over servermaskiner och vad dess specifika uppgift iprestandamatningarna ar

Utifran de gemensamma kraven hittades sex stycken scenarion som skullekunna analyseras. For att ge en rattvis bedomning av tidtagningar har 10identiska test utforts pa varje scenario och darefter har ett medelvarde faststallts.Eftersom normalfordelade varden har erhallits sa har aven en standardavvikelseberaknats som indikerar hur mycket de olika testerna avvek fran medelvardet.Med en standardavvikelse menas att om ett nytt test skulle utforas skulle chansenatt resultatet skulle hamna inom ± en standarddavvikelse vara 64.2%. Eftermedelvardet av tidsatgangen i alla tabeller foljer ett varde pa hur mycket enstandardavvikelse ar for serien av tider pa formen med± stdav. I alla test harden maximala processoranvandningen under perioden som servern arbetade medanropet mats for att kunna ge en indikation om hur jobbigt det ar for olikaservrar.

Tabellen ar uppdelad i tre delar, beroende pa var varje attribut har observerats.For varje del har de tva widgetsarna jamforts, resultatet ar uppdelat i tva storakolumner. Om intressant data finns, som ar unik for bara en widget, kommer en

Page 82: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

68 Kapitel 7. Resultat - En Jamforelsestudie

pipe avgransa de tva widget-kolumerna.

7.1.1 Hamta hem en lista

Anvandaren har i detta scenario redan loggat in och konfigurerat vilken typ av listasom skall hamtas. Darefter hamtas listan 10 ganger, se tabell 7.1 for resultat. Dentotala tiden for att hamta listan till anvandaren ar 353 ms med AJWH mot ASP-widgetens 310, med ungefar samma standardavvikelse. Kommunikationsmonstretfor hur en sadan har anvandaraktion sker under ytan, kan ses i figur 7.2. Det Xsom aterfinns i bilden indikerar ett okant varde, eftersom ingen tidtagning hargjorts over exakt hur lang tid det tar for ASP-widgeten att svara pa anropet efterdet att objektmodellen har byggts. For mer detaljerad forklaring se kapitel 6.

Figur 7.2: Visuell representation av att hamta widgeten (listan). Siffrorna definier-ade i tabell 7.1

Som framgar av tabellen och som tidigare konstaterats anvander inte AJWH-widgeten webbservern for nagot annat an som proxy, darfor skickas samma mangddata fran klient till webbserver som fran webbserver till SharePointservern, omman inte tar hansyn till autentisering. Mangden data som skickas vid auten-tisering ar forsumbar i jamforelse med det andra anropet. Tyvarr ar tiden forautentiseringen inte forsumbar. Natverkets latens och tiden det tar att verifieraanvandarnamn och losenord mot SQL-servern kan ibland vara lang. Att auten-tisering tar olika lang tid i de bada widgetsarna ar inte forvantat, eftersom degor exakt samma sak i detta steg. Att standardavvikelsen for autentiseringen arstorre an medelvardet beror bade pa att ASP.NET:s satt att gora web-serviceanrop och svar (pa SharePoint sidan) vilket involverar anvandandet av en hog

Page 83: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

7.1. Prestanda 69

AJWH-Widget ASP-WidgetSharePointservernAntal WS anrop 2 2Processor anvandning 26% 15%Antal bytes skickade 28135 56281Antal byte mottagna 8705 1826Tid for att skapa lista 227ms ±13

WebbservernTid for auth 14ms ±16 29ms ±16Antal auth 1 1Processor anvandning 4% 5%WS anrop(mot SP) langd 2205 165WS svars(mot SP) langd 44914 54653Tid att hamta lista 237ms ±18 77ms ±19

Tid att bygga OM 93ms ±19

AnvandarenWS-anrop 2 1WS anrop langd 2502 4635WS svars langd 44914 15741Total tid 353ms ±42 310ms ±62

Tabell 7.1: Prestandajamforelse for att hamta lista (Lists/Calendar)

abstraktionsniva vilket betyder att lagre nivaer maste initieras och byggas upp,fore ett anrop kan goras. Pa SharePointservern sker ocksa cachning av inloggning-suppgifterna sa att inte anvandardatabasen maste anropas for varje autentisering.Darfor kan tiden variera kraftigt mellan forsta anropet och andra anropet medexakt samma data och resultat, det andra anropet ar oftast snabbare

Att langden pa web service svaret fran SharePoint i ASP-widgeten ar storrean all HTML som listan bestar av i AJWH-widgeten ar en intressant upptackt.Detta sker pa grund av att det ar sa mycket information som returneras vidforsta anrop av SharePoints web service for listhamtning. Eftersom inga objekt arskapade i ASP-widgetens webbserver maste hela objektmodellen byggas upp vidanvandaraktion. Tiden det tar ar ca 100 millisekunder totalt, vilket ar ganska bramed tanke pa de 77 millisekunder som det tar att hamta listan. Att webbservernsprocessor inte belastas mer av hela anropet ar beundransvart. AJWH-widgetensmaximala processoranvandning pa SharePointservern ar hela 26% for anropetoch markant storre an for ASP-widgeten.

En sak som bor uppmarksammas ar att antal skickade bytes i ASP-widgetenar det dubbla pa SharePointservern jamfort med AJWH-widgeten. Eftersom detinte ar stor skillnad i anropen pa webbservern maste det betyda att GetListItem-

Page 84: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

70 Kapitel 7. Resultat - En Jamforelsestudie

ChangeSinceToken gor fler interna web service anrop pa SharePointservern innanden svarar. Trots det ar metoden betydligt snabbare an forfattarens egen metodfor att skapa listan pa SharePointservern.

7.1.2 Klicka pa att editera ett objekt i listan

I det har tankta scenariot har anvandare tryckt pa editeringsknappen for ettvisst objekt i listan. Ingen tabelljamforelse var har nodvandigt, eftersom AJWH-widgeten inte behover kommunicera for att utfora detta steg. All information somden behover finns redan pa klienten: vilka kolumnerna ar, vad det ar for datatyperoch hur de bor formateras. Enbart information som finns i listan kommer kunnaediteras.

ASP-widgeten utfor har i jamforelse mot AJWH-widgeten en hel operation,den skickar en postback (via web services) med hela sidans viewstate till webb-servern som behandlar informationen och triggar det/de event som lyssnade motknappen. Detta ar en av nackdelarna med att anvanda ASP.NET 3.5:s UpdatePan-el for AJAX, lite val mycket information skickas. Precis som i forra scenariot saskickar klienten en 15741 (med sma forandringar p.g.a. att indikera att en vissknapp har tryckts) tecken, vilket ar valdigt mycket overhead. Varfor inte bara skic-ka en enkelt XML-strang liknande <buttonclick>cl05Button</buttonclick>?.Problemet som da intraffar ar att information saknas for aterbyggandet avtillstandet hos alla kontroller. Med tillstand menas t.ex. om anvandaren tidigareklickat pa editera och klickar pa nagot och en asynkron postback sker, sa kanASP.NET aterbygga de textfalt som var ifylld och halla listan i editeringslage.Utan viewstate skulle kontrollen vara tillstandslos i forhallande till webbservern.Skulle applikationen inte bli lidande av att forlora tillstanden sa kunde t.ex. ensa kallad scriptmethod minska overheaden drastiskt. En scriptmethod ar ett nytttillagg till ASP.NET 3.5 och ar en utokning av web method deklarationen. Det arvaldigt enkelt att i ASP.NET deklarera en metod att vara en web service metod:lagg till ett attribut <WebMethod> fore en metod i en asmx fil. Det nya tillaggetar att aven kunna benamna metoden som en scriptmethod via: <ScriptMethod>fore metodsnamnet. Pa sa satt genereras ASP.NET JavaScriptkod som skickasmed sidan nar anvandaren surfar in. Darefter ar metoden fran JavaScript likaanvandarvanlig som nagon annan metod. ASP-widgeten ar dock inte tillstandslos,sa overheaden forblir.

7.1.3 Spara andringar av objekt

I detta scenario har anvandaren tidigare klickat att editera ett objekt i listan.Andringar har gjorts och skall nu sparas. Resultatet visas i tabell 7.2, for envisuell representation se bild 7.3.

1034 millisekunder kravde AJWH-widgeten for att genomfora operationen,vilket ar mycket tid for ett sa pass litet system som detta. Orsakerna till dennalanga fordrojning ar flera:

Page 85: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

7.1. Prestanda 71

Figur 7.3: Visuell representation av att editera ett objekt i listan. Siffrornadefinierade i tabell 7.2

– Genereringen av listan pa SharePointservern tar 229 millisekunder, hursnabbt an alla web service anrop gick sa har widgeten fortfarande dennaratt hoga undre grans

– I tabellen kan ses att for AJWH-widgeten att anropa UpdateListItemsmed de uppdateringar som bor goras enbart tar 63 ms, med inte allt forhog standardavvikelse (7,6 ms). Hur det kommer sig att det tar hela 442millisekunder hos anvandaren att fran JavaScript anropa webbserverproxynmed nastan exakt likadan information (bara en avkodning i proxyn somar skillnaden) ar ett mysterium. Ska det verkligen ta 3792 millisekunderfor JavaScript att skicka 10 tecken och ta emot 64? Tidpunkten for attstarta och stanna klockan i JavaScript for matandet av UpdateListItemshar verifierats ett otal ganger

– Precis som ovannamna problem sa tar aven skickandet av listan fran proxyntill anvandaren lite val lang tid 1253 millisekunder. Dock ar det mer forstaligtnar man kollar antal mottagna tecken

– “Preprocessing” och “postprocessing” ar ocksa en starkt bidragande faktor:hela 214 millisekunder4 agnar JavaScriptet i medel at att gora foljande

• hitta de DOM-objekt (input-falt, textfalt, datumvaljare o.s.v.) sominnehaller anvandarens inskrivna varden

2422− 63− 15, totala tiden hos anvandaren minus tiden for autentisering och uppdatering3378− 240− 15, totala tiden att hamta listan fran webbservern minus tiden for webbservern

att gora samma sak fran SharePointservern minus tiden for autentisering41034− 442− 378, totala tiden for anvandaraktionen, minus tiden for uppdatering, minus

tiden att hamta (hela) den nya listan

Page 86: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

72 Kapitel 7. Resultat - En Jamforelsestudie

AJWH-Widget ASP-WidgetSharePointservernAntal WS anrop 4 2Processor anvandning 30% 42%Antal bytes skickade 31344 4875Antal byte mottagna 4703 2361Tid for att skapa lista 229ms ±68

webbservernTid for auth 9ms ±7, 3 0msAntal auth 2 0Tid for UpdateListItems 63ms ±7, 6 84ms ±61, 9

Tid for update 94ms ±67, 5WS anrop(mot SP) langd 10, 2502 10, 226WS svars(mot SP) langd 64, 23231 64, 2073Tid att hamta lista 240ms ±6, 2 57ms ±55, 2

Tid att bygga OM 64ms ±54, 6

AnvandarenWS anrop langd 2502 4799WS svars langd 23231 19048Tid for UpdateListItems 442ms ±90Tid att hamta lista 378ms ±67, 3 421ms ±135Total tid 1034ms ±96, 4 435ms ±122

Tabell 7.2: Prestandajamforelse for att andra ett objekt i lista (Lists/Calendar)

• konstruera de SOAP-meddelanden som kommer skickas

• parsa det konfigurationsfalt som i XML beskriver vilka kolumner somar vad

– AJWH-widgeten gor i detta fall tva web service anrop fran JavaScript. Forvarje anrop maste anvandaren autentiseras i proxyn mot SharePoint panytt: eftersom den kaka som tas emot fran SharePoint inte kan lagras iJavaScript da det ar ett serialiserat objekt (System.Net.Cookie)

ASP-widgeten tar mindre an halften av tiden som AJWH-widgeten tar totalt.Det relativt goda resultatet beror pa flera smarta drag:

– For att editera ett objekt sa kraver ASP-widgeten att anvandare har klickatpa editera knappen pa en av listans objekt (i detta fall en handelse ikalendern). I och med det ar anvandaren inloggad och kakan som erhollsvid inloggning mot SharePoints har sparats i objekt modellen som i sin turhar sparats i ett sessionsobjekt, sa ingen vidare autentisering kravs

Page 87: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

7.1. Prestanda 73

– Nar webbservern har erhallit den asynkrona postbacken fran klienten saskapas ett vardeobjekt med de nya data som bor sparas i SharePoint,UpdateListItems web service-metoden anropas och ett svar erhalls relativtsnabbt. Darefter gor denna widget en valdigt tidsbesparande uppdateringav dess interna objekt, via att anropa SharePoint och ta redan pa vilkauppdateringar som skett. Fran SharePoint returneras enbart det objektsom uppdaterades: langd 2073 tecken over 57 ms i jamforelse mot AJWH-widgeten uppdateringsvariant: langd 23231 over 240 ms

Precis som med AJWH-widgeten spenderar aven ASP-widgeten alldeles formycket tid hos klienten med att gora web service anrop, antingen sa har Firefoxdalig JavaScript prestanda gallande kommunikation eller sa har forfattaren tilldenna rapport for hoga forvantningar pa en webblasare. Tidtagningen i ASP-widgeten pa webbservern tar inte hansyn till allt som sker, d.v.s. ingen tid harmatts for sjalva genererandet av kontroller eller den HTML som de genererar.Daremot verkar differensen mellan tiden det tar i webblasaren mellan skickandetoch mottagandet vara val stort: 262 millisekunder5.

Ytterligare en annan intressant aspekt i denna jamforelse ar att standard-avvikelsen hos ASP-widgeten i alla tidsmatningar ar mycket hogre jamfort medvad AWJH-widgeten har. T.ex. sa utgor tiderna pa webbservern nastan 100% avmedelvardet och pa klienten med 50%. Varfor skillnaderna, bade i tidtagningarnaoch mellan de tva widgetsarna, ar sa stora kanner forfattaren inte till.

7.1.4 Lagg till ett nytt objekt

I detta scenario kommer anvandaren lagga till ett nytt mote i kalendern, motetfick en titel, en motesplats, starttidpunkt och sluttidpunkt. Resultatet kan ses itabell 7.3.

Att lagga till nagot i listan ar valdigt likt att editera nagot i och med att badawidgetsarna anvander samma tillvagagangssatt. Som forvantat ar aven resultatetganska likt, dock finns det nagra skillnader som har kommer att belysas:

– En sak som har andrats ar tiden det tar for webbservern att lagga in dennya handelsen i kalender (Tid for UpdateListItems), den har okat med imedeltal 606 ms. Okningen ar dock forstalig och beror pa SharePoints sattatt implementera insattning

– Ungefar lika mycket som skillnaden var mellan att satta in och uppdatera(forra punkten) har totaltiden hos anvandaren i ASP-widgeten okat och tarnu hela 532 millisekunder

5421 − 65 − 94, totala tiden for anropet fran anvandaren, minus tiden det tar att skickauppdaterings data till SharePointservern, minus tiden det tar att uppdatera webbservernsobjektmodell

6(142 + 136)− (63 + 83)

Page 88: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

74 Kapitel 7. Resultat - En Jamforelsestudie

AJWH-Widget ASP-WidgetSharePointservernAntal WS anrop 4 2Processor anvandning 41% 25%Antal bytes skickade 31582 4855Antal byte mottagna 4665 2330Tid for att skapa lista 227ms ±80

WebbservernTid for auth 9, 5ms ±8, 9 0msAntal auth 2 0Tid for UpdateListItems 136ms ±26, 4 142ms ±10, 9

Tid insattning 151ms ±12, 5WS anrop(mot SP) langd 3110 1044WS svars(mot SP) langd 34833 2443Tid att hamta lista 235ms ±12, 4 40ms ±5, 3

Tid att bygga OM 48ms ±5, 6

AnvandarenWS anrop langd 3110 5420WS svars langd 34383 16038Tid for UpdateListItems 513ms ±57, 2Tid att hamta lista 353ms ±47 525ms ±79Total tid 1045ms ±110 532ms ±77

Tabell 7.3: Prestandajamforelse for att lagga till nytt objekt i listan(Lists/Calendar).

– Standardavvikelsen pa webbservern i ASP-widgeten har har minskat ijamforelse med editeringen och ar nu helt acceptabel

– Langden pa web service svaret pa anvandarsidan har okats med nara 10000tecken, vilket indikerar att nya handelser verkligen har lagts till i listan

Totaltiden for AJWH-widgeten ar faktiskt mindre for insattning an editeringvilket inte ar sa besynnerligt i och med att pa grund av att objektet maste sokasupp vid editering. Darutover har AJWH-widgeten inga fordelar nar det gallerprestanda. Samma punkter med brister hos AJWH-widgeten som togs upp iediteringsdiskussionen paverkar aven detta scenario.

7.1.5 Ta bort ett objekt

I detta scenario ska anvandaren ta bort en handelse i kalenderlistan, se tabell 7.4for resultat.

Page 89: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

7.1. Prestanda 75

AJWH-Widget ASP-WidgetSharePointservernAntal WS anrop 2 1Processor anvandning 5% 5%

WebbservernTid for auth 17ms ±16 0msAntal auth 1 0Tid for UpdateListItems 50ms ±14 175ms ±341WS anrop(mot SP) langd 513 742WS svars(mot SP) langd 622 1111Tid att hamta lista 0 17, 7ms ±1, 5

Tid bygga OM 22ms ±1

AnvandarenWS anrop langd 513 1824WS svars langd 622 16045Total tid 480ms ±93 452ms ±496

Tabell 7.4: Prestandajamforelse for att ta bort ett objekt i listan (Lists/Calendar)

Har presterade de bada widgetarna nastan likvardigt, det bor dock uppmarksammasatt standardavvikelsen hos ASP-widgetens totaltid ar valdigt hog (496) vilket arresultatet av valdigt varierande testresultat och i och med det ett hogt medelvarde.Det hoga vardet harstammar fran UpdateListItems pa webbservern, tydligenhade nagot test i serien otur for att ha en avvikelse pa 200% av medelvardet arforsmadligt. Mojligtvis utforde SharePoint nagonting speciellt vid denna tidpunkt.Jamfor man mot AJWH-widgeten sa ar dess standardavvikelse 93 ms vilket armycket stabilare.

Precis har som i tidigare scenarion sa ar tiden fran anvandare till webbserverhog, i detta fall framst for AJWH-widgeten pa hela 4137 ms. Detta ar mycket hogti och med att webbservern enbart agerar som proxy och relativt lite informationar i omlopp.

Vid utforandet av detta scenario togs de tio handelser som skapats i foregaendescenario bort for bada widgetarna. For varje borttagning gick det snabbare ochsnabbare tills en topp hade erhallits runt 3-4 borttagningar, se tabell 7.5. Dettaar ett ganska underligt fenomen och talar mer for an emot de rekommendationersom Microsoft har i sin prestanda bok. Det man bor folja enligt dem ar budorden“rather chunky than chatty” [31].

I de scenarion som har testats i denna prestandajamforelse har tio test utfortsfor varje scenario i sa snabb foljd som mojligt. Kanske var forfattaren till dennauppsats inte snabb nog vid de andra scenarion, eller sa hade andra saker hant

7480− 50− 17

Page 90: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

76 Kapitel 7. Resultat - En Jamforelsestudie

Total tid hos klient Total dit for att ta bort pa webbserver1533 11951330 66281 161250 50140 53141 46140 44188 56172 40344 42

Tabell 7.5: Delresultat fran att ta bort en handelse i kalendern for ASP-widgeten

fore sjalva testet utfordes som da gjorde att saker utfordes hos webbservern,SharePointservern och kanske till och med routern for natverket under olikaexekveringar.

7.1.6 Dubblering

Ett gemensamt krav var att flera widgets av samma typ skall kunna existera pasamma sida. For AJWH-widgeten sa ar hela dess JavaScript anpassad for attfungera for flera widgets pa samma sida, d.v.s. inga globaler anvands i kodenfor att lagra information mellan anrop eller handelser. ASP-widgeten daremotanvander UpdatePanel som i sin tur anvander sig av ASP.NET AJAX 1.0 bibliotekfor dess asynkrona funktionalitet. Nar en sida med en UpdatePanel laddas nedav en anvandare sa har den referenser till dynamiskt genererade scriptfiler, ensom ar AJAX biblioteket, en resursfil som innehaller bilder och annat samt en filvid namn MicrosoftAjaxWebForms. Det ar den som maste finns unik for varjeUpdatePanel pa sidan. Detta ar en klar nackdel for ASP-widgeten som kommerorsaka storre och storre problem for webblasaren ju fler widgets om anvands paen sida.

I AJWH-widgeten har enbart ett litet bibliotek kallat zXML anvants forcross-browser stod for att skapa ett XMLHttpRequest objekt for alla webblasare.AJWH-widgeten anvander 120 KiByte gzippad JavaScript kod som webblasarenmaste tolka. All JavaScript kan cachas av webblasaren.

7.1.7 Slutsatser fran prestandajamforelse

AJWH-widgeten visade sig ha dalig prestanda jamfort med ASP-widgeten. I allatest sa tog den langre tid pa sig, som samst(vid uppdatering) 270% langsammareoch som bast(vid borttagning) 6% langsammare. Orsaken till det daliga resultatetkan sparas till

– Genereringen av listan pa SharePointservern tog alldeles for lang tid

Page 91: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

7.2. Anvandarvanlighet 77

– Tiden det tog att overfora data mellan anvandarens webblasare och webb-servern var for lang for att tillata tva web service anrop fran anvandarentill SharePointservern for vissa handelser (insattning och uppdatering). Daenbart ett anrop skedde (borttagning, hamtning av lista) sa halveradestagna tiden till att bli ungefar som ASP-widgeten.

ASP-widgeten presterade nastan likvardigt, tidsmassigt, for alla operationer.Dock sa varierade resultaten fran samma operation valdigt mycket. Vad orsakentill detta var blev inte med sakerhet faststallt.

Att XmlHttpRequest anropen i Firefox tog sa pass lang tid som det tog forbada widgets var lite av en chock i och med att datorerna som utbytte informationsatt pa samma natverk.

I bada widgets sa var standardavvikelsen for testdatan valdigt hog. Iblandtill och med lika stort som medelvardet, vilket betyder att 64.2% av kommandetestfall kommer utfalla inom intervallet 0 till 2 ∗medelvardet. Den formodadeorsaken till varfor avvikelsen var hog och att samma testfall genererade valdigtolika tider ar att SharePoint ar ett valdigt komplext system som i tid och otidcachar, indexerar och utfor andra processer som kan kollidera med tidtagningarna.

7.2 Anvandarvanlighet

Bada widgetarna fungerar val i bade Firefox och Internet Explorer. AJWH-widgeten anvander dock SharePoints datumvaljare och rika texteditor som intefungerar i Firefox. Detta kan man dock inte skylla pa widgeten som forsoktutnyttja SharePoints JavaScript, utan det ar antagligen ett medvetet val avMicrosoft att inte stodja sin konkurrent.

En fordel ASP-widgeten har mot AJWH-widgeten ar att den har validering avformulardatat, t.ex. vet den att for en viss kolumn sa bor vardet vara over x ochunder y. Detta ar inget AJWH-widgeten anvander sig av pa grund av att sadandetaljrik informationen om kolumnen inte existerar pa klientsidan. Mojlighetenatt implementera en validering skulle vara mojlig, om en bit JavaScript bifogadesfor varje formularsfalt som triggas nar submitknappen trycks. Tyvarr ar inteUpdateListItems web servicen som anvands i bada widgetsarna for att goraandringar nagon raddning i och med att den inte har speciellt hard validering.Ett exempel pa det ar “% Complete” kolumnen i Tasks listan. Dar kan man iAJWH-widgeten skriva in 200. Aven om “% Complete” faltet som satter kravpa datat sager att vardet far max vara 1 sa kan UpdateListItems anda satta inett varde av 200, dvs 20000 % vilket ar felaktigt. UpdateListItems returnerarenbart felmeddelanden nar felaktig form av data har skickats t.ex. om datumethar specificerats i nagot udda format.

Page 92: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

78 Kapitel 7. Resultat - En Jamforelsestudie

7.3 Modularitet

Foljande krav har de bada widgetarna pa respektive server:

7.3.1 Krav - SharePointserver

AJWH-widgeten kraver foljande:

– Formularautentisering

– 2 asmx fil i vti bin katalogen (SPFiles.asmx, AjaxWSServices.asmx)

– 1 aspx fil i layouts katalogen (ListView.aspx)

– 2 assembly i GAC:en (MasterThesis.dll, SPFiles.dll)

– 2 JavaScript fil i katalogen layouts/1033/ (AjaxWS.js, zXML.js)

ASP-widgeten kraver foljande:

– Formularautentisering

– 1 asmx fil i vti bin katalogen for filuppladdningsmojligheter (SPFiles.asmx)

– 1 assembly i GAC:en (SPFiles.dll)

7.3.2 Krav - Webbservern

AJWH-widgeten kraver foljande:

– 1 asmx fil (web service proxy)

– 3 webbreferenser (Lists, Authentication, UserGroup)

– 1 aspx fil i katalogen /layouts (iframes.aspx, for att ge datumvaljarfunktionalitet)

– Hantering av filuppladdning och uppladdning av bifogningar i code-behindpa den sida som skall anvanda widgeten, eller nagon annan sida (kravsdock liten modifikation da)

– 7 Lankar till SharePoints CSS och JavaScript i sidohuvudet dar widgetenskall anvandas

ASP-widgeten kraver foljande:

– ASP.NET 3.5 installerat

– 3 webbreferenser (Lists, Authentication, UserGroup)

– 1 User-control

Page 93: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

7.4. Att underhalla 79

– 1 Katalog med bilder

– 1 CSS fil

– 1 Assembly antingen i GAC eller bin katalogen pa webbservern

Att bada widgetsarna bor vara sa pass modulara som mojligt var ett av deonskemal som kravspecifikationen tog upp. Tyvarr har bada widgetsarna rattmanga krav, de flesta pa grund av filuppladdning och bifogningsmojligheter.AJWH-widgeten skulle kunna implementeras pa en annan plattform an ASP.NETom web service proxyn, fil/bifognings-uppladdningen och datumvaljar sidanaterskapas. Detta ar anda ratt stora krav aven om en helt plattformsoberoendewidget onskades. Tyvarr ar det inte mojligt att ladda upp filer utan att anvandasig av nagon slags plattform och hela sidomladdningar. Den storsta orsaken tillvarfor inte AJWH-widgeten blev plattformsunik ar pa grund av webblasares sattatt hantera JavaScript. Allt for strang sakerhet for JavaScript var orsaken till attproxyn och filuppladdningen blev tvungna att hanteras pa webbservern.

Att ASP-widgeten har ASP.NET 3.5 som krav, ar en valdigt stort restriktion.Detta har hela tiden kants till och designen valdes anda pa grund av den intres-santa aspekten att jamfora ett mer klient-baserat system (som enbart genererarlistan, inte tar hand om alla handelser) mot ett server-baserad AJAX system(hur konstigt det an later).

7.4 Att underhalla

Scenario ett: SharePointfarmen for ett stort foretag ar dess plattform for visskollaborering, ett antal mindre webbservar existerar som var och en “hostar” enwebbapplikation som anstallda pa ett antal mindre enheter av foretaget anvanderfrekvent. Dessa webbapplikationer vill anvanda sig av widgeterna for att ge enklareatkomst till en viss SharePointlista som de kan uppdatera snabbt och smidigt.For AJWH-widgeten importerar de JavaScriptet som finns pa SharePointfarmensalla front webbservrar och hamtar hem widgeten via web services. Foljande listamed for och nackdelar finns i detta scenario for AJWH-widgeten:

– En fordel ar att all kod finns pa SharePointservern, ingen andring behovergoras pa alla webbservrar.

– Da en bugg har upptackts, eller om nagon ny funktionalitet onskas, editerarutvecklaren av AJWH-widgeten JavaScriptet som skoter alla handelser.Pa varje front-webbserver maste denna andring ske. Alla anvandares web-blasare har vid det har laget den gamla versionen cachade i sin webblasare,lyckligsvis sa tillampar webblasare strategin att da en andring sker for ettJavaScript sa kastas den gamla versionen bort om den nya versionen harsamma namn.

Page 94: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

80 Kapitel 7. Resultat - En Jamforelsestudie

– Om inte JavaScriptet behover andras och enbart genererandet av HTML iweb servicen ar problemet sa kan en ny kompilering av andringarna goraspa SharePointfarmen. Detta maste dock utforas for varje front webbservervilket kan vara jobbigt och krava mycket rattigheter for den utvecklare somutfor steget. Anda ar detta steg relativt enkelt for ett sa komplext system.

For ASP-widgeten i scenariot sa installeras kontrollen pa alla webbservrar.Denna losning har foljande for- och nackdelar:

– Om nagon ny funktionalitet onskas sa maste kontrollen kompileras om ochinstalleras pa varje webbserver. Den stora SharePointfarmen behover inteinvolveras i processen och om sa onskas kan olika webbservrar ha olikaversioner eftersom de inte paverkar varandra. En fordel for ASP-widgetenar att den ar fristaende.

– Om daremot en fatal bugg hittas i kontrollen sa maste den installeras omoverallt inom valdigt kort tid. Detta ar en klar nackdel jamfort med AJWH-widgeten, eftersom den har en mer centraliserad distribuering. Utvecklarnafor denna widget maste kontakta alla webbserveradministratorer och bedem installera om.

Kontentan ar att ASP-widgeten ar mer fristaende, vilket bade ar en fordeloch nackdel beroende pa scenario och anvandningsomrade for widgeten. AJWH-widgeten ar mer centraliserad, eftersom det ofta brukar ga fler webbservar perSharePointserver, den stora fordelen ar i och med det att enbart behova andrapa ett fatal stallen och alla far samtidigt andringen. Sa i denna kategori kommerAJWH-widgeten ut som segrare.

7.5 Vidareutvecklingsmojligheter

For vidareutveckling av widgetsarna ar ASP-widgeten i favor, dess objektorien-terade struktur gor det valdigt enkelt att utoka eller andra nagot.

En fordel med AJWH-widgeten nar det galler vidareutvecklingsmojligheterar att XSLT ar valdigt enkelt att andra pa, t.ex. sa kan man ta bort att listanbor visas i en tabell. Ett problem ar dock att mycket funktionalitet har byggtskring att listan bor visas pa ett visst satt. Menyalternativen for att ta bort ochuppdatera lagger bada till en kolumn via JavaScript i tabellen, om andringargors i XSLT:n sa kommer fel att uppsta. Men tanken att kunna byta ut den klasssom skapar XSLT:n mot nagon annan losning ar god.

Page 95: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

7.6. Implementeringssvarigheter 81

7.6 Implementeringssvarigheter

7.6.1 SharePoint

I AJWH-widgeten anvands XSLT, som ar valdigt kansligt for felaktigheteroch ger inte mycket information pa vad som gick fel. Istallet for ett informativtfelmeddelande visas att web parten inte kunde renderas vilket inte hjalper specielltmycket vid implementering.

Felsokningsmojligheterna vid utvecklandet av en web service ar valdigtsparsamma, enda sattet ar att binda Visual Studios debugger till att lyssnapa SharePointprocessen och sedan anropa web servicen fran ett annat program.Att upprepa denna process ar i langden tidsodande. Da fel uppstar i web ser-vicen och felsokningsprogrammet inte har bundits sa returnerar den enbart enSoapException som indikerar att nagot har gatt fel, problemet ar att den intesager vad.

Att skapa en egen web service i SharePoint har varit valdigt beprovande,eftersom manuella editeringar i WSDL och disco filen var tvungen att goras. Attfa allt ratt tog tid.

Att implementera nagonting alls i SharePoint var en stor gissningslek, i ochmed att SharePoints API ar nastan helt odokumenterat. Hjalp hittades oftast panagon blogg, om alls.

Inget utvecklande har utforts for ASP-widgeten pa SharePoint.

7.6.2 Webbservern

Pa webbservern har implementeringen av bada widgets varit rolig. Ett av de treproblem som verkligen tog tid att fa till lag i att forsta ASP.NETs sidolivscykeldar saker och ting bor utforas for respektive kontroll. Det andra problemet varfiluppladdningen, nar ett filformular skickades fran anvandaren anlande den intepa webbserver. Detta visade sig vara pa grund av att filuppladdningsfaltet hadelagts till programmatiskt och nar en hel sidomladdning utfordes (kravdes for attkunna ladda upp fil) sa fanns inte faltet langre och filen som verkligen laddadesupp var inte tillganglig, aven om den bifogades i anropet. Det tredje problemetvar att bygga en anvandbar objektmodell.

Att forsta och acceptera begransningarna hos ASP.NET ompostningslosningkan ibland vara svart. T.ex. i ASP-widgeten, da en klass som implementeradeITemplate och sedan anvandes i ListViewn sa uppstod ett svarbegripligt fel.Vid databindning sa anropades en handelse dar information kunde hamtas frandet objekt som databundits, beroende pa vad denna information var av for typskapades olika kontroller som sedan data visades i. Denna losning innebar ingaproblem och kontroller dok upp vid laddning av sidan, men da en editeringsknapptrycktes for ett av objekten i listan sa forsvann all data i listan. Inget uppenbartfel kunde upptackas eftersom felsokning av aterskapandet fran viewstate kan varasvar. Efter lite testande sa visade det sig vara att i och med att kontrollerna hade

Page 96: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

82 Kapitel 7. Resultat - En Jamforelsestudie

lagts till programmatiskt och att databindningens handelsehantering inte utfordesvid aterpostning av sidan sa forsvann kontrollerna. Sa den “nya” approachentogs bort och databindningen anvande istallet kontroller som skapats utanforhandelsehanteringen.

En annan underlig sak som upptacktes i ASP-widgeten var att SharePointsweb services ar inkonsekvent. Ibland innbar samma typ olika saker, t.ex. sa kan“type=user” innebara en anvandare pa formen id;#username eller provider:usernameeller username beroende pa vilken slags lista och web service som anvants.

7.6.3 Klient

Att koda JavaScript var inte en behaglig upplevelse, aven om Visual Studio 2008har viss sa kallad intellisense for JavaScript sa kravs annu mer hjalp for att detskall kunna bli effektivt.

Ett enormt problem uppenbarade sig efter ett tag for AJWH-widgeten: di-rektkommunikation mot SharePoint var omojligt pa grund av tva anledningar.SharePoint anvander NTLM autentisering som inte stods av JavaScript. Web-blasare tillater inte JavaScript att kommunicera mot nagon tredje part. Losningenproblemet var att lata webbservern agera proxy for all kommunikation.

Page 97: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 8

Slutsats

Svaret pa den fraga som stalldes i introduktionen: “skulle man kunna imple-mentera hela widgeten pa SharePoint-servern och skicka all HTML, CSS ochJavaScript over web services och integrera det i klientens hemsida?” ar Ja, mentyvarr visade sig det inte vara sa prestandaoptimalt. Inte heller visade det sigvara speciellt enkelt att implementera eller vidareutveckla, dessutom var godmodularitet svart att uppna. Flera beslut angaende AJWH-widgeten borde varitannorlunda om battre resultat skulle uppnatts:

– Att flera anrop mot SharePoints web service gjordes for en och sammafunktion var valdigt tidsodande. Detta skulle undvikits genom att lataJavaScriptet ha mer information om listans falt. Ett sadant satt att erhallamer information vore att anvanda sig av strukturerad data.

– Sortering och paginering skulle inte behovt innebara ett anrop mot Share-Point

– SharePoints JavaScript visade sig vara valdigt stort och dess funktionalitetbegransad till Internet Explorer. En tredjeparts JavaScript API skulleanvants i stallet, dels for AJAX-stod, validering, datumvaljare och riktexteditor.

I allmanhet visade det sig vara svart att ha tudelade ansvar: att lata webbserverngenerera HTML, medan JavaScript skoter all funktionalitet. Om strukturerad datahade skickats fran borjan till klientens webblasare sa hade problemet undvikits.

Sjalv iden med att generera HTML pa SharePointservern var inte dalig,daremot sa kan det ifragasattas om web services var ratt kanal for formedlingoch om operationer verkligen bor utforas av JavaScriptet i sa fall. Om problemetvore att visa en lista sa skulle denna losning varit bra. Da operationer skulleutforas pa listan blev problemet mer besvarligt vilket innebar att denna losningblev mindre lampad.

Detta arbete har tagit mycket langre tid an forvantat dels pa grund av att deforsta tva manaderna agnades at ett arbete och fragestallning som sedan inte

83

Page 98: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

84 Kapitel 8. Slutsats

visade sig halla de den akademiska klass som forvantats. Darefter tog det etttag att finna ett nytt amne for examensarbetet. Sedan sa har aven all teknik,programmeringssprak och utvecklingsmiljoer larts under det gangna aret i ochmed universitetet inte vill beblanda sig med Microsoft teknologi.

8.1 Begransningar och restriktioner

All krav som stallts har uppfyllts for bada widgets.

8.2 Fortsatt arbete

Fortsatt utveckling pa widgetarna skulle kunna implementera mer funktionalitetfran SharePoint, t.ex. versionshantering och vyer. Med inte allt for mycketvidareutveckling bor en god dokumenthanteringswidget kunna skapas som sakertskulle kunna att komma till stor nytta pa foretag som anvander sig av SharePoint.

De tva systemen som implementeras kommer tyvarr inte att anvandas iproduktionsmiljo. Men erfarenheterna tagna fran detta projekt kommer kommaval till nytta i och med att forfattaren till detta arbete har anstallts hos Acino.

Page 99: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Kapitel 9

Tillkannagivanden

Jag vill tacka Nicole for all support och stottning. Sedan vill jag tacka KentSundberg for att gett mig chansen och mojligheten att gora exjobb pa Acino samten forhoppningsvis god framtid pa foretaget. Ett stort tack till Anders Brobergfor ditt intresse for modern teknik och att du tagit mig under dina vingar. Etttack aven till: Robert Karlsson for visat intresse och givande diskussioner samtJonas Paro for att ha uthardat tiden med mig, Rickard och Magnus skankerjag ocksa ett tack for trevliga fikapauser. Mor och far, tack for motivation ochkorrekturlasning. Slutligen vill jag tacka min mycket hjalpsamma bror Peder forfortrafflig hjalp och goda synpunkter pa rapporten.

85

Page 100: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

86 Kapitel 9. Tillkannagivanden

Page 101: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Referenser

[1] Microsoft. Windows sharepoint services - doc library, list and sitetemplates. http://download.microsoft.com/download/0/0/d/00d9df4d-068b-46a6-8cff-82153a716757/Sharepoint_Doclibrary.ppt (visited 2008-5-27), 2008.

[2] Patrick Tisseghem. Development tools and techniques for working with codein windows sharepoint services 3.0 (part 1 of 2). http://msdn.microsoft.com/en-us/library/ms980916.aspx (visited 2008-5-26), 2007.

[3] glenc. Content types best new sharepoint 2007 feature.http://blog.glenc.net/2006/06/22/content-types-%E2%80%93-best-new-sharepoint-2007-feature/(visited 2008-5-29), 2006.

[4] Acino ab. Internetkontoret. http://www.acino.se/BeskrivningInternetkontoret.pdf (visited 2008-4-25).

[5] W3C. Uris, addressability, and the use of http get and post. http://www.w3.org/2001/tag/doc/whenToUseGet.html (visited 2008-6-29), 2003.

[6] Svenska forsakringsformedlares forening. Ssek. http://www.ssek.org/(visited 2008-8-13), 2008.

[7] T. O’Reilly. What is web 2.0. http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html (visited 2007-11-05), 2005.

[8] Douglas J. Puffert. Technological revolutions and financial capital: Thedynamics of bubbles and golden ages. by carlota perez. cheltenham, uk andnorthampton, ma: Edward. The Journal of Economic History, 63(02):615–616, October 2003.

[9] Nicholas C. Zakas, Jeremy McPeak, and Joe Fawcett. Professional Ajax,2nd Edition. Wrox Press Ltd., Birmingham, UK, UK, 2007.

[10] Matjaz B. Juric, Bostjan Kezmah, Marjan Hericko, Ivan Rozman, andIvan Vezocnik. Java rmi, rmi tunneling and web services comparison andperformance analysis. SIGPLAN Not., 39(5):58–65, 2004.

87

Page 102: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

88 REFERENSER

[11] M. Jazayeri. Some Trends in Web Application Development. InternationalConference on Software Engineering, pages 199–213, 2007.

[12] Jesse James Garrett. Ajax: A new approach to web applications. http://www.adaptivepath.com/ideas/essays/archives/000385.php (visited 2008-4-22), 2005.

[13] Daniel F. Zucker. What does ajax mean for you? interactions, 14(5):10–12,2007.

[14] HttpWatch. Why is google so fast? http://blog.httpwatch.com/2007/11/05/why-is-google-so-fast (visited 2008-5-10), 2007.

[15] Becky Gibson. Enabling an accessible web 2.0. In W4A ’07: Proceedingsof the 2007 international cross-disciplinary conference on Web accessibility(W4A), pages 1–6, New York, NY, USA, 2007. ACM.

[16] Wikipedia. Enterprise content management. http://en.wikipedia.org/wiki/Enterprise_content_management (visited 2008-7-16), 2008.

[17] AIIM. What is ecm? http://www.aiim.org/ResourceCenter/AboutECM.aspx visited(2008-8-13), 2008.

[18] CMS Watch. Cms watch - about us. http://www.cmswatch.com/About/(visited 2008-8-13), 2008.

[19] C. D. Cranor, R. Ethington, A. Sehgal, D. Shur, C. Sreenan, and J. E. van derMerwe. Design and implementation of a distributed content managementsystem. In NOSSDAV ’03: Proceedings of the 13th international workshopon Network and operating systems support for digital audio and video, pages4–11, New York, NY, USA, 2003. ACM.

[20] Bill Gates. Bill gates: Sharepoint conference 2008. http://www.microsoft.com/Presspass/exec/billg/speeches/2008/03-03SharePoint2008.mspx (visited 2008-8-13), 2008.

[21] Margit Torn’eus. Om sharepoint vid institutionen for psykologi. http://www.psy.umu.se/grundutbildning/program/psykolog-programmet/Beslut-SharePoint-ht08.pdf (visited 2008-8-18), 2004.

[22] Ted Pattison. Inside Microsoft Windows SharePoint Services Version 3 (ProDeveloper). Microsoft Press, Redmond, WA, USA, 2007.

[23] Microsoft. Introduction to templates and definitions. http://msdn.microsoft.com/en-us/library/ms980852.aspx (visited 2008-5-27), 2008.

[24] Chirag Darji. Page ghosting & unghosting and ef-fect of pageghosting on performance in sharepoint

Page 103: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

REFERENSER 89

2007. http://chiragrdarji.wordpress.com/2007/10/12/page-ghosting-unghosting-and-effect-of-pageghosting-on-performance-in-sharepoint-2007/(visited 2008-5-23), 2007.

[25] Scott Harris (Microsoft) and Mike Ammerlaan (Microsoft). Best prac-tices: Using disposable windows sharepoint services objects. http://msdn.microsoft.com/en-us/library/aa973248.aspx(visited 2008-5-29), 2006.

[26] Microft. Server and site architecture overview. http://msdn.microsoft.com/en-us/library/bb530302.aspx (visited 2008-5-16), 2008.

[27] Michael Mahemoff. Cross-domain communication with iframes. http://softwareas.com/cross-domain-communication-with-iframes (visit-ed 2008-4-22), 2008.

[28] Albert Meerscheidt. Synchronizing with windows sharepoint services.http://blogs.msdn.com/sharepointdeveloperdocs/archive/2008/01/21/synchronizing-with-windows-sharepoint-services-part-1.aspxvisited(2008-4-25), 2008.

[29] Wikipedia. Xsl transformations. http://en.wikipedia.org/wiki/XSLT(visited 2008-5-14), 2008.

[30] Serge van den Oever. Sharepint dvwp: xslt limitations.. http://weblogs.asp.net/soever/archive/2005/03/08/389371.aspx (visited 2008-5-15),2005.

[31] J.D. Meier, Srinath Vasireddy, Ashish Babbar, and Alex Mackman. Improving.NET Application Performance and Scalability. Microsoft Corporation, 2004.

[32] Wikipedia. Javascript. http://en.wikipedia.org/wiki/JavaScript (vis-ited 2008-5-15), 2008.

[33] Mozilla. About javascript. http://developer.mozilla.org/en/docs/About_JavaScript (visited 2008-5-15), 2008.

[34] Erika Ehrli. How to: Magic with sharepoint 2003, uploading files using aweb service. http://blogs.msdn.com/erikaehrli/archive/2006/05/04/SharePointUploadHelper.aspx (visited 2007-10-2), 2006.

[35] Microsoft. Updatepanel control overview. http://msdn2.microsoft.com/en-us/library/bb386454.aspx (visited 2008-5-16), 2008.

[36] HttpWatch. The performance impact of upload-ed data. http://blog.httpwatch.com/2008/01/18/the-performance-impact-of-uploaded-data/ (visited 2008-5-18),2008.

Page 104: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

90 REFERENSER

[37] J.D. Meier, Carlos Farre, Prashant Bansode, Scott Barber, and Dennis Rea.Performance Testing Guidance for Web Applications. Microsoft Corporation,2007.

[38] Matthew Roughan. Fundamental bounds on the accuracy of network perfor-mance measurements. In SIGMETRICS ’05: Proceedings of the 2005 ACMSIGMETRICS international conference on Measurement and modeling ofcomputer systems, pages 253–264, New York, NY, USA, 2005. ACM.

[39] Vern Edward Paxson. Measurements and analysis of end-to-end Internetdynamics. PhD thesis, University of California at Berkeley, Berkeley, CA,USA, 1998.

Page 105: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

Bilaga A

Appendix

A.1 AJWH-widget bilder

Figur A.1: AJWH-widgeten visar listan “Tasks” fran SharePoint

A.2 ASP-widget bilder

91

Page 106: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

92 Kapitel A. Appendix

Figur A.2: Formular for insattning i AJWH-widget

Figur A.3: Menysystem i AJWH-widgeten

Page 107: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

A.2. ASP-widget bilder 93

Figur A.4: Editeringsknappen i AJWH-widgetens meny har tryckts och en nykolumn har skapats

Figur A.5: Formular for editering i AJWH-widget

Page 108: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

94 Kapitel A. Appendix

Figur A.6: Fore en bilaga har lagts till

Page 109: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

A.2. ASP-widget bilder 95

Figur A.7: Efter bilagan “jamforelser.doc” har lagts till i “Testar insatting”

Figur A.8: Efter paginering, de tre sista objekten i listan

Page 110: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

96 Kapitel A. Appendix

Figur A.9: AJWH-widgeten sorterad efter “% Complete”

Page 111: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

A.2. ASP-widget bilder 97

Figur A.10: ASP-widgeten visar listan “Tasks” fran SharePoint

Page 112: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

98 Kapitel A. Appendix

Figur A.11: Formular for insattning i ASP-widget

Page 113: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

A.2. ASP-widget bilder 99

Figur A.12: Efter insattning i ASP-widget

Page 114: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

100 Kapitel A. Appendix

Figur A.13: Formular for editering i ASP-widget

Page 115: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

A.2. ASP-widget bilder 101

Figur A.14: Fore en bilaga har lagts till i ASP-widgeten

Page 116: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

102 Kapitel A. Appendix

Figur A.15: Efter bilagan “jamforelser.doc” har lagts till i “Testar insatting”

Figur A.16: Efter paginering, andra sidan visas av tva, i ASP-widgeten

Page 117: Webbwidgets f or SharePoint - umu.se · Detta p atvingades eftersom f or lite ansvar hade lagts p a anv andarsidan som var en f oljd av att inte strukturerad data hade ... A.15 Efter

A.2. ASP-widget bilder 103

Figur A.17: Efter bortagning av ett objekt (med titeln “Attachments ...” i listan.Se bild A.16 som en forebild

Figur A.18: ASP-widgeten, listan sorterad efter “% Complete”