68
Tekniskt lyft av PaperLine Uppgradering av klient till Single Page Application i ett Manufacturing Execution System. Technical lift of PaperLine Upgrading of client to Single page Application in a Manufacturing Execution System. Filip Skogum Alexander Bennetoft Fakulteten för Hälsa, Natur och Teknikvetenskap Datavetenskap C-Uppsats 15hp Handledare, Katarina Asplund Examinator, Thijs J. Holleboom 18 jan -17

Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

Tekniskt lyft av PaperLine

Uppgradering av klient till Single Page Application i ett Manufacturing

Execution System.

Technical lift of PaperLine

Upgrading of client to Single page Application in a Manufacturing Execution

System.

Filip Skogum

Alexander Bennetoft

Fakulteten för Hälsa, Natur och Teknikvetenskap

Datavetenskap

C-Uppsats 15hp

Handledare, Katarina Asplund

Examinator, Thijs J. Holleboom

18 jan -17

Page 2: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna
Page 3: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

Abstract

This dissertation summarizes a project mission done at the requestor and company ÅF,

Karlstad. The project was to investigate the possibilities of upgrading parts of the system

named PaperLines which has outdated software. The system is used today at a paper mill for

tracking production and ease administrative work.

AMP, a SPA-platform for MES developed by ÅF, was used in the project to create a proof-of-

concept client with modernized user interface, support for odd screen resolutions and

smarter communication logics. Additionally, it was supposed to be able to run in the old

system, communicating with the server that was initially designed to work with the old client

that used outdated software.

During the development problems concerning the interlinking of the old client and the new

on a single computer and also cooperative communication between them on the same

server got revealed.

The project is seen as successful. A new client with modern user interface has been

produced including support for mobile usage. The client could in a near future even get to be

used in a live environment after evaluation made by ÅF.

Page 4: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

Sammanfattning

Denna uppsats beskriver ett examensarbete utfört hos uppdragsgivaren och företaget ÅF i

Karlstad. Arbetet gick ut på att undersöka i möjligheterna att uppgradera delar av systemet

PaperLines utdaterade tekniker. Systemet används idag på pappersbruk för att spåra

produktionen och underlätta administrativt arbete.

AMP, en SPA-plattform utvecklad av ÅF, användes i projektet för att utveckla ett proof-of-

concept till det gamla systemet. Tekniker, ramverk och verktyg som ingår i plattformen är

bland annat HTML5, TypeScript, Aurelia och Kendo UI.

Under utvecklingen uppdagades problem som att samköra en gammal och en ny klient på en

och samma dator samt att få båda att kunna kommunicera med samma server. Dessa

utmaningar har trots allt uppnåtts.

Projektet ses som lyckat då en ny klient med modernt användargränssnitt tagits fram där

bland annat stöd för mobil användning finns. Klienten kan även komma att användas i skarp

miljö efter en validering gjorts av ÅF.

Page 5: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

Förord

Vi vill tacka alla medarbetare på ÅF för sitt engagemang i projektet. Hjälpen vi fått av dem

har varit ovärderlig. Speciellt stort tack till eldsjälen Mikael Arvidsson för det han gjort för

oss. Mikael jobbar på samma avdelning vi suttit på denna termin och har ett betydande

deltagande i utvecklingen av AMP som ÅF tagit fram. Vi vill även tacka Katarina Asplund, vår

handledare på Universitetet, för hjälpen hon gett oss i att strukturera denna uppsats. Tack

går även ut till Katarina Friberg och Richard Hellberg på ÅF handledare på ÅF för möjligheten

vi fått att göra examensarbetet på ÅF samt er hjälp och stöd vi fått under tiden projektet

gått.

Page 6: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

Innehåll

Abstract ....................................................................................................................................... 3

Sammanfattning ........................................................................................................................... 4

Förord .......................................................................................................................................... 5

Figurförteckning ........................................................................................................................... 9

1 Introduktion .............................................................................................................................. 1

1.1 Uppdragsgivare - ÅF ...................................................................................................................... 1

1.2 Syfte och mål ................................................................................................................................. 1

1.3 Sammanfattning av projektet ........................................................................................................ 2

1.4 Rapportens översikt ...................................................................................................................... 2

1.4.1 Bakgrund................................................................................................................................. 2

1.4.2 Design ..................................................................................................................................... 2

1.4.3 Implementation ...................................................................................................................... 2

1.4.4 Resultat ................................................................................................................................... 3

1.4.5 Slutsats ................................................................................................................................... 3

2 Bakgrund ................................................................................................................................... 4

2.1 Översikt av projektet ..................................................................................................................... 4

2.1.1 Kravspecifikation .................................................................................................................... 4

2.2 PaperLine ....................................................................................................................................... 5

2.2.1 Arkpack ................................................................................................................................... 6

2.3 Gamla klienten – ASP.NET ............................................................................................................. 7

2.3.1 Fördelar med Web Forms ....................................................................................................... 8

2.3.2 Nackdelar med Web Forms .................................................................................................... 8

2.4 Nya klienten – AMP ....................................................................................................................... 9

2.4.1 Utvecklingsmiljö – Visual Studio ........................................................................................... 10

2.4.2 Programmeringsspråk .......................................................................................................... 11

2.4.3 TFS (Team Foundation Server) ............................................................................................. 12

2.4.4 Bootstrap .............................................................................................................................. 12

2.4.5 Kendo UI ............................................................................................................................... 13

2.4.6 Aurelia.io .............................................................................................................................. 13

2.4.7 Gulp.js ................................................................................................................................... 13

Page 7: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

2.5 Sammanfattning .......................................................................................................................... 14

3 Design ..................................................................................................................................... 15

3.1 Översikt ....................................................................................................................................... 15

3.1.1 Översikt över systemet ......................................................................................................... 15

3.2 Uppgradering av Front End ......................................................................................................... 17

3.2.1 Uppgradering av användargränssnitt ................................................................................... 17

3.2.2 Uppgradering av komponenter ............................................................................................ 18

3.3 Uppgradering av Back End........................................................................................................... 21

3.3.1 Före uppgraderingen ............................................................................................................ 21

3.3.2 Efter uppgraderingen ........................................................................................................... 24

3.4 Spegling av databas ..................................................................................................................... 27

3.5 Asynkron kommunikation ........................................................................................................... 28

3.6 Sammanfattning .......................................................................................................................... 29

4 Implementation ....................................................................................................................... 30

4.1 Inledning ...................................................................................................................................... 30

4.2 Implementation av grafiska komponenter .................................................................................. 30

4.3 Dataflöde ..................................................................................................................................... 32

4.4 NHibernate och databaskommunikation .................................................................................... 36

4.5 Problem och val av lösningar....................................................................................................... 38

4.6 Automatiskt genererade filer. ..................................................................................................... 43

4.7 Sammanfattning .......................................................................................................................... 44

5 Resultat ................................................................................................................................... 45

5.1 Resultat av krav ........................................................................................................................... 45

5.1.1 Går projektet att genomföra? .............................................................................................. 46

5.1.2 Samkörning av gammal och ny klient ................................................................................... 46

5.1.3 Sammanfogning av AMP och serverlagret ........................................................................... 47

5.1.4 Användargränssnitt .............................................................................................................. 47

5.1.5 Serverkommunikation .......................................................................................................... 47

5.2 Prestandajämförelse av gamla och nya tekniken ........................................................................ 48

5.2.1 Front end .............................................................................................................................. 48

Page 8: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

5.2.2 Back end ............................................................................................................................... 48

5.3 Utvärdering av AMP teknikstack ................................................................................................. 49

5.4 Problem ....................................................................................................................................... 50

5.5 Sammanfattning .......................................................................................................................... 51

6 Slutsats ................................................................................................................................... 52

6.1 Utvärdering av projektet ............................................................................................................. 52

6.2 Vidareutveckling .......................................................................................................................... 52

6.3 Kundkontakt ................................................................................................................................ 53

6.4 Tidsåtgång ................................................................................................................................... 53

6.5 Slutord ......................................................................................................................................... 54

Referenser ................................................................................................................................. 55

Page 9: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

Figurförteckning

Figur 1: MES PaperLine. .............................................................................................................. 6

Figur 2: Massa till Papper ........................................................................................................... 6

Figur 3: Ett exempel på MVC-modellen. .................................................................................... 7

Figur 4: Teknikstacken som användas i projektet AMP(Aurelia MES Platform) ........................ 9

Figur 5: MVVM-arkitekturen ramverket Aurelia följer ............................................................ 10

Figur 6: Kodexempel: Implementation av javascript ............................................................... 11

Figur 7: Kodexempel: Ett enkelt rutnät från biblioteket i Kendo UI. ....................................... 13

Figur 8: Klassdiagram över systemet PaperLine....................................................................... 16

Figur 9: Den gamla vyn i sin helhet .......................................................................................... 17

Figur 10: Den nya vyn i sin helhet ............................................................................................ 18

Figur 11: Rutnät från gamla vyn. .............................................................................................. 18

Figur 12: Rutnät uppritat av Kendo UI. .................................................................................... 19

Figur 13: Hantering av gränssnitt utan Bootstrap. ................................................................... 20

Figur 14: Hantering av gränssnitt med Bootstrap. ................................................................... 20

Figur 15: .aspx klass .aspx.designer.cs klass och .aspx.cs klass ................................................ 21

Figur 16: Dataflöde i det gamla systemet ................................................................................ 23

Figur 17: Klassdiagram över gamla systemets fyra stora komponenter .................................. 24

Figur 18: Dataflöde i nya implementationen. .......................................................................... 26

Figur 19: Klassdiagram över nya implementations fyra stora komponenter .......................... 27

Figur 20: Representation av Transferobjekt och Transferaggregat ......................................... 28

Figur 21: Asynkron kommunikation i Typescript ..................................................................... 29

Figur 22: Kodexempel: Implementation av Rutnät i både Web Form och Kendo UI .............. 30

Figur 23: Kodexempel: Kendo Contextmenu ........................................................................... 31

Figur 24: Kendo Contextmenu med ett menyobjekt ............................................................... 31

Figur 25: Kodexempel: Implementation av funktion i TypeScript-fil ....................................... 33

Figur 26: Kodexempel: Implementation av function i proxyobjektet ...................................... 33

Figur 27: Kodexempel: Implementation av Web-API ............................................................... 34

Figur 28: Kodexempel: Implementation av Response-objekt .................................................. 34

Figur 29: Kodexempel: Implementation av Request-objekt .................................................... 34

Page 10: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

Figur 30: Kodexempel: Implementation av function i Serviceklass ......................................... 35

Figur 31: Kodexempel: Anrop från klient till server ................................................................. 36

Figur 32: Kodexempel: Proxyfactor med uppsättning av TCP-förbindelser ............................. 37

Figur 33: Representation av Interface mellan klient och server .............................................. 37

Figur 34: Kodexempel: Databasanrop från server ................................................................... 38

Figur 35: Kodexempel: Konfiguration av Mousetrap. .............................................................. 39

Figur 36: Kodexempel: Implementation av Mousetrap. .......................................................... 39

Figur 37: Web Forms representation av meddelanderuta. ..................................................... 39

Figur 38: Aurelias representation av meddelanderuta. ........................................................... 40

Figur 39: Utskriftsfunktion från Web Forms. ........................................................................... 42

Figur 40: Utskriftsfunktion från Aurelia.IO och Kendo UI ........................................................ 43

Page 11: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

1

1 Introduktion

Detta projekt går ut på att skaffa kunskap kring och påbörja utvecklingen av den nya

webbaserade klienten till PaperLine, ett MES [1] (Manufacturing Execution System) som

utvecklas och säljs av uppdragsgivaren; ÅF, till kunden som är ägare till ett pappersbruk i

Sverige. Produkten används av kunden för att spåra produktionen i ett pappersbruk. Den

gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens

önskemål efterlikna en skrivbordsklient. Dagens lösning har visat sig ha ineffektiv prestanda

med ofta långa väntetider mellan anrop och operationer. Klienten är dessutom inte

anpassad för mobila enheter eller enheter med annorlunda bildförhållande. Därför har ÅF

beslutat att pröva utvecklingen av en ny klient, baserad på dess egenutvecklade plattform.

Genom att utveckla klienten på den nya plattformen förenklas användandet på flera plan, till

exempel kan truckföraren ha PaperLine på en surfplatta i hytten. Klienten kommer att bli

mer responsiv och mobilanpassad samt bli mer prestandavänlig.

1.1 Uppdragsgivare - ÅF

ÅF [3] grundades 1895, då kallat Ångpanneföreningen. Föreningen gjorde initialt

besiktningsuppdrag på ångpannor och har genom historien varit betydande inom

utvecklingen av ångkraft, elektricitet, kärnkraft och digitalisering. Idag är ÅF med cirka 8500

medarbetare i mer än 30 länder ett konsult- och ingenjörsföretag som skapar lösningar inom

energi, industri och infrastruktur. Företaget har en nettoomsättning på ca 10 miljarder SEK

per år och driver projekt i länder över hela världen. På Karlstadskontoret vid stadsparken

jobbar ca 200 personer.

1.2 Syfte och mål

Målet med projektet är att analysera den gamla klienten, ta till vara på de bra delarna och

vidareutveckla delar i behov av förbättring enligt kravspecifikationen se avsnitt 2.1.1.

Därefter ska en början till ny klient skapas med några fåtal färdigställda vyer. Vyerna ska

sedan användas i en guide som görs till uppdragsgivaren. Guiden ska i sin tur beskriva

vidareutvecklingen av den nya klienten. Syftet är att säkerställa prestanda och öka

Page 12: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

2

användareffektiviteten, det vill säga minimera den uppmärksamhet operatörer behöver

spendera på klienten.

Kunden är i denna en rapport referens till ett pappersbruk som drivs i Sverige.

Pappersbruket är ett integrerat bruk där hela produktionen av papper sker, ända från

pappersmassan till färdiga produkter i form av kartong och skrivarpapper.

1.3 Sammanfattning av projektet

Uppgiften var att ta reda på hur mycket nytta en ny klient kan göra och om den kan implementeras

utan stora konsekvenser. Därpå ska ett en prototyp byggas och presenteras.

Uppgiften anses vara slutförd.

1.4 Rapportens översikt

Rapporten innehåller 5 kapitel, exklusive detta kapitel, som beskrivs kort nedan:

1.4.1 Bakgrund

Kapitlet Bakgrund ger en övergripande bild av projektets syfte och mål. Kapitlet beskriver

även kravspecifikationen och uppdragsgivaren. Därefter introduceras systemet PaperLine

och en beskrivning av den gamla klienten samt den nya klienten och alla tillhörande tekniker

som klienterna nyttjar.

1.4.2 Design

Detta kapitel ger en systemöversikt över PaperLine, beskriver fördelarna med den nya

klienten samt diskuterar skillnaden på den gamla och den nya klienten. Här nämns även vilka

förbättringar den nya klienten för med sig. Sist beskrivs hantering av data från databasen

och hur kommunikationen till den fungerar.

1.4.3 Implementation

Implementationskapitlet beskriver genomförandet på en detaljerad nivå. Det täcker

implementationen av såväl grafiska komponenter och vy-komponentens kommunikation

som dataflödet genom hela systemet. Vidare finns även diskussion kring problem och val av

lösningar. Här motiveras lösningsvalen och det ges även en djupare förståelse för tekniken.

Page 13: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

3

1.4.4 Resultat

Detta kapitel reflekterar över alla fördelar med den nya klienten samt diskuterar resultatet

utifrån kravspecifikationen. Därefter kommer ett avsnitt som jämför gamla och nya klienten

prestandamässigt och ett avsnitt som utvärderar tekniken i den nya klienten. Sist diskuteras

problem som uppstod under projektets gång.

1.4.5 Slutsats

Slutsatsen utvärderar uppdraget och summerar erfarenheten det givit. Kommentarer kring

vidareutveckling och kortfattat om kontakten med kunden. Kapitlet beskriver även

tidfördelningen på projektet och avslutar med slutord.

Page 14: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

4

2 Bakgrund

I detta kapitel presenteras tekniken i den nya klienten. Kravspecifikationen beskrivs och

tolkas. Ett avsnitt går igenom vad PaperLine är och vad det används till. Den gamla klienten i

PaperLine beskrivs här tillsammans med sin systemarkitektur MVC(Model, View, Controller)

[4]. Även verktyg, tekniker och ramverk som använts i projektets nya klient samt dess

systemarkitektur MVVM(Model, View, ViewModel) [5] förklaras här för att vidare kunna

förstå diskussioner kring designen i kapitel 3.

2.1 Översikt av projektet

Projektet beskriver det initiala steget i bytet av klient för systemet PaperLine och innehåller

dess planering samt implementering av teknikstacken AMP(Aurelia MES Platform, där MES

står för ’Manufacturing Execution System’), vilken är baserad på en rad verktyg och ramverk,

se avsnitt 2.4.

Utvecklingsmiljön har under projektets gång varit Visual studio [6], se avsnitt 2.4.1 och

arbetet har, som tidigare nämnts i introduktionen, framförallt utgått från att uppgradera en

vy i klienten, samt att i mån av tid uppgradera fler vyer med det slutliga målet att alla gamla

vyer i systemet blivit uppgraderade med den nya tekniken(AMP).

2.1.1 Kravspecifikation

Projektet innebar från start en uppgradering av det existerande systemet PaperLines klient

från dåvarande Web Forms till en mer modernare och snabbare klient i form av bland annat

HTML5 [7](se avsnitt 2.4.2). Eftersom PaperLine i dagens läge omfattar stora delar av

kundens produktionssystem innebär det att en uppgradering av hela systemet skulle

medföra tusentals timmars arbete. Därför valdes att en eller två vyer skulle uppgraderas.

Projektet skulle även innehålla en utredning av vilka problem som kan uppstå vid denna

uppgradering.

Efter små ändringar hos kunden, ändrades projektet och kravspecifikationen till att

demonstrera en vy som ett proof-of-concept, för att senare demonstrera och visa den

uppgraderade vyn och bevisa fördelar med tekniken AMP.

Sammanfattningsvis ingår följande punkter i projektets specifikation:

Page 15: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

5

Kan gammalt system och ny teknik samverka?

Uppgradera den gamla klienten med en uppgraderad vy som proof-of-concept.

Kraven som sattes upp var generella vilket gjorde att delkrav under implementationen sattes

upp. Delkraven var inget som var i diskussionen med kunden utan bestämdes i samråd med

de involverade i projektet på ÅF.

Ett av de krav kunden hade, men som lågprioriterades då planering av projektet gjordes, var

att den grafiska designen skulle behållas till största möjliga mån. Detta då kunden till så stor

del som möjligt skall kunna känna igen sig i systemet och snabbt kunna återfå högt

produktionstempo. Fokus lades istället på uppgradering av visuella delar utan på

prestandan.

2.2 PaperLine

PaperLine är sedan 2008 utvecklat av ÅF som ett MES. PaperLine är byggt för att övervaka

och spåra produktionen i pappersindustrin. PaperLine ligger mellan lagren automation och

affärssystem vilket innebär att PaperLine tar in basdata från affärssystemen och returnerar

produktionsdata, vilket man ser i figur 1. Från lagret automation får PaperLine

planeringsdata för att sedan vidarebefordra information om det producerade materialet till

affärssystemet.

Högst upp finns systemet som tillhandahåller information om vad som skall produceras,

framtida produktion av order, planering och lagerstatus.

Lagret i mitten tillhandahåller information om utvärderingar kring producerade order samt

utvärderingar om vad som skall produceras.

Till sist det undre lagret, som består av många olika system, maskiner och data. Lagret har till

uppgift att tillhandahålla system till var och en av maskinerna i produktionen. Där ingår allt

från sensorer till teststationer för order som produceras.

Page 16: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

6

Figur 1: MES PaperLine.

2.2.1 Arkpack

Under projektets gång valde ÅF, till en början, att en vy skulle uppgraderas och efter

diskussioner med medarbetare på ÅF ledde det till att projektet initialt lyfter vyn

Arkpackning, vilket är en av de vyer i kategorin pack som är inringat i figur 2 . Arkpack är en

av de nuvarande omkring 5 vyer som existerar i kategorin pack men har i PaperLine klassats

som efterbehandling.

Figur 2: Massa till Papper

Page 17: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

7

Arkpackning är en senare del av produktionslinjen i fabriken. Figur 2 visar att packningen

ligger efter utskott och efterbehandlingen vilket mynnar ut i lagret. Till arkpack kommer

specifika ark in till avdelningen för att packas till ”Reams”, vilket är ett mått på ett visst antal

pappersark. Antalet ark i ett ream kan variera.

Packningen sker till stor del automatiskt med hjälp av robotar vilket innebär att

arkpacksbilden i PaperLine-vyn kan operera utan konstant uppsikt från användare.

2.3 Gamla klienten – ASP.NET

Systemet PaperLines klient som existerar idag hos kunden är byggt med Web Forms, en del

av Microsofts ramverk ASP.NET [8]. Ramverket är byggt med öppen källkod för att bland

annat producera webbapplikationer. Web Form, som är en av ramverkets grundblock när

det kommer till webbapplikationer, är designat enligt arkitekturen MVC, se figur 3.

Figur 3: Ett exempel på MVC-modellen.

I modellens tre delar är det vyn(View) användaren kommer se, modellen(Model) skickar

information från databasen vid uppdateringar som användaren skapat via

kontrollen(controller) i form av inmatningar i vyn.

Page 18: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

8

2.3.1 Fördelar med Web Forms

User Controls

User Controls [9] är grafiska komponenter som utvecklare själva kan skapa och återanvända.

Dessa komponenter byggs upp av redan existerande komponenter ASP.NET och Visual

Studio erbjuder, vilket gör att de mycket liknar Web Forms-sidor. Komponenter måste sedan

bäddas in i redan existerande Web Forms-sidor då de inte fungerar utan att implementeras i

andra Web Forms. User Controls kan göra stora och repetitiva arbeten enklare.

2.3.2 Nackdelar med Web Forms

View State

En av nackdelarna med Web Forms är hur ramverket behandlar webbapplikationen vid

uppdateringar och hämtning av data. Web form måste vid dessa fall slänga all data sparad på

sidan för att sedan hämta hem allt på nytt. Detta medför att mycket onödig data kommer

skickas mellan klient och server. Web Forms lösning på problemet blev att skapa

lagringsutrymmen kallade View- och Sessionstates [10] [11] som till stor del fungerar som en

cookie fungerar i en webbläsare. I lagringsutrymmena kan data tillfälligt sparas som kommer

användas då sidan laddat om eller data kommit tillbaka från servern. Trots att dessa

lagringsutrymmen existerar kan inte all data sparas undan i utrymmena, detta för att vid

med stora mängder sparad data tillkommer prestandaproblem då view och sessionstates

måste följa med ner till servern och tillbaka upp igen. Men så länge kommunikationen

behålls enkel kan dessa problem undvikas.

Page 19: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

9

2.4 Nya klienten – AMP

Figur 4: Teknikstacken som användas i projektet AMP(Aurelia MES Platform)

Den nya klienten som ersätter Web Forms innehåller komponenter bestående av bland

annat HTML-filer och Typescript-filer(se avsnitt 2.4.2). Utöver det används en rad

komponenter och verktyg som beskrivs nedan. Den nya klienten jobbar på en helt ny

plattform kallad AMP där Aurelia (se avsnitt 2.4.6) [12] är det ramverk som används för

struktur och kodning. Aurelia och är baserat på systemarkitekturen MVVM(Model, View,

ViewModel).

MVVM-arkitekturen, se figur 5, är ett alternativ till MVC och går ut på att skilja

användargränssnittet från dess logik. Delen ’View’ innehåller grafisk struktur, layout och kod

för kommunikation till ’View-Model’, det vill säga kod som inte innehåller logik. Model är

precis som i MVC den enhet som innehåller all logik.

Page 20: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

10

Figur 5: MVVM-arkitekturen ramverket Aurelia följer

2.4.1 Utvecklingsmiljö – Visual Studio

Microsoft har sedan 1997 släppt nya versioner av sin utvecklingsmiljö Visual Studio som

innehåller en handfull kompilatorer för programmeringsspråk. Beroende på

programmeringsspråk kan användaren få automatisk komplettering och automatisk

generering av sin kod. Utvecklingsmiljön omhändertar projektets filsystem, bygger och kan

exportera projektet som en produkt färdig att installera.

Page 21: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

11

2.4.2 Programmeringsspråk

Nedan beskrivs de programmeringsspråk som används i projektet.

C#

”C-Sharp” [13] är vad många kallar Microsofts version av Java [14]. C# är ett objektorienterat

och hårt typat1 programmeringsspråk. Det är en del i Microsofts .NET-plattform och är

officiellt baserat på C++ [15]. Likt Java kompileras C# först till bytekod2 och körs sedan i en

virtuell maskin. Detta tillvägagångssätt är självklart prestandakrävande men gör språket

plattformsoberoende vilket ger det fler applicerbara områden.

HTML5

År 2014 fastställdes version 5 av standarden som HTML använder sig av i uppbyggnad av

World Wide Web. HTML som är ett märkspråk använder sig av så kallade taggar för att skapa

allt från indelade sektioner till att importera bilder. Taggarna definierar typerna av en

komponent på webbsidan.

Språket går att expandera utanför sina egna ramar med hjälp av script i form av JavaScript

[16](se avsnittet nedan) och andra tillägg. Exemplet i figur 6Figur 6: beskriver en inkludering

av JavaScript till en HTML-sida. Verktygen och ramverken som beskrivs senare i bland annat

avsnitt 2.4.4 och 2.4.5 är exempel på sådana tillägg.

Figur 6: Kodexempel: Implementation av JavaScript

JavaScript

JavaScript är som tidigare nämnts en påbyggnad till HTML där fokus ligger på att manipulera

komponenter i webbsidor på framförallt klientsidan av webbläsaren. Språket kan på

klientens sida utvärdera, beräkna och presentera användarens inmatning utan anropa till

servern eller att behöva ladda om sidan. Med tiden har JavaScript utvecklats och gått från att

bara vara ett klientbaserat språk till att även kunna implementeras och användas bland

annat på webbservrar.

1 Hård typning, även statisk typning, är när variabler tilldelas en specifik datatyp vid kompilering och behåller den under resten av programmets livslängd. 2 Bytekod är en slags kompilerad programkod. Till skillnad från maskinkod, som är knuten till en specifik plattform, är bytekod abstrakt eller virtuell eftersom den inte är bunden till en maskinarkitektur

Page 22: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

12

TypeScript

TypeScript [17] är ett scriptspråk som transpilerar3 till JavaScript. TypeScript, som är byggt i

öppen källkod av Microsoft, ger användaren möjlighet att koda hårdtypat och

objektorienterat. TypeScript som språk är influerat av JavaScript, Java och C# vilket gör att

utveckling med Typescript blir klassbaserad. Transpilatorn som ingår i TypeScript översätter

TypeScript till JavaScript-kod samt skapar upp en mappnings fil som knyter samman den

traspilerade JavaScript-filen och TypeScript-filen. Denna sammanfogning görs för att enkelt

felsöka koden under exekvering. Skulle fel inträffa kommer mappningen att hänvisa vart

felet inträffat i TypeScript-koden trots att felet inträffade i JavaScript-koden.

CSS

CSS [18] står för ’Cascading Style Sheets’ och är kod som beskriver hur grafiska komponenter

bland annat ska bete sig, positionera sig, förhålla sig med hänsyn till skärmupplösning samt

storlekar på text och tillgängliga fonter ingår i CSS. Varje enskild HTML-sida kan inkludera sin

egen CSS-kod men i detta projekt kommer mycket av CSS-hantering ske automatiskt med

hjälp av Bootstrap [19] och Kendo UI [20].

2.4.3 TFS (Team Foundation Server)

TFS [21] är ett nätverksbaserat versionshanteringsverktyg som låter programmerare enkelt

kunna jobba på samma projekt och bidra med varsin del kod till lösningen. TFS migrerar ihop

filerna och behåller all historik så man alltid kan stega bakåt till föregående ändringar i

projektet.

2.4.4 Bootstrap

Bootstrap är ett HTML-och CSS-ramverk där hemsidor dynamiskt kan redigera sin grafik

beroende på plattformen och enhetens skärmstorlek. Användning av Bootstrap sker

framförallt då utvecklare vill skapa webbapplikationer och webbsidor för såväl

datoranvändning som mobilanvändning.

I Bootstrap manipuleras så kallade “stylesheets” automatiskt när användaren delger grafiska

komponenter olika klasser och kan på så sätt bestämma hur webbsidan skall se ut.

3 En transpilator är en typ av kompilator som använder kod från ett programmeringsspråk och genererar ekvivalent kod i ett

annat programmeringsspråk.

Page 23: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

13

Stylesheeten är även modulära vilket innebär att vissa delar till viss del går att ändra på för

att skapa ett mer personligare gränssnitt.

2.4.5 Kendo UI

Kendo UI är ett utvecklingsverktyg för webbsidor. Biblioteket innehåller grafiska

komponenter i form av bland annat grafer, menyer och kartor som kan inkluderas till

webbsidan för en mer användarvänlig upplevelse. Kendo UIs grafiska komponenter gör att

den visuella utvecklingen av webbsidor blir enklare och snabbare för utvecklare. I figur 7Figur

7: Kodexempel: Ett enkelt rutnät från biblioteket i Kendo UI. nedan visas hur Kendo UI i en

inbyggd HTML-scriptfunktion kan bygga upp ett simpelt men stilrent rutnät.

Figur 7: Kodexempel: Ett enkelt rutnät från biblioteket i Kendo UI.

2.4.6 Aurelia.io

Aurelia.io är ett SPA-ramverk byggt enligt MVVM-arkitekturen för att enkelt kunna skapa och

strukturera användargränssnitt. SPA [22] står för Single Page Application, vilket innebär att

sidan aldrig ska behöva laddas om utan användaren skall känna som om sidan hela tiden

dynamiskt laddar in ny data. Aurelia.io utgår från ett skelett där fördefinierade funktioner

finns för att med hjälp av verktyg som TypeScript och JavaScript enkelt kunna utveckla

webbsidor och webbapplikationer. Verktygets stora fördel kan framförallt ses då storleken

på programmets kod går från i vanliga fall vara överskådligt till oöverskådlig. I fallet då

aurelia används kommer utvecklarens kod att förbli överskådlig även vid stora projekt.

2.4.7 Gulp.js

Gulp [23] är ett kompileringsverktyg med bland annat enhetstestning och minimering av

kod. Stegen för funktioner i Gulp sker automatiskt via flöden genom processer där varje

process lägger på en ny funktion, t.ex. kan en process minimera koden genom att ta bort

onödiga delar utan att förändra grundfunktionaliteten. Efter den processen kan programmet

Page 24: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

14

skicka utdata till en debug-komponent för felhantering och slutligen skicka ut resultatet av

alla processer till en specifik mapp.

2.5 Sammanfattning

Detta kapitel har presenterat projektets bakgrund där en kravspecifikation för projektet och

det gamla system kunden använder sig av idag har beskrivits. Kapitlet har även beskrivit de

tekniker och de verktyg som använts i projektet.

Page 25: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

15

3 Design

I detta kapitel beskrivs programmets nya klient i detalj samt förbättringar sett mot den

gamla versionen som bygger på ASP.NET. Det förs även diskussioner kring de problem som

fanns i den gamla klienten och hur dessa problem tacklas i den nya plattformen. I design-

kapitlet beskrivs även hanteringen av databasanrop och den metod som används för att

spegla datamängder till klienten. Sist diskuteras den asynkrona kommunikationen i den nya

klienten.

3.1 Översikt

Den nya klienten som kommer implementeras i projektet bygger i dagsläge på en klient från

ett annat projekt ÅF jobbat med. Klienten är en webbaserad applikation för surfplattor hos

ett företag som driver en stor återvinningsstation och används vid uppgraderingen som mall

för att försöka hålla en standard för hur projekt skall se ut producerade av ÅF med

teknikstacken AMP.

Mallen innehåller bland annat komponenter för utveckling av webbapplikationer. En av

komponenterna är vyer, vilket i AMP är en SPA(Single Page Application). SPA innebär att

sidan aldrig behöver laddas om utan hämtar endast nödvändig data på begäran och

uppdaterar sidan bitvis.

3.1.1 Översikt över systemet

Klassdiagrammet representerat i figur 8 beskriver systemet i sin helhet, där klient, server,

common och windows service ingår. Figuren beskriver även hur kommunikationen mellan

delarna i systemet fungerar. Lagret common tillhandahåller all kommunikation mellan klient,

server och windows service vilket även beskrivs vidare i avsnitt 3.3.1.

I figuren syns klienten där vyerna, bland annat gamla och nya Arkpack, ligger. Servern som

tillhandahåller kommunikationen med databasen samt windows services som tillhandahåller

bland annat meddelandetjänster syns också här.

Page 26: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

16

Figur 8: Klassdiagram över systemet PaperLine.

Client Windows service

Common

Server

Returnerar:

Data

Förbindelser

Skickar:

Andvändar-

förfrågningar

Returnerar:

Data

Skickar:

Andvändar-

förfrågningar

Page 27: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

17

3.2 Uppgradering av Front End

Nedan beskrivs skillnaderna i det grafiska utseendet mellan Web form i den gamla klienten

och AMP i den nya klienten.

3.2.1 Uppgradering av användargränssnitt

Gamla vyns användargränssnitt.

Figur 9 representerar den gamla vyns användargränssnitt, uppritad med komponenter från

.NET Web Forms. Upplägget är ganska simpelt med få inmatningsfält och fler textfält där

information om order kommer fram. Inmatningsfälten kommer ofta från skannad order och

mätinstrument som därefter packas då inga fel uppstått. I gränssnittet ingår även ett antal

rutnät där bland annat meddelanden gällande order från tidigare steg i produktionen finns

samt information om order som redan packats. Vyns syfte är simpelt; ta in mätdata,

kontrollera att allt stämmer, uppdatera databasen om att ordern blivit packad samt visa

användaren relevant data för ordern och andra order.

Figur 9: Den gamla vyn i sin helhet

Page 28: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

18

Nya vyns användargränssnitt

I figur 10 demonstreras den nya vyns användargränssnitt med komponenter uppritade med

bland annat Kendo UI.

Gränssnittet har här ett mer modernt utseende men med samma komponenter där de

liggandes på i princip samma plats som i den gamla vyn.

Figur 10: Den nya vyn i sin helhet

3.2.2 Uppgradering av komponenter

Kendo UI

Vid uppgradering av front end för systemet valdes, som tidigare nämnt, att använda sig av

det grafiska utvecklingsverktyget Kendo UI istället för Web Forms utdaterade och gamla

design av grafiska komponenter. I figur 11 och figur 12 kan dessa förändringar ses.

Figur 11: Rutnät från gamla vyn.

Page 29: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

19

Figur 12: Rutnät uppritat av Kendo UI.

Komponenter som ritas upp av verktyget Kendo UI kommer till stor del att likna de gamla

komponenterna uppritade av Web Forms. En av anledningarna till att utseendet behålls är

att till största del göra övergången mellan gammalt och nytt system så enkelt som möjligt för

kunden.

Bootstrap

Som tidigare nämnt är Bootstrap ett responsivt ramverk för användargränssnitt. Där en av

funktionaliteterna som inkluderats är att bygga upp användargränssnitt utefter plattform.

Detta innebär att då storleken ändras på plattformen kommer Bootstrap att arrangera

layouten olika för att till bästa möjlighet illustrera vyns ursprungliga utseende.

Som illustreras i figur 13 och 14 kan skillnader ses mellan vanlig hantering av webbsidor, som

inte tar storlek på plattform i hänsyn och Bootstraps hantering av layout.

Vid hantering av layout utan Bootstrap kommer, som demonstrerat i figur 14, komponenter

inte alltid synas på den plattform man använder. För full användning av sidan på bland annat

mobil tvingas därför användaren zooma ut vyn, vilket medför att vyn blir liten och oläsbar.

Bootstrap hanterar alla delar av hemsidan individuellt och kan strukturera om dem, som att

trycka ihop dem och sträcka ut dem. Även placera dem, till exempel, under varandra eller vid

sidan av varandra.

Figur 13 visar hur Bootstrap löser de situationer då användning av mobil sker. Genom att

stapla om komponenter på höjden istället skapar Bootstrap ett mer mobilvänligt

användargränssnitt.

Page 30: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

20

Figur 14: Hantering av gränssnitt utan Bootstrap.

Figur 13: Hantering av gränssnitt med Bootstrap.

Page 31: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

21

3.3 Uppgradering av Back End

3.3.1 Före uppgraderingen

Vyns uppbyggnad

Skapandet av en vy i ASP.net görs till stor del genom tre komponenterna aspx, aspx.deginer

och aspx.cs och denna visualiseras i figuren Figur 15 där komponenterna aspx och

aspx.designer.cs utgör lagret där det grafiska användargränssnittet utvecklas.

Figur 15: .aspx klass .aspx.designer.cs klass och .aspx.cs klass

Aspx klassen tillhandahåller grafiska html-komponenter samt ASP.NETs egenbyggda

komponenter vilket innebär att klassen försöker att till så stor del som möjligt frångå logiskt

uttryck.

Inmatning från användare Data från server till användare

Page 32: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

22

Aspx.designer-klassen är en brygga som genereras automatiskt av Visual Studio och skapad

för att enklare kunna utveckla och hantera koden i aspx.cs klassen för de komponenter

skapade i det grafiska användargränssnittet.

Till sist är det aspx.cs klassen vars uppgift är att hantera alla logiska operationer. Här sker allt

från visuella ändringar i de grafiska komponenterna till serveranrop och beräkningar av data.

Data som kommer hit kan vara från användaren där utvärdering av inmatning behöver göras

eller serverdata som skall sållas och visas på vyn.

Dataflöde

Dataflödet för ett Web Form är i ett “fågelperspektiv” enkelt att begripa och kan ses som ett

bra val för en webbapplikation som använder sig av mycket serverkommunikation då en av

fördelarna med Web Form är kontrollen man har över servern.

Användningen av webform sker i tre steg med serverns sida inräknat. Dessa tre steg visas i

figur 16 och beskrivs som följer.

1. Klassen aspx tillhandahåller information kring vyns element och dess identifierare.

Därifrån kommer information från användaren skickas vidare till aspx.cs klassen

2. Klassen aspx.cs är code-behind till Web Forms. Här sker alla logiska funktioner, anrop

till servern, vyhantering samt valideringar. Det kan, som tidigare diskuterats, vid stora

projekt skapa komplex och icke hanterbar kod. Trots detta är server-anropen relativt

simpla utifrån klientens perspektiv.

3. Detta sista steg i kommunikationen med servern sker med fördefinierade

“endpoints” [24] klienten kan koppla upp sig mot. Därifrån hämtas önskad data som

sedan skickas tillbaka till aspx.cs klassen och sedan upp till användaren.

Page 33: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

23

Figur 16: Dataflöde i det gamla systemet

Klassdiagram

I figur 17 visas ett mer ingående klassdiagram samt hur en vy hämtar data från databasen

och servern.

Då vyn skall hämta data från databasen krävs, som beskrivs avsnitt 4.4, först förbindelser till

servern från klassen ProxyFactory som är lokaliserad i delprojektet common. Det sker genom

funktionen Get. Förbindelserna(som Microsoft döpt till kanaler) innehåller den endpoint till

servern där TCP(Transmission Control Protocol)-förbindelse [25] sätts upp.

För att sedan knyta samman klient och server skapas ett mellanlager kallat IService. IService

är ett interface för asynkron kommunikation(se avsnitt 3.5) där bland annat det så kallade

Page 34: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

24

transferobjektet(se avsnitt 3.4) [26] skickas från databasen till klient och vy via .NET-

ramverket WCF(Windows Communication Foundation) [27].

Figur 17: Klassdiagram över gamla systemets fyra stora komponenter

3.3.2 Efter uppgraderingen

Vyns uppbyggnad

Uppbyggnaden av de nya vyerna med hjälp av AMP uppdelas till skillnad från de gamla

vyerna i flera delar. Likheterna i sin helhet kan dock fortfarande ses då tre delar fortfarande

bygger upp grunden, SPA, Web-API [28] och Service och Server. Kommunikationen har dock

förflyttats och delats upp mellan fler lager. Den logiska koden existerar inte längre i en klass,

utan har här blivit uppdelad i fler delar där var och en tillhandahåller egna funktionaliteter.

Högst upp och närmast användaren ligger HTML och TypeScript filer som tillsammans kallas

vy-komponenter. Vyns grafiska gränssnitt samt presentationslogiken definieras av dessa två

filer. Att frigöra och dela upp logik till specifika filer och klasser medför att utveckling av

webbapplikationer blir enklare och lättare att underhålla.

Till varje vykomponent finns ett objekt som abstraherar bort hanteringen av

kommunikationen, det vill säga Servicelagret och Web-API(även kallat Controller, ska inte

förväxlas med Controller i gamla klientens struktur). Objektet är döpt till proxy då

kommunikationen går via dessa objektet som en mellanhand för att låta vyn tro att den har

Client

Aspx.cs

LoadData();

Server

Service

GetData();

Databas

Common

IService

GetData();

Proxy

Get();

Create();

WCF –

Skickar

Transferdata

WCF –

Skickar

Transferdata

TCP-

förbindelser

Page 35: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

25

direktåtkomst till metoder liggande i Web API(beskrivs nedan). HTML-filen, TypeScript-filen

och proxyklassen utgör strukturen för SPA.

Mellanlagret Web API och Service utgör kommunikationen mellan klient och server. Web-

APIs uppgift är att exponera serverns metoder för klienten. Till varje Web-API skall en

serviceklass finnas, den tar rollen serverkommunikation i nya tekniken.

Serverkommunikationen som tidigare beskrevs existerade i aspx.cs klassen i webform.

Servicen tillhandahåller kommunikationen med servern och skapar response på de

förfrågningar som klienten och användaren utfört och som TypeScript-filen sedan kan

presentera i vyn.

Dataflöde

Dataflödet i den nya implementation, illustrerat i figur 18, visar hur data via objekt

bestående av olika TypeScript-filer, HTML-filer och C#-klasser bygger upp den nya

implementationen av PaperLine. De tre delarna klient, mellanlagret och server mellan

användare och server kan beskrivas som följer.

1. Användare gör en förfrågan i en av vy-komponenterna i webbapplikationen.

2. TypeScript-filen behandlar förfrågan med den funktion som är länkad samman med

inmatningen, för att sedan skickas vidare via den uppsatta Proxyklassen.

3. I denna specifika proxy-klassen, som varje HTML och TypeScript-fil har, finns

fördefinierade ‘response’-funktioner som tar in förfrågan och skapar ett ‘request’-

meddelande. ‘Response’-funktionerna har även som krav att ge ett så kallat ‘promise’

[29].

4. När proxy-objektet skapat ett Request skickas detta vidare till Controllern.

5. Via controller skickas information direkt vidare till services där kommunikationen till

databasen sätts upp.

6. Via kommunikationen sätts direkta förbindelser upp till fördefinierade endpoints i

servern.

7. Information hämtas ut från servern och databasen och returneras tillbaka till Proxy

som ett response.

8. När meddelandet kommer tillbaka till proxyn skickas meddelandet vidare till vyns

TypeScript-fil som tar hand om responseobjektet sorterar ut rätt data och placerar

det på rätt plats. Typescript-filen kan även utföra simpel logik på data servern skickat

Page 36: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

26

tillbaka då datamängderna ofta kommer som transfersobjekt där mycket data

samlats, för lättare överföring från databasen.

Figur 18: Dataflöde i nya implementationen.

HTML

.ts

Proxy

Controller

Server

Aurelia(klient)

Request Response

Web-Api & Service

Services

Request Response

Page 37: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

27

Klassdiagram

Dataflödet som beskrivs i avsnitt 3.3.2 kan beskrivas med hjälp av klassdiagrammet i figur 19.

Figur 19: Klassdiagram över nya implementations fyra stora komponenter

Likt diagrammet i avsnitt 3.3.1 sätts förbindelserna till servern från klienten upp via

ProxyFactor och sedan via interfacet IService. Skillnaden mellan gammalt och nytt är att

istället för en klass som tillhandahåller både logik för vy och serverkommunikation görs det i

separata klasser i den nya klienten. Detta innebär att serverkommunikationen och

uthämtning av endpoints från ProxyFactor i den nya klienten görs av serviceklassen.

3.4 Spegling av databas

Databasen som existerar i projektet är en kopia av den verkliga produktionsdatabasen över

PaperLines all produktionshistorik ute hos kunden, vilket innebär att stora mängder av data

måste hanteras vid databasanrop.

För att på ett enkelt sätt samla all relevant data från databasen till klient har man valt att

skapa så kallade transfer-objekt. Dessa objekt fungerar som en spegling av databasens

tabeller, vilket gör hanteringen av data mycket mer överkomlig vid utveckling av klientens

och serverns kommunikation.

Server

Service

GetData();

Databas

Common

IService

GetData();

Proxy

Get();

Create();

Client

.ts

LoadData();

Service

LoadData();

WCF –

Skickar

Transferdata

WCF –

Skickar

Transferdata

TCP-

förbindelser

Page 38: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

28

Dessvärre existerar relevant data för order ofta i många olika tabeller vilket gör anrop till

databasen där produktinformation skall returneras ibland stora och komplexa. Lösningen till

detta problem är då att samla alla relevanta transfer-objekt i ett så kallat transferaggregat.

Transferaggreganten fungerar och liknar till stor del ett transferobjekt med skillnaden att

transferaggregat kan grupperar såväl transferobjekt som andra transferaggregat i sig själv,

vilket innebär stora fördelar för utvecklaren vid anrop av databasen men har även sina

nackdelar. Problemet i vissa fall med transferaggregantens transferobjekten är att de i

många fall kommer fyllas med all information som existerar i databasens tabell. Detta

innebär att mycket onödig information kommer upp till vy komponenterna.

Denna nackdel skapar inga stora problem vid små mängder data då det som visas i figur 20

kan vara enklare att skapa aggregat-objekt med redundans för att enkelt komma åt mer

information med mindre kod. Men kan vid större mängder data skapa problem i

kommunikationen mellan databas och klient.

Figur 20: Representation av Transferobjekt och Transferaggregat

Figur 20 beskriver en del i ett transferaggregat där fler transferaggregat kan inkludeas med

fler transferobjekt för att få ut mer information från databasen.

3.5 Asynkron kommunikation

En viktig del av nya klientens kommunikation i projektet är hur information skickas

asynkront. Asynkron kommunikation innebär att klientsidan inte stannar andra operationer

och bara väntar på informationen som hämtas från servern. Klienten fortsätter istället med

andra uppgifter och när svar kommer från servern behandlas det som en ny uppgift. Den

asynkrona kommunikationen utförs i TypeScript med funktioner som illustreras i figur 21 .

Page 39: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

29

Figur 21: Asynkron kommunikation i Typescript

I exemplet visas hur ett resultat genom funktionen searchOrder i Proxyobjektet kommer, då

korrekt returnering skett, att hamna i den temporära variabeln searchResult som sedan

lägger resultatet i objektet this.orders. Detta utförs bara när ett resultat har kommit tillbaka

från databasen, därav funktionen .then(). Det hindrar inte andra funktioner från att utföra

sina uppgifter.

3.6 Sammanfattning

Detta kapitel har täckt designen i den nya klienten AMP som för tillfället används parallellt

med den gamla klienten. Kapitlet beskriver även ingående skillnaden mellan dataflödet i den

gamla klienten och den nya. Detta följdes av en beskrivning av data som färdas i dataflödet

mellan klient och server samt hur skillnaderna visar sig mellan de grafiska komponenterna i

vyn.

Page 40: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

30

4 Implementation

4.1 Inledning

I detta kapitel beskrivs ingående mycket av projektet implementationer. Kapitlet omfattar

även några av de redan existerande lösningarna i den gamla klienten samt kommunikationen

mellan server och databas. De gamla implementation inkluderades i kapitlet då det ger en

bättre förklaring av fullständig kommunikation mellan klient och databas.

4.2 Implementation av grafiska komponenter

Aurelia-Kendo UI Bridge

Aurelia-Kendo UI Bridge [30] är ett hjälpmedel för att slippa så kallad wrapper code, det vill

säga importering av hjälpfunktioner. Aurelia-Kendo UI Bridge ger programmeraren möjlighet

att använda Kendo UI-komponenter i Aureliaapplikationer, som huvudsakligen är gjorda för

vanliga HTML-sidor. Därmed använder man taggar som börjar med ak(Aurelia Kendo), till

exempel <ak-grid> är Kendo Grid.

Kendo Grid

Som tidigare beskrivet i avsnitt 3.3.2 visas den grafiska skillnaden mellan rutnät uppritat i

den gamla(Web Forms) och den nya tekniken(AMP). Skillnaden är ytterst liten och samma

gäller för implementation för att rita upp rutnäten. Web forms använder sig av objektet

GridView för att åskådliggöra ett rutnät medan AMP utnyttjar Kendo UI:s inbyggda

funktioner för rutnät. I figur 22 demonstreras skillnaderna mellan gammalt och nytt. Båda

bär på inställningar som kan manipuleras för att få fram den önskvärda grafiska

komponenten. Den markanta skillnaden ligger i vad Kendo UI erbjuder i form av tillägg till

sina komponenter, vilket vidare beskrivs i avsnitt 4.5. Figuren beskriver den gamla klienten

till vänster och den nya till höger.

Figur 22: Kodexempel: Implementation av Rutnät i både Web Form och Kendo UI

Page 41: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

31

Att sedan föra in data in i rutnätet sker på liknande sätt, båda objekten tar in listor i form av

transferobjekt in till en datasource. Denna datasource i GridView [31] kan bland annat

behandla objekt som Datatable [32](en tabell i C#), Dataset [33](en kollektion av Datatable),

och IList [34](en kollektion av objekt), dock kan inte Kendo UI behandla alla objekt som

GridView kan, men i det fall blir det inte några förhinder då gamla vyns rutnät använder sig

av IList vilket datasource i ’Kendo UI’ kan behandla.

Kendo Contextmenu

Kendo Contextmenu [35] är en högerklicksmeny i Kendos grafiska bibliotek. Funktionen går

endast att binda till andra Kendo UI-komponenter.

Implementation av komponenten Kendo Contextmenu utförs likt implementationen av

Kendo Grid. Figur 23 visar hur, likt Kendo Grid, även Kendo Contextmenu kräver vissa

inställningar för att få fram de önskvärda design på komponenterna, bland annat

inställningar om vart Contextmenu skall visa sig.

Figur 23: Kodexempel: Kendo Contextmenu

Den komponent som sedan visas vid högerklick är en simpel meny med endast ett valbart

objekt, att skriva ut och visas i Figur 24Figur 24. Väljer användaren att skriva ut renderas en

ny specialgjord komponent beskriven utförligare i avsnitt 4.5.

Figur 24: Kendo Contextmenu med ett menyobjekt

Page 42: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

32

Språkhantering

Alla texter och etiketter i HTML-filerna är språkhanterade och gör det möjligt att ändra all

text i en vy. Varje textelement är bundet till en strängvariabel i en specifik språkfil, en .cs-

klass(C#), som hör till vykomponenten. För varje vykomponent finns respektive språkfil fylld

med variabler för alla texter i vyn. Dessa variabler har en get-metod för att hämta texten och

en set-metod för att ändra texten. Figur 23Figur 23 på föregående sida innehåller två

scripttaggar som hämtar text från språkfilerna. Taggarna börjar med language. i texten och

pekar på varsin variabel.

4.3 Dataflöde

Som beskrivet i avsnitt 3.3.2 skapades under projektets gång kommunikation mellan klient

och server med hjälp av response- och request-objekt som skickas fram och tillbaka.

Kommunikationen har till största mån försökt efterlikna den gamla kommunikationen men

med den nya tekniken AMP.

I avsnittet nedan beskrivs ingående vilka komponenter som utvecklats och implementerats i

projektet från klient till server.

HTML-fil

I HTML-filen skrivs koden för all grafisk struktur. Med hjälp av ramverket Aurelia skapas en

dynamisk HTML-struktur som behandlar alla verktyg på ett simpelt och användarvänligt sätt

för programmeraren. Verktyg som Kendo UI och Bootstrap fungerar bra ihop i Aurelia.

HTML-filen har för övrigt en TypeScript-fil kopplad till sig med kommunikationslogik, se

avsnittet nedan. Dessa två filer utgör en vykomponent.

TypeScript-fil

Den översta och närmast användaren, tillsammans med html-filen, liggande filen är en

TypeScript-fil. Filen har som uppgift att skicka ner data bland annat från användaren ner till

proxyobjektet. Här tillhandahålls även data som kommer från servern för att sedan visas på

vyn. Minimalt med logiska operationer existerar här då enbart grafisk manipulering sker här.

Figur 25 visar på hur en lista läggs in i ett listobjekt uppritat i html-filen.

Page 43: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

33

Figur 25: Kodexempel: Implementation av funktion i TypeScript-fil

Proxy

I figur 26 sätter Proxyobjektet upp ett nytt requestobjekt med användarens inmatade

inparametrar till förfrågan. Objektet skickas sedan in i funktionen där den asynkrona

kommunikationen sätts upp, skulle fel inträffa i kommunikationen kan detta fångas upp av

programmet genom att definiera en så kallad catch-funktion [36] där det genererade felet

kan behandlas.

Då inga fel genererats returnerar proxyn resultatet från databasen upp till klienten. Skulle

retur-meddelandet bestå av ett objekt måste ett nytt objekt sättas upp med en egen

konstruktor [37]. Detta utförs för att den asynkrona kommunikationen ska fungera med det

objekt som returneras. I figur 26 ser man att ett Promise skapas med objektet i sig.

Figur 26: Kodexempel: Implementation av function i proxyobjektet

Web API

Web API som beskrivs i figur 27 visar på hur simpel bindningen mellan Proxyobjektet och

serviceklassen är. Det måste inkluderas då en ny vykomponent skapas och tillhandahåller ett

request-objekt och ett response-objekt. Även om request- och response-objektet inte

kommer returnera något eller inga inparametrar krävs måste Web API använda sig av

request och response. Detta görs för att skapa en standard för all transport mellan servern

och klienten.

Page 44: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

34

Figur 27: Kodexempel: Implementation av Web-API

Response

Ett response-objekt kan, som visat i figur 28, innehålla varierande data. Allt från nummer och

textsträngar till objekt och andra klasser.

Varje gång klienten skickar en förfrågan om data från servern kommer ett nytt tomt

response objekt att skapas som sedan fylls på med information i serviceklassen(se nedan).

Sedan skickas det upp till Proxyobjektet.

Figur 28: Kodexempel: Implementation av Response-objekt

Request

Likt response-objektet tar request-objektet in varierande data som ska till servern. Dessa

objekt kan, som tidigare beskrivet, vara tomma, detta inträffar då servern inte kräver någon

användardata för att utföra sin förfrågan.

I figur 29 beskrivs ett request-objekt där klassen inte innehåller någon förfrågan till servern.

Figur 29: Kodexempel: Implementation av Request-objekt

Service

Service klassen har uppgiften att kommunicera med servern. Med hjälp av förfrågan från

request-objektet som användaren skrivit in, kan klassen via serverns egna serviceklasser

hämta ut transferobjekten. I figur 30 kan ses hur funktionen Fetch tar emot ett request samt

returnerar ett response. Response fylls med data via förbindelserna beskrivet vidare i avsnitt

4.4. Efter all data har fyllts i kommer ett nytt objekt sättas upp, detta responseobjektet

public class FetchBatchDetailsRequest { }

Page 45: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

35

kommer returneras till controllern, för att sedan evalueras av proxyn som sedan skickar ut

data till vykomponenterna.

Figur 30: Kodexempel: Implementation av function i Serviceklass

Page 46: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

36

4.4 NHibernate och databaskommunikation

Figurerna beskrivna i detta avsnitt är en förenkling av hur kommunikationen mellan klient

och server är uppsatt i det gamla systemet. Implementation finns redan och var inget detta

projekt inkluderade för utveckling, men togs med för att förstå funktionalitet som använts.

För att kommunikationen mellan server och databas skall fungera används

kartläggningsverktyget NHibernate [38]. Verktyget är inte enbart byggt för att få

kommunikationen fungerande utan förenklar även anropen utvecklaren vill utföra från

webbservern till databasen. Figur 31 visar hur klienten sätter upp en kommunikation,

beskrivet nedan, till servern där funktionen GetId() finns. För att sedan hämta ut returvärdet

från GetId() måste klienten gå via, beskrivet nedan, ett interface [39] för uppsättning av

asynkron kommunikation.

Figur 31: Kodexempel: Anrop från klient till server

Klientens uppsättning av kommunikationen börjar med en TCP-förbindelse mellan klient och

server vilket visas i figur 32 . Förbindelsen skapas via klassen Proxyfactor där Endpoints för

varje serverklass sparas undan via funktionen “register” i så kallade dictionaries (kataloger)

[40], vilket visas i figur 32. Förbindelserna som sätts upp görs via den inbyggda klassen

ChannelFactory [41] som kan ses i figur 32. ChannelFactory sätter upp det Microsoft kallar

för kanaler via en adress till en server samt en fördefinierad TCP-förbindelse. Sedan sparas

kanalerna i katalogen som klienten sedan kan hämta ut när serverkommunikation skall

sättas upp.

Page 47: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

37

Figur 32: Kodexempel: Proxyfactor med uppsättning av TCP-förbindelser

När förbindelserna skapats till servern, krävs ett interface mellan server och klient där WCF-

ramverket kan skicka data asynkront mellan server och klient. Interfacet innehåller enbart de

funktioner som klienten vill erhålla från databasen.

För att interfacet sedan skall bli definierat som ett interface som skall tillhandahålla WCF-

kommunikation mellan klient och server, måste implementationen av ServiceContract [42]

göras, samt OperationContract [43] vilket definierar att en metod är en operation i WCF

kommunikationen. Detta demonstreras i figur 33.

Figur 33: Representation av Interface mellan klient och server

När sedan klienten vill koppla upp sig mot servern via WCF och kanalerna som blivit sparade

i ProxyFactors katalog ChannelFactories görs detta via funktionen ’get’ som skapar en

tillfällig förbindelse via nyckeln som också är interfacet mellan server och klient till den

specifika platsen i servern. Via funktionerna kan klienten sedan få de transferobjekt som

servern skapar och skickar tillbaka till klienten, se figur 34.

public class ProxyFactor{ public static ProxyFactor Create() { return new ProxyFactor(); } static ProxyFactor() { Register<IPersonService>(“PersonService”,tcpBinding); } public static void Register<T>(string address, ClientBindingBase tcpBinding){ string endAddress = ”net.tcp//:localhost/Server”; address = endAdress + address; ChannelFactory<T> channel = ChannelFactory<T>(tcpBinding, address); ChannelFactories.Add(typeof(T), channel); } public T get<T>() { ChannelFactory<T> factory = (ChannelFactory<T>)ChannelFactories[typeof(T)] T proxy = factory.CreateChannel(); return proxy; }

}

[ServiceContract()] public interface IPersonService { [OperationContract] PersonTransferAggregate GetId(int id); }

Page 48: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

38

Figur 34: Kodexempel: Databasanrop från server

Slutligen kräver server att få vetskap om databasen, där används en liknande uppsättning

som klienten gör för kommunikation med server. Skillnaden i servern är att där,

demonstrerat i figur 34 , öppnas en session upp med NHibernate via ett repository1 [44] där

bland annat SQL-kommandon kan skickas in till fördefinierade kommandon representerade i

figur 34, repo.GetAll().

4.5 Problem och val av lösningar

Nedan beskrivs några av de problem som uppstått under projektets gång. Problemen

diskuteras och lösningarna till dem reflekteras med motiveringar till besluten.

Mousetrap

I vyn existerar funktionalitet där knapptryck är bundna till funktioner . Detta är skapat för att

snabbt kunna arbeta med vyn och snabbt kunna navigera sig till andra vyer samt utföra

kommandon utan behov av en mus. Dessa snabbkommandon skapades med ramverket

JQuery [45], ett JavaScript-bibliotek som används för enklare hantering av händelser,

animationer och navigering i dokument. Biblioteket sätter upp händelser i Web Form för att

hantera knapptryck från användare och vidarebefordra dessa snabbkommandon till rätt

funktion.

Att använda sig av biblioteket JQuery hade varit en alternativ lösning till uppgraderingen då

både TypeScript och JQuery bygger på JavaScript. Men denna lösning ansågs inte vara

användbar då Aurelia kan utöka sitt ramverk med tredjepartsbibliotek och biblioteket

Mousetrap [46] löste alla problem JQuery tidgare löst.

Att sätta upp en konfiguration för Mousetrap sker enligt figur 35 på följande sätt. En

mappning för vilka tangenter man vill använda sig av sätts upp med ett namn.

Page 49: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

39

Figur 35: Kodexempel: Konfiguration av Mousetrap.

Sedan, representerat i figur 36 , binds detta event till ett objekt i html filen. När sedan

användare trycker på knappen som implementerat i mousetrap skapar mousetrap en

händelse som simulerar ett knapptryck till från användaren och kallar på rätt funktion.

Figur 36: Kodexempel: Implementation av Mousetrap.

Felmeddelanden

En av den stora funktionaliteterna med webbapplikationen var hur felmeddelande

genererades. I den gamla klienten skapades dessa rutor via en så kallad

ModalPopupExtender [47] som visas i figur 37 .Meddelanderutan är en komponent skapad

för att låsa bakomvarande komponenter från interaktion från användare samt lägga sig

ovanpå det redan existerande fönstret.

Figur 37: Web Forms representation av meddelanderuta.

Page 50: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

40

För att skapa en mer manipulativ komponent kan felmeddelandet i figur 37 ta in en rubrik,

ett meddelande, en ikon samt en knappgrupp som parametrar och visa upp det i

ModalPopupExtender. Inparametrarna tas in då meddelandet användaren ser kan variera.

Knapparna kan även variera beroende på vad användaren skall göra då felmeddelandet

kommer upp.

ModalPopupExtender existerar inte till Aurelia vilket innebar att ett plugin Aurelia-Dialog

[48] valdes att användas till uppgraderingen. Aurelia-Dialog fungerar på liknande sätt som

ModalPopupExtender där meddelande, rubrik och typ av knapp kan implementeras till

dialogrutan, vilket visas i figur 38.

Figur 38: Aurelias representation av meddelanderuta.

View- och Session State

Som tidigare nämnt är Web Forms lösning på problemet, med data som inte sparas vid

serveranrop och uppdateringar, att skicka med data i anropet till servern för att sedan

skickas tillbaka till klienten.

View- och session state fungerar på samma sätt men har olika långa livscykler där livscykeln

för View states bara existerar då sidan utför ett så kallat postback, vilket innebär att då sidan

skickar en förfrågan för att spara data i servern, kommer användare tillbaka till samma sida

som tidigare. Data servern inte sparar åt användaren kommer då att försvinna om den inte

sparats undan i View state.

Session states livscykel varar så länge en cookie existerar för sidan. Fördelen med session

state framför View state är att session state kan behålla sina värden över anrop av andra

sidor, vilket ger en stor fördel då systemet PaperLine bygger på att användare skall kunna

förflytta sig mellan vyer med samma användarinställningar för var och en av vyerna.

Page 51: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

41

Användningen av View state och session state är dock begränsad till ASP.NET vilket innebär

en stor förändring vid uppgradering till AMP. Lösningen till View states problem, att spara

undan data då postback sker, blev simpel. Som tidigare nämnt hämtar AMP enbart data om

det behövs vilket innebär att data tillfälligt kan sparas undan i klienten under serveranropet.

Problem med session state blev dock svårare att lösa och beskrivs vidare in avsnitt 6.2.

Skriv ut och exportera

Likt felmeddelande existerar det specialbyggda meddelanderutor för utskrifter till Excel-

dokument samt utskrifter till skrivare. Dessa meddelanderutor har egenskapen att skriva ut

specificerade rutnät med order. Funktionaliteten sträcker sig även till att användaren skall

kunna plocka bort kolumner från diagrammet samt ändra textstorlek och orienteringen av

sidan.

Problemet uppstår då metoderna för implementationen enbart stöds av webbläsaren

Internet Explorer. Att låsa sig till en webbläsare är inte är att föredra då användare i

framtiden kan komma att byta plattform eller webbläsare.

Lösningen var att likt “felmeddelanden” bygga upp egna komponenter via Aurelias plugin

‘Aurelia-dialog’ och där utföra samma operationer den gamla meddelanderutan utförde.

Figurerna 39 och 40 ger en tydligare bild över skillnaden mellan den uppgraderade versionen

och den gamla versionen. Figur 39 skildrar hur funktionaliteten byggdes upp med hjälp

metoden enbart Internet explorer stödjer showModelessDialog [49]. Metoden tar in och

visar ett HTML-dokument med specifika attribut, vanliga webbapplikationsfönster inte har

som standard. Till exempel inaktivt statusfält och möjlighet att inte skala fönstret.

Figur 39 visar det gamla fönstret för utskriftsfunktion samt export till Excel.

Page 52: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

42

Figur 39: Utskriftsfunktion från Web Forms.

I den nya dialogrutan som användare kan bestämma utseendet för rutnätet har förändringar

skett i form av Kendo UIs funktionalitet att sortera bland kolumner och rader. Även

funktionen för export till Excel sköts nu av Kendo UI. Figur 40 ger exempel på hur det kan se

ut när man använder funktionerna i den nya klienten.

Page 53: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

43

Figur 40: Utskriftsfunktion från Aurelia.IO och Kendo UI

4.6 Automatiskt genererade filer.

Som beskrivet i avsnitt 3.3.2 ligger en controller mellan proxyobjektet och service-klassen.

Controller, även kallad Web-API, har i uppgift att vidarebefordra meddelanden från en SPA

till serviceklassen. Eftersom klassens enda uppgift är att vidarebefordra meddelanden mellan

två klasser existerar inte mycket kod i klassen. Kontrollerklassen tillhandahåller bara ett

objekt för varje funktion som skapas för anrop till servern.

För att sedan föra samman Web-API och proxyobjektet så kräver SPA-klienten att alla C#-

klasser som används genereras automatiskt till ts-filer. Detta för att skapa en mer effektiv

och typsäker kod. Den automatiska genereringen sker genom ett projekt med öppen källkod

vid namn TypeWriter [50], skapat för att generera TypeScript-kod från C#-kod.

Tyvärr innebär genereringen att filer separeras från varandra, och har därför ingen

kännedom om varandras värden då TypeScripts filer enbart känner till data inom sitt eget

scope [51]. För att använda variabler i en utanför filens scope tvingas utvecklaren exportera

klassen. Denna lösning fungerar enbart åt ena hållet då andra filer nu kan se variabler och

funktioner men kan inte använda sig av dem. Detta på grund av att när en funktion vill

använda en variabel från en annan fil krävs ett import-“statement” för varje användning av

de exporterade funktioner och variabler. Arbetet ansågs då bli för stort för att implementera

alla dessa “statements” vilket innebär att lösningen istället blev att samla alla dessa

automatiskt genererade filer till en enda DTO(Data Transfer Object) fil. Nackdelen med

denna lösning är att filen som genereras innehåller kod för stora delar av projektet vilket kan

Page 54: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

44

medföra prestandaproblem då fler filer till största sannolikhet måste genereras vid vidare

arbete av uppgradering och måste då läggas i filen DTO.

4.7 Sammanfattning

Detta kapitel har inkluderat en noga genomgång av vilka komponenter som använts vid

kommunikationen mellan användare och databas. Kapitlet har även beskrivit delar av

kommunikationen mellan server och databas som redan existerat och inte uppgraderades

under projektet gång.

Page 55: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

45

5 Resultat

I detta kapitel diskuteras resultat och utvärderingar kring projektet. Här behandlas även

resultatet kring den kravspecifikation som beskrivits i avsnitt 2.1.1. Kapitlet inkluderar även

en utvärdering av den teknikstack som använts i projektet.

5.1 Resultat av krav

Kravspecifikationen som ingick i detta projekt har under tiden som gått ändrat sin form.

Ett av kraven ÅF la fram innan projektet startat innehöll en utvärderingen om AMP var en

genomförbar lösning till problemen användare och utvecklare stött på i PaperLine.

Som tidigare beskrivet, efter diskussion med kunden blev det tydligt att uppgradering av

PaperLine krävdes och ÅF bestämde sig att AMP var den lösning på problemen man ville

satsa på. Detta medförde att kraven i kravspecifikationen fick ändras till ett så kallat proof-

of-concept med demonstration för kunden av uppgraderingarna på en vy, där AMPs fördelar

framför Web forms påvisades.

Dessa förändringar av kravspecifikationen har även inneburit förändringar av vår prioritering

i arbetet och implementationen.

Trots att ändringar gjorts i kravspecifikationen bestämdes att alla kraven som ställts under

projektets gång inkluderas i kapitlet resultat. De högprioriterade kraven identifierades därför

till de tre som beskrivs i avsnittet nedan.

Går projektet att utföra?

Kan gamla systemet och nya tekniken samköras?

Sammanfoga gamla systemet med den nya tekniken

Kraven som beskrivits kan ses som en kedja där nästkommande krav bygger på föregående,

vilket inneburit att hade de första kraven inte varit genomförbart hade de nästkommande

kraven ändrat form eller inte alls existerat.

Page 56: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

46

5.1.1 Går projektet att genomföra?

Detta krav existerade enbart i uppstarten av projektet, där kravet lades fram vid det första

mötet med ÅF. I kravet ingick att undersöka ifall en deluppgradering av systemet var möjligt

eller om kod efter år av utveckling av systemet blivit så sammanlänkat, också kallat

spaghettikod [52], att skulle en del uppgraderas tvingas den resterande av systemet också

uppgraderas. Detta krav ansågs ganska snabbt vara genomförbart då de involverade i

utvecklingen av den gamla klienten på ÅF tillsammans med oss diskuterade fram lösningar

på problemet.

I uppstarten var även AMP en relativt otestad plattform som inte noggrant diskuterats med

kunden om den kunde tänkas användas som uppgradering av PaperLine.

Punkten som beskrivits var fråga där resultatet kunde ha slutat i ett genomförbart projekt

eller ogenomförbart projekt. En möjlig utgång av projektet i ett tidigt stadie kunde varit att

kund inte känt sig säker på AMP som plattform och nya tekniker hade behövts

implementeras, testas och utvärderas. Efter diskussion med kunden kunde plattformen AMP

användas som teknik för PaperLine.

5.1.2 Samkörning av gammal och ny klient

Efter beslutet om att projektet var genomförbart, startades en undersökning kring

möjligheten att två klienter kunde samköras. En av lösningarna var att inkludera den klient

och mall ÅF tidigare arbetat med för enklare och snabbare uppstart av projektet, beskrivet i

avsnitt 3.1. Klienten skulle läggas vid sidan av den gamla klienten och sedan låta dem

samköra på en server. De första testerna gick ut på att undersöka ifall några problem kunde

uppstå då två klienter skilda från varandra startade upp på samma dator.

Små komplikationer uppstod men löste sig relativt snabbt och klienterna kunde samköras.

Trots framgångsrika tester fanns fortfarande ovissheten om dessa två klienter samtidigt

kunde kommunicera med servern och även länka mellan varandra.

Enkla tester sattes upp genom att låta den gamla klientens vy inkludera en fast länk till den

nya och genom detta kunde man navigera sig fram och tillbaka mellan den gamla och den

nya klienten. Testerna var framgångsrika och klienterna kunde samtidigt fungera samt länka

mellan varandra och till sista kommunicera samtidigt med samma server.

Page 57: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

47

De första kraven hade då blivit genomförda. Det var nu tekniskt bevisat att uppgraderingen

var genomförbar och att den gamla klienten stegvis kunde uppgraderas med hjälp av den

nya tekniken.

5.1.3 Sammanfogning av AMP och serverlagret

Kravet att sammanfoga det gamla systemet med den nya tekniken sågs som den största

utmaningen under projektet. Arbetet med AMP-klientens kommunikation till servern har

krävt absolut mest tid och är källan till många av de problem som uppstått på vägen.

Då större delen av projektets innehåll var en sammanfogning av AMP och server, delades

detta krav upp i mindre delar. De framförallt två stora delarna, front end och back end,

kunde urskiljas.

5.1.4 Användargränssnitt

Vyns användargränssnitt har under projektet gång inte prioriterats. Som beskrivet i avsnittet

2.1.1 har användargränssnitt till största delen efterliknats den redan existerande vyn i den

gamla klienten. Små ändringar har dock lagts till för att kompensera för vissa krav för hur

gränssnittets passform skall se ut. Ett av de delkrav med lägre prioritet har varit att till

största mån utveckla ett användargränssnitt där användning för såväl dator som mobil ska

kunna användas utan problem. Uppgraderingen av de grafiska komponenterna gjordes till

stor del genom att visuellt studera den gamla vyns gränssnitt. Majoriteten av dem var enkla

att uppgradera och någorlunda tydligt angivna hur och varför de visade sig för användaren.

Ett mindre antal av komponenterna var dock mer komplexa och visades enbart under

speciella omständigheter. Dessa komponenter blev lägre prioriterade eftersom de

upptäcktes senare i projektet, vilket medförde att de påbörjades men inte till fullo

slutfördes. Några av dess komponenter som påbörjades var hur vyn hanterar utskrifter och

exporteringar av rutnät samt hur felmeddelanden hanteras. Anledningar till varför

funktionalitet inte till fullo implementerades beskrivs i avsnitt 5.4.

5.1.5 Serverkommunikation

Stor del av prioriteringen i projektet har gått till kravet kommunikation mellan klient och

server. Kravet har inneburit att i största mån undersöka den gamla kommunikationen och

efterlikna denna med den nya tekniken. Där bland annat ny kommunikation satts upp

beskrivet i avsnitt 3.3.2. Trots att större delen av den gamla kommunikationen framgångsrikt

Page 58: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

48

blivit uppsatt kommer denna, liksom uppgradering av användargränssnittet, sakna full

funktionalitet då enbart de visuellt synliga uppgraderingarna gjordes(beskrivs vidare i avsnitt

5.4). Några av de funktionaliteter som valdes att inte implementeras var

användarinställningar och grundvyer. Även valideringar av dessa användarinställningar för

att bestämma vilka behörigheter användaren har i systemet.

5.2 Prestandajämförelse av gamla och nya tekniken

I detta delavsnitt påvisas de stora vinster som gjorts tack vare uppgraderingen.

5.2.1 Front end

Resultatet av uppgraderingen gällande prestanda kan vara svår att observera som användare

i vyn Arkpack. Detta på grund av den minimala mängd data som färdas mellan server och

klient i vyn Arkpack. För att till fullo se prestandaförändringen krävs vyer där mycket data

uppdateras ofta, trots att få förändringar skett. I dessa vyer kommer användaren se de stora

fördelarna med den nya tekniken. I vyerna kan onödig datakommunikation markant minskas

med den nya tekniken, då tidigare Web Forms tvingat webbapplikationen att ladda all data

igen så fort någon form av submit eller sparande av data matats in av användaren.

Med den nya tekniken krävs enbart att komponenter som behöver nya data uppdateras.

Detta medför att i ideala fall kan den nya klienten vinna över den gamla klienten med ett

flertal sekunder. Under en provkörning då en test-vy, med data skulle anropas från server,

tog den nya klienten ca 4 sekunder på sig att ladda och rendera färdigt medan den gamla

klienten behövde hela 11 sekunder för att utföra samma operation.

5.2.2 Back end

Förändringar på prestanda i kommunikationen mellan klient och databas kommer inte vara

lika markant som uppgraderingen av klientens visuella delar. Detta framförallt då

kommunikationen till stor del behandlas på liknande sätt i den nya klienten som i den gamla.

Valet att inte förändra mycket i kommunikationen gjordes för att arbetet ansågs vara för

stort då klienten ändå ska bytas ut.

Page 59: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

49

5.3 Utvärdering av AMP teknikstack

I detta delkapitel utvärderas de tekniker som använts under projektets gång samt de

alternativa tekniker som inte valdes att användas. Diskussionen görs ur utvecklarnas

synvinkel och inkluderades då teknikstacken är relativt ny, samt är tekniker och verktyg ÅF i

framtiden kommer ha användning för samt kommer vara relevanta för utvecklingen av

applikationer till deras kunder.

Aurelia.io

Utvecklingsverktyget Aurelia.io har varit en av de större faktorerna till att detta projekt har

varit genomförbart. Med dess strukturella utvecklingsmiljö för webbapplikationer har

utvecklingen gått framförallt snabbare och smidigare än vad man som webbutvecklare är

van vid. En av de största fördelarna med Aurelia som verktyg är de många plugins som

konstant läggs till, uppdateras och moduleras av såväl privatpersoner som Aurelias

utvecklingsteam. Dessa medför att webbapplikationen enkelt kan få en modern miljö med

komponenter och metoder byggda för dagens webb.

En alternativ lösning till Aurelia skulle vara att använda sig av det Open-source ramverket

AngularJs [53] utvecklat av Google, vilket skulle kunna utföra de uppgifter problemet med

uppgraderingen krävde. Nackdelen med AngularJS gentemot Aurelia är enkelheten i Aurelia.

Aurelia är även mer effektivt samt mer flexibelt när det kommer till utveckling av

webbapplikationer.

Kendo UI

Kendo UI är ett bibliotek för grafiska komponenter och har gjort webbutvecklingen mycket

enklare. De grafiska komponenterna är fullständiga, något anpassningsbara och går att

konfigurera och testa på en sida inom en minut. Detta ger programmeraren möjlighet att

vara kreativ utan att det slösar onödigt mycket tid på själva kodningen. De grafiska

komponenterna hanterar data väldigt smidigt och har ett enkelt API. Däremot tenderar

Kendo UI grafiska komponenter att ta upp mycket plats i koden, det vill säga många rader

kod med konfigureringar och dylikt. Det är även krångligt att jobba med komponenternas

CSS. Detta slipper man dock i AMP eftersom Bootstrap tar hand om det.

Page 60: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

50

Bootstrap

Fördelarna med utvecklingen i Bootstrap märks framförallt genom den enkelheten

ramverket medför då man vill utveckla en responsiv webbapplikation. De redan inbyggda

funktionerna för responsiv visning av webbapplikationer kan vara lite begränsande när det

kommer till hur komponenter strukturerar sig, men då alternativet till att utveckla en

responsiv webbapplikation är att som utvecklare själv ändra utseendet för alla komponenter

och storlekar är Bootstrap som alternativet bättre. Bootstrap kan ses som ett hjälpmedel till

den annars så komplexa och många gånger nästan omöjliga utvecklingen av responsivt

gränssnitt.

Fördelarna med Bootstrap är även att biblioteket enkelt går att förändra så utseende och

komponenter beter sig som utvecklaren vill.

TypeScript

TypeScript som utvecklingsspråk har under projektets gång förenklat en stor del av

utvecklingen av webbapplikationen. Anledningarna till att språket förenklat och skyndat på

utvecklingen är att det jämfört med JavaScript inte är lika mycket kod som

behövs för att utföra samma saker. Detta tack vare att TypeScripts felhanteringen då

utveckling sker är mer responsiv och direkt till skillnad från traditionell JavaScript samt att då

språket skapades fanns det efterfrågan att skapa ett programspråk som förenklade

utvecklingen av JavaScript i webbapplikationer.

5.4 Problem

Generellt har projektet flutit på bra och de problem som uppstått är till större del relaterade

till Visual Studio och TFS där stor tid spenderades under projektets början. Anledningen till

problemen var hur Visual Studio och TFS deklarerat hur filer får och inte får skapas och

skrivas över.

Dessa ovan beskrivna problem har varit lösbara problem som förhindrat vidare arbete men

med tid och hjälp gått att lösa. Men det har även existerat problem som inte gått att åtgärda

helt och hållet. Dessa problem låg mestadels i uppgiften kring uppgraderingen och beskrivs

kortfattat nedan.

Page 61: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

51

Testning

Uppgraderingen som implementerades utfördes till stor del genom vad som var visuellt

möjligt att urskilja ur den gamla vyn. Detta innebar att det som inte visades i vyn, specialfall

och liknande, kan ha blivit översedda. En lösning till detta hade varit att sätta upp en

testmiljö där vyn hade kunnat bearbeta alla scenarion och validera det som saknas.

Bristfällig data.

Data som existerat i projektet kom direkt från produktionen, vilket innebar att mycket data

existerade men många gånger inte relevant för de komponenter som uppgraderats. Detta

märktes framförallt då en av de stora delarna av Arkpack skulle uppgraderas,

funktionaliteten att packa en order. Eftersom order konstant produceras inne på

pappersbruket hos kunden existerar order sällan längre perioder mellan vissa maskiner och

delar av systemet. Arkpacken som en del av systemet har sällan order liggande mellan

föregående maskin och sig själv. Detta innebär att databasen innehåller få objekt för

testning av funktionen packning.

5.5 Sammanfattning

I kapitlet resultat har mål och krav angående projektet diskuterats. Tester av prestandan i

den nya tekniken gentemot det gamla systemet har också diskuterats. Även en ingående

diskussion angående den teknikstack som ÅF valt att implementera i deras nuvarande och

framtida projekt, ingår i detta kapitel.

Page 62: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

52

6 Slutsats

I detta kapitel ingår en utvärdering av projektets arbete. I kapitlet diskuteras även den

vidareutveckling som behöver utföras av projektet för att driftsättning av den nya tekniken

skall vara möjlig. Även tidsåtgången för projektet samt den kundkontakt vi under projektet

har haft är inkluderat i detta kapitel.

6.1 Utvärdering av projektet

Detta projekt har under de timmar tillbringade på ÅF varit lärorika och roliga. Framförallt för

att projektet blev en start på framtida arbeten för ÅF, samt att kunden fick se fördelar med

vad projektet kunde utföra och behovet av uppgradering av ett gammalt system.

Att få utveckla en “produkt” direkt mot kunden med kundkrav och demo för kunden har givit

oss lärdomar skolans kurser ofta inte lär ut.

6.2 Vidareutveckling

Några av de funktionaliteter som behövts uppgraderats har valts att inte inkluderas som en

del av projektet då dessa till en stor del skulle kräva för stor tidsåtgång för att vara

genomförbara. De största delar som observerats är som beskrivet i kapitel 2.3.2 hur det

beslutats att Web Forms hanteras och hur data sparas undan då webbapplikationen tvingas

ladda om. Problemet som uppstod när implementationen diskuterades var magnituden av

data som sparades, inte bara när vyn initialiseras utan även data som sparats undan från

bakomvarande vyer. Inställningarna för användaren måste i detta fall antingen manuellt

extraheras av utvecklaren då åtkomsten för dessa värden inte kan extraheras via funktioner

och statiskt läggas in i en fil. En annan lösning skulle vara att skapa en ny bakomvarande vy

där alla värden för användarinställningar sätts. Problemet lades dock på ett vidare arbete för

ÅF då prioriteringar på kravet inte var stora och tiden inte räckte till.

Det grafiska gränssnittet som blivit implementerat bygger på ett gränssnitt som till stor del

liknar det gamla. Detta innebär att många komponenter inte ligger på en optimal plats för

bland annat en mobil-lösning. Skulle arbetet fortskrida skulle en omstrukturering krävas för

att optimalt passa in komponenter efter skärmens storlek. För att genomföra denna

Page 63: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

53

vidareutveckling skulle en kontinuerlig kundkontakt behövas då den optimala lösningen för

både användare och system måste diskuteras fram.

Som tidigare nämnt har funktionaliteten för att skriva ut och exportera rutnät påbörjats men

aldrig blivit avklarad. Denna funktionalitet kan bli en viktig del att vidareutveckla om mobila

lösningar för PaperLine skulle vara i ett krav i framtiden. Detta eftersom den dåvarande

metoden, som tidigare beskrivs, enbart stöds av webbläsaren Internet Explorer. Detta

medför att begränsningar sätts för de plattformar kunden tvingas använda för att få ett

fungerande system. Med de nya implementeringarna blir begränsningarna färre, då fler

plattformar stödjer de plugin Aurelia erhåller.

6.3 Kundkontakt

Eftersom detta projekt var riktat till en specifik kund som ett proof-of-concept var

kundrelationen förhållandevis distanserad. En av anledningarna till beslutet var att den

faktiska användarintegrationen på vyn inte skulle förändras, utan fokus skulle ligga på att

visa för kunden att AMP är en fungerande teknikstack för deras behov. De tillfällen då vi kom

i kontakt med kunden var det initiala mötet med dem då projektet godkändes samt vid

demo.

6.4 Tidsåtgång

Den initiala tidsåtgången för projektet var 20 timmars per vecka, men märktes snabbt att

skulle vi fortsätta med samma takt skulle varken uppsatsen eller projekt hinna bli klart i tid,

därför ökades arbetstimmar på och landade till slut på en veckotid mellan 24-28 timmar.

Tidsåtgången ökade framförallt och markant i anslutning till projektets utveckling, medan tid

för vad uppsatsen tagit fortsatt på en jämn nivå fram till slutet då arbetsvikten ändrades till

att nästan enbart riktats mot uppsatsen. Orsaken till den obalanserade planeringen var att

efter överenskommelse med ÅF sattes slutdatumet för projektet till mitten av December

vilket innebar att tiden mellan December och Januari kunde helt och fullt ägnas åt

uppsatsen.

Page 64: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

54

6.5 Slutord

Under arbetets gång har teknikstacken AMP utvärderats och implementerats som en lösning

och proof-of-concept till PaperLines klient, där gamla klienten var i behov av uppgradering

på grund av ineffektivitet och tekniker som blivit utdaterade.

Efter att stor del av implementering blivit genomförd kunde klienten demonstreras för

kunden som ansåg att det var något de ville se ute i skarp miljö.

Vyn Arkpack kommer under närmaste tiden bli validerad av ÅF. ÅF ska vidareutveckla det

som under projektet inte blivit implementerat. Därefter kan klienten komma bli testad i en

testmiljö för att sedan förhoppningsvis bli använd i skarp miljö. Operatörer kommer då ha

möjligheten att jämföra mellan gamla och nya klienten.

Page 65: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

55

Referenser

[1] Wikipedia, ”MES,” [Online]. Available:

https://en.wikipedia.org/wiki/Manufacturing_execution_system. [Använd Sep 2016 2016].

[2] Microsoft, ”ASP.NET Web Form,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/ms973868.aspx#introwebforms_topic1. [Använd 22 Sep 2016].

[3] ÅF, ”ÅF,” [Online]. Available: http://www.afconsult.com/sv/om-af/i-korthet/. [Använd 21 Sep

2016].

[4] Wikipedia, ”MVC,” [Online]. Available:

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller. [Använd 21 Sep

2016].

[5] Mircosoft, ”MVVM,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/hh848246.aspx [Accessed: dd-mmm-2016].

[6] Wikipedia, ”Visual studio,” [Online]. Available:

https://en.wikipedia.org/wiki/Microsoft_Visual_Studio. [Använd 22 Sep 2016].

[7] W3schools, ”HTML5,” [Online]. Available: http://www.w3schools.com/html/html5_intro.asp.

[Använd 01 Sep 2016].

[8] Microsoft, ”ASP.NET,” [Online]. Available: https://docs.microsoft.com/sv-se/aspnet/index.

[Använd 22 Sep 2016].

[9] Microsoft, ”User Control,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/y6wb1a0e.aspx. [Använd 18 Dec 2016].

[10] Mirosoft, ”View state,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/ms972976.aspx. [Använd 14 Okt 2016].

[11] Mirosoft, ”Session state,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/ms178581.aspx [Accessed: 14-Okt-2016].

[12] R. Eisenberg, ”Aurelia.io,” [Online]. Available:

http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/what-is-aurelia/1. [Använd 01

Sep 2016].

[13] Wikipedia, ”C#,” [Online]. Available:

https://en.wikipedia.org/wiki/C_Sharp_(programming_language). [Använd 21 Dec 2016].

[14] Wikipedia, ”Java,” [Online]. Available:

https://en.wikipedia.org/wiki/Java_(programming_language). [Använd 21 Dec 2016].

[15] Wikipedia, ”C++,” [Online]. Available: https://en.wikipedia.org/wiki/C%2B%2B. [Använd 21 Dec

2016].

Page 66: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

56

[16] Javascript, ”JavaScript,” [Online]. Available: https://www.javascript.com/about /. [Använd 22

Sep 2016].

[17] TypeScript, ”TypeScript,” [Online]. Available: TypeScript. [Använd 01 Sep 2016].

[18] Wikipedia, ”CSS,” [Online]. Available: https://sv.wikipedia.org/wiki/Cascading_Style_Sheets.

[Använd 29 Sep 2016].

[19] Bootstrap, ”Bootstrap,” [Online]. Available: http://getbootstrap.com/. [Använd 01 Sep 2016].

[20] Telerik, ”Kendo UI,” [Online]. Available: http://www.telerik.com/kendo-ui. [Använd 01 Sep

2016].

[21] Wikipedia, ”TFS (Team Foundation Server),” [Online]. Available:

https://en.wikipedia.org/wiki/Team_Foundation_Server /. [Använd 22 Sep 2016].

[22] Wikipedia, ”SPA,” [Online]. Available: https://en.wikipedia.org/wiki/Single-page_application .

[Använd 16 Sep 2016].

[23] C. Buckler, ”Gulp,” [Online]. Available: https://www.sitepoint.com/introduction-gulp-js/.

[Använd 24 Nov 2016].

[24] Microsoft, ”Endpoints,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/ms733107(v=vs.110).aspx. [Använd 13 Dec 2016].

[25] Wikipedia, ”TCP(Transmission control protocol),” [Online]. Available:

https://en.wikipedia.org/wiki/Transmission_Control_Protocol. [Använd 14 Dec 2016].

[26] Wikipedia, ”DTO(Data transfer object),” [Online]. Available:

https://en.wikipedia.org/wiki/Data_transfer_object . [Använd 19 Okt 2016].

[27] Microsoft, ”WCF(Windows Communication Foundation),” [Online]. Available:

https://msdn.microsoft.com/en-us/library/ms731082(v=vs.110).aspx . [Använd 14 Dec 2016].

[28] Wikipedia, ”Web-Api,” [Online]. Available: https://en.wikipedia.org/wiki/Web_API. [Använd 24

Nov 2016].

[29] ”Promise,” [Online]. Available:

https://basarat.gitbooks.io/typescript/content/docs/promise.html. [Använd 14 Okt 2016].

[30] ”Aurelia-Kendo UI Bridge,” [Online]. Available: https://aurelia-ui-toolkits.gitbooks.io/kendoui-

bridge-docs/content/about_this_application.html. [Använd 04 Jan 2017].

[31] Microsoft, ”GridView,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/system.web.ui.webcontrols.gridview(v=vs.110).aspx. [Använd 09 Nov 2016].

[32] Microsoft, ”Datatable,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/system.data.datatable(v=vs.110).aspx. [Använd 09 Nov 2016].

[33] Microsoft, ”Dataset,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/system.data.dataset(v=vs.110).aspx. [Använd 09 Nov 2016].

Page 67: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

57

[34] Microsoft, ”IList,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/system.collections.ilist(v=vs.110).aspx. [Använd 09 Nov 2016].

[35] Telerik, ”Kendo Contextmenu,” [Online]. Available: http://docs.telerik.com/kendo-

ui/controls/navigation/menu/contextmenu . [Använd 01 Jan 2017].

[36] Microsoft, ”Catch,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/0yd65esw.aspx. [Använd 28 Dec 2016].

[37] Wikipedia, ”Konstruktor,” [Online]. Available:

https://en.wikipedia.org/wiki/Constructor_(object-oriented_programming). [Använd 28 Dec

2016].

[38] Wikipedia, ”NHibernate,” [Online]. Available: https://en.wikipedia.org/wiki/NHibernate.

[Använd 19 Okt 2016].

[39] Microsoft, ”Interface,” [Online]. Available: https://msdn.microsoft.com/sv-

SE/library/87d83y5b.aspx. [Använd 13 Dec 2016].

[40] Microsoft, ”Dictionary,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/xfhwa508(v=vs.110).aspx. [Använd 14 Dec 2016].

[41] Microsoft, ”ChannelFactory,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/ms576132(v=vs.110).aspx. [Använd 14 Dec 2016].

[42] Microsoft, ”ServiceContract,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/system.servicemodel.servicecontractattribute(v=vs.110).aspx. [Använd 30 Dec 2016].

[43] Microsoft, ”OperationContract,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/system.servicemodel.operationcontractattribute(v=vs.110).aspx. [Använd 30 Dec

2016].

[44] Microsoft, ”Repository,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/ff649690.aspx. [Använd 04 Jan 2017].

[45] T. j. Foundation, ”JQuery,” [Online]. Available: http://api.jquery.com/. [Använd 23 Nov 2016].

[46] Npm, ”Mousetrap,” [Online]. Available: https://www.npmjs.com/package/aurelia-mousetrap.

[Använd 23 Nov 2016].

[47] R. Masudur, ”ModalPopupExtender,” [Online]. Available:

https://www.codeproject.com/Articles/34996/ASP-NET-AJAX-Control-Toolkit-

ModalPopupExtender-Co. [Använd 24 Nov 2016].

[48] ”Aurelia-Dialog,” [Online]. Available: https://gooy.github.io/aurelia-dialog/#/ . [Använd 24 Nov

2016].

[49] Microsoft, ”ShowModelessDialog,” [Online]. Available: https://msdn.microsoft.com/en-

us/library/ms536761(v=vs.85).aspx. [Använd 14 Dec 2016].

[50] TypeWriter, ”TypeWriter,” [Online]. Available: https://frhagn.github.io/Typewriter/. [Använd 23

Page 68: Tekniskt lyft av PaperLine - DiVA portal1066524/FULLTEXT01.pdf · gamla klienten är idag baserad på .NET Web Forms [2], se avsnitt 2.3, för att efter kundens önskemål efterlikna

58

Nov 2016].

[51] Wikipedia, ”Scope,” [Online]. Available:

http://https://en.wikipedia.org/wiki/Scope_(computer_science). [Använd 09 Jan 2017].

[52] Wikipedia, ”Spaghettikod,” [Online]. Available: https://sv.wikipedia.org/wiki/Spaghettikod.

[Använd 08 Jan 2017].

[53] AngularJs, ”AngularJs,” [Online]. Available: https://angularjs.org/. [Använd 28 Jan 2016].