DEV-B321 Building multi-device apps with new visual studio tooling for Apache Cordova
Deze sessie is gegeven door Ryan J, Salva en gaat over het gebruiken van web technologie voor het bouwen van apps.
Apps zijn zo belangrijk. De brouwer van een gemiddeld toestel wordt nog maar 14% van de tijd toegepast. De overige 86% van de tijd wordt in apps doorgebracht.
Hybride apps zijn een interessante oplossing als er niet teveel native toegang tot het toestel nodig is. Deze sessie gaat over Cordova. Dit heeft dezelfde basis als PhoneGap. Het biedt een javascript single page app die in een native container draait. Toegang van de javascript code tot het OS wordt geregeld door de Cordova Plugin JS API. En plugins maken het mogelijk om meer met de api te doen. Denk aan een barcode scanner plugin voor de camera api.
Op dit moment draait 6% van de apps in de store met Cordova is gebouwd. En dit geldt voor 13% van enterprise applicaties.
Waarom Cordova? Die vraag in aan ontwikkelaars gevraag. De belangrijkste redenen zijn dan de bekendheid met tools en taal (javascript) en snelheid van ontwikkelen.
Voor VS2013 is er een Apache Cordova plugin. De MSFT installer doet alles voor je want je moet een heleboel installeren voordat je aan de gang kunt gaan. Mooi. Voor IOS heb je natuurlijk een extra apparaat van het fruitmerk nodig. Een emulator gebruiken is ook mogelijk.
In de demo werd getoond hoe de kalender en de contactlijst uit Office365 gebruikt werd in een testapp. En de meeste code in de apps komt gewoon van javascript en html.
Bij hercompileren van de app wordt altijd gecontroleerd of de code gebruik maakt van de laatste versie van Cordova. Je kunt zelf beslissen of je die updates ook wilt binnen halen.
Bij debuggen in windows werd eerste een windows app gestart. En de javascript was ook eenvoudig te debuggen.
Startpunt voor de app is de index.js. Hier wordt het gedrag beschreven bij het opstarten van de app of bij het verlaten en bij terugkomst. En er is een session object als globale opslag tijdens runtime gebruik (niet persistent).
Ook hier werd de Android emulator getoond. Deze is wel enorm traag, gebruik een echt apparaat indien mogelijk.
Trouwens, ik merk dat ik Office365 steeds interessanter begin te vinden… Office (contacten, kalender, etc.) overal altijd beschikbaar. Ook in apps…
In de demo werden wat simpele HTML controls gebruikt. En met jquery werd de code gekoppeld aan die controls. Heel aardig is dat je ook andere javascript/html controls en bibliotheken kunt gebruiken.
Om in IOS te builden wordt gebruik gemaakt van WIFI naar de fruitmand en daar draait een node.js module die graag wilt compileren. De overdracht is nu nog niet secure, maar per direct komt er een update waarbij de code overdracht wel secure is.
De spreker liet ook nog CSS zien om de app echt touch gevoelig te maken voor IE. De app schijnt echt snappy te worden als je Touch-action: manipulation toevoegd aan je controls. Let wel op de verschillen tussen IE10 en IE11. En hij demonstreerde ook FlexBox om de schaling en rotatie echt goed te maken. Dit werkt op bijna alle platformen, anders dan het standaard HTML5 grid.
Daarna kwam de accellometertor aan bod als plugin. Als plugins voor alle ondersteunde platformen beschikbaar is en stabiel is, dan mag de plugin toetreden tot de api zelf. En je hoeft je code niet aan te passen. En er kon gelijk naar de console.log geschreven worden. Hier moest de app nog wel de capability krijgen om deze sensor aan te mogen spreken.
Publiceren en beheer kan op verschillende manieren. Zo is er ondersteuning voor de stores, voor side-loading, Windows Intune voor enterprise oplossingen, etc.
De app is op zich vatbaar voor standaard web bedreigingen maar wel met de beperking dat de app sandboxed draait met minder rechten dan een reguliere browser.
In de toekomst zou jet zomaar kunnen dat de projectstructuur in de toekomst ook op een MVC project gaat lijken. In ieder geval zal de komende weken een aankondiging gedaan worden rond de ondersteuning van Angular…
En dit was de presentatie. Heel leuk en als je de video bekijk. Als er maar één piraat antwoord, dat was ik 😉 Ahrrrrrr
WIN-B3556 3 way binding in universal apps, View, View Model and cloud
Dit was een intieme sessie van Shen Chauhan. @shenchauhan. Deze sessie gaat over het combineren van MVVM, azure mobile services en signalR.
Eerst werd een korte introductie in data-binding gegeven. Dit betekent niks anders dan een databron aangeeft dat er veranderingen in de data heeft plaatsgevonden. En alle (visuele) die geïnteresseerd zijn het representeren van de data kunnen daar direct op reageren. En in het algemeen is dit heen en terug (2-way).
Databinding is de kers op de MVVM taart wat het schil maakt tov. MVC.
Je kunt MVVM zelf uitwerken maar kijk vooral naar de beschikbare bibliotheken en toolkits. Er is wel performance degradatie met MVVM volgens de spreker maar hier kan goed op ingespeeld worden.
Ook Azure Mobile Services als databackend in Azure werd geïntroduceerd. En als laatste werd SignalR genoemd. Dit is een communicatie architectuur gebaseerd op oa. Websockets zodat een server direct data naar één of alle clients kan sturen. Het is super snel en flexibel.
Daarna ging Shen direct door naar de demo.
Hij begon met de azure mobile services website. En Hij laadde daar de SignalR extension nuget package bij. Dit geeft een SignalR hub waarmee de gedeelde signalen verstuurd worden. En de initialisatie moest ingesteld worden in de app_start webapi configurate…
Daarna werd van een crud website voor de AMS een signalR site gemaakt. En uiteindelijk werd aan een universal app ook SignalR gehangen. Hiermee werd het mogelijk om direct berichten naar de clients te sturen en we weten ook precies wanneer de app weer uit de lucht gaat. Want de verbinding wordt verbroken en SignalR reageert hier op.
Een wat korte sessie maar hier kun je een heleboel mee kunt doen. Actief gebruikers bijhouden!
DEV-B349 Microsoft IoT Platform-Client
Deze sessie over Internet of Things werd gegeven door Steve Teixeira
Moet ik iemand nog vertellen dat dit een gave sessie is?
IoT staat aan op een keerpunt: het is makkelijk te bouwen, het is goedkoop en internet is bijna overal. Dit gecombineerd maakt de potentie geweldig, de opbrengsten kunnen enorm zijn!
Maar IoT begint nu al met de apparaten die JIJ nu al hebt. Dus het is nu IoyT (met de Y van ‘your’). Het gaat namelijk om enigszins intelligente apparaten, een gebeurtenis in de omgeving en het aftappen van die gegevens voor een beter inzicht. Dus we hebben de cloud nodig voor schaalbaarheid en beheerbaarheid.
Eerst wordt policies voor Windows nog eens herhaald. Denk aan het uitzetten van notificaties, voorkomen van swipes, automatisch beantwoorden van dialogen, etc. om tot een kiosk variant te komen. Want kiosken of gedeelte, anonieme, pc’s wil je dichttimmeren en tegen trollen/overnemen beschermen.
Ook werd een Windows Phone getoond die ruggedized was. Ook hier werd policies toegepast om van een gewone Windows Phone (want dat is het met als extra een hele dikke schil) een beperkt toepasbaar apparaat. Je kunt b.v. de belfunctie verbergen.
Daarna werk een intel Galileo getoond. Een klein embedded kaartje met een chip van 5x5mm met de kracht van een Intel Pentium van enkele jaren terug. En hierop draait gewoon Windows 10. Deze is natuurlijk flink teruggeschaald en er zit geen scherm op maar de basis is toch echt Windows 10. Hierop demonstreerde hij het aanroepen van OneNote386 want die heeft in bèta een API beschikbaar. De demo is dat een OneNote365 bericht geprint wordt.
Onprettig: als je nu met Galileo aan de gang wilt, dan moet je C style arduino kennen…
Ook kwam een netduino robot aan bod met het .Net Microframework aan boord. Dit werkt met een kleine maar krachtige versie van .Net en we programmeren in C#. Maar net als bij de Galileo werkt alles in één grote messageloop.
Het was een leuke sessie en ik had nog een bonus. Steve droeg de Microsoft Band. Hij demonstreerde deze ook. Steve verteld dat hij deze pas een mand had en dat het eigenlijk helemaal in het geheim ontwikkeld is. Mijn eerste impressies? Hij is kleiner dan ik verwachtte, slanker dan op de foto’s maar niet klein als in TE klein. Het scherm bewoog vloeiend in mijn ogen en zag er prachtig uit. En Steve vertelde dat hij het toestel iedere 2-3 dagen moest opladen wat enorm snel ging. Bv. Tijdens het scheren. Ik wil het!
DEV-B320 Building Microsoft Mobile Services with Visual Studio van Merwan Hade
Dit is de laatste sessie van vandaag en tegelijkertijd van deze TechEd. Jammer, jammer, jammer maar ik ben ook doodop 🙂
De sessie begint met het bekende verhaaltje over AMS: storage, notificatie, security, etc. Deze is eerst in NodeJs geschreven maar sinds enkele maanden is deze ook voor .Net en daarvoor is er een enorm rijke tooling in VS2013 beschikbaar.
De eerste demo laat zien hoe een AMS project vanuit AMS aangemaakt wordt. Een standaard AMS project bevat al een database (via de wizard gekozen) en een tabel. De spreker liet zien hoe eenvoudig een extra tabel en table controller toegevoegd kon worden. Ook de crud acties kwamen goed uit de verf omdat hij breakpoints had gezet.
Daarna kwam autorisatie aan bod. Hij koppelde oauth van facebook aan de service en liet met de code op de client zien dat nu oauth werd ondersteund inclusief de verversing van het token zodat de klant ook single sign on ondersteuning kreeg.
Daarna werd blobstorage aangeroepen. Nu zit er een klein valkuiltje aan storage in het algemeen. In de connectionstring die aangeroepen moet worden zit een ‘secret’. Dit secret wordt dus redelijk onbeschermd meegegeven en het is theoretisch mogelijk de code te extraheren. Daarmee wordt het voor andere mogelijk om zowel te lezen als te schrijven in jouw storage.
Maar het is mogelijk om via AMS een SAS token te laten genereren. Client kunnen namelijk ook een blobstorage manipuleren of lezen met een SAS token. Deze worden vanuit code live aangevraagd en dus niet fysiek meegegeven bij deployment. En deze SAS tokens verlopen ook na een bepaalde tijd (zeg 5 minuten en de cliënt moet aangeven of deze wilt lezen dan wel schrijven.
Ook kwam Notificaties even voorbij. Je kunt notificaties naar groepen gebruikers sturen en het is mogelijk om te zien welke gebruikers in welke groepen zitten op de server. Ook werd gezegd dat zichtbaar was of inmiddels de verbinding verbroken was met een gebruiker.
Deze sessie start wat rustig maar naarmate de sessie vorderde kwam de spreker goed op gang. Kijken dus.
Naderhand ben ik nog even langs gegaan bij de spreker. AMS heeft namelijk een sync mechanisme voor data. Data die op de server gemanipuleerd wordt zal de volgende keer bij het ophalen van data ook meegestuurd worden. Onveranderde data op de cliënt en server aanwezig, blijft achterwege. Hiervoor worden bij crud acties (behalve lezen) een viertal kolommen gemanipuleerd, in AMS. Ik vroeg me af of dit ook buiten AMS kon plaatsvinden (als in een trigger op de database of zo). Goede vraag volgens de spreker en dat betekent meestal dat het antwoord niet voorradig is. Dit keer dus ook niet maar ik heb nu contact met Merwan. Wellicht later meer dus.
En hiermee is er een einde gekomen aan de TechEd 2014 Europa in Barcelona. Mijn algemene gevoel was in eerste instantie dat het aantal announcements echt tegenviel (behalve copy/paste in de dosbox natuurlijk) en dat kreeg ik van iedereen te horen. Maar ik heb het idee dat de keynote, waar dit soort zaken in thuishoren, gewoon niet representatief was. Bij een flink aantal sessies werd dus wel degelijk een nieuwe techniek of een update aangekondigd. Ik kan dan zeker iedereen aankondigen eens op Channel 9 door de video catalogus te bladeren. Er zit ongetwijfeld een aardig stukje tussen. Veel kijkplezier!