• No results found

Kontaktsynkronisering i Exchange

N/A
N/A
Protected

Academic year: 2021

Share "Kontaktsynkronisering i Exchange"

Copied!
57
0
0

Loading.... (view fulltext now)

Full text

(1)

Institutionen för datavetenskap

Department of Computer and Information Science

Examensarbete

Kontaktsynkronisering i Exchange

av

Andreas Vestlund

LIU-IDA/LITH-EX-G—10/011—SE

2011-06-09

(2)
(3)

Examensarbete

Kontaktsynkronisering i Exchange

av

Andreas Vestlund

LIU-IDA/LITH-EX-G—10/011—SE

2011-06-09

Handledare: Kristian Sandahl

Examinator: Kristian Sandahl

(4)
(5)

Sammanfattning

Den h¨ar rapporten presenterar examensarbetet utf¨ort p˚a Sekonden IT AB, vilket gick ut p˚a att utveckla en l¨osning till Sekondens synkroniseringspro-blem med kontakter i Exchange. Syftet med den h¨ar rapporten ¨ar att beskri-va hur jag har g˚att tillv¨aga f¨or att l¨osa Sekondens synkroniseringsproblem, vilka hinder jag st¨ott p˚a och hur jag l¨oste dem. F¨or att utveckla en l¨osning till Sekondens synkroniseringsproblem beh¨ovdes en testmilj¨o s¨attas upp, lik-nande Sekondens servermilj¨o. En stor del av examensarbetet handlade om att f˚a flera olika program att fungera tillsammans, vilket ledde till att jag spenderade mycket tid p˚a installation och konfiguration. Jag har utvecklat en l¨osning som bestod av; en webbtj¨anst f¨or att utf¨ora synkroniseringsupp-gifter, en Windowstj¨anst f¨or att kontinuerligt anropa webbtj¨ansten och ett gr¨anssnitt f¨or synkroniseringsval, placerat i Sekondens intran¨at.

(6)
(7)

Inneh˚

all

1 Inledning 1

1.1 Bakgrund . . . 1

1.2 Syfte . . . 1

1.3 Metod och k¨allor . . . 1

1.4 Struktur . . . 2 2 Bakgrundsbeskrivning 3 2.1 Arkitektur . . . 4 3 Planerad l¨osning 5 4 Installation 8 4.1 AddeServer . . . 8 4.1.1 Installation . . . 8 4.1.2 Konfiguration . . . 8 4.2 Exchange Server 2007 . . . 10 4.2.1 F¨orberedning . . . 10 4.2.2 Installation . . . 10 4.2.3 Konfiguration . . . 11 4.3 AddeServer2 . . . 11 4.3.1 Installation . . . 11 4.3.2 Konfiguration . . . 12 4.4 SQL Server . . . 12 4.4.1 Installation . . . 12 4.4.2 Konfiguration . . . 12 4.5 SharePoint Server 2007 . . . 13 4.5.1 Installation . . . 13 4.5.2 Konfiguration . . . 14

4.6 Integrations˚atg¨arder . . . 14

5 Webbtj¨anst 15 5.1 Testfall . . . 15

5.2 Utveckling . . . 15

(8)

INNEH˚ALL INNEH˚ALL

5.2.2 Kontaktid . . . 16

5.2.3 Egendefinierade attribut . . . 16

5.2.4 Uppm¨arkning av gemensamma kontakter . . . 18

5.3 Integration . . . 18

5.3.1 Konfigurering av Sekondens server . . . 18

5.3.2 H¨amtning av gemensam kontaktmapp . . . 22

5.3.3 Fel p˚a r¨attigheter . . . 23

5.3.4 Service pack 2 . . . 24

6 Windowstj¨anst 25 6.1 ˚Atkomst till webbtj¨anst . . . 25

6.2 Installationsproblem . . . 26 7 Gr¨anssnitt 27 7.1 Utveckling . . . 27 7.2 SharePoint . . . 28 7.2.1 Tidsbrist . . . 29 8 Resultat 30 8.1 Till mobiltelefonen . . . 30 9 Diskussion 32 9.1 L¨osningen . . . 32 9.1.1 Webbtj¨ansten . . . 32 9.1.2 Windowstj¨ansten . . . 33 9.1.3 Gr¨anssnittet i SharePoint . . . 33 9.1.4 Alternativ l¨osning . . . 34

9.2 Anv¨andning av testfall . . . 34

9.3 F¨orsenad uppgradering . . . 35

9.4 Reflektion kring arbetet . . . 35

(9)

Kapitel 1

Inledning

1.1

Bakgrund

Examensarbetet utf¨ordes p˚a Sekonden Informationsteknologi AB, Link¨oping, med uppdraget att utveckla ett synkroniseringsverktyg f¨or kontaktinforma-tion. Sekonden har cirka 10 anst¨allda och m˚anga kunder vilket resulterar i mycket kontaktinformation. Denna information finns sparad p˚a deras Ex-change server, i form av tv˚a mappar med kontaktinformation. Den ena map-pen ¨ar personlig f¨or de som arbetar p˚a Sekonden(en mapp f¨or varje anst¨alld) och den andra ¨ar en publik mapp(en f¨or hela f¨oretaget) med kontaktinforma-tion till deras kunder. Det som Sekonden saknade var ett smidigt s¨att att f˚a ut den gemensamma publika kontaktinformationen, som ligger i Exchange-servern, till mobiltelefonen.

Detta examensarbete gav mig en utm¨arkt chans att prova p˚a olika tekni-ker och metoder som har presenterats under min utbildning. Jag best¨amde mig f¨or att anv¨anda testfall f¨or att jag inte hade provat det ordentligt i kurser och f¨or att testning ¨ar en viktig del av utveckling.

1.2

Syfte

Syftet med denna rapport ¨ar att beskriva mitt tillv¨agag˚angss¨att f¨or att l¨osa Sekondens synkroniseringsproblem samt beskriva hur jag har anv¨ant mig av testfall under utvecklingen.

1.3

Metod och k¨

allor

F¨or att l¨osa Sekondens synkroniseringsproblem har jag anv¨ant mig av en brute-force liknande metod. F¨or det mesta unders¨okte jag ej hur ett visst programmeringsproblem kunde l¨osas utan jag provade snabbt en l¨osning som jag kom p˚a sj¨alv eller hittade fr˚an n˚agon k¨alla, om det inte fungerade s˚a

(10)

1.4. STRUKTUR KAPITEL 1. INLEDNING

provade jag n¨asta l¨osning. Jag anv¨ande mig av denna metod f¨or att snabbt utveckla saker och ist¨allet f¨or att f¨ors¨oka identifiera m¨ojliga problem i en tidig unders¨okning s˚a utvecklade jag tills jag st¨otte p˚a ett verkligt problem och l¨oste det d˚a.

L¨osningen jag kom fram till ¨ar inte tagen fr˚an n˚agon k¨alla, den har jag kommit fram till genom diskussion med min handledare p˚a Sekonden IT och egna beslut, men vid utvecklingen av min l¨osning har det sj¨alvklart uppst˚att flera problem och jag har beh¨ovt l¨ara mig en del av olika programmerings-spr˚ak och tillh¨orande bibliotek.

Jag har fr¨amst anv¨ant mig av Microsofts officiella onlinebibliotek,

http://msdn.microsoft.com/library/default.aspx och http://technet.microsoft.com/en-us/library/default.aspx, f¨or att hitta l¨osningar och information. Det var inte

alltid jag hittade det jag s¨okte p˚a Microsofts webbsidor, d˚a har jag s¨okt infor-mation p˚a Google och oftast hittat svar p˚a olika utvecklingsforum, exempel-vis http://www.stackoverflow.com och http://www.experts-exchange.com.

1.4

Struktur

Jag inleder rapporten med en grundlig bakgrundsbeskrivning av Sekondens synkroniseringsproblem och en beskrivning av den planerade l¨osningen. Jag g˚ar vidare med en detaljerad installationsguide f¨or hur jag installerade och konfigurerade en testmilj¨o, liknande Sekondens servermilj¨o. Efter installa-tionskapitlet skriver jag om utvecklingen av min l¨osning, vilka hinder jag st¨ott p˚a och hur jag har l¨ost dem.

Jag avslutar rapporten med en presentation av det slutliga resultatet f¨oljt av en diskussion om examensarbetet. L¨angst bak i rapporten hittas ett appendix med anv¨anda testfall och en litteraturf¨orteckning.

(11)

Kapitel 2

Bakgrundsbeskrivning

Sekonden har flera anst¨allda och m˚anga kunder vilket resulterar i mycket kontaktinformation. Denna information fanns sparad p˚a deras Exchangeser-ver, i form av tv˚a mappar med kontaktinformation. Den ena mappen var personlig f¨or de som arbetade p˚a Sekonden(en mapp f¨or varje anst¨alld) och den andra var en publik mapp(en f¨or hela f¨oretaget) med kontaktinformation till kunderna de arbetade med.

Den personliga kontaktinformationsmappen synkroniserades med mobil-telefonen och de anst¨allda fick p˚a s˚a s¨att med sig sin egen kontaktinformation n¨ar de var ute hos kund. Detta skedde genom den standardiserade synkro-nisering som f¨oljde med fr˚an mobiltelefontillverkaren vid k¨op av en mobilte-lefon. Det Sekonden saknade var ett smidigt s¨att att f˚a ut den gemensamma publika kontaktinformationen, som l˚ag i Exchangeservern, till mobiltelefo-nen. F¨or att f˚a med sig kontaktinformation fr˚an den gemensamma publi-ka kontaktmappen till mobiltelefonen, var Sekondens anst¨allda tvungna att manuellt l¨agga ¨over en gemensam kontakt till den privata kontaktmappen. Detta var omst¨andigt och Sekonden hade ett behov av att f˚a till en l¨osning som underl¨attade detta tillv¨agag˚angss¨att.

Sekonden ¨onskade en l¨osning d¨ar de genom en administrationsapplikation i intran¨atet skulle kunna markera vilka kontakter i den publika kontaktin-formationsmappen som de ville skulle synkroniseras ut till deras mobiltele-fon. Detta skulle l¨oses genom att markerade kontakter synkroniserades ¨over fr˚an den publika till den personliga mappen i Exchange, genom en server-tj¨anst, som styrdes av en administrationsapplikation i Sekondens intran¨at. Sedan skulle sj¨alva synkroniseringen ut till mobiltelefonen ske genom till-verkarens standardiserade synkronisering med den personliga kontaktinfor-mationsmappen.

(12)

2.1. ARKITEKTUR KAPITEL 2. BAKGRUNDSBESKRIVNING

Figur 2.1: Sekondens serverarkitektur

2.1

Arkitektur

F¨or att kunna s¨atta sig in i problemet beh¨ovs en kort genomg˚ang om Se-kondens servrar, deras roller och hur de ber¨orde min uppgift.

Sekonden har tre virtuella servrar(1, 2, 3 enligt figur 2.1).

Server 1 inneh˚aller Active Directory vilket, enligt Wikipedia [9], ¨ar “. . . en katalogtj¨anst fr˚an Microsoft som inneh˚aller informa-tion om olika resurser i ett n¨atverk t.ex. datorer, skrivare och anv¨andare.”

Active Directory ¨ar viktigt f¨or bl.a. central programdistribution till da-torer. Genom Active Directory kan servrar kopplade till samma Active Directory komma ˚at varandras tj¨anster.

Server 2 inneh˚aller Exchange Server 2007 och SQL Server 2005. I Ex-change Server ligger kontakterna som jag haft i uppgift att synkro-nisera samt alla anv¨andarnas privata kontakter.

Server 3 inneh˚aller SharePoint Server 2007 vilket Sekondens intran¨at ¨ar upplagt i. Tanken var att man skulle kunna styra synkroniseringsval genom ett gr¨anssnitt i intran¨atet.

(13)

Kapitel 3

Planerad l¨

osning

F¨or att l¨osa Sekondens synkroniseringsproblem med kontakter planerade jag att utveckla en webbtj¨anst, placerad p˚a server 2(figur 3.1). Denna webb-tj¨anst skulle tillhandah˚alla en metod f¨or att starta en synkronisering av gemensam kontaktinformation till Sekondens anv¨andares privata kontaktin-formation, utifr˚an anv¨andarnas synkroniseringsval.

Synkroniseringen skulle endast ske ˚at ett h˚all, fr˚an den gemensamma kontaktmappen till privat kontaktmapp och inte ˚at andra h˚allet. Detta f¨or att ¨andringar p˚a gemensamma kontakter endast skulle kunna ske genom att ¨andra informationen i den gemensamma kontaktmappen och inte i en mobiltelefon eller liknande.

F¨or att h˚alla de synkroniserade kontakterna uppdaterade planerade jag att utveckla ett program med uppgift att anropa webbtj¨anstens synkronise-ringsmetod med j¨amna tidsintervall, ¨aven detta program placerat p˚a server 2.

Synkroniseringsval skulle anv¨andarna kunna g¨ora genom ett gr¨anssnitt i Sekondens intran¨at(SharePoint p˚a server 3). Gr¨anssnittet skulle presen-tera kontakterna i en tr¨adstruktur, sorterat p˚a f¨oretag och tillhandah˚alla alternativ f¨or att markera alla/inga kontakter, hela f¨oretag och individuella kontakter.

Webbtj¨ansten och gr¨anssnittet skulle kommunicera med varandra genom tv˚a databastabeller, placerade p˚a SQL-servern(server 2 i figur 2.1). Tanken var att jag skulle anv¨anda mig av tv˚a tabeller, MarkedContacts och

Syn-cedContacts(figur 3.2), d¨ar b˚ade MarkedContacts och SyncedContacts skulle inneh˚alla ett anv¨andarnamn och ett id till en Exchangekontakt.

N¨ar en anv¨andare utf¨orde ett synkroniseringsval skulle en ny tupel(rad i tabellen) l¨aggas till i MarkedContacts med anv¨andarens anv¨andarnamn och id till den gemensamma kontakten, vald av anv¨andaren f¨or synkroni-sering. Tabellen SyncedContacts skulle senare fyllas p˚a med en likadan tu-pel n¨ar webbtj¨ansten genomf¨ort en synkronisering och kopierat den gemen-samma kontakten till anv¨andarens privata kontaktmapp. P˚a s˚a vis skulle

(14)

KAPITEL 3. PLANERAD L ¨OSNING

Figur 3.1: Planerad l¨osning

MarkedContacts SyncedContacts

username contact_id username contact_id

(15)

KAPITEL 3. PLANERAD L ¨OSNING

MarkedContacts inneh˚alla alla synkroniseringsval utf¨orda av anv¨andare och

SyncedContacts skulle inneh˚alla tuplar f¨or de gemensamma kontakter som webbtj¨ansten hade under synkronisering.

(16)

Kapitel 4

Installation

Vid utvecklingen av webbtj¨ansten och gr¨anssnittet beh¨ovde jag kunna testa det jag programmerat under tiden utan att riskera ¨andringar p˚a Sekondens servrar. Jag beh¨ovde en testmilj¨o som liknade Sekondens. L¨osningen blev att jag skapade tv˚a virtuella servrar p˚a min arbetsstation. Dessa installerade jag mjukvara p˚a som beh¨ovdes f¨or min uppgift.

Detta kapitel ¨ar t¨ankt att ge l¨asaren insikt i hur det g˚ar till att installera och konfigurera den testmilj¨o jag anv¨ant mig av. I slutet av kapitlet beskriver jag kort vilka ˚atg¨arder jag tagit under installation och konfiguration f¨or att underl¨atta integrationen av de program jag utvecklat till Sekondens servrar.

4.1

AddeServer

Till att b¨orja med beh¨ovde jag en server med rollen Active Directory Domain Services f¨or att skapa min egen dom¨an, agera DNS server, skapa anv¨andare och tillhandah˚alla resurser ˚at serverprogram (t.ex. Exchange Server).

4.1.1

Installation

Jag installerade Windows Server 2008 R2 x64 Standard Edition och f¨oljde instruktionerna i installationsguiden som f¨oljde med p˚a installationsskivan.

4.1.2

Konfiguration

F¨oljande konfigurerades p˚a denna server: Datornamn: AddeServer

Dom¨an: vestlund.se N¨atverksinformation:

(17)

4.1. ADDESERVER KAPITEL 4. INSTALLATION

Gateway: 192.168.0.1 DNS server: 192.168.0.230 Windows Update och omstart

N¨ar alla uppdateringar var installerade valde jag att l¨agga till rollerna Active Directory Domain Services, Web Server(IIS) och File Services (de tv˚a senare skulle beh¨ovas senare f¨or Exchange Server) genom Server Manager. Jag l¨arde mig att dessa roller beh¨ovdes f¨or att andra program hade dessa roller som krav f¨or att ens p˚ab¨orja en installation.

Med rollerna inlagda installerade jag Active Directory genom att klicka p˚a Start, klicka p˚a Run, och skriva:

dcpromo . e x e

Ovann¨amnda kommando startar Active Directory Domain Services In-stallation Wizard. I denna valde jag kompatibilitet med Windows Server 2008 R2, skapa en ny “forest”(dom¨an) med namnet “vestlund.se” och ef-ter det anv¨ande jag standardvalen f¨or resten av installationen. Det var i samband med denna installation servern fick rollen DNS server.

Jag ville ha tv˚a anv¨andare till testning av kontaktsynkroniseringen och ett servicekonto till SharePoint, ¨amnat att vara administrat¨or och utf¨ora installationen av SharePoint.

L¨agga till tv˚a vanliga anv¨andare, adde@vestlund.se och testperson@vestlund.se: 1. G˚a till Active Directory Users and Computers

2. V¨alj vestlund.se→ Users 3. V¨alj New→ User

4. Fyll i information f¨or adde@vestlund.se och skapa 5. Repetera f¨or testperson@vestlund.se

L¨agga till servicekonto, sharepoint admin@vestlund.se: 1. G˚a till Active Directory Users and Computers 2. V¨alj vestlund.se→ Managed Service Accounts 3. V¨alj New→ User

4. Fyll i information f¨or sharepoint admin@vestlund.se och skapa Webbtj¨ansten beh¨ovde en webbsida att exekvera i. Denna webbsida skul-le jag anv¨anda f¨or att anropa webbtj¨ansten genom en webbl¨asare och fr˚an andra program.

Skapa fysisk mapp f¨or webbtj¨anst: 1. G˚a till “C:\inetpub\wwwroot” 2. Skapa en mapp “sync”

(18)

4.2. EXCHANGE SERVER 2007 KAPITEL 4. INSTALLATION

Skapa applikation f¨or Internet Information Services: 1. G˚a till Internet Information Services Manager 2. V¨alj ADDESERVER→ Sites → Default Web Site

3. Skapa ny applikation med applikationspool ASP.NET v4.0, alias “sync” och fysisk adress “C:\inetpub\wwwroot\sync”

Efter detta kunde jag testa det jag utvecklat genom att l¨agga filerna f¨or webbtj¨ansten i mappen “sync” och sedan i en webbl¨asare g˚a till adressen “http://localhost/sync/namn p˚a webbtj¨anst ”.

4.2

Exchange Server 2007

Efter installationen av Active Directory var servern(AddeServer) redo f¨or installation av Exchange Server 2007. Efter s¨okning p˚a Google hittade jag artikeln “Installing Exchange 2007 on Windows Server 2008” [1], publicerad p˚a msexchange.org, vilken jag f¨oljde f¨or att installera Exchange Server 2007.

4.2.1

orberedning

Innan installation med skivan beh¨ovde jag f¨orbereda min server f¨or Ex-change Server med terminalkommandon som installerade olika komponen-ter. F¨oljande kommando skulle exekveras f¨orst:

ServerManagerCmd −i RSAT−ADDS

Efter detta kommando beh¨ovde servern startas om. D¨arefter exekverades dessa kommandon i en terminal:

ServerManagerCmd −i PowerShell ServerManagerCmd −i Web−Server ServerManagerCmd −i Web−ISAPI−Ext ServerManagerCmd −i Web−Metabase

ServerManagerCmd −i Web−Lgcy−Mgmt−Console ServerManagerCmd −i Web−Basic−Auth

ServerManagerCmd −i Web−Digest−Auth ServerManagerCmd −i Web−Windows−Auth ServerManagerCmd −i Web−Dyn−Compression

N¨ar dessa kommandon hade exekverats var servern f¨orberedd f¨or en “Ex-change Server Single Server Deployment”, vilket inneb¨ar att alla delar av Exchange Server installeras p˚a en och samma server.

4.2.2

Installation

Jag installerade Exchange Server 2007 och f¨oljde instruktionerna i installa-tionsguiden f¨or en standardinstallation. Jag specificerade organisationsnamn till “addeSekonden”.

(19)

4.3. ADDESERVER2 KAPITEL 4. INSTALLATION

Under installationen uppstod ett fel p˚a grund av saknade r¨attigheter men det avbr¨ot inte installationen utan det var endast Mailboxkomponenten som misslyckades. Det l¨oste sig enkelt genom att k¨ora igenom installationen igen med administrat¨orsr¨attigheter(h¨ogerklickade p˚a installationsfilen och valde “K¨or som administrat¨or”).

4.2.3

Konfiguration

F¨or att efterlikna Sekondens Exchange Server s˚a mycket som m¨ojligt skapade jag en gemensam kontaktmapp med samma namn som Sekondens.

Skapa gemensam kontaktmapp i Exchange Server 2007: 1. G˚a till Exchange Management Console

2. V¨alj Toolbox→ Public Folder Management Console 3. V¨alj Default Public Folders

4. H¨ogerklicka, v¨alj New Public Folder...

5. Ange “Sekondens kontakter” som namn och skapa

N¨ar jag utvecklade webbtj¨ansten uppt¨ackte jag att en anv¨andare beh¨ovde ¨

agarr¨attigheter f¨or att kunna utf¨ora n¨odv¨andiga operationer, anledningen till att det beh¨ovdes tar jag upp i kapitel 5.

Ge ¨agarr¨attigheter till anv¨andaren adde@vestlund.se med terminal: Add−Publ i c Fo l de r Cli e nt Pe r mi ssi o n −I d e n t i t y

‘ ‘\ Sekondens kontakter ’ ’ −AccessRights owner −User adde

N¨ar jag skulle testa webbtj¨ansten i min testmilj¨o beh¨ovde jag en anv¨andare med r¨attigheter att imitera anv¨andare i Exchange. Det ¨ar genom imite-ring av Exchangeanv¨andare som operationer kan utf¨oras f¨or den imiterade anv¨andaren, till exempel att kopiera en kontakt fr˚an gemensam kontakt-mapp till privat kontaktkontakt-mapp. Dessa r¨attigheter gav jag till anv¨andaren ad-de@vestlund.se genom att f¨olja instruktionerna f¨or att konfigurera imitering i ett blogginl¨agg skrivet av Tomasz Rabiski [3].

4.3

AddeServer2

Jag installerade en till server, ¨amnad f¨or SharePoint Server 2007 och SQL Server 2005.

4.3.1

Installation

Jag installerade Windows Server 2008 R2 x64 Standard Edition och f¨oljde instruktionerna i installationsguiden som f¨oljde med p˚a skivan.

(20)

4.4. SQL SERVER KAPITEL 4. INSTALLATION

4.3.2

Konfiguration

F¨oljande konfigurerades p˚a denna server: Datornamn: AddeServer2

Dom¨an: vestlund.se N¨atverksinformation:

IP-adress: 192.168.0.231 Gateway: 192.168.0.1

DNS server: 192.168.0.230(AddeServer) Windows Update och omstart

Innan installation av SharePoint Server p˚a AddeServer2 beh¨ovde service-kontot sharepoint admin lokala administrat¨orsr¨attigheter p˚a AddeServer2 f¨or att kunna installera SharePoint Server.

Ge servicekonto sharepoint admin@vestlund.se administrat¨orsr¨attigheter: 1. G˚a till Active Directory Users And Computers

2. V¨alj vestlund.se→ Builtin 3. V¨alj Administrators→ Members

4. L¨agg till servicekontot sharepoint admin

4.4

SQL Server

Installationsguiden jag f¨oljde f¨or att installera SharePoint Server kr¨avde att SQL Server 2005 var installerat och att servicekontot jag skapade tidigare, sharepoint admin, hade vissa r¨attigheter i SQL Server.

4.4.1

Installation

SQL Server 2005 x64 Enterprise Edition installerade jag p˚a AddeServer2 med standardval i installationsguiden.

4.4.2

Konfiguration

Installationsguiden f¨or SharePoint Server kr¨avde att servicekontot share-point admin hade rollerna Security Administrator och Database Creator tilldelat i SQL Server.

Tilldela servicekontot sharepoint admin rollerna Security Administrator och Database Creator i SQL Server:

(21)

4.5. SHAREPOINT SERVER 2007 KAPITEL 4. INSTALLATION

2. Anslut till ADDESERVER2

3. V¨alj ADDESERVER2→ Security → Logins

4. H¨ogerklicka, v¨alj New Login och l¨agg till servicekontot share-point admin@vestlund.se

5. N¨ar sharepoint admin finns som login, h¨ogerklicka p˚a sharepoint admin 6. V¨alj Properties → User Mappings

7. Kryssa f¨or dbcreator och securityadmin

I min planerade l¨osning hade jag t¨ankt att anv¨anda tv˚a databastabeller, f¨or dessa beh¨ovde jag skapa en databas och sedan tabellerna. De kolumner jag t¨ankt inkludera i tabellerna var ej de jag anv¨ande i slut¨andan, i kapitel 5 f¨orklarar jag varf¨or. I nedanst˚aende beskrivning visar jag hur jag skapade tabellerna f¨or den slutliga l¨osningen.

Skapa databas ExchangeContactSync:

1. G˚a till SQL Server Management Studio 2. Anslut till ADDESERVER2

3. V¨alj ADDESERVER2→ Databases 4. H¨ogerklicka, v¨alj New Database...

5. Fyll i “ExchangeContactSync” som namn och skapa Skapa databastabellerna MarkedContacts och SyncedContacts:

1. G˚a till SQL Server Management Studio 2. Anslut till ADDESERVER2

3. V¨alj ADDESERVER2→ Databases → ExchangeContactSync → Tables

4. H¨ogerklicka, v¨alj New Table... 5. Fyll i “MarkedContacts” som namn

6. Skapa tre kolumner: username, private id och public id av typen varchar

7. Repetera steg 4-6 f¨or SyncedContacts

4.5

SharePoint Server 2007

4.5.1

Installation

Vid installation och konfigurering av SharePoint Server 2007 anv¨ande jag en guide skriven av Michael Kearn [2]. Jag har f¨oljt den mycket noga och kommer d¨arf¨or inte skriva om installationen h¨ar, utan den intresserade kan g˚a till hemsidan jag angett i litteraturf¨orteckningen. Guiden g˚ar noga igenom vad man ska v¨alja i installationsguiden och hur SharePoint ska konfigureras efter installationen.

(22)

4.6. INTEGRATIONS˚ATG ¨ARDER KAPITEL 4. INSTALLATION

4.5.2

Konfiguration

Jag konfigurerade min SharePoint Server enligt guiden skriven av Michael Kearn [2] men n¨ar jag f¨ors¨okte g˚a in p˚a mitt intran¨at i SharePoint lyckades jag inte, jag fick skriva in anv¨andarnamn och l¨osenord tre g˚anger och sedan blev webbsidan vit. Det var ett k¨ant problem som hanterades i ett blog-ginl¨agg av Michalel Nemtsev [4]. L¨osningen var att l¨agga in f¨oljande rader i “C:\Windows\System32\drivers\etc\hosts” p˚a AddeServer:

1 9 2 . 1 6 8 . 0 . 2 3 1 sspadmin 1 9 2 . 1 6 8 . 0 . 2 3 1 i n t r a n e t 1 9 2 . 1 6 8 . 0 . 2 3 1 m y s i t e

4.6

Integrations˚

atg¨

arder

N¨ar jag utvecklade till min testmilj¨o var det inte helt s¨akert att allting skulle fungera utan problem vid integrering av min l¨osning fr˚an virtuell milj¨o till Sekondens servrar. F¨or att minimera problem vid integrering installerade jag mina virtuella servrar med likadana versioner av den mjukvara som Sekonden anv¨ande och jag sparade alla l¨ankar jag anv¨ande mig av f¨or att installera och konfigurera min testmilj¨o. Om det skulle uppst˚a problem skulle jag enkelt kunna se vad jag gjort f¨or inst¨allningar p˚a min testmilj¨o och j¨amf¨ora med Sekondens servrar.

(23)

Kapitel 5

Webbtj¨

anst

5.1

Testfall

Innan jag b¨orjade utveckla webbtj¨ansten satte jag upp tydliga testfall. Test-fallen anv¨ande jag f¨or att specificera vad webbtj¨ansten skulle utf¨ora samt vad den inte skulle utf¨ora. Med s˚adan design kunde jag utveckla mot testfal-len och n¨ar mitt program klarade testfallen visste jag att den gjorde vad den skulle. Dessa testfall var inte automatiserade utan de skrevs ner i textformat. Testfallen hade formen:

F¨oruts¨attningar H¨ar skrev jag ner vilka f¨oruts¨attningar testfallet hade p˚a anv¨andare, vilka kontakter de skulle ha, vilka kontakter som skulle finnas i en gemensam mapp och vilken version av Exchange Server.

Utf¨orande H¨ar skrev jag hur testfallet skulle utf¨oras n¨ar jag testade, of-tast vilka kontakter som skulle v¨aljas f¨or synkronisering f¨or vilken anv¨andare.

F¨orv¨antat resultat Vilket resultat som f¨orv¨antades efter genomf¨orande av testfallet.

Jag skilde p˚a lokala och skarpa testfall eftersom anv¨andarkonton och kontakter s˚ag annorlunda ut samt testade jag den lokala milj¨on med att ange en falsk gemensam kontaktmapp. Testfallen finns bifogade i appendix A.

5.2

Utveckling

5.2.1

Certifikat

Jag b¨orjade med att utveckla en minimalistisk webbtj¨anst d¨ar jag provade att koppla upp webbtj¨ansten mot Exchangeservern och skicka ett mail som

(24)

5.2. UTVECKLING KAPITEL 5. WEBBTJ ¨ANST

Figur 5.1: Nya databastabeller

en anv¨andare i Exchange. N¨ar jag utvecklade denna var det allra f¨orsta som kr¨avdes att tj¨ansten godk¨ande ett certifikat fr˚an servern. Jag spenderade en del tid till att f¨ors¨oka skapa certifikat i min virtuella server och sedan godk¨anna detta i webbtj¨ansten, dock fick jag inget grepp om hur det skulle g˚a till och jag hittade inga bra exempel. Till slut fr˚agade jag personen som var systemadministrat¨or p˚a Sekonden om hur jag skulle g¨ora med certifikat och han sade ˚at mig att alltid godk¨anna certifikatet fr˚an klientsidan, allts˚a i webbtj¨ansten. Detta innebar att jag inte beh¨ovde skapa n˚agot certifikat alls utan alltid ta emot det certifikat Sekondens server senare skulle skicka och godk¨anna det.

5.2.2

Kontaktid

N¨ar jag kunde skicka ett mail med webbtj¨ansten ¨andrade jag den till att h¨amta kontaktinformation ist¨allet. B˚ade kontaktinformation fr˚an privat och gemensam kontaktmapp. Jag hittade bra exempel [10] som jag kunde f¨olja och jag fick snabbt ut information om en anv¨andares kontakter.

N¨asta steg blev att f¨ors¨oka kopiera en kontakt fr˚an den gemensamma mappen till den privata och det var n¨ar jag f¨ors¨okte med detta som jag uppt¨ackte att den planerade l¨osningen inte skulle fungera helt. Det gick inte att spara en kontakt med attributet “Id” satt, Exchange till¨at inte det.

Jag hade planerat att det id en kontakt, fr˚an den gemensamma mappen hade, skulle anv¨andas som id ¨aven f¨or motsvarande kontakt i den privata mappen, vilket reflekterades i databastabellerna jag t¨ankte anv¨anda(se figur 3.2).

Jag kom snabbt fram till en ny l¨osning vilket liknade den tidigare. Jag skulle spara id f¨or b˚ade privat och gemensam kontakt i databasen, tillsam-mans med anv¨andarnamn. De nya databastabellerna skulle se ut enligt fi-gur 5.1.

5.2.3

Egendefinierade attribut

Den nya l¨osningen, att spara id f¨or privat och gemensam kontakt, medf¨orde en komplikation med en g˚ang. Endast en metod var l¨amplig f¨or att kopiera en kontakt fr˚an gemensam mapp till privat mapp, n¨amligen metoden “Copy” p˚a ett kontaktobjekt. Den metoden kopierade kontakten till specificerad mapp och returnerade den kopierade kontaktens id, vilket var precis vad jag s¨okte efter. Dock l¨aste jag i tooltip f¨or funktionen(Visual Studio 2010) att den inte returnerade n˚agonting vid kopiering fr˚an en mapp till en annan,

(25)

5.2. UTVECKLING KAPITEL 5. WEBBTJ ¨ANST

vilket betydde att jag skulle beh¨ova hitta den kontakt jag precis kopierat f¨or att f˚a tag i dess id.

Jag var os¨aker p˚a hur jag skulle b¨ara mig ˚at f¨or att hitta den kopierade kontakten i den privata kontaktmappen d˚a attributet “Id” var det enda riktigt unika v¨ardet f¨or ett kontaktobjekt. Med “riktigt unikt” menar jag att det var om¨ojligt att tv˚a kontakter, i en och samma mapp, hade exakt samma v¨arde p˚a attributet “Id”. Jag t¨ankte att namn, f¨oretagsnamn och till exempel telefonnummer skulle kunna anv¨andas f¨or att identifiera en kontakt, men hypotetiskt sett skulle de kunna vara satta till exakt samma v¨arden p˚a tv˚a olika kontakter.

Efter en del funderande kontaktade jag min handledare p˚a Sekonden f¨or r˚adgivning. Han gav mig ett utm¨arkt r˚ad med en g˚ang, att m¨arka upp den gemensamma kontakten med ett v¨arde, ett synkroniseringsid, innan kopiering till den privata kontaktmappen. N¨ar kopieringen utf¨orts skulle jag kunna s¨oka i den privata kontaktmappen efter det synkroniseringsid jag placerade p˚a kontakten och p˚a s˚a vis hitta r¨att kontakt.

Efter kort s¨okning p˚a Google hittade jag n˚agot som kallades “Extended properties” p˚a kontaktobjekt. En “Extended property” ¨ar ett attribut p˚a ett kontaktobjekt, med skillnaden fr˚an vanliga attribut att programmera-ren definierar det. Allts˚a kan en programmerare ut¨oka ett kontaktobjekt med ¨onskade attribut, vilket var precis vad jag beh¨ovde f¨or att placera ett synkroniseringsid p˚a ett kontaktobjekt innan kopiering. Jag hittade snabbt instruktioner f¨or att skapa ett egendefinerat attribut p˚a ett kontaktobjekt, men jag hittade inga bra instruktioner f¨or att l¨asa ett egendefinerat attribut. Jag hittade ett f˚atal olika exempel men de var utdaterade och jag visste att det borde ha funnits en enklare metod att utf¨ora det p˚a ¨an det jag hittade eftersom de exempel jag hittade anv¨ande en ¨aldre version av det API jag anv¨ande.

Till slut hittade jag till en forumtr˚ad d¨ar en person hade fr˚agat om ett liknande problem och f˚att svar. Jag trodde att svaret skulle hj¨alpa mig men jag tog mig inte vidare. D˚a skrev jag ett inl¨agg i forumtr˚aden, riktat till den person som svarat, och fr˚agade hur jag skull b¨ara mig ˚at f¨or att l¨asa ett egendefinierat attribut fr˚an ett kontaktobjekt, jag gav ¨aven exempel p˚a hur jag hade gjort och vad jag ville ˚astadkomma.

En dag senare hade jag f˚att svar i forumtr˚aden, svaret gav mig ett ex-empel p˚a hur jag skulle b¨ara mig ˚at f¨or att l¨asa egendefinierade attribut. Jag testade snabbt att implementera det svar jag f˚att och det fungerade utm¨arkt. Allts˚a slutade det med att jag m¨arkte upp en gemensam kontakt med ett synkroniseringsid, egendefinierat attribut, innan kopiering till pri-vat kontaktmapp och sedan s¨okte jag i den privata kontaktmappen efter en kontakt med samma synkroniseringsid. N¨ar jag hittade r¨att kontakt kun-de jag komma ˚at den privata kontaktens attribut “Id” och spara undan i databasen.

(26)

5.3. INTEGRATION KAPITEL 5. WEBBTJ ¨ANST

5.2.4

Uppm¨

arkning av gemensamma kontakter

Att skapa ett egendefinierat attribut innan kopiering till privat kontaktmapp visade sig ganska snabbt att det inte alltid fungerade. N¨ar jag k¨orde tester med flera anv¨andare, med anv¨andare menar jag en imiterad anv¨andare, som skulle kopiera kontakter m¨arkte jag att endast en anv¨andare kunde skapa det egendefinierade attributet, den anv¨andare med tillr¨ackliga r¨attigheter.

F¨or att en anv¨andare skulle kunna skapa ett egendefinierat attribut kr¨avdes r¨attigheter f¨or att ¨andra p˚a kontakter i den publika mappen, dessa r¨attigheter erh¨olls enklast genom att ge en anv¨andare ¨agarr¨attigheter f¨or den publika mappen. Sekonden ville sj¨alvklart inte att alla deras anv¨andare skulle f˚a dessa r¨attigheter, allts˚a beh¨ovde jag en anv¨andare som gavs dessa r¨attigheter och som denna anv¨andare m¨arka upp alla gemensamma kontak-ter med det egendefinierade f¨altet innan programmet b¨orjade synkronisera kontakter f¨or alla anv¨andare.

Med uppm¨arkning av gemensamma kontakter var det senare ingenting annat som kr˚anglade i min testmilj¨o, jag implementerade synkroniserings-algoritmen och k¨orde igenom alla mina lokala testfall, inga misslyckades.

5.3

Integration

I denna underrubrik redog¨or jag f¨or hur jag bar mig ˚at f¨or att f¨orbereda Sekondens server f¨or min webbtj¨anst, vilka hinder jag st¨otte p˚a och hur jag ¨

overkom dem. All konfiguration i denna underrubrik utf¨ordes p˚a Sekondens servrar, server 1 och server 2 (figur 2.1). En del konfiguration ser annorlunda ut j¨amf¨ort med konfigurationen av min testmilj¨o p˚a grund av att Sekondens servrar hade Windows Server 2003 installerat j¨amf¨ort med servrarna i min testmilj¨o som hade Windows Server 2008 R2 installerat.

5.3.1

Konfigurering av Sekondens server

Till att b¨orja med beh¨ovdes en anv¨andare med en egen brevl˚ada(eng. mail-box) i Exchange. Brevl˚adan beh¨ovdes f¨or att anv¨andaren skulle kunna h¨amta information fr˚an publika mappar, i mitt fall kontaktuppgifter.

Skapa anv¨andare ExchangeContactSync(server 1): 1. G˚a till Active Directory Users and Computers 2. V¨alj sekonden.se→ Users

3. H¨ogerklicka, v¨alj New→ User

4. Fyll i uppgifter f¨or en anv¨andare med anv¨andarnamn “Exchange-ContactSync”

Skapa brevl˚ada f¨or anv¨andare ExchangeContactSync(server 2): 1. G˚a till Exchange Management Console

(27)

5.3. INTEGRATION KAPITEL 5. WEBBTJ ¨ANST

2. V¨alj Recipient Configuration→ Mailbox 3. V¨alj New Mailbox...

4. Skapa en User Mailbox f¨or anv¨andaren ExchangeContactSync Anv¨andaren ExchangeContactSync beh¨ovde ¨agarr¨attigheter till den ge-mensamma kontaktmappen f¨or att kunna ¨andra p˚a kontakter som andra anv¨andare skapat.

Ge ¨agarr¨attigheter till anv¨andaren ExchangeContactSync med terminal: Add−Publ i c Fo l de r Cli e nt Pe r mi ssi o n −I d e n t i t y

‘ ‘\ Sekondens kontakter ’ ’ −AccessRights owner −User ExchangeContactSync

F¨or att kunna imitera anv¨andare i Exchange beh¨ovdes vissa r¨attigheter i Active Directory Sites and Services p˚a server 1.

Normalt konfigureras imitering av anv¨andare p˚a f¨oljande s¨att: 1. G˚a till Active Directory Sites and Services

2. V¨alj Show Services Node fr˚an menyalternativet View

3. V¨alj Services→ Microsoft Exchange → first organization → Ad-ministrative Groups→ Exchange Administrative Groups → Ser-vers→ servernamn

4. V¨alj Properties → Security

5. L¨agg till ExchangeContactSync som medlem

6. Kryssa f¨or tillst˚and f¨or Exchange Web Services Impersonation 7. G˚a till Active Directory Sites and Services

8. V¨alj Show Services Node fr˚an menyalternativet View

9. V¨alj Services→ Microsoft Exchange → first organization → Ad-ministrative Groups→ Exchange Administrative Groups → Ser-vers→ servernamn → Information Store → First Storage Group

→ Mailbox Database

10. V¨alj Properties → Security

11. L¨agg till ExchangeContactSync som medlem

12. Kryssa f¨or tillst˚and f¨or Allow Impersonation to Personal Ex-change Information

Jag skrev “normalt” f¨or att jag f¨ors¨okte med ovanst˚aende konfigurering men det var ej m¨ojligt. Av n˚agon anledning gick det inte att utf¨ora steg 4 eller steg 10. I Properties fanns endast en flik, Description. Varken jag eller Sekondens systemadministrat¨or visste vad orsaken till detta var eller hur vi skulle l¨osa problemet.

(28)

5.3. INTEGRATION KAPITEL 5. WEBBTJ ¨ANST

Jag spenderade en del tid till att fels¨oka detta men tyv¨arr hittade jag inga svar till varf¨or endast fliken Description visades. Jag b¨orjade ist¨allet leta efter alternativa s¨att att konfigurera imitering och hittade en l¨osning d¨ar terminalkommandon exekverades ist¨allet f¨or att konfigurera det hela genom ett gr¨anssnitt.

Konfigurera imitering f¨or anv¨andaren ExchangeContactSync med termina-len(server1, raderna har delats upp f¨or att f˚a plats):

Add−ADPermission −I d e n t i t y

( g e t−exchangeserver ) . DistinguishedName −User ( Get−User −I d e n t i t y ExchangeContactSync |

s e l e c t−o b j e c t ) . i d e n t i t y −AccessRights GenericAll

−InheritanceType Descendents

Add−ADPermission −I d e n t i t y

( g e t−exchangeserver ) . DistinguishedName −User ( Get−User −I d e n t i t y ExchangeContactSync | s e l e c t−o b j e c t ) . i d e n t i t y −ExtendedRight ms−Exch−EPI−Impersonation

Add−ADPermission −I d e n t i t y

( g e t−exchangeserver ) . DistinguishedName −User ( Get−User −I d e n t i t y ExchangeContactSync | s e l e c t−o b j e c t ) . i d e n t i t y −ExtendedRight ms−Exch−EPI−May−Impersonate

Add−ADPermission −I d e n t i t y

( g e t−exchangeserver ) . DistinguishedName −User ( Get−User −I d e n t i t y ExchangeContactSync |

s e l e c t−o b j e c t ) . i d e n t i t y −ExtendedRights Send−As Add−ADPermission −I d e n t i t y

( g e t−exchangeserver ) . DistinguishedName −User ( Get−User −I d e n t i t y ExchangeContactSync |

s e l e c t−o b j e c t ) . i d e n t i t y −ExtendedRights Receive−As En databas ExchangeContactSync, tv˚a tabeller MarkedContacts och Syn-cedContacts samt ge anv¨andaren ExchangeContactSync l¨as- och skrivr¨attigheter till databasen kr¨avdes av webbtj¨ansten.

Skapa databas ExchangeContactSync:

1. G˚a till SQL Server Management Studio 2. Anslut till server 2

3. V¨alj server 2 → Databases 4. H¨ogerklicka, v¨alj New Databas...

5. Fyll i “ExchangeContactSync” som namn och skapa Skapa databastabellerna MarkedContacts och SyncedContacts:

(29)

5.3. INTEGRATION KAPITEL 5. WEBBTJ ¨ANST

1. G˚a till SQL Server Management Studio 2. Anslut till server 2

3. V¨alj server 2 → Databases → ExchangeContactSync → Tables 4. H¨ogerklicka, v¨alj New Table...

5. Fyll i “MarkedContacts” som namn

6. Skapa tre kolumner: username, private id och public id av typen varchar

7. Repetera steg 4-6 f¨or SyncedContacts

Ge anv¨andaren ExchangeContactSync l¨as- och skrivr¨attigheter till databa-sen

1. G˚a till SQL Server Management Studio 2. Anslut till server 2

3. V¨alj server 2 → Security → Logins

4. H¨ogerklicka, v¨alj New Login och l¨agg till anv¨andaren Exchange-ContactSync

5. N¨ar ExchangeContactSync finns som login, h¨ogerklicka p˚a Ex-changeContactSync

6. V¨alj Properties → User Mappings

7. Markera databasen ExchangeContactSync 8. Kryssa f¨or db datareader och db datawriter

Webbtj¨ansten beh¨ovde en webbsida att exekvera i och servern beh¨ovde konfigureras till att alltid exekvera webbtj¨ansten som anv¨andaren Exchange-ContactSync s˚a att jag inte beh¨ovde ange anv¨andaruppgifter i program-koden. F¨or att alltid exekvera som ExchangeContactSync skapade jag en applikationspool(eng. application pool) med Internet Information Services Manager och konfigurerade denna till att alltid exekvera som Exchange-ContactSync. En applikationspool anv¨ands f¨or att isolera en eller flera ASP .NET webapplikationer och d¨armed ha m¨ojlighet att anv¨anda olika konfigu-rationer och ¨oka p˚alitligheten.

Skapa applikationspool

1. G˚a till Internet Information Services Manager 2. V¨alj server 2 → Application Pools

3. H¨ogerklicka, v¨alj New→ Application Pool... 4. Ange ExchangeContactSync som namn och skapa Konfigurera applikationspoolen

(30)

5.3. INTEGRATION KAPITEL 5. WEBBTJ ¨ANST

2. V¨alj server 2 → Application Pools 3. H¨ogerklicka, v¨alj Properties→ Identity

4. Markera Configurable och ange anv¨andaruppgifter f¨or anv¨andaren ExchangeContactSync

Skapa fysisk mapp f¨or webbtj¨ansten 1. G˚a till “D:\inetpub\wwwroot”

2. Skapa en mapp med namnet “ExchangeContactSync” Skapa applikation i Internet Information Services Manager

1. G˚a till Internet Information Services Manager 2. V¨alj server 2 → Web sites → Default Web Site 3. H¨ogerklicka, v¨alj New→ Web Site...

4. Skapa applikation(web site) med namnet “ExchangeContactSync”, fysisk adress “D:\inetpub\wwwroot\ExchangeContactSync” och med r¨attighet att exekvera scripts

5. H¨ogerklicka p˚a nyskapta applikation, v¨alj Properties → Virtual Directory

6. Som applikationspool, v¨alj ExchangeContactSync 7. V¨alj fliken ASP.NET

8. Som .NET version, v¨alj .NET 4

Det var all konfiguration jag utf¨orde p˚a Sekondens servrar f¨or att f¨orbereda dem f¨or min webbtj¨anst. F¨or att exekvera webbtj¨ansten kunde jag kopie-ra webbtj¨anstfilerna till “D:\inetpub\wwwroot\ExchangeContactSync” och

sedan i en webbl¨asare g˚a till adressen “http://localhost/ExchangeContactSync/namn

p˚a webbtj¨anst ” f¨or att testa den.

5.3.2

amtning av gemensam kontaktmapp

Konfigurationen f¨or imitering i f¨oreg˚aende underrubrik, 5.3.1, utf¨orde jag inte fr˚an f¨orsta b¨orjan utan den kom till i efterhand n¨ar jag st¨otte p˚a problem och r¨attade till det. Anledningen till att den konfigurationen inte kom med fr˚an b¨orjan var p˚a grund av slarv.

Konfigurationen utf¨ordes tillsammans med systemadministrat¨oren p˚a Se-konden, d˚a han var den enda med r¨attigheter att utf¨ora konfigurationen. N¨ar vi skulle konfigurera imitering hade jag inte de instruktioner jag f¨oljt framf¨or mig, men vi hittade en r¨attighet f¨or anv¨andaren ExchangeContact-Sync med namnet “impersonation”(sv. imitering) och antog att det var r¨att. N¨ar jag ans˚ag att n¨odv¨andig konfiguration utf¨orts testade vi att exekvera min webbtj¨anst i webbl¨asaren. Den hittades men den kraschade n¨ar vi kal-lade p˚a synkroniseringsmetoden.

(31)

5.3. INTEGRATION KAPITEL 5. WEBBTJ ¨ANST

Detta fel tog mig en del tid att fels¨oka d˚a de felmeddelanden jag fick tillbaka inte n¨amnde vad som var problemet, men till slut m¨arkte jag att det var n˚agot fel med h¨amtningen av den gemensamma kontaktmappen. Jag anv¨ande mig av en funktion som letade igenom mapparna i Exchange och returnerade den gemensamma kontaktmappen. Denna funktion anropade jag och sparade v¨ardet i en variabel, direkt efter anropet f¨ors¨akrade jag mig med hj¨alp av styrsatser(if-satser) att variabeln, som jag sparade resultatet i, inte var null(inget v¨arde). Koden var i stil med listing 5.1.

Listing 5.1: Kodexempel c o n t a c t f o l d e r = G e t P u b l i c C o n t a c t F o l d e r ( ) ; i f ( c o n t a c t f o l d e r == n u l l )

throw e x c e p t i o n ( ” C o n t a c t f o l d e r i s NULL” ) ;

P˚a kodraderna efter exemplet i listing 5.1 anv¨andes kontaktmappen och det var d˚a programmet kraschade. Jag t¨ankte att det inte borde vara ett nullv¨arde p˚a kontaktmappen som orsakade kraschen eftersom jag explicit f¨ors¨akrat mig om detta med styrsatser, men f¨or att vara s¨aker provade jag att skriva in liknande styrsatser i slutet av funktionen som h¨amtade den gemensamma kontaktmappen. Precis innan raden d¨ar funktionen skulle re-turnera kollade jag om returv¨ardet var null eller inte och det visade sig att det var null. Detta f¨orvirrade mig eftersom jag, efter funktionsanropet, kollade att resultatet inte var null men ¨and˚a gick programmet vidare och kraschade. Jag vet fortfarande inte hur programmet kunde passera styrsat-sen men ist¨allet f¨or att fokusera p˚a det inspekterade jag funktionen f¨or att se varf¨or metoden returnerade null.

Jag hittade det med en g˚ang. Namnet p˚a den gemensamma kontakt-mappen var “Sekondens kontakter” och jag hade s¨okt efter en kontaktmapp med namnet “Sekondens Kontakter”(uppm¨arksamma stora K i b¨orjan av Kontakter), allts˚a skedde kraschen p˚a grund av en felstavning i min kod. Anledningen till att dessa programrader fungerade i min testmilj¨o var f¨or att jag hade angett “Sekondens Kontakter” som namn p˚a den gemensamma kontaktmappen.

5.3.3

Fel p˚

a r¨

attigheter

N¨ar felstavningen av den gemensamma kontaktmappen r¨attats till kun-de mitt program exekvera fram tills kun-det skulle imitera anv¨andare i Ex-change. Programmet kraschade och visade felmeddelandet att anv¨andaren ExchangeContactSync inte hade nog med r¨attigheter. Jag kollade d˚a upp hur jag hade konfigurerat r¨attigheter f¨or imitering i min testmilj¨o och uppt¨ackte med en g˚ang att det skilde sig fr˚an hur jag och systemadministrat¨oren hade konfigurerat det p˚a Sekondens server. Jag gick till systemadministrat¨oren f¨or att r¨atta till detta, denna g˚ang med instruktionerna och det var d˚a vi st¨otte p˚a problemet jag beskrev i underrubrik 5.3.1, stycket om imitering, n¨amligen att det saknades flikar i det gr¨anssnitt jag anv¨ant mig av f¨or att

(32)

5.3. INTEGRATION KAPITEL 5. WEBBTJ ¨ANST

konfigurera r¨attigheter till imitering i min testmilj¨o. F¨orsta tanken var att systemadministrat¨oren saknade r¨attigheter varf¨or vissa flikar saknades, men det var absurt d˚a systemadministrat¨oren hade konfigurerat alla Sekondens servrar, all programvara och hade fulla r¨attigheter ¨overallt i systemet, detta f¨ors¨akrade vi oss om f¨or s¨akerhets skull. Vi lyckades inte l¨osa problemet s˚a jag gick tillbaka till mitt kontor f¨or att s¨oka p˚a internet efter en l¨osning.

Efter mycket s¨okning hade jag inte hittat en l¨osning till problemet s˚a jag startade en ny tr˚ad p˚a ett Microsoftforum och f¨orklarade mitt problem. Da-gen d¨arp˚a hade jag f˚att svar, inte p˚a problemet med flikar som inte visades utan hur jag kunde konfigurera r¨attigheterna med en terminal ist¨allet f¨or ett gr¨anssnitt, en l¨ank var bifogad med instruktioner. L¨anken var till blog-ginl¨agget “Exchange 2007 Impersonation - Debugging Protocol”[5] som in-neh¨oll de kommandon jag anv¨ande f¨or att konfigurera Sekondens server med imiteringsr¨attigheter ˚at anv¨andaren ExchangeContactSync(kommandon finns i underrubrik 5.3.1, stycket om imitering).

Med r¨attigheterna konfigurerade genom terminalen kunde mitt program exekvera allting utan att krascha och den gjorde det den skulle, kopiera kon-takter fr˚an den gemensamma kontaktmappen till den imiterade anv¨andarens privata kontaktmapp.

5.3.4

Service pack 2

Webbtj¨ansten exekverade och den utf¨orde sin uppgift men ett litet problem ˚aterstod som jag hittade vid fels¨okningen av det felstavade kontaktmapps-namnet(se underrubrik 5.3.2). N¨ar webbtj¨ansten skulle m¨arka upp gemen-samma kontakter med mitt egendefinierade attribut var det vissa kontakter som inte kunde m¨arkas upp. Efter kort s¨okning p˚a internet hittade jag en tr˚ad, p˚a ett Microsoftforum, d¨ar en person fr˚agat om samma problem jag st¨ott p˚a. Personen hade f˚att svar fr˚an Microsoftpersonal att det var en bugg i Service Pack 1(Exchange Server 2007) som gjorde att egendefinierade at-tribut inte kunde s¨attas p˚a kontakter utan attributet “File As” satt till ett v¨arde. Personen fr˚an Microsoft skrev ocks˚a att detta hade r¨attats till i Service Pack 2.

Jag kollade upp vilken version av Exchange Server 2007 jag hade i min testmilj¨o och vilken version Sekonden hade p˚a sin server, det visade sig att jag hade Service Pack 2 och Sekonden hade Service Pack 1. Det hade jag inte t¨ankt p˚a n¨ar jag utvecklade, jag t¨ankte hela tiden att jag hade samma version som Sekonden.

Jag uppm¨arksammade Sekondens systemadministrat¨or om detta och han hade inget emot att uppgradera till Service Pack 2. N¨asta dag var det upp-daterat och webbtj¨ansten fungerade felfritt. Alla mina testfall gick igenom utan problem.

(33)

Kapitel 6

Windowstj¨

anst

I kapitlet om den planerade l¨osningen, kapitel 3, hade jag planerat att skapa ett program med uppgiften att anropa webbtj¨anstens synkroniseringsmetod med specificerat tidsintervall. Detta program var t¨ankt att alltid exekvera p˚a server 2, figur 2.1, f¨or att kontaktinformationen skulle vara uppdate-rad. Efter kort s¨okning p˚a Google hittade jag en l¨amplig programtyp f¨or denna sorts program, l˚angtidsexekverande, som kallades Windowstj¨anst. En Windowstj¨anst installeras i Windows och programmeraren kan konfigurera denna att automatiskt starta sig sj¨alv vid omstart av datorn s˚a att den alltid exekverar.

N¨ar jag s¨okte efter en metod att inkludera en referens till webbtj¨ansten i Windowstj¨ansten, och att anropa den, hittade jag en guide, skriven av Andrew Needleman [6], med instruktioner f¨or att utf¨ora exakt detta. Guiden hj¨alpte mig att utveckla allt jag beh¨ovde f¨or att anropa min webbtj¨anst och anropa den med specificerat tidsintervall.

6.1

˚

Atkomst till webbtj¨

anst

N¨ar jag inkluderade en referens till webbtj¨ansten i utvecklingsprojektet f¨or Windowstj¨ansten, uppt¨ackte jag att en speciell ˚atkomstfil p˚a servern, som tillhandah¨oll webbtj¨ansten, var tvungen att existera. Denna ˚atkomstfil age-rade som ett s¨akerhetslager och i den specificerades vilka adresser som gavs ˚atkomst till webbtj¨ansten. ˚Atkomstfilen var mycket enkel att skapa, den beh¨ovde inneh˚alla ett f˚atal XML-taggar(eXtended Markup Language) och i en av taggarna angav jag en HTTP-adress till Sekondens dom¨an, vilket in-nebar att endast applikationer inom Sekondens dom¨an skulle kunna anropa webbtj¨ansten.

˚

Atkomstfilen var tvungen att placeras i webbroten p˚a servern. F¨orsta g˚angen jag l¨aste det f¨orstod jag inte riktigt vad som menades, enligt en in-struktion jag hittat skulle ˚atkomstfilen placeras i mappen “wwwroot”, s˚a jag placerade filen i “server 2\D:\inetpub\wwwroot\”. Det l¨oste inte problemet,

(34)

6.2. INSTALLATIONSPROBLEM KAPITEL 6. WINDOWSTJ ¨ANST

Windowstj¨ansten jag utvecklade klagade fortfarande p˚a att den inte hittade ˚atkomstfilen p˚a servern. Vid lite n¨armare eftertanke kom jag p˚a att servern hade en mapp “wwwroot” p˚a h˚arddisk C. Jag provade att placera filen i “server 2\C:\inetpub\wwwroot\” ist¨allet och d˚a kunde Windowstj¨ansten anropa webbtj¨ansten utan problem.

6.2

Installationsproblem

Utvecklingen av Windowstj¨ansten var enkel och gick snabbt men att instal-lera var ganska problematiskt. Jag hittade finstal-lera olika guider f¨or att installera en Windowstj¨anst p˚a en server, en gick ut p˚a att skapa ett installationspro-jekt som utf¨orde installationen och en annan gick ut p˚a att Windowstj¨ansten installerade sig sj¨alv vid f¨orsta exekveringen. Jag provade flera varianter men jag lyckades inte med n˚agot till att b¨orja med.

Till slut uppt¨ackte jag att Windowstj¨ansten hade installerats med in-stallationsprojektvarianten men den hade standardnamnet, service1, ist¨allet f¨or det namn jag trodde att jag specificerade. Dock fungerade det inte att starta den och det enda meddelandet jag fick var att det tog f¨or l˚ang tid att starta den s˚a att servern slutade f¨ors¨oka. Jag hade ingen aning om vad som var fel och efter en del fels¨okning gav jag upp f¨or tillf¨allet och b¨orjade ist¨allet med att utveckla gr¨anssnittet f¨or synkroniseringsval.

N¨ar jag k¨ande mig f¨ardig med gr¨anssnittet f¨ors¨okte jag ordna till Win-dowstj¨ansten. Denna g˚ang b¨orjade jag om fr˚an b¨orjan och jag f¨oljde en guide skriven av Mahmoud Nasr [7]. Det var den f¨orsta guiden jag testa-de tidigare och testa-det var testa-den som inneh¨oll ett installationsprojekt som in-stallationsmetod. N¨ar jag f¨oljde guiden denna g˚ang gick jag igenom allting l˚angsamt och jag m¨arkte snabbt att jag hade missat n˚agra steg vid ska-pandet av Windowstj¨ansten tidigare. Ett av misstagen var att konfigurera Windowstj¨ansten att exekvera som local service ist¨allet f¨or local system. Antagligen hade detta orsakat att installationen inte kunde genomf¨oras p˚a grund av bristande r¨attigheter.

Installationen och startandet av Windowstj¨ansten gick felfritt denna g˚ang och det utf¨orde sin uppgift med specificerat tidsintervall. Jag anv¨ande mig inte av n˚agra specifika testfall f¨or att testa Windowstj¨ansten, jag f¨ors¨akrade mig bara om att den lyckades kalla p˚a webbtj¨ansten.

(35)

Kapitel 7

Gr¨

anssnitt

Gr¨anssnittet till webbtj¨ansten skulle vara enkelt och det skulle exekvera p˚a en webbsida i SharePoint, Sekondens intran¨at. Jag ville att gr¨anssnittet skulle likna det Sekondens anv¨andare var vana vid i Outlook, d¨ar de hade alla sina kontakter. I Outlook fanns det flera olika vyer f¨or att visa kontak-terna, men efter fr˚agor till Sekondens anst¨allda fann jag att en tr¨advy var den popul¨araste med alla kontakter grupperade efter f¨oretag, se figur 7.1. F¨oretagen var sorterade i alfabetisk ordning och det gick att expandera/kol-lapsa f¨oretaget f¨or att visa underliggande kontakter eller inte.

F¨or att g¨ora synkroniseringsval med gr¨anssnittet t¨ankte jag presentera kontakterna i en tr¨advy med alla kontakter sorterade efter f¨oretag. Alla kon-takter fr˚an den gemensamma kontaktmappen planerade jag att h¨amta fr˚an webbtj¨ansten, som jag utvecklat tidigare, genom att placera en ny metod p˚a webbtj¨ansten med uppgiften att h¨amta alla gemensamma kontakter och returnera endast de intressanta v¨ardena fr˚an kontakterna(namn, f¨oretag och id). P˚a varje nod, b˚ade f¨oretagsnod och kontaktnod, skulle jag placera en kryssruta(eng. checkbox) framf¨or namnet som anv¨andare kunde kryssa i f¨or att v¨alja en kontakt, eller alla kontakter i ett f¨oretag, f¨or synkronisering. N¨ar anv¨andarna utf¨ort sina val skulle de kunna klicka p˚a en knapp f¨or att utf¨ora valen och p˚ab¨orja en synkronisering. Valen skulle ske genom att pla-cera en tupel f¨or varje val i tabellen MarkedContacts, med anv¨andarnamnet och id till den valda kontakten. Sedan skulle webbtj¨anstens synkroniserings-metod anropas f¨or att kopiera ¨over kontakter markerade i MarkedContacts till anv¨andarnas privata kontaktmapp.

7.1

Utveckling

Gr¨anssnittet utvecklade jag med verktyget Silverlight 4.0, det ¨ar Microsofts senaste webbutvecklingsverktyg och det ¨ar ett verktyg jag varit intresse-rad av en l¨angre tid. En Silverlightapplikation exekverar i vanliga fall i en webbl¨asare vilket underl¨attade under utvecklingen av den d˚a jag kunde

(36)

tes-7.2. SHAREPOINT KAPITEL 7. GR ¨ANSSNITT

Figur 7.1: Tr¨advy i Outlook

ta den snabbt efter ¨andringar. Innan jag valde att anv¨anda Silverlight un-ders¨okte jag snabbt huruvida det var m¨ojligt att exekvera en Silverlightap-plikation i SharePointmilj¨o och jag hittade flera resurser med instruktioner f¨or att f˚a ig˚ang en Silverlightapplikation i SharePoint.

Jag st¨otte inte p˚a n˚agra problem under utvecklingen av gr¨anssnittet och utvecklingen gick fort. Jag hade efter tv˚a dagar en Silverlightapplikation med ¨onskat gr¨anssnitt och funktionalitet. N˚agra ordentliga testfall anv¨ande jag mig inte av utan jag testade i webbl¨asaren endast f¨or att bekr¨afta att den fungerade.

7.2

SharePoint

F¨or att f¨orst˚a hur jag skulle exekvera Silverlightapplikationen i SharePoint ¨

ar det bra med en kort beskrivning av SharePoint. SharePoint ¨ar utvecklat av Microsoft och ¨ar en webbplatform med flera syften f¨or sm˚a till stora or-ganisationer. Det associeras ofta med inneh˚allshanterande(eng. content ma-nagement) och dokumenthanterande(eng. document mama-nagement) system. SharePoint kan inneh˚alla intran¨at, dokument, filer, samarbetsplatser, verk-tyg f¨or sociala n¨atverk och mer [8]. Anv¨andare i SharePoint, med tillr¨ackliga r¨attigheter, kan ¨andra p˚a det mesta genom att omstrukturera, ta bort, l¨agga till och s˚a vidare.

Gr¨anssnittet var t¨ankt att placeras p˚a en egen hemsida i intran¨atet med Silverlightapplikationen infogad som en “Silverlight Web Part”. N¨ar man v¨aljer att inkludera en “Silverlight Web Part” i SharePoint m˚aste adressen till Silverlightapplikationens exekveringsfil(.xap) anges. Denna adressen skall vara till en applikation i SharePoint. F¨or att f˚a in Silverlightapplikationen i SharePoint hittade jag instruktioner [12] d¨ar man omgav Silverlightapplika-tionens projekt med ett “SharePoint Module’-projekt. Denna modul kunde

(37)

7.2. SHAREPOINT KAPITEL 7. GR ¨ANSSNITT

jag inkludera Silverlightapplikationen i och placera modulen i SharePoint. N¨ar jag skulle skapa projektet f¨or “SharePoint Module” st¨otte jag p˚a ett stort problem. F¨or att skapa ett projektet beh¨ovdes SharePoint Server 2010 och Sekonden hade 2007. Jag hittade instruktioner f¨or att f˚a in Silverligh-tapplikationen i SharePoint Server 2007 ocks˚a men om jag utvecklade f¨or 2007 skulle det inte fungera f¨or 2010. Sekondens systemadministrat¨or ha-de planerat att uppgraha-dera SharePoint Server 2007 till 2010 inom en snar framtid s˚a det k¨andes naturligast att utveckla gr¨anssnittet f¨or SharePoint Server 2010.

I starten av examensarbetet hade min handledare sagt att jag kunde hj¨alpa Sekonden med att uppgradera SharePoint Server 2007 till 2010 om det skulle underl¨atta f¨or mig. Med det i ˚atanke unders¨okte jag vad som beh¨ovde utf¨oras f¨or en uppgradering. Efter en genoml¨asning av Microsofts officiella uppgraderingsguider [13] ans˚ag jag att det skulle underl¨atta f¨or mig att uppgradera Sekondens SharePoint Server och den applikation jag utvecklade skulle ha en l¨angre livstid vilket ocks˚a var viktigt.

7.2.1

Tidsbrist

Sekondens SharePoint Server befann sig p˚a en Windows Server 2003 och allt inneh˚all i SharePoint l˚ag p˚a en SQL Server 2005. Vid uppgradering till Sha-rePoint Server 2010 kr¨avdes Windows Server 2008 och SQL Server 2008. F¨or att jag skulle kunna uppgradera SharePoint Server kr¨avdes allts˚a r¨attigheter till att uppgradera Windows Server, SQL Server och SharePoint Server. Jag skulle f˚a dessa r¨attigheter och hela tiden underr¨atta systemadministrat¨oren vad jag t¨ankte genomf¨ora och vad jag genomf¨ort.

Microsoft hade publicerat en uppgraderingsguide f¨or SharePoint Server och i den f¨oreslog de att en virtuell testmilj¨o skulle s¨attas upp som liknade den milj¨o man t¨ankt uppgradera s˚a mycket som m¨ojligt. Sedan skulle man genomf¨ora en fullskalig uppgradering p˚a testmilj¨on och behandla m¨ojliga fel f¨or att f˚a en uppfattning om vad som kan beh¨ova g¨oras vid den riktiga uppgraderingen. Systemadminstrat¨oren tyckte att det var en bra id´e att s¨atta upp en s˚adan testmilj¨o och han skulle s¨atta upp den tillsammans med mig d˚a han vet hur deras nuvarande system ser ut.

Tyv¨arr hade systemadministrat¨oren v¨aldigt mycket att g¨ora s˚a han blev tvungen att skjuta upp uppgraderingen till lite senare. F¨or examensarbe-tets skull betydde detta att jag inte kunde f¨ardigst¨alla gr¨anssnittet f¨or anv¨andning innan examensarbetet var ¨over. Men jag har utvecklat s˚a l˚angt jag kunnat och har f¨orberett mig ordentligt f¨or att utf¨ora en uppgradering och f¨ardigst¨alla gr¨anssnittet. Jag har f¨orberett mig genom att uppgradera SharePoint Server 2007 i min virtuella testmilj¨o, exekverat en Silverlightap-plikation i SharePoint och anropat webbtj¨ansten jag utvecklat fr˚an Silver-lightapplikationen.

(38)

Kapitel 8

Resultat

Den slutliga implementationen innefattar:

Webbtj¨anst Placerad p˚a server 2, se figur 8.1, och tillg¨anglig genom en hemsida p˚a servern. Webbtj¨ansten tillhandah˚aller tv˚a viktiga metoder. Den ena metoden anropas f¨or att starta en synkronisering vilket in-neb¨ar att webbtj¨ansten kopierar kontakter, fr˚an en gemensam kontakt-mapp, till en anv¨andares personliga kontaktmapp i Exchange, utifr˚an de synkroniseringsval en anv¨andare utf¨ort. Webbtj¨ansten uppdaterar ¨

aven de kontakter den har kopierat till den personliga kontaktmap-pen om informationen p˚a tillh¨orande gemensam kontakt ¨andras eller tas bort. Den andra metoden anropas av gr¨anssnittet f¨or att h¨amta information om kontakter i den gemensamma kontaktmappen, denna information presenteras i gr¨anssnittet.

Windowstj¨anst Placerad p˚a server 2. Denna Windowstj¨anst exekverar all-tid och startas automatiskt vid omstart av servern. Windowstj¨ansten anropar webbtj¨anstens synkroniseringsmetod med ett specificerat tidsin-tervall. Det ¨ar tack vare Windowstj¨ansten all synkroniserad kontak-tinformation h˚aller sig uppdaterad.

Gr¨anssnitt Ett webbgr¨anssnitt, utvecklat med Silverlight, t¨ankt att pub-liceras i Sekondens intran¨at(SharePoint) men p˚a grund av tidsbrist ej tillg¨angligt i intran¨atet ¨annu, se underrubrik 7.2.1 f¨or en n¨armare f¨orklaring. Detta gr¨anssnitt presenterar de gemensamma kontakter som finns i den publika kontaktmappen och ger anv¨andare m¨ojligheten att markera/avmarkera kontakter f¨or synkronisering till anv¨andarens privata kontaktmappen.

8.1

Till mobiltelefonen

F¨or denna beskrivning antar jag att gr¨anssnittet ¨ar publicerat i Sekondens intran¨at. Om Sekondens anst¨allda vill g¨ora en gemensam kontakt tillg¨anglig

(39)

8.1. TILL MOBILTELEFONEN KAPITEL 8. RESULTAT

Figur 8.1: Slutlig l¨osning

i deras mobiltelefon, kan de g˚a in p˚a Sekondens intran¨at och g˚a till hemsi-dan f¨or kontaktsynkronisering. P˚a hemsidan f¨or kontaktsynkronisering kan de markera de gemensamma kontakter de vill ska synkroniseras mot deras personliga kontaktmapp i Exchange och klicka p˚a en knapp f¨or att starta synkroniseringen. Efter synkroniseringen finns markerade gemensamma kon-takter i anv¨andarens privata kontaktmapp och f¨or att g¨ora dessa tillg¨angliga i mobiltelefonen beh¨over anv¨andaren synkronisera sin privata kontaktmapp i Exchange med kontaktboken i mobiltelefonen, detta g¨ors med den standar-diserade metod som mobiltelefontillverkaren tillhandah˚aller, vilket skiljer sig fr˚an mobiltelefon till mobiltelefon.

Den l¨osning jag utvecklat tillhandah˚aller ett smidigt s¨att att f¨ora ¨over gemensamma kontakter till en privat kontaktmapp i Exchange och med l¨osningen uppdateras de ¨overf¨orda kontakterna vid ¨andringar i den gemen-samma kontaktmappen. D¨armed elimineras behovet att manuellt kopiera kontakter mellan tv˚a kontaktmappar i Exchange och Sekondens anst¨allda beh¨over inte t¨anka p˚a att uppdatera kontaktinformationen de har i mobil-telefonen.

(40)

Kapitel 9

Diskussion

9.1

osningen

F¨or att l¨osa Sekondens problem med kontaktsynkronisering har jag utveck-lat en webbtj¨anst, en Windowstj¨anst och ett gr¨anssnitt i SharePoint. Webb-tj¨ansten utf¨or synkroniseringen, Windowstj¨ansten anropar webbtj¨ansten med ett specificerat tidsintervall och gr¨anssnittet i SharePoint anv¨ands f¨or att utf¨ora synkroniseringsval. Under denna rubrik diskuterar jag vilka f¨ordelar och nackdelar det finns med den l¨osning jag utvecklat.

9.1.1

Webbtj¨

ansten

Webbtj¨ansten hade en uppenbar f¨ordel vid utveckling. Den var enkel att ¨

andra och att testa d˚a endast n˚agra f˚a filer beh¨ovdes bytas, fr˚an gamla till nya och sedan kunde den testas i en webbl¨asare. Enkelheten att utf¨ora ¨

andringar och att testa den bidrog till en snabbare utveckling. Jag kunde enkelt prova sm˚a ¨andringar och jag beh¨ovde inte avinstallera och installera inf¨or varje ny version vilket hade varit tidskr¨avande i j¨amf¨orelse med att endast byta ut n˚agra filer.

I underrubrik 5.2.4 f¨orklarade jag hur jag anv¨ande mig av en metod f¨or att m¨arka upp alla gemensamma kontakter med ett egendefinierat attribut innan n˚agon synkronisering p˚ab¨orjades. Denna metod anropas vid varje exe-kvering, vilket inte ¨ar optimalt. Enda g˚angen denna metod verkligen beh¨over exekveras ¨ar efter skapande av gemensamma kontakter, d˚a beh¨over de ny-skapade kontakterna m¨arkas upp med mitt egendefinierade attribut f¨or att webbtj¨ansten senare ska kunna, korrekt, synkronisera kontakterna. Till en b¨orjan var uppm¨arkningsmetoden tids¨odande f¨or att den itererade ¨over alla gemensamma kontakter och skapade det egendefinierade attributet p˚a de kontakter som inte hade attributet. D˚a Sekonden hade m˚anga gemensamma kontakter tog hela itereringsprocessen l˚ang tid. Dock lyckades jag minska ex-ekveringstiden f¨or uppm¨arkningsmetoden drastiskt genom att endast iterera

(41)

9.1. L ¨OSNINGEN KAPITEL 9. DISKUSSION

¨

over de gemensamma kontakter som ej hade det egendefinierade attributet satt fr˚an b¨orjan. Exekveringstiden hade g˚att fr˚an cirka 30 sekunder till 1-2 sekunder och jag ans˚ag d˚a att det inte fanns en stark anledning till att inte utf¨ora uppm¨arkningen vid varje synkronisering.

9.1.2

Windowstj¨

ansten

Vad Windowstj¨ansten utf¨orde ¨ar inte mycket att diskutera, den anropade endast webbtj¨ansten och det beh¨ovdes f¨or att synkronisering skulle kunna ske. D¨aremot kan valet att utveckla det simpla programmet som en Win-dowstj¨anst diskuteras.

En m¨ojlig nackdel med att utveckla programmet som en Windowstj¨anst ¨

ar att installationen av en Windowstj¨anst ¨ar lite kr˚angligare ¨an en vanlig applikation men detta program beh¨ovdes inte ¨andras ofta f¨or att installa-tionsprocessen skulle vara en viktig faktor vid val av programtyp.

F¨ordelarna ¨ar att Windowstj¨anster kan starta sig sj¨alva vid omstart av datorn, en Windowstj¨anst ¨ar designad f¨or att exekvera v¨aldigt l¨ange, opera-tivsystemet tillhandah˚aller ett program f¨or att h˚alla koll p˚a Windowstj¨anster och l¨asa tillh¨orande loggar samt ¨ar det enkelt att utf¨ora loggutskrifter fr˚an programmet. Windowstj¨anster ¨ar helt enkelt skapade f¨or att utf¨ora arbets-uppgifter i bakgrunden vilket var precis vad jag letade efter n¨ar jag skulle utveckla programmet.

9.1.3

Gr¨

anssnittet i SharePoint

Gr¨anssnittet utvecklade jag som en Silverlightapplikation, det valet var fr¨amst f¨or att jag varit intresserad av att testa Silverlight och detta examensarbe-te var en utm¨arkt chans att utveckla med Silverlight. N¨ar jag unders¨okte huruvida det gick att exekvera en Silverlightapplikation i SharePoint fann jag dock att en Silverlightapplikation var ett bra val f¨or att utveckla till Sha-rePoint, jag fann att mycket av SharePoint var utvecklat med Silverlight. Denna information hittade jag p˚a Micrsofts MSDN Library [11].

Gr¨anssnittet var mycket enkelt, endast en tr¨advy med f¨oretag, kon-taktnamn och kryssrutor samt en knapp f¨or att utf¨ora synkroniseringsval. Tr¨advyn skulle kunna inneh˚alla mer information om kontakterna, t.ex. te-lefonnummer, emailadress, titel etc. etc., men jag anser att endast namn r¨acker f¨or den enkla uppgiften att utf¨ora synkroniseringsval. Sekondens an-st¨allda anv¨ander Outlook dagligen och det ¨ar i Outlook de gemensamma kontakterna hittas. F¨or att se mer information om kontakterna, ¨an namn och f¨oretag, ¨ar Outlook att f¨oredra ¨over ett synkroniseringsgr¨anssnitt.

En s¨okfunktion till gr¨anssnittet skulle komma till anv¨andning f¨or att lite snabbare hitta en specifik kontakt, men jag och min handledare ans˚ag att det inte var n¨odv¨andigt att implementera d˚a alla kontakter ¨ar alfabetiskt sorterade efter f¨oretag och nya synkroniseringsval kommer antagligen inte utf¨oras ofta.

References

Related documents

I sådana miljöer är inte enbart den vetenskapliga informationen viktig, utan även annan typ av information så som ekonomisk information som har betydelse för att förstå

Det enklaste t¨ ankbara s¨ attet att h¨ arleda hela kapaciteten skulle vara att anta att alla N atomer i en kristall har samma vibrationsfrekvens, och sedan helt enkelt

Resonemang, inf¨ orda beteck- ningar och utr¨ akningar f˚ ar inte vara s˚ a knapph¨ andigt presenterade att de blir sv˚ ara att f¨ olja.. ¨ Aven endast delvis l¨ osta problem kan

Building on OSGi, a platform for IoT home auto- mation, AIOLOS exposes robots and IoT devices as reusa- ble and shareable services, and automatically optimizes the runtime

Rutinen som anv¨ands f¨ or att definiera operatorn, kan ha antingen ett eller tv˚ a argument, men eftersom funktionen normalt definieras i samma modul som inneh˚

Eftersom ämnen tar mycket större plats i gasform än i fast eller flytande form blåses ballongen upp.. Tips Det går också bra att fylla ballongen med bakpulver och hälla en

Detta g¨aller alla tal vars dyadiska utveckling ¨ar ¨andlig; man beh¨over inte kasta fler kast ¨an vad som anges av den position d¨ar sista ettan finns i utvecklingen.. Det betyder

I ett system med offentlig nyckel kr¨ avs endast n nycklar, en f¨ or varje anv¨ andare, och var och en beh¨ over bara h˚ alla sin egen dekrypteringsnyckel hemlig2. F¨ or att ett