• No results found

Konsumera nyheter och kategorier

4.5 Administrationsgr¨anssnittet

5.2.1 Konsumera nyheter och kategorier

De mobila enheterna ¨ar i behov av att ˚atminstone kunna h¨amta alla tillg¨angliga katego-rier, de senaste publicerade nyheterna och publicerade nyheter tillh¨orande en specifik kategori. F¨oljande API m¨ojligg¨or detta:

8Den bl˚aa rektangeln i ¨overkant (p˚a den h¨ogra sk¨armdumpen) i figur 11

9De bl˚aa kvadraterna i figur 11

H¨amta publicerade nyheter

URI: api/news?pageNumber=X&pageSize=Y

HTTP-metod: GET

Respons: Se 5.2.3 Datautbytesformat (Respons - Nyheter)

Kommentar: Parametrarna pageNumber och pageSize ¨ar valfria och f˚ar X = 1 och Y = 10 som standard. Anv¨ands f¨or att endast ge ett delresultat av alla nyheter.

H¨amta nyhet med id = ID

H¨amta publicerade nyheter i kategorin med id = ID

URI: api/category/ID/news?pageNumber=X&pageSize=Y

HTTP-metod: GET

Respons: Se 5.2.3 Datautbytesformat (Respons - Nyheter)

Kommentar: Parametrarna pageNumber och pageSize ¨ar valfria och f˚ar X = 1 och Y = 10 som standard. Anv¨ands f¨or att endast ge ett delresultat av alla nyheter.

5.2.2 Registrering f¨or aviseringar

F¨or att en mobil enhet ska f˚a nyhetsaviseringar kr¨avs det att denna registrerar sig hos webbtj¨ansten. PushId som n¨amns ska vara det id10som plattformens aviseringsombud tilldelar enheten. F¨oljande API m¨ojligg¨or registrering och avregistrering samt uppda-tering av befintlig registrering.

10Kallas f¨or Channel uri av Microsoft, Device token av Apple och Device registration id av Google

Registrering av en ny enhet

URI: api/device

F¨orfr˚agan: Se 5.2.3 Datautbytesformat (Beg¨aran - Registrering av enhet)

HTTP-metod: POST

Respons: Enhetens nya id (av typen Guid)

Kommentar: DeviceType kan i dagsl¨aget vara WindowsPhone, Apple eller Android

Uppdatera registreringen f¨or enheten med id = GUID

URI: api/device

HTTP-metod: PUT

Beg¨aran: Se 5.2.3 Datautbytesformat

(Beg¨aran - Uppdatering av en enhets registrering)

Avregistrerar enheten med id = GUID

URI: api/device/GUID

HTTP-metod: DELETE

5.2.3 Datautbytesformat

Som datautbytesformat anv¨ands JSON. Nedan beskrivs de f¨orfr˚agan- och respons-meddelanden (engelska: request and response) som tas emot av eller skickas fr˚an webb-tj¨ansten.

Respons - Nyheter

{

"TotalCount" : <TOTAL_COUNT : int>,

"PageNumber" : <PAGE_NUMBER : int>,

"PageSize" : <PAGE_SIZE : int>,

"PageCount" : <PAGE_COUNT : int>,

"HasPrevious" : <HAS_PREVIOUS : bool>,

"HasNext" : <HAS_NEXT : bool>,

"SourceList" : [

<LIST_OF_NEWS_ITEMS : List<NewsItem>>

] }

Respons - Kategorier

[ {

"CategoryId" : <CATEGORY_ID : int>,

"Name" : <NAME : string>

}, ...

]

Respons - En nyhet

{

"NewsItemId" : <NEWS_ITEM_ID : int>,

"Heading" : <HEADING : string>,

"Summary" : <SUMMARY : string>,

"Body" : <BODY : string>,

"Author" : <AUTHOR : string>,

"PublishedAt" : <PUBLISHED_AT : datetime>,

"Category" : {

"CategoryId" : <CATEGORY_ID : int>,

"Name" : <NAME : string>

},

"ImageSmall" : {

"ImageId" : <IMAGE_ID : int>,

"Content" : <CONTENT : byte[]>

},

"ImageLarge" : {

"ImageId" : <IMAGE_ID : int>,

"Content" : <CONTENT : byte[]>

} }

F¨orfr˚agan - Registrering av enhet

{

"PushId" : <PUSH_ID : string>,

"DeviceType" : <DEVICE_TYPE : string>

}

F¨orfr˚agan - Uppdatering av en enhets registrering

{

"DeviceId" : <DEVICE_ID : string>,

"PushId" : <PUSH_ID : string>

}

5.3 Administrationsgr¨anssnittet

Administrationsgr¨anssnittet till˚ater nyhetspublicister att lista, skapa, ¨andra, publicera samt avisera nyheter. Vidare till˚ats administrat¨orer att lista, skapa och ¨andra namn p˚a kategorier samt v¨alja vilket standardbeteende f¨or aviseringar (att avisera eller ej) som ska g¨alla f¨or publicerade nyheter tillh¨orande kategorin.

Vid skapandet av en nyhet ges m¨ojligheten att endast spara eller att spara och publicera.

En publicerad nyhet f¨orblir publicerad och kan inte ˚aterkallas. N¨ar en nyhet publiceras finns m¨ojligheten att skicka en avisering till alla konsulter. En avisering kan skickas vid ett senare tillf¨alle om s˚a ¨onskas, men kan skickas endast en g˚ang. Standardbeteen-det f¨or att avisera en nyhet eller ej best¨ams av den valda kategorin n¨ar nyheten skapas, detta val kan dock ¨andras f¨or varje enskild nyhet. Nyhetspublicistens namn fylls i auto-matiskt vid skapandet, men kan ¨andras om s˚a ¨onskas. Br¨odtexten har st¨od f¨or enklare formatering som fet, kursiv och understruken stil samt styckeindelning, det g˚ar ¨aven att skapa punktlistor och internetl¨ankar.

Se sk¨armdumpar f¨or administrationsgr¨anssnittet i bilaga C Sk¨armdumpar administra-tionsgr¨anssnitt p˚a sida 38.

5.4 Grundplattformen

Stommen i systemet utg¨ors av grundplattformen som har till uppgift att assistera webb-tj¨ansten och administrationswebb-tj¨ansten, men ¨aven nya tj¨anster i framtiden, med vad de beh¨over. Det finns inbyggt st¨od f¨or flera kontor vilket var ett av kraven. Webbtj¨ansten och administrationsgr¨anssnittet sk¨oter endast autentiseringen av anv¨andaren, d¨arefter ansvarar grundplattformen f¨or att h˚alla reda p˚a anv¨andaren och endast h¨amta och lagra den data som tillh¨or den autentiserade anv¨andarens kontor, s˚aledes en konsult i ¨Orebro kommer aldrig se en nyhet publicerade av Stockholms-kontoret.

All interaktion med grundplattformen g¨ors via olika tj¨anster. Det finns en upps¨attning datatj¨anster som ansvarar f¨or att h¨amta och lagra data via dataaccesslagret. Dessa tj¨anster ser till att endast data avsett f¨or den autentiserade anv¨andaren nyttjas. Det finns

¨aven en aviseringstj¨anst som utf¨or nyhetsaviseringar. Aviseringstj¨ansten ser till att bara skicka ut aviseringar till aktiva enheter11, de inaktiva enheter tas bort.

11I dagsl¨aget specificerat till enheter som anv¨ant mobilapplikationen under de senaste 14 dagarna

6 Slutsats och diskussion

Projektet har varit b˚ade intressant och l¨arorikt. Microsofts utvecklingsplattform ¨ar v¨al-digt popul¨ar idag bland f¨oretag och projektet har anv¨ant sig av flera aktuella tekniker, som exempelvis ASP.NET Web API f¨or att skapandet av webbtj¨ansten.

F¨or mig har en del av projektet varit extra intressant, vilket har varit att designa syste-met efter goda objektorienterade principer vilka visade sig vara v¨aldigt utmanande men givande. Alla konsulter p˚a Nethouse anv¨ander boken Clean Code [18] som handbok f¨or hur man skriver bra kod och den har verkligen gett mig en ny syn p˚a vad bra kod ¨ar.

Mycket energi har lagts p˚a att efterf¨olja principerna f¨or god objektorienterad design och att anv¨anda designm¨onster, d¨ar mitt fokus har legat p˚a att skapa ett system som Nethouse kan bygga vidare p˚a och ut¨oka med ny funktionalitet i framtiden. N¨ar jag nu efter˚at utv¨arderar systemet som projektet resulterat i, genom att se ¨over vilka klasser som finns, vad de g¨or och hur de relaterar till varandra, m¨arker jag stor skillnad fr˚an tidigare projekt som utf¨orts under skoltiden. Trots att koden knappt har n˚agra kommen-terar (vilket boken f¨orespr˚akar) ¨ar den enligt mig ¨and˚a beskrivande och l¨attf¨orst˚aelig tack vara att sm˚a klasser som endast har ett ansvar och korta metoder med beskrivande namn.

Vissa problem har funnits d˚a projektet utf¨orts p˚a distans. Dels blev projektet f¨orsenat i b¨orjan och dels hade fler avst¨amningar beh¨ovts eftersom vissa krav var ok¨anda. Pro-blem som troligtvis kunna f¨orminskats om arbetet utf¨orts p˚a plats, ˚atminstone n˚agon g˚ang i veckan.

6.1 M¨ojliga f¨orb¨attringar

• Identifiera och upplysa anv¨andaren om aviseringar som inkommit medan mobil-applikation k¨orts, vilket det finns en h¨andelse f¨or. Dock beh¨over man fundera p˚a om endast ett visuellt meddelande ska visas eller om listan ska uppdateras automatiskt.

• Kunna v¨alja vilka kategorier som ska visas i mobilapplikationen fr˚an inst¨allnings-vyn.

• Koda nyhetsbilderna i ett effektivt format f¨or bin¨ar data, exempelvis BSON [23], innan de skickas till de mobila klienterna. I dagsl¨aget anv¨ands Base64 [24] f¨or att koda bilderna, vilket har ett relativt stort overhead.

• SSL beh¨over implementeras innan systemet produktionss¨atts.

• Visa nyhetsbilder i administrationsgr¨anssnittet. Idag h¨amtas all information bort-sett fr˚an bilderna till administrationsgr¨anssnittet, gr¨anssnittet indikerar endast att en befintlig bild finns om s˚a ¨ar fallet.

Bilagor

A Skisser mobilapplikation

Figur 12: Fr˚an v¨anster till h¨oger: (1) Anv¨andaren loggar in om tidigare autentisering saknas eller utg˚att, (2) senaste nytt h¨amtas och visas f¨or anv¨andaren och (3) en nyhet v¨aljs utifr˚an listan och visas i fullst¨andig form.

Figur 13: Anv¨andaren kan navigera mellan senaste nytt och de olika kategorierna genom att svepa horisontellt ¨over sk¨armen. Nyheterna h¨amtas dynamiskt n¨ar de beh¨ovs.

Figur 14: Fr˚an nyhetslistningen kan anv¨andaren f˚a fram en dold meny genom att trycka p˚a menyraden l¨angst ner. D˚a visas tv˚a alternativ; (1) uppdatera nyheter som endast f¨or den aktuella vyn h¨amtar hem nyheterna p˚a nytt och (2) inst¨allningar som tar anv¨andare till inst¨allnings-vyn d¨ar denne kan logga ut eller aktivera/inaktivera aviseringar.

B Sk¨armdumpar mobilapplikation

Figur 15: Sk¨armdumpar av nyhetslistningar samt meny

Figur 16: Sk¨armdump av en nyhet

Figur 17: Sk¨armdumpar av inloggning

Figur 18: Sk¨armdump av inst¨allningar

Figur 19: Sk¨armdumpar av aviseringar

C Sk¨armdumpar administrationsgr¨anssnitt

Figur 20: Sk¨armdumpar av nyhetslistning

Figur 21: Sk¨armdumpar av nyhetsredigering

Figur 22: Sk¨armdumpar av nyhetsvisning

Figur 23: Sk¨armdumpar av kategorilistning

Referenser

[1] D. Fensel, F. M. Facca, E. Simperl, and I. Toma, Semantic Web Services. Berlin:

Springer Berlin Heidelberg, 2011.

[2] “Representational state transfer (wikipedia).” http://en.wikipedia.

org/wiki/Representational_State_Transfer, 2013. Tillg¨anglig 2013-05-31.

[3] “Extensible markup language (xml) 1.0 (fifth edition).” http://www.w3.

org/TR/REC-xml, 2013. Tillg¨anglig 2013-05-31.

[4] “Introducing json.” http://json.org. Tillg¨anglig 2013-05-31.

[5] “Push notifications for windows phone.” http://msdn.microsoft.com/

en-us/library/windowsphone/develop/ff402558(v=vs.105) .aspx, 2013. Tillg¨anglig 2013-05-20.

[6] “Apple push notification service.” http://developer.apple.

com/library/mac/documentation/NetworkingInternet/

Conceptual/RemoteNotificationsPG/Chapters/

ApplePushService.html, 2013. Tillg¨anglig 2013-05-20.

[7] “Google cloud messaging for android.” http://developer.android.

com/google/gcm/gcm.html, 2013. Tillg¨anglig 2013-05-20.

[8] M. C. Robert and M. Micah, Agile Principles, Patterns, and Practices in C#.

Boston: Prentice Hall, 2006.

[9] A. I. Khan, R. J. Qurashi, and U. A. Khan, “A comprehensive study of commonly practiced heavy and light weight software methodologies,” International Journal of Computer Sciencee Issues, Vol. 8, Issue 4, No 2, 2011. Tillg¨anglig 2013-05-20 fr˚an http://arxiv.org/pdf/1111.3001.pdf.

[10] “Scrumguiden.” http://www.scrum.org/Portals/0/Documents/

Scrum%20Guides/Scrum%20Guide%20-%20SE.pdf, 2011. Tillg¨anglig 2013-05-20.

[11] “Fiddler.” http://fiddler2.com/. Tillg¨anglig 2013-06-12.

[12] “Microsoft asp.net.” http://www.asp.net/, 2013. Tillg¨anglig 2013-05-25.

[13] “Microsoft asp.net web api.” http://www.asp.net/web-api, 2013.

Tillg¨anglig 2013-05-25.

[14] “Microsoft asp.net mvc.” http://www.asp.net/mvc, 2013. Tillg¨anglig 2013-05-25.

[15] “Microsoft entity framework.” http://msdn.microsoft.com/en-us/

data/ef.aspx, 2013. Tillg¨anglig 2013-05-25.

[16] “Windows phone dev center.” http://dev.windowsphone.com/en-us/

[17] “Pushsharp.” https://github.com/Redth/PushSharp, 2013.

Tillg¨anglig 2013-05-25.

[18] M. C. Robert, Clean Code: A Handbook of Agile Software Craftsmanship. Bo-ston: Prentice Hall, 2008.

[19] M. Seemann, Dependency Injection in .NET. Shelter Island: Manning Publica-tions Co., 2012.

[20] “Unity.” http://unity.codeplex.com/, 2013. Tillg¨anglig 2013-06-12.

[21] “Setting up your app to receive push notifications for windows phone.”

http://msdn.microsoft.com/en-us/library/windowsphone/

develop/hh202940(v=vs.105).aspx, 2013. Tillg¨anglig 2013-05-31.

[22] C. Rodrigues, J. Afonso, and P. Tom´e, ENTERprise Information Systems, ch. Mo-bile Application Webservice Performance Analysis: Restful Services with JSON and XML. Springer Berlin Heidelberg, 2011.

[23] “Bson.” http://en.wikipedia.org/wiki/BSON, 2013. Tillg¨anglig 2013-06-12.

[24] “Base64.” http://en.wikipedia.org/wiki/Base64. Tillg¨anglig 2013-06-12.

Related documents