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.