Mobil lösning för intern informationsspridning

Storlek: px
Starta visningen från sidan:

Download "Mobil lösning för intern informationsspridning"

Transkript

1 IT Examensarbete 15 hp Juni 2013 Mobil lösning för intern informationsspridning Jonas Eliasson Institutionen för informationsteknologi Department of Information Technology

2

3 Abstract Mobile Solution for In-house Information Distribution Jonas Eliasson Teknisk- naturvetenskaplig fakultet UTH-enheten Besöksadress: Ångströmlaboratoriet Lägerhyddsvägen 1 Hus 4, Plan 0 Postadress: Box Uppsala Nethouse Sverige AB is an IT consultancy in need of a mobile solution to inform participants of in-house events and distribute news to their consultants working in the field. This report describes the planning and development of such a solution. The result of this thesis is a three system-solution. A mobile application where it is possible to view news and information about in-house events, and also receive suitable notifications, a web service which assists the mobile application by providing the corresponding information and finally a website to manage the information and notify mobile clients. Telefon: Telefax: Hemsida: Handledare: Mattias Lyrén Ämnesgranskare: Olle Eriksson Examinator: Olle Gällmo IT Tryckt av: Reprocentralen ITC

4

5 Innehåll 1 Introduktion Uppgiftsbeskrivning Mål och syfte Avgränsningar Bakgrund Vad är en webbtjänst Datautbytesformat XML JSON Aviseringar för mobila enheter Principer för objektorienterad design Metodik Verktyg Implementationsplattform - ASP.NET Web API MVC Entity Framework Windows Phone SDK PushSharp Implementation Principer för objektorienterad design SRP DIP Grundplattformen Domänmodeller, databas och dataaccess Tjänster Aviseringstjänst Exemplifiering av skiktningen Mobilapplikationen Användargränssnitt Registrering för aviseringar Kommunikation med webbtjänsten Inloggning och säkerhet Webbtjänsten Design av resurser Datautbytesformat Administrationsgränssnittet Resultat Mobilapplikationen Vyer och navigation

6 5.1.2 Aviseringar Webbtjänsten Konsumera nyheter och kategorier Registrering för aviseringar Datautbytesformat Administrationsgränssnittet Grundplattformen Slutsats och diskussion Möjliga förbättringar Bilagor 33 A Skisser mobilapplikation 33 B Skärmdumpar mobilapplikation 35 C Skärmdumpar administrationsgränssnitt 38 Referenser 42

7 1 Introduktion Nethouse är ett It-konsultbolag med kontor på fem orter i Sverige och arbetar med Itoch verksamhetsutveckling, med uppdragsgivare både i näringslivet och den offentliga sektorn. Idag har Nethouse ett antal anställda som arbetar ute på plats hos deras uppdragsgivare som bland annat resurskonsulter. Att få ut information om interna händelser och nyheter till dessa, men även de andra anställda, är viktigt, dels för att de ska känna sig uppdaterade med vad som händer men även för att de ska känna tillhörighet till sin faktiska arbetsgivare, Nethouse. Idag publiceras och sprids de interna händelserna och nyheterna via företagets internwebb. Internwebben är dock inte mobilanpassad och från vissa uppdragsgivare saknas möjlighet att överhuvudtaget ansluta sig till denna. 1.1 Uppgiftsbeskrivning För att lösa problemet med att sprida information till alla sina anställda vill Nethouse att en mobilapplikation tas fram. Mobilapplikationen behöver finnas i en version för Google Android, Apple Ios och Microsoft Windows Phone. Vidare önskas möjligheten att skicka aviseringar till de mobila enheterna när vissa nyheter av viktigare karaktär publiceras, för att på ett snabbare sätt uppmärksamma alla anställda om dessa nyheter. Initialt var tanken att mobilapplikationen skulle integreras med den befintliga internwebben som är baserad på Microsoft Sharepoint. Integration med Sharepoint valdes dock bort när det visade sig att nyhetsflödet i mobilapplikationen skiljer sig en hel del från nyhetsflödet på internwebben. Att ta fram en implementation/integration som omvandlar nyhetsflödet från internwebbens format till ett format som passar mobilapplikationen skulle i sig bli ett ganska stort arbete. Det finns även ett viss missnöje med den befintliga internwebben och diskussioner pågår om hur informationsflödet på internwebben möjligen ska förändras i framtiden, vilket skulle kunna leda till att en eventuell integration ganska fort blir inaktuell. Produktägaren tog därför beslutet att en helt separat lösning skulle tas fram och om behov finns i framtiden löser man integration med internwebben då. Som nämnts har Nethouse kontor på flera orter och till en början kommer den framtagna lösning användas av Örebrokontoret. Stöd för flera kontor måste dock tas i beaktande när systemet designas, där de olika kontorens information ska vara isolerade från varandra. 1

8 1.2 Mål och syfte Mål och syfte med examensarbetet är att Skapa en grundplattform för att skicka aviseringar till olika mobila enheter, så som Google Android, Apple Ios och Microsoft Windows Phone. Skapa en nyhets-webbtjänst anpassad för konsumtion av mobila enheter. Skapa en mobilapplikation för Windows Phone som kan ta emot aviseringar om ny information samt kan hämta information för läsning vid behov. Skapa ett enklare gränssnitt för administration och nyhetspublicering. 1.3 Avgränsningar Arbetet innefattar inte att utveckla en version av mobilapplikationen för Google Android eller Apple Ios, utan dessa kommer tas fram vid ett senare skede av Nethouse. Det ingår heller inte att utreda vilken typ av säkerhetslösning som ska används för mobilapplikationen respektive webbtjänsten, detta utreds parallellt av Nethouse, men implementeras under arbetets gång av mig. Vidare ska inget bibliotek för att skicka aviseringar utvecklas, utan tredjepartsbiblioteket PushSharp ska användas. 2

9 2 Bakgrund 2.1 Vad är en webbtjänst Webbtjänster (engelska: Web Services) låter datorer och andra enheter kommunicera med varandra via webben [1]. Idag är det otydligt vilka tjänster på webben som normalt menas med ordet webbtjänst. Fokus för detta arbete har varit webbtjänster som baseras på REST-arkitekturen (REpresentational State Transfer). REST-arkitekturen är en tillståndslös (engelska: Stateless) klient-server-arkitektur som kretsar kring resurser. För REST är resurser första klassens objekt och karaktäriseras av följande: En resurs identifieras (adresseras) unikt med en Uniform Resource Identifier 1 (URI), exempelvis En resurs manipuleras med hjälp av välkända HTTP-metoder, exempelvis GET och POST. En förfrågan till en resurs och förfrågans resultat kan skickas i flera olika representationsformat, så kallade mime types, exempelvis text/html, application/json och image/png. Figur 1 illustrerar resurser, deras adressering och hur de olika HTTP-metoderna vanligtvis implementeras. Resurs GET PUT POST DELETE Enskild Hämta ett element Uppdatera ett element Används generellt inte Ta bort ett element Samling Hämta samlingen Byta ut samlingen Lägg till ett element till samlingen Ta bort samlingen Figur 1: Typisk implementation av resurser och tillhörande HTTP-metoder (inspirerad av [2]). Att REST-arkitekturen är tillståndslös innebär att inget tillstånd eller session lagras åt användaren på servern mellan anrop, utan ett eventuellt tillstånd måste inkluderas av användare vid nästkommande anrop. Fördelen med denna tillståndslöshet är att systemet blir tidsmässigt frikopplat, vilket ofta är önskvärt i distribuerade system som webbtjänster [1]. 1 Identifierare eller namn för en resurs 3

10 2.2 Datautbytesformat För att kunna utbyta information över nätverk konverteras datastrukturer och objekt till ett så kallat datautbytesformat. Två vanligt förekommande datautbytesformat för webbtjänster är XML (extensible Markup Language) [3] och JSON (JavaScript Object Notation) [4]. REST-arkitekturen har inga krav på vilket format som används, men XML och JSON är båda vanligt förekommande. Följande Person-klass (listning 1) i programmeringsspråk C# kommer användas för att exemplifiera hur data kodas i XML respektive JSON i efterföljande sektioner. public class Person public string Name get; set; public int Age get; set; public List< > s get; set; Listning 1: En Person-klass i C# XML XML är ett märkspråk (engelska: Markup Language) som kännetecknas av sina taggar vilka används för uppmärkning av data. XML är designat för att vara lätt att läsa och tolka för datorer, men även för människor [3]. XML används både för att lagra data på filer och som ett datautbytesformat. Nedan (listning 2) följer ett exempel av en instans av Person-klassen kodad i XML. <Person> <Name>John Doe</Name> <Age>29</Age> < s> < > <Type>Home</Type> <Address>john@doe.se</Address> </ > < > <Type>Work</Type> <Address>john@doe.com</Address> </ > </ s> </Person> Listning 2: En instans av Person-klassen serialiserad till XML. 4

11 2.2.2 JSON JSON är ett textbaserat datautbytesformat som tagits fram för att vara enkelt, minimalt och portabelt [4]. Formatet klarar av att representera primitiva datatyper som strängar, nummer, booleska värden samt null, men formatet klarar även objekt och arrayer. Formatet bygger på nyckel-värde-par, där nyckeln alltid är en sträng och värdet kan vara något av de föregående nämna typer. Objekt omringas av, medan arrayer omringas av []. Nedan (listning 3) följer samma exempel av Person-klassen, men kodad i JSON. "Name" : "John Doe", "Age" : 29, " s" : [ "Type" : "Home", "Address" : "john@doe.se", "Type" : "Work", "Address" : "john@doe.com" ] Listning 3: En instans av Person-klassen serialiserad till JSON. 2.3 Aviseringar för mobila enheter För mobila enheter används aviseringar (engelska: Push notifications) när man vill upplysa en användare om att något har hänt, till exempel att ett nytt epostmeddelande har inkommit, utan att kräva ett manuellt ingripande från användaren. En naiv lösning för att uppnå detta vore att låta varje applikation ha en egen implementation av någon typ av tjänst som arbetar i bakgrunden och som meddelar när det finns ny information att tillgå. För en mobil enhet skulle denna lösning ställa till problem. Enheterna har begränsat med resurser (som till exempel batterikapacitet) och skulle påverkas negativt om alla applikationer med stöd för aviseringar ska ligga aktiva i bakgrund och köras. En bättre lösning är istället att man (i) inför en mellanhand, ett slags ombud, som ansvarar för att ta emot och sedan vidarebefordra alla aviseringar (oavsett applikation) som avser en viss mobil enhet och (ii) en bakgrundstjänst (för alla applikationer) på den mobila enheten som mottar och visuellt visar de aviseringar som har skickats via ombudet. Denna lösning är vad Microsoft, Apple och Google använder idag [5] [6] [7]. 5

12 Applikationens webbtjänst A 5, * 2, 3 B Applikation Mobil enhet C 1, 4 Aviseringsombud Aviseringstjänst Figur 2: Illustrerar principen för aviseringsflödet för mobila plattformar (inspirerad av [5]). Vissa detaljer saknas, främst där tillverkarna skiljer sig åt, till exempel kräver både Apple och Google att certifikat används för all kommunikation med deras aviseringsombud, vilket Microsoft inte gör. Följande exemplifierar registrering för aviseringar (se figur 2): 1 Applikationen begär en aviseringsadress. 2 Aviseringsklienten skickar vidare förfrågan till aviseringsombudet 2. 3 Aviseringsombudet returnerar en unik adress för aviseringar. 4 Aviseringsklienten returnerar adressen till applikationen. 5 Applikationen registrerar sig hos sin webbtjänst. Inkluderar aviseringsadressen som webbtjänsten kan använda vid framtida aviseringar. Följande exemplifierar hur en avisering skickas (se figur 2): A Applikations webbtjänst skickar en avisering till aviseringsombudet. B Aviseringsombudet aviserar den mobila enheten. C Aviseringsklienten visar visuellt aviseringen som inkommit eller vidarebefordrar aviseringen till applikationen 3. * Applikationen hämtar den faktiska informationen från sin webbtjänst. 2 Exempelvis: Microsoft Push Notification Service, Apple Push Notification Service eller Google Cloud Messaging 3 Denna hantering skiljer sig åt mellan tillverkarna 6

13 2.4 Principer för objektorienterad design Det finns en uppsättning principer för objektorienterad design som hjälper utvecklare att designa bra system. Principerna representerar samlade tankar och idéer från ett stort antal mjukvaruutvecklare och forskare med många års erfarenhet inom området [8]. Dessa principer sammanfattas av [8] som: The Single-Responsibility Principle (SRP) En klass bör endast ha en anledning att ändras. The Open/Closed Principle (OCP) Klasser bör vara öppna för utvidgning men stängda för modifieringar. The Liskov Substitution Principle (LSP) Subtyper bör kunna ersätta sina bastyper. The Dependency-Inversion Principle (DIP) Högnivå-moduler bör ej bero av lågnivå-moduler, bägge bör bero av abstraktioner. Abstraktioner bör ej bero av detaljer, detaljer bör bero av abstraktioner. The Interface Segregation Principle (ISP) Klienter bör inte vara tvingade att bero av metoder som de ej använder. 7

14 3 Metodik En agil arbetsmetod användes då en stor del av kraven var okända i det initiala skedet och snabbt kunde förändras under tidens gång. Agila arbetsmetoder kännetecknas av att vara flexibla och effektiva på att hantera förändringar i kravspecifikationen [9]. Med agila arbetsmetoder bedrivs arbetet iterativt och i inkrementella steg som öppnar upp för en mer kontinuerlig utvärdering och möjlighet att styra om projektet när förändrade eller nya krav uppkommer. Det finns fler olika typer av agila arbetsmetoder och för detta projekt valdes ett urplock av delar från Scrum [10] som arbetsmetod. Enligt skaparna av Scrum bör dock alla delar av metodiken tillämpas för en lyckad användning av Scrum [10], vilket dock inte var möjligt i detta projekt främst av den anledningen att projektet var ett självständigt examensarbete och de agila arbetsmetoderna förutsätter att man i själva verket arbetar i team, men även dess tidsbegränsade form och att projektet utfördes på distans försvårade en fullständig korrekt användning av metodiken. Nethouse tillhandahöll en produktägare och en Scrummästare. Då projektet var ett självständigt examensarbete bestod utvecklingsteamet enbart av mig. 3.1 Verktyg Nethouse tillhandahöll en HP-dator med Windows 8 Pro, en Samsung-mobiltelefon med Windows Phone 7.5 samt programvaran Visual Studio 2012 Professional. Under utvecklingen av webbtjänsten användes verktyget Fiddler [11] mycket. 3.2 Implementationsplattform - ASP.NET ASP.NET är en samling ramverk anpassade för webben framtaget av Microsoft och används för att bygga webbsidor, webbapplikationer och webbtjänster [12] Web API ASP.NET Web API är ett av ramverken som ingår i ASP.NET-familjen, framtaget för att hjälpa utvecklare att enklare skapa HTTP-tjänster (exempelvis REST-tjänster), som ska vara nåbara från olika typer av klienter [13] MVC ASP.NET MVC är ett annat ramverk som också ingår i ASP.NET-familjen. Det används för att skapa webbsidor som följer Model-View-Controller-konceptet [14]. 8

15 3.2.3 Entity Framework Entity Framework (EF) är en så kallad Object-Relationship Mapper (ORM), vilket används för att hämta och lagra data i en relationsdatabas [15]. EF agerar som ett abstraktionslager för relationsdatabaser och låter utvecklare undgå att behöva skriva SQL-frågor och dylikt Windows Phone SDK Microsoft tillhandahåller ett så kallat Software Development Kit (SDK) för Windows Phone-utveckling som innehåller allt man behöver för att utveckla Windows Phoneapplikationer [16]. Det medföljer en kraftfull Windows Phone-emulator som har stöd för nästan alla funktioner som en motsvarande telefon har, exempelvis kan aviseringar skickas till emulatorn. 3.3 PushSharp Eftersom alla mobila operativsystem idag använder sig av samma typ av idé för att skicka aviseringar (se avsnitt 2.3 Aviseringar för mobila enheter), finns det ramverk att tillgå som hjälper en med att skicka aviseringen till de aviseringsombud man vill stödja med webbtjänsten. Till detta projekt har ramverket PushSharp (version 2.0) valts efter önskemål från Nethouse. PushSharp stödjer i dagsläget Apple (iphone, ipad, Mountain Lion), Android, Windows Phone (7, 7.5, 8) och Windows 8 [17]. Viktigt att påpeka är att ramverket fortfarande utvecklas och dess Application Programming Interface (API) kan inte ses som stabilt, utan förändringar kan komma att ske, vilket man behöver ha i åtanke och ta särskilda åtgärder för när man implementera ramverket. 9

16 4 Implementation Totalt har fyra olika system implementerats: en grundplattform, en webbtjänst, ett administrationsgränssnitt och en mobilapplikation, där grundplattformen och mobilapplikationen har varit av en mer betydande storlek. I detta avsnitt beskrivs ett urplock av de väsentligaste bitarna som utvecklingen av systemen inneburit. 4.1 Principer för objektorienterad design Nethouse kommer troligen i framtiden att utöka system med mer funktionalitet och därför har stor vikt lagts på att efterfölja de kända principer för god objektorienterad design som nämnts i bakgrunden. Två av dessa har påverkat designen av systemet särskilt mycket, dessa är The Single-Responsibility Principle (SRP) och The Dependency- Inversion Principle (DIP) SRP SRP säger att en klass endast bör ha en anledning till att ändras [8]. En klass som har alldeles för många ansvar brukar vara stora och kallas för God classes. En tumregel för att efterfölja SRP är att hålla klasserna små och se till att de har hög kohesion. En liten klass har få instansvariabler och en klass har hög kohesion om dess metoder använder många av klassens instansvariabler. Maximal kohesion uppnås om varje metod använder alla instansvariabler, vilket sällan är möjligt att uppnå dock, men man bör eftersträva hög kohesion [18]. Om man noterar grupperingar av klassens instansvariabler, exempelvis att variabler a och b används uteslutande i funktionerna f och g, medan variablerna c och d används uteslutande i funktionen h, kan det vara ett tecken på att klassen gör mer än en sak och eventuellt kan den delas upp efter dessa grupperingar. De tumregler och tekniker nämnda ovan användes under projektet för att identifiera fall då SRP inte efterföljdes DIP När man försöker efterfölja DIP kan man som tumregel tänka att alla beroenden man har bör vara på abstraktioner och inte konkreta klasser [8]. Listning 4 illustrerar användningen av DIP i projektet 4. Klassen NewsController tillhör administrationsgränssnittet och tar bland annat emot förfrågningar om att skapa eller ändra nyheter. Den som skapar eller ändrar en nyhet kan välja att avisera nyheten och om så är fallet kommer den privata metoden Push att anropas. NewsController känner endast till gränssnittet IPush- Service och att en metod som heter Push finns. Det är någon annan klass som avgör och faktiskt förser (via konstruktorn) NewsController med en konkret implementation av någon IPushService, exempelvis PushSharpFacade. 4 Vissa justeringar och många detaljer borttagna 10

17 public interface IPushService void Push(NewsItem newsitem); public class PushSharpFacade : IPushService public void Push(NewsItem newsitem) //... public class NewsController private readonly IPushService pushservice; public NewsController(IPushService pushservice) this.pushservice = pushservice; private void Push(NewsItem newsitem) pushservice.push(newsitem); Listning 4: Exemplifiering av DIP i projektet (förenklad) Resultatet av DIP är att man får ett system som är löst kopplat (engelska: Loosely coupled) [19], där enskilda moduler eller klasser är enkla att byta ut. Säg att man vill byta ut PushSharp som ramverk för aviseringar. En ny implementation av IPushSharp kan skapas och därefter injiceras, helt utan att ändra eller ens kompilera om NewsController-klassen, vilket förövrigt är i enlighet med The Open/Closed Principle. DIP gör det även lättare att skapa tester till klasser [19]. Exempelvis vill man inte skicka riktiga aviseringar när man testar NewsController, utan när Push i pushservice anropas ska helst inget utföras. Man skapar då en så kallad mock-klass som implementerar IPushService och där metoden Push inte gör något (se listning 5). Mock-klassen injiceras istället för PushServiceFacade-klassen i testfallen för NewsController, vilket resulterar i att inga aviseringar skickas när testen körs. public class PushServiceMock : IPushService public void Push(NewsItem newsitem) Listning 5: En mock-klass av IPushService från listning 4, som inte utför något när metoden Push anropas. Till hjälp för att lyckas med DIP sattes en så kallad Dependency Injection (DI) container i bruk tidigt i projektet. En DI container hjälper till med att injicera rätt konkret klass för ett visst beroende som en annan klass har. Det är inte på något sätt ett krav att använda en DI container för att efterfölja DIP, men det hjälper till en hel del när 11

18 DIP tillsammans med konstruktorinjektion kan ha en annan positiv påverkan och hjälpa till med att identifiera när en klass bryter mot SRP. När konstruktorn för en klass börjar få många argument (därmed många beroenden) signalerar det att klassen i fråga kanske har mer än en anledning att ändras och då bryter mot SRP [19]. Man kan då undersöka vilka beroenden som används tillsammans och försöka extrahera dessa till en egen klass. 4.2 Grundplattformen Grundplattformen (och systemet i helhet) är uppdelad i ett antal lager. Figur 3 nedan illustrerar vilka lager som finns och deras relationer till varandra. Illustrationen visar även vilka lager webbtjänsten och administrationsgränssnittet interagerar med. Domänmodeller Dataaccess DB Tjänster Aviseringstjänst Webbtjänsten systemen blir större [19]. Istället för att manuellt knyta samman alla beroenden vid applikations startpunkt låter man DI container göra det automatiskt. Som DI container för projektet användes Unity 5 [20] och alla beroenden injicerades via klasserna konstruktorer. Administrationsgränssnittet Figur 3: Grundplattformens skiktning Figur 4 exemplifierar mer i detalj hur skiktning tillsammans med DIP används i projektet. Alla beroenden är på abstraktioner, gränssnitt i detta fall, och tre lager visas; Repositories och Services (grundplattformen) samt Controllers (webbtjänsten). 5 Framtaget av en grupp människor på Microsoft 12

19 Grundplattformen Repositories Device Repository Implementation <<interface>> Device Repository Services Device Service Implementation <<interface>> Device Service Webbtjänsten Controllers Device Controller Figur 4: Exemplifiering av skiktning och DIP för projektet (i själva verket är gränssnitt och konkreta implementationer placerade i separata projekt) Domänmodeller, databas och dataaccess För systemet definierades ett antal domänmodeller: NewsItem, Category, Office, Image och Device, som beskriver nyheter, kategorier, kontor, bilder respektive enheter. Domänmodellerna är placerade i ett eget projekt (lager) och saknar själva några beroenden, istället har i princip alla andra lager ett beroende på domänmodellerna. Databas är upptill Nethouse att välja vid produktionssättning, vid utveckling har SQL Server Compact används. Systemet kräver en databas som är kompatibel med Microsoft Entity Framework (EF). Utvecklingen av databasen har skett med arbetsflödet Code-First development för EF. Code-First development låter användaren definiera domänmodeller med vanliga POCOklasser 6 och därefter generera databasen utefter dessa modeller. Listning 6 visar domänmodellen som beskriver enheter i systemet. 6 Plain Old CLR Object - vanligt.net objekt 13

20 public abstract class Device public Guid DeviceId get; set; public string PushId get; set; public DateTime LastSyncedAt get; set; public int PushedNewsCounter get; set; public void ResetPushedNewsCounter() PushedNewsCounter = 0; //... Listning 6: Domänmodellen Device som beskriver enheter i system (vissa detaljer borttagna). För att isolera beroenden samt användningen av EF, skapades så kallade repositoryklasser för alla domänmodeller. Tjänsterna i tjänstelagret (eller andra klasser för den delen) gör aldrig några direkta anrop till EF, utan deras anrop är alltid till någon av repository-klasserna Tjänster All interaktion med grundplattformen från webbtjänsten och administrationsgränssnittet sker via någon av de tjänster som skapats. Tjänsterna tar emot förfrågningar från webbtjänsten och administrationsgränssnittet som de validerar och exekverar. Det kan handla om att validera att användaren har rättigheter till en viss resurs eller att injicera användarens kontor i frågan till dataaccesslagret för att exempelvis endast hämta alla nyheter tillhörande användarens kontor Aviseringstjänst För aviseringar implementerades ramverket PushSharp. När man använder sig av tredjeparts bibliotek måste man ta i beaktande hur stor risk det är att dess API kan komma att förändras eller att man kommer vilja byta till ett annat bibliotek i framtiden. Finns en risk för detta bör man se till att isolera användningen av biblioteket så att en framtida ändring är enkel att utföra och inte kräver ändringar runt om i hela kodbasen. Då Push- Sharp fortfarande utvecklas kraftigt och dess API kan komma att ändras vid framtida uppdateringar var det viktigt att ramverket separerades från projektet i övrigt. Lösningen var att isolera all kod rörande PushSharp i ett separat projekt och definiera ett gränssnitt (engelska: Interface) för aviseringar som den egna kodbasen kunde bero av (se listning 7). 14

21 public interface IPushService void Push(NewsItem newsitem, Device device); Listning 7: Gränssnitt för att skicka aviseringar. Gränssnittet ovan implementerades sedan i det separata PushSharp-projektet. Sker i framtiden förändringar i PushSharps API är de ändringarna som man behöver göra isolerade till det projektet. Vill man vid ett senare skede byta till något annat ramverk för aviseringar kan man på nytt implementera gränssnittet ovan med det nya ramverket och använda den implementationen i stället Exemplifiering av skiktningen Följande kod-listningar visar vilka metoder som är involverade med att uppdatera en registrering av en befintlig enhet samt i vilka lager dessa metoder finns. Listning 8 visar metoden som tar emot uppdateringsförfrågan i webbtjänsten och vidarebefordrar den till tjänstelagret där UpdateDevice som syns i listning 9 tar över och utför affärslogiken kring uppdateringen. Därefter anropas Update i dataaccesslagret (listning 10) som låter dess basklass utföra själva uppdateringen i UpdateOnCommit som syns i listning 11. public HttpResponseMessage PutDevice(DeviceDto devicedto) if (ModelState.IsValid) deviceservice.updatedevice(devicedto); return Request.CreateResponse(HttpStatusCode.OK); else return Request.CreateResponse(HttpStatusCode.BadRequest); Listning 8: Metoden PutDevice (från DeviceController i webbtjänsten) som hanterar registreringsuppdateringar via PUT-förfrågningar från mobila klienter. 15

22 public void UpdateDevice(DeviceDto devicedto) var device = GetDeviceById(deviceDto.DeviceId); if (device!= null) device.pushid = devicedto.pushid; device.resetpushednewscounter(); device.lastsyncedat = DateTime.Now; devicerepository.update(device); unitofwork.savechanges(); Listning 9: Metoden UpdateDevice (från DeviceService i grundplattformens tjänstelager) som utför affärslogiken gällande registreringsuppdateringar. public void Update(Device device) UpdateOnCommit(device); Listning 10: Metoden Update (från DeviceRepository i grundplattformens dataaccesslager) som anropar basklassens uppdateringsmetod. protected virtual void UpdateOnCommit(T entity) if (entity == null) throw new ArgumentNullException("entity"); if (context.entry(entity).state == EntityState.Detached) set.attach(entity); context.entry(entity).state = EntityState.Modified; Listning 11: Metoden UpdateOnCommit (från EFRepository i grundplattformens dataaccesslager) som är basklassen till alla repositories. 4.3 Mobilapplikationen Iföljande sektion beskrivs några av de väsentligaste delarna från utvecklingen och implementationen av mobilapplikationen. För att referera till mobilapplikationen kommer även mobilappen samt appen att användas. 16

23 4.3.1 Användargränssnitt För att ta fram en design samt för att välja färger till mobilappen fanns två val, antingen kunde Nethouse grafiska profil efterföljas eller så kunde det temakoncept som Microsoft tillhandahåller för Windows Phone användas. Efter diskussion föll valet på temakonceptet istället för den grafiska profilen, dels då vissa användare föredrar ljus text mot mörk bakgrund och andra tvärtom vilket då automatiskt anpassar sig efter användarens preferenser och dels för att det ger appen en känsla av att vara en ursprungsapplikation (engelska: Native application). Skisser togs fram för användargränssnittet (se bilaga A Skisser mobilapplikation på sidan 33) som med avsikt försöker utnyttja några av plattformens kännetecken för att skapa känslan av en nativ applikation. Tanken var inte att skapa en design som även var applicerbar för de övriga plattformarna, utan tanken var att varje mobilapplikation skulle utnyttja den egna plattformens styrkor. Ett tydligt exempel är valet av komponenten som används för att växla mellan senaste nytt och de olika kategorierna, kallad Pivot control. En pivot control ger ett enkelt och snabbt sätt att växla mellan olika vyer och används flitigt i appar för att visa samma innehålla men filtrerat efter olika kriterier, vilket är passande här, där man filtrerar antingen efter senaste nytt eller efter en kategori. För att byta vy sveper (engelska: Swipe) man horisontellt på valfri del av ytan. Fortsätter man att svepa i samma riktning cirkulerar man runt alla vyer, som figur 5 illustrerar. Figur 5: Användaren kan navigera mellan senaste nytt och de olika kategorierna genom att svepa horisontellt över skärmen. Nyheterna hämtas dynamiskt när de behövs. Normalt skapar man pivot-kontrollen statiskt vid kompilering, detta är dock inte möjligt för mobilappen, då det saknas fördefinierade kategorier. Vad som behövs är istället att dynamiskt skapa de pivot-vyer som behövs under körning. Efter att användaren loggat 17

Webbtjänster med API er

Webbtjänster med API er Webbtjänster med API er Mål med lektionen! Veta kursmålen. Lite grunder om WCF Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se

Läs mer

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Dokumentet består av

Läs mer

SOLID är en akronym för fem stycken designprinciper som används vid mjukvaruutveckling. SOLID står för:

SOLID är en akronym för fem stycken designprinciper som används vid mjukvaruutveckling. SOLID står för: Lektion 32 Övningar Korta punkter Jag vill ha en redovisning från alla grupper där ni går igenom person för person vad personen har ansvarat för och vad och vem personen har parprogrammerat på. Ta även

Läs mer

Mål med lektionen! Repetera och befästa kunskaperna.

Mål med lektionen! Repetera och befästa kunskaperna. Entity Framework Mål med lektionen! Repetera och befästa kunskaperna. Vad lektionen omfattar Repetera och gå igenom kursen lite snabbt. Vilka problem vill vi lösa? Vi arbetar med Webbapplikationer Vi kommer

Läs mer

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query). Arbeta med databas Översikt Arbeta med Entity Data Models. LINQ (Language Integrated Query). Lektion 1: Arbeta med Entity Data Models Introduktion till ADO.NET Entity Framework. Stöd i ADO.NET Entity Framework.

Läs mer

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se

Läs mer

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP. Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär

Läs mer

ASP.NET Thomas Mejtoft

ASP.NET Thomas Mejtoft ASP.NET Introduktion till ASP.NET Utveckla i ASP.NET I ASP.NET kan och bör man separera HTML-kod från övrig kod (C#, VB ) I enklare fall läggas kod i script-block Vanligtvis läggs den i en Code Behind-fil

Läs mer

Användarhandledning Nordea Swish Företag App

Användarhandledning Nordea Swish Företag App Användarhandledning Nordea Swish Företag App Swish Företag Ta betalt enklare App, manual version 2.0 Innehåll 1 Nordea Swish Företag App... 3 1.1 Kort introduktion... 3 1.2 Användare av Nordea Swish Företag

Läs mer

Services + REST och OAuth

Services + REST och OAuth Services + REST och OAuth Syftet med Services Skapa ett Drupal API för att exponera webb- API:er. Officiella versionen - Create a unified Drupal API for web services to be exposed in a variety of different

Läs mer

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Entity Framework Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se

Läs mer

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Sida: 1(7) Installationsanvisningar VisiWeb Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Detta dokument Detta dokument beskriver hur man installerar VisiWeb på en

Läs mer

Webbtjänster med API er

Webbtjänster med API er Webbtjänster med API er Mål med lektionen! En lite djupare inblick i RESTfulla tjänster Vad lektionen omfattar RESTful Services Överblick SOAP kan vara lite overkill för vissa specifika web service scenarion.

Läs mer

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie 2017-03-09 Justering för krav på Windows Server 2012 1.2 Micke 2017-04-07 Vitec Ekonomi från x.60 kräver IIS 8 och websocket.

Läs mer

2014-2015 Alla rättigheter till materialet reserverade Easec

2014-2015 Alla rättigheter till materialet reserverade Easec 1 2 Innehåll Introduktion... 3 Azure Client SDK Libraries... 4 Översikt: Azure Client Libraries... 5 Azure SDK... 6 Azure SDK (forts.)... 7 Azure SDK (forts.)... 8 Cloud Services... 10 Cloud Services...

Läs mer

E12 "Evil is going on"

E12 Evil is going on E12 "Evil is going on" Föreläsning 12, HT2014 AJAX Kurs: 1dv403 Webbteknik I Johan Leitet E12 Evil is going on Dagens agenda AJAX XMLHttpRequest-objektet JSON Vad är AJAX? Asynchronous JavaScript and XML

Läs mer

Uppdragsbeskrivning. Paddel-appen Utmärkta kanotleder. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Uppdragsbeskrivning. Paddel-appen Utmärkta kanotleder. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info. Paddel-appen Utmärkta kanotleder Version 1.0 Distributionslista Befattning Bolag/en het Säljare Sogeti Bengt Löwenhamn Konsultchef Sogeti Åsa Maspers Mentor/handledare Sogeti Student KaU Claes Barthelson

Läs mer

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna

Läs mer

Storegate Pro Backup. Innehåll

Storegate Pro Backup. Innehåll Storegate Pro Backup Välkommen! I denna manual kan du bland annat läsa om funktioner och hur du ska konfigurerar programmet. Läs gärna vårt exempel om versionshantering och lagringsmängd innan du konfigurerar

Läs mer

Webbtjänster med API er

Webbtjänster med API er Webbtjänster med API er Mål med lektionen! Titta på hur service:ar fungerar och hur vi programmerar dem. Vad lektionen omfattar WCF Service WCF Services Vad är en WCF service? En WCF Service är ett program

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors 1ME323 Webbteknik 3 Lektion 6 API Rune Körnefors Medieteknik 1 2019 Rune Körnefors rune.kornefors@lnu.se Agenda API (Application Programming Interface) Mashup Flickr API Google Maps API Labb 6 2 API (Application

Läs mer

Snabbstart för Novell Vibe Mobile

Snabbstart för Novell Vibe Mobile Snabbstart för Novell Vibe Mobile Mars 2015 Komma igång Mobil tillgång till Novell Vibe-webbplatsen kan inaktiveras av din Vibe-administratör. Om du inte kan använda Vibemobilgränssnittet enligt beskrivningen

Läs mer

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Objektorienterad Programmering (OOP) Murach s: kap 12-16 Objektorienterad Programmering (OOP) Murach s: kap 12-16 2013-01-28 1 Winstrand Development Objektorienterad Programmering Förkortas OOP Objektorientering innebär att man delar in koden i olika block,

Läs mer

Android översikt. TDDD80 Mobila och sociala applikationer

Android översikt. TDDD80 Mobila och sociala applikationer Android översikt TDDD80 Mobila och sociala applikationer Översikt Köra app på mobil / emulator Android Studio introduktion Android kodning Android labb 1 Köra på mobil / emulator Developer mode på mobilen

Läs mer

Välkommen till Capture.

Välkommen till Capture. Välkommen till Capture http://capture-app.com Välkommen till Capture! Med Capture kan du spara, se och dela dina bilder och videor på alla dina enheter mobil, surfplatta och PC/ Mac. När du har laddat

Läs mer

Användarmanual. Meetings 1.5

Användarmanual. Meetings 1.5 Användarmanual Meetings 1.5 Revisionsnummer: 1 Dokumentnamn: FormPipe Meetings 1.5 - Användarmanual ipad Datum: 2013-12-05 Formpipe Software AB. All rights reserved. 2 (23) Innehållsförteckning 1 INLEDNING...

Läs mer

Vitec Connect. Teknisk beskrivning REVIDERAT SENAST: VITEC. VITEC Affärsområde Mäklare

Vitec Connect. Teknisk beskrivning REVIDERAT SENAST: VITEC. VITEC Affärsområde Mäklare VITEC Vitec Connect Teknisk beskrivning REVIDERAT SENAST: 2016-02-10 VITEC Affärsområde Mäklare www.vitec.se/maklare info.maklare@vitec.se GÖTEBORG: REDEGATAN 1 B, 426 77 V. FRÖLUNDA VÄXEL: 031-360 61

Läs mer

Säkerhetskopiera mobilen

Säkerhetskopiera mobilen Säkerhetskopiera mobilen gratis och helautomatiskt 7 Bästa gratistipsen 7 För Android, Iphone och Windows Phone 7 Säkerhetskopiera till Dropbox. Så fixar du automatisk säkerhetskopiering av mobilen Visst

Läs mer

Datatal Flexi Presentity

Datatal Flexi Presentity Datatal Flexi Presentity En snabbguide för Presentity Innehållsförteckning 1. Login 2 2. Hänvisa 3 2.1 Att sätta hänvisningar 3 2.2 Snabbknappar 4 2.3 Windows gadget 5 3. Samtal 5 4. Status 6 4.1 Exempel

Läs mer

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

Läs mer

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1. Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning

Läs mer

HejKalmar app. Projektrapport. Webbprojekt I

HejKalmar app. Projektrapport. Webbprojekt I Projektrapport HejKalmar app Webbprojekt I Författare: Cecilia Lindqvist, Linus Lundevall, Christofer Olaison, Andreas Söderström och Isak Utegård Handledare: Tobias Ohlsson Examinator: Tobias Ohlsson

Läs mer

Användarmanual FormPipe Meetings. FormPipe Meetings 1.3 2012-09-11

Användarmanual FormPipe Meetings. FormPipe Meetings 1.3 2012-09-11 Användarmanual FormPipe Meetings FormPipe Meetings 1.3 2012-09-11 Revision number: 6 ID number: 10023309 Date: 2012-09-132012-09-11 Innehåll Innehåll... 3 Inledning... 4 Förkrav... 5 Installation... 5

Läs mer

Instruktioner. Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 3. Hem (SIDA 2)

Instruktioner. Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 3. Hem (SIDA 2) 1 Instruktioner Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 2. Logga in (SIDA 2) 3. Hem (SIDA 2) 4. Skapa/redigera sidor (SIDA 3) 41. Lägg till ny sida (SIDA 3) 42. Avancerat (SIDA 4) 5. Texteditor (SIDA

Läs mer

Henrik Häggbom Examensarbete Nackademin Våren 2015

Henrik Häggbom Examensarbete Nackademin Våren 2015 AV Henrik Häggbom Examensarbete Nackademin Våren 2015 1 INLEDNING Som examensarbete på min utbildning på Nackademin Programutveckling.NET kommer jag skapa ett webbaserat system för statistik, tabeller

Läs mer

Micro Focus Vibe Snabbstart för mobil

Micro Focus Vibe Snabbstart för mobil Micro Focus Vibe Snabbstart för mobil September 2018 Komma igång OBS: Mobil tillgång till en Micro Focus Vibe-webbplats kan inaktiveras av din Vibe-administratör. Om du inte kan använda Vibe via mobilgränssnittet

Läs mer

MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR

MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR I följande dokument hittar ni information om hur ni administrerar er nya hemsida. Manualen går endast igenom grundläggande administration. För mer avancerad redigering

Läs mer

Swedbank Mobile Loadtesting. LoadRunner 11.04 Mobile App protocol

Swedbank Mobile Loadtesting. LoadRunner 11.04 Mobile App protocol Swedbank Mobile Loadtesting LoadRunner 11.04 Mobile App protocol Bakgrund Mission: Prestandatesta mobilt backend Typ: RESTful tjänst Underlag: Dokumenterat URI och API (Uniform Resource Identifier, Application

Läs mer

Filleveranser till VINN och KRITA

Filleveranser till VINN och KRITA Datum Sida 2017-04-25 1 (10) Mottagare: Uppgiftslämnare till VINN och KRITA Filleveranser till VINN och KRITA Sammanfattning I detta dokument beskrivs översiktligt Vinn/Kritas lösning för filleveranser

Läs mer

Asp.net mvc intro PER KVARNBRINK, 2015-01-27

Asp.net mvc intro PER KVARNBRINK, 2015-01-27 Asp.net mvc intro PER KVARNBRINK, 2015-01-27 Byggstenarna i ett mvc-projekt 1. Databasen 2. Datamodellen (M:et) 3. Entity framwork 4. Routing 5. Kontroller (C:et) 6. Vy (V:et) 7. Vymodeller 8. Troligen

Läs mer

ÅGIT PRESENTERAR FILR SMIDIG OCH SÄKER FILÅTKOMST OCH DELNING

ÅGIT PRESENTERAR FILR SMIDIG OCH SÄKER FILÅTKOMST OCH DELNING ÅGIT PRESENTERAR FILR SMIDIG OCH SÄKER FILÅTKOMST OCH DELNING Novell Filr är som Dropbox, men betydligt säkrare. Från och med nu kan alla anställda och studerande inom Ålands gymnasium arbeta med sina

Läs mer

Compose Connect. Hosted Exchange

Compose Connect. Hosted Exchange Sida 1 av 15 Compose Connect Hosted Exchange Presentation av lösningen: Compose Hosted Exchange Följande möjligheter finns för hantering av e-post 1. Lokalinstallerad Outlook-klient För att kunna använda

Läs mer

OneDrive för företag hos Svenska Brukshundklubben

OneDrive för företag hos Svenska Brukshundklubben OneDrive för företag hos Svenska Brukshundklubben Instruktion för OneDrive för företag Författare Thomas Holmén Version TH20170510:001 Målgrupp Kanslipersonal, FS, Utskott Datum 2017-05-10 Sammanfattning

Läs mer

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga 203-03-9 203-03-9 DIAGNOSTISKT PROV Tid Klockan 09.00-2.00 Hjälpmedel Inga Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. Rättning Tentamen omfattar 6

Läs mer

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion Webbteknik En kort introduktion Innehåll Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender 1 Historisk återblick 89 CERN Tim Berners Lee Ett plattformsoberoende sätt att sprida

Läs mer

dit06omr@cs.umu.se 12 juni 2009 Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE

dit06omr@cs.umu.se 12 juni 2009 Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE VT-09 Innehållsförteckning Inledning & problembeskrivning...1 Systembeskrivning...2 Affärsobjekt...2 Databasen...4

Läs mer

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Manuell installation av SQL Server 2008 R2 Express för SSF Timing Manuell installation av SQL Server 2008 R2 Express för SSF Timing Innehåll 1. Metoder att installera...1 2. Förutsättningar...2 DotNet Framework 3.5...2 MSI Installer 4.5...2 3. Hämta SQL Server 2008 R2

Läs mer

<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>

<script src= http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js></script> AngularJS Skriven av: Isak Glans. Datum: 2015-04-29. Kurs: Webbutveckling. Lärare: Per Sahlin. Utbildning: Systemutvecklare i.net, Newtons Yrkeshögskola. 1 Sammanfattning Syftet med denna uppsats är att

Läs mer

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.

Läs mer

Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 1.0

Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 1.0 Regelverk Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag Bilaga A Tekniska ramverk Version: 1.0 Innehållsförteckning 1 Bakgrund och syfte... 1 1.1 Definitioner 1 2 Inledning...

Läs mer

iphone app - Users Net2 AN1116-SE Allmänt Starta Appen

iphone app - Users Net2 AN1116-SE Allmänt Starta Appen iphone app - Users Allmänt Denna app finns tillgänglig hos Apple App Store. Appen fungerar på alla iphone eller ipad med ios 5.1 eller högre. Starta Appen När Appen laddats ner och installerats finns ikonen

Läs mer

JavaScript in SharePoint and not just for Apps. Wictor Wilén

JavaScript in SharePoint and not just for Apps. Wictor Wilén JavaScript in SharePoint and not just for Apps Wictor Wilén Wictor Wilén Agenda Varför JavaScript? JavaScript bibliotek SharePoint JS bibliotek JavaScript Client Side Object Model (JSOM/CSOM) REST Client

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,

Läs mer

Komma igång med Klassrum. En lärarhandledning om appen Klassrum för Mac

Komma igång med Klassrum. En lärarhandledning om appen Klassrum för Mac Komma igång med Klassrum En lärarhandledning om appen Klassrum för Mac Presentation av Klassrum för Mac Klassrum är en mångsidig app för ipad och Mac som hjälper dig att vägleda eleverna i lärandet, dela

Läs mer

MVC med Javascript och Ajax. Filip Ekberg

MVC med Javascript och Ajax. Filip Ekberg MVC med Javascript och Ajax Filip Ekberg MVC med Javascript och Ajax Lektion 7 ASP.NET MVC mail@filipekberg.se Veckans mål ASP.NET MVC Repetition & Diskussion Vad är MVC? Vad är ASP.NET MVC? Hur skapar

Läs mer

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012 DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012 Innehåll Testning med JUnit Refactoring Några designprinciper JUnit Ramverk i Java för testning av Java-klasser Utvecklat av Gamma

Läs mer

ASP.NET MVC. Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se. Innehåll

ASP.NET MVC. Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se. Innehåll ASP.NET MVC Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se Innehåll Introduktion till MVC Controller Action-metoder Views Arbeta med Layout-sidor och sektioner Route konfiguration

Läs mer

Komma igång med Qlikview

Komma igång med Qlikview Denna instruktion är till dig som är ny i Qlikview och snabbt vill komma igång med grundläggande funktioner. Innehåll 1 Introduktion... 2 1.1 Behörighet... 2 1.2 Webbläsare... 2 2 Installation av Qlikview

Läs mer

Laboration 2: Designmönster

Laboration 2: Designmönster Laboration 2: Designmönster Bakgrund Det har visat sig väldigt svårt att beskriva hur ett system, eller en dellösning, skall konstrueras på ett bra sätt. Det har överhuvud taget varit svårt att veta om

Läs mer

ADO.NET Murach Kapitel 17-20

ADO.NET Murach Kapitel 17-20 Databaser och C# ADO.NET Murach Kapitel 17-20 2013-01-30 1 Winstrand Development Databas ADO.NET Är en del av.net ramverket och tillhandahåller delar för att kommunicera med olika datakällor. Dessa kan

Läs mer

PP7Mobile User s Guide

PP7Mobile User s Guide PP7Mobile User s Guide PP7 Mobile är en del i PP7s produktserie och är beroende av PP7 Pro Desktop för att fungera. Modulen är optimerad för användning på mobiltelefon och/eller tablet. För användning

Läs mer

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det Behörighetssystem Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det Systemet måste kunna registrera vilka resurser, d v s data och databärande

Läs mer

Objektsamlingar i Java

Objektsamlingar i Java 1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och

Läs mer

Laboration 2: Designmönster

Laboration 2: Designmönster Laboration 2: Designmönster Bakgrund Det har visat sig väldigt svårt att beskriva hur ett system, eller en dellösning, skall konstrueras på ett bra sätt. Det har överhuvud taget varit svårt att veta om

Läs mer

PHP - Fortsättning. PHP och MySQL

PHP - Fortsättning. PHP och MySQL PHP - Fortsättning Copyright 2016 Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se PHP och MySQL Skapa en databasbaserad telefonkatalog Steg 1 Skapa en MySQL databas. Steg 2 Skapa en tabell i denna

Läs mer

MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR

MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR I följande dokument hittar ni information om hur ni administrerar er nya hemsida. Manualen går endast igenom grundläggande administration. För mer avancerad redigering

Läs mer

Axalon Process Navigator SP Användarhandledning

Axalon Process Navigator SP Användarhandledning Axalon Process Navigator SP Användarhandledning Axalon Process Navigator SP 2013, senast reviderad: den 11 juni 2014 Innehåll Innehåll... 2 Om denna användarhandledning... 3 Syfte... 3 Vem är denna handledning

Läs mer

ALEPH ver. 16 Introduktion

ALEPH ver. 16 Introduktion Fujitsu, Westmansgatan 47, 582 16 Linköping INNEHÅLLSFÖRTECKNING 1. SKRIVBORDET... 1 2. FLYTTA RUNT M.M.... 2 3. LOGGA IN... 3 4. VAL AV DATABAS... 4 5. STORLEK PÅ RUTORNA... 5 6. NAVIGATIONSRUTA NAVIGATIONSTRÄD...

Läs mer

Komma igång med Klassrum 2.1. En lärares guide till appen Klassrum för ipad

Komma igång med Klassrum 2.1. En lärares guide till appen Klassrum för ipad Komma igång med Klassrum 2.1 En lärares guide till appen Klassrum för ipad Introduktion till Klassrum Klassrum är en mångsidig ipad-app som hjälper dig att vägleda eleverna i lärandet, dela arbeten och

Läs mer

Version 1.8.7A. Tidrapportering med ctimesheet

Version 1.8.7A. Tidrapportering med ctimesheet Version 1.8.7A Tidrapportering med ctimesheet Installation I tidrapporten på webben finns en ikon som heter Mobile. Klicka på ikonen. En sida öppnas och du kan här välja mellan automatisk eller manuell

Läs mer

Systemkrav och tekniska förutsättningar

Systemkrav och tekniska förutsättningar Systemkrav och tekniska förutsättningar Hogia Webbrapporter Det här dokumentet går igenom systemkrav, frågor och hanterar teknik och säkerhet kring Hogia Webbrapporter, vilket bl a innefattar allt ifrån

Läs mer

Webbserverprogrammering

Webbserverprogrammering Webbserverprogrammering WES Webbserverprogrammering Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets

Läs mer

MVC med Javascript och Ajax. Filip Ekberg

MVC med Javascript och Ajax. Filip Ekberg MVC med Javascript och Ajax Filip Ekberg Filip Ekberg Microsoft & Xamarin MVP mail@filipekberg.se Vad ska vi lära oss? I denna kurs lär sig den studerande hur man jobbar med den naturliga uppdelningen

Läs mer

V2.6 VERSIONSINFORMATION

V2.6 VERSIONSINFORMATION V2.6 VERSIONSINFORMATION Hilti ON!Track Versionsdatum: 10.06.2017 1 Versionens höjdpunkter 2 2 Nya funktioner 3 2.1 Ny design för rapporter i webbapplikationen 3 2.1.1 Översikt över den nya rapportsidan...

Läs mer

SharePoint Online. Sök Hitta webbplatser, personer eller filer. Skapa en webbplats eller ett nyhetsinlägg

SharePoint Online. Sök Hitta webbplatser, personer eller filer. Skapa en webbplats eller ett nyhetsinlägg Snabbstartsguide Gör mer var du än är med säker åtkomst, delning och fillagring. Logga in på din Office 365-prenumeration och välj SharePoint i appfönstret. Sök Hitta webbplatser, personer eller filer.

Läs mer

Utvärdering Kravspecifikation

Utvärdering Kravspecifikation sida 1 (5) 1 Funktion, prestanda och teknik 1.1 Allmänt 1.1.1 TCP/IP ska användas som kommunikationsprotokoll. 1.1.2 IP version 4 ska stödjas. 1.1.3 Systemet bör vara Microsoft Active Directory-aware,

Läs mer

Daniel Akenine, Teknikchef, Microsoft Sverige

Daniel Akenine, Teknikchef, Microsoft Sverige Daniel Akenine, Teknikchef, Microsoft Sverige Quincy Invånare: 5,300 Arbete: 52% jordbruk 18 % byggsektor 18 % offentlig sektor Språk: Spanska 57% Företaget Inköp Företaget Inköp Installering Lång

Läs mer

E-legitimationsnämndens legitimeringstjänster för test

E-legitimationsnämndens legitimeringstjänster för test E-legitimationsnämndens legitimeringstjänster för test 2015-11-11 Inledning E-legitimationsnämnden) tillhandahåller två legitimeringstjänster för test. Den första legitimeringstjänsten har endast gränssnitt

Läs mer

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10 Projekt Rapport RaidPlanner Jeanette Karlsson UD10 Abstrakt: Denna rapport handlar om mitt projekt i kursen Individuellt Mjukvaruutvecklings projekt. Rapporten kommer att ta upp hur jag gått tillväga,

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Guide för Innehållsleverantörer

Guide för Innehållsleverantörer Library of Labs Content Provider s Guide Guide för Innehållsleverantörer Inom LiLa ramverket är innehållsleverantörer ansvariga för att skapa experiment som "LiLa Learning Objects", att ladda upp dessa

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Belastningstester med Visual Studio 2008 - Gränssnittet

Belastningstester med Visual Studio 2008 - Gränssnittet Belastningstester med Visual Studio 2008 - Gränssnittet Belastningstester med Visual Studio 2008 - Gränssnittet ANVÄNDARGRÄNSSNITTET Belastningstester med Visual Studio 2008 - Gränssnittet Test typer Alla

Läs mer

KOM I GÅNG MED DIN HANDBOK STANDARD FRÅN THOLIN & LARSSON

KOM I GÅNG MED DIN HANDBOK STANDARD FRÅN THOLIN & LARSSON KOM I GÅNG MED DIN HANDBOK STANDARD FRÅN THOLIN & LARSSON Kom i gång med din handbok Standard Innehåll 1 Börja redigera 2 Arbetsbordet 3 Redaktörsfliken 3.1 Uppstart: Att-göra-listor 4 Redigera innehåll

Läs mer

Introduktion till frånvaro

Introduktion till frånvaro Introduktion till frånvaro För att nå Skola24 kan du antingen använda en länk på skolans hemsida, skriva www.skola24.se direkt i webbläsaren och välja domän ur en lista eller skriva [domännamn].skola24.se

Läs mer

Instruktion: Trådlöst nätverk för privata enheter

Instruktion: Trådlöst nätverk för privata enheter Instruktion: Trådlöst nätverk för privata enheter orebro-byod Sida 2 av 21 Innehållsförteckning 1 Inledning... 3 2 Så ansluter du till nätverket orebro-byod... 4 2.1 Allmän information:... 4 2.2 Enkel

Läs mer

Att koppla FB till AD-inloggning

Att koppla FB till AD-inloggning Att koppla FB till AD-inloggning Helen Ekelöf 16. nov. 2017 (uppdaterad 10.april 2018) SOKIGO Box 315 731 27 Köping +46 (0)8 23 56 00 info@sokigo.com http://www.sokigo.com Org.nr: 556550-6309 INNEHÅLLSFÖRTECKNING

Läs mer

Bruksanvisning för VeraPlus

Bruksanvisning för VeraPlus Bruksanvisning för VeraPlus Börja med att installera VeraPlus Öppna förpackningen och plocka ut allt innehåll. I förpackningen finner du: Installation 1. Anslut nätverkskabeln i nätverksporten på baksidan

Läs mer

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Introduktion till integrering av Schenkers e-tjänster. Version 2.0 Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen

Läs mer

Generiska konstruktioner. Kursbokens kapitel 13

Generiska konstruktioner. Kursbokens kapitel 13 Generiska konstruktioner Kursbokens kapitel 13 1 Vad är en generisk konstruktion? Generisk står för; allmän eller generell En generisk konstruktion kan användas för olika typer av data Med hjälp av templates

Läs mer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

Installation/uppdatering av Hogia Personal fr.o.m. version 13.1

Installation/uppdatering av Hogia Personal fr.o.m. version 13.1 Installation/uppdatering av Hogia Personal fr.o.m. version 13.1 Viktig information gällande installation Från version 12.2 av Hogia Personal krävs Microsoft.Net Framework 3.5 SP1 för att installation skall

Läs mer

Language Integrated Query, LINQ, och databaser

Language Integrated Query, LINQ, och databaser Language Integrated Query, LINQ, och databaser 1 Imperativ eller deklarativ programmering Imperativ programmering Du som programmerare beskriver i detalj alla steg som måste utföras för att lösa en viss

Läs mer

Infomaker-appar med epaper-modulen Funktion och design, grundutförande

Infomaker-appar med epaper-modulen Funktion och design, grundutförande Infomaker-appar med epaper-modulen Funktion och design, grundutförande Mock-ups för att visa hur apparna ser ut och vad utgångspunkten är för vad som ingår i en Infomaker standard-app med epaper. Visar

Läs mer

Författare: Juha Söderqvist IT-GUI. Version 1.0. Datum

Författare: Juha Söderqvist IT-GUI. Version 1.0. Datum Författare: Juha Söderqvist IT-GUI Version 1.0 Datum 2017-08-18 Innehåll 1. Introduktion... 3 Human-computer interaction... 3 Grafiska användargränssnitt... 4 Operativsystem... 4 Xerox Alto Executive file

Läs mer

Objektorienterad programmering. Grundläggande begrepp

Objektorienterad programmering. Grundläggande begrepp Objektorienterad programmering Grundläggande begrepp Hur beskriver vi objekt? Vill ha en representationsoberoende beskrivning Abstrakta datatyper! Data Operationer Objekt Representerar en verklig eller

Läs mer

Webbtjänster med API er

Webbtjänster med API er Webbtjänster med API er Mål med lektionen! Titta på WCF klienter och förstå dessa. Vad lektionen omfattar WCF Clients Komma åt endpoints Vi har pratat om WCF i stort och vi har pratat om hur vi bygger

Läs mer