Teched 2014 Barcelona, de vrijdag

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.

WIN_20141031_083553

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.

WIN_20141031_084545

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…

DSC04424

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).

DSC04426

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.

DSC04427

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?

WIN_20141031_120314

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.

WIN_20141031_120707

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.

WIN_20141031_123242

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.

WIN_20141031_145034

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!

TechEd 2014 Barcelona, de donderdag

Momentje, even bijkomen van de country drinks…

DSC04376

Koffie. Klaar.

DEV-B311 Advanced Xaml techniques to super-charge your user experience

De spreker begon met templating in Expression designer 4. Dit levert van plaatjes een path welke schaalbaar wordt en de applicatie levert dit als xaml die zo in je wpf pagina’s te hangen is. De tool is helaas wat verouderd (het komt uit de tijd van silverlight) maar voor deze taken is het heel handig.

WIN_20141030_084602

Vervolgens ging hij verder met het schaalbaar maken van apps. Want apps kunnen full-screen getoond worden maar ze kunne ook ge-snap-t worden. Het aanpassen van je view voor een ‘responsive design’, namelijk het aanpassen van je content aan de grootte van het te tonen oppervlakte na snappen. En dit betekent vooral het weglaten van steeds de minst belangrijke informatie als het oppervlakte kleiner wordt. Dit deed hij in blend met extra behaviour waarin de landscape, portrait en de narrow state opgenomen is (de code van deze behaviour is van zijn blog te halen). De overgang van de ene state naar de andere state wordt afgehandeld door een storyboard.

Daarna werd een klok gebouwd met databinding. Aardig voorbeeldje maar man-o-man wat kan die man enorm snel typen. En gewoon tussendoor vloeiend de conversatie ophouden. En hij heeft er ook een voorbeeldje van als app in de Windows store (zoek op free timer app).

Ook pixel perfect apps kwam aan bod. Hij liet twee cirkels die binnen elkaar stonden. Maar de binnenste staat door layout-rounding. In WPF staat dit overigens uit en wordt sub-pixel ondersteuning gebruikt. Daardoor krijg je daar dan een blurry ervaring. Hoe los je dit op? Gebruik geen kleine items op het scherm L Of zet layout rounding uit, niet op het betreffende object maar op het hoogte niveau. Erg tricky, je kunt hier uren mee bezig zijn als je geen gebruik maakt van de Blend rulers/guiding lines …

Vervolgens ging hij verder met het bouwen van een Custom Items control. Hij gaf een standaard een list box een achtergrond en wisselde de itemspanel met een canvas. En de itemstemplate werd vervangen door een eigen template waardoor de items in de list opeens als plaatjes op de achtergrond (een landkaart) getekend werden. Hiervoor moest alleen de listbox overerft worden om de PrepareContainerForItemOverride te kunnen vullen met bindings voor de X en de Y van de plaatjes. Erg mooi.

Er is ook een DataTemplate selector. Hiermee kan je afhankelijk van de inhoud van een element in een lijst de representatie ervan variëren door meerdere templates te ontwerpen en een keuze te coderen in een selector.

Dit was echt een waanzinnig goede sessie voor WPF on XAML adepten.

DEV-B344 The Future of Microsoft .Net on the server

Laat de titel je niet verwarren! Ik ben wel op het verkeerde been gezet en heb deze op het laatste moment toch omgewisseld met DEV-B311. En nu heb ik er spijt van 🙂

Deze sessie gaat oa. over Asp.Net MVC en wat er verder in opgelost gaat worden. Dus wat ik oa. mistte was de melding dat MVC ook in een fruitmand van Apple gaat draaien! Ga dat zien!

DEV-B350 Build Employee and Partner Facing Mobile Apps Using Microsoft Azure

Sprekers: Kirill Gavrylyuk, Omar Khan

Waarom mobile apps voor medewerkers?

  • Een geheel nieuw interactie mode: video, touch, photo accelleratie
  • Contextueel informatie vergaren en gebruiken
  • Portable
  • En medewerkers verwachten het ook, net als thuis. Jonge mederwerkers nog meer dan oudere want mee opgegroeid
  • Het werk wordt ook mobiel en bijbehorende collaboratie. En saas versterkt het

Uitdagingen richting experience, authenticatie, security, connectivity

Voor employees:

  • Cross platform tov. eigen device
  • Koppelen aan bedrijfsnetwerk. Bedrijfsdata ipv. Eigen data
  • Koppelen met een rol ipv. Facebook etc.
  • Zowel connected als unconnected ipv. voornamelijk connected.

De demo zal een field engineer app zijn: workorders, inloggen met comporate account. Offline capabilities

Dit kan met Mobile services met oa.:

  • Backend voor native en cross platform apps
  • SSO
  • Office 365 integratie
  • Meerdere databronnen
  • Offline en realtime sync
  • Werkt ook via web api. Dus c#

In de demo wordt Xamarin gekoppeld aan Azure mobile services. Via code first werd direct een nieuwe tabel in de database aangemaakt via Entity Framework Code First. Via lokaal debuggen wordt de rest api getoond.

Mobile services is net als azure webservices via GIT te deployen.

We kunnen ook data vanuit een bestaande SQL database ontsluiten. Maar denk ook aan andere bronnen zoals MongoDB of Azure Table Storage. Eventueel kan ook een hybride oplossing met een hybrid connection gemaakt worden.

TCP verkeer wordt hiermee als http omgeleid van azure naar de lokale database on-premise. Mooi is dat er geen poort 1433 geopend moet worden. Dit kan zonder verdere configuratie wijzigingen. Dan is een wijziging van de connectionstring al voldoende. Zoiets heet een Relay. En er kan zelf een loadbalancer op draaien.

Daarna werd SSO met Azure Active Directory (AAD) gedemonstreerd. Deze is net voor Xamarin beschikbaar gekomen. Registreer de Mobile service bij AAD. Dit lijkt erg veel op de standaard OAuth oplossing voor Facebook, Google, etc. Daarna moet de authenticatie op de tablecontrollers aangezet worden. In de controller kan de data zelfs nog gefilterd worden gebruik makend van de identiteit (of in ieder geval van het token van de gebruiker).

Vervolgens kwam offline support toegepast. De api is heel lichtgewicht en ondersteund meerdere types aan lokale opslag. En dit werkt met zowel de .Net als de NodeJS backend. De table controller wordt hier juist erg interessant voor. De local store oplossing is erg eenvoudig en krachtig. Hier werd SQL Lite gedemonstreerd. En met PullAsync en PushAsync werd de lokale storage gemanipuleerd. Doe bij voorkeur een pushasync vooraf aan een pullasync om eventuele conflicten te voorkomen (met de push wordt je op de hoogte gebracht).

Er werd ook instant sync gedemonstreerd. Maar dit wordt niet continue met een pull opgelost. Nee, dit gaat via een pushnotification onderwater 🙂 Je moet de pushchannel instellen.

Mobile Services is dus niet alleen voor consumenten applicaties maar het is ook prima voor enterprise app!

DEV-B314 ASP.NET Identity door Pranav Rastogi

De spreker werkt de laatste jaren aan Identity in de web tooling voor Visual Studio. Hij heeft dus de overgang van membership naar Identity meegemaakt . De membership provider en simple membership laten we dus achter ons. Wil je SQL membership, simple membership of universal membership migreren naar een app die 4.5 aan kan? www.asp.net/identity/overview/migrations

We werken nu met Identity providers voor allerlei verschillende mogelijkheden om de identity te checken. Er zijn er al ruim 30 beschikbaar, van Microsoft maar ook open source of aangeboden door officiële OAUTH providers.

WIN_20141030_102908

Met deze providers kun je met claims gaan werken maar rollen zitten er ook nog steeds in. Maar denk ook aan sterke wachwoord checks, two-factor authenticatie, account lockout, security stamp (alle cookies vervallen als je iets aanpast aan je account), wijzigen/resetten wachtwoord, validaties (wat is een goed wachtwoord of gebruikersnaam), etc.

Eerst werd de standaard provider gedemonstreerd met een eigen database om gebruikers in te bewaren. Hij liet zien hoe makkelijk het is om de standaard gebruiker logica aan te passen door een extra kolom op de user tabel toe te voegen met de bijbehorende mapping in de code op database entiteit en application entiteit.

Er is standaard ook ondersteuning voor email of sms versturen indien gewenst. Hiervoor werden respectievelijk sendgrid en twilio toegepast (even de nuget package downloaden en configureren).

Ook werd two-factor login getoond. De demo was erg uitgebreid, zeer de moeite waard om nog eens terug te kijken.

Daarna werd de lockout van een account besproken. Het volledig locken van een account wordt zeer slecht ontvangen door gebruikers. Hier werd de lockout zo geconfigureerd dat na 5 keer proberen de two-factor code met een verkeerd code te bevestigen, het account voor vijf minuten gelocked werd.

Owin kwam ook aan bod. Hier werd het gebruik om cookies te configureren voor cookie identification (voor SSO of security stamp).

Single Sign Out is een ervaring om in 1 keer op alle mogelijke plekken overal uit te checken. Dit is prettig op publieke plekken. Dit werkt met die security stamp. De applicatie cookie moet dus continue gecontroleerd worden om te reageren op het uitloggen op een andere machine of applicatie.

Dit was ook weer een waardevolle sessie met een heldere uitleg en werkende demo’s.

DEV-B315 Async Best Practices for C# and VB.Net

Deze sessie geeft een aantal tips over goed gebruik van async.

WIN_20141030_120111

Zo moet je voorkomen om async void te gebruiken. Gebruik bij voorkeur async task. Want async void verstoort de flow van de async statemachine. Je weet niet waar de volgende regel code wordt uitgevoerd na een await. Async void is voorbehouden aan (top level) eventhandlers (zoals een buttonclick).

Async lijkt ook heel interessant te zijn om toe te passen bij threadpools, het parallel uitvoeren van code. Maar Async op zich heeft niks met parallelisme te maken. Parallel.For is een interessante oplossing en maakt per core een thread aan. Maar pas op voor await in parallel uitgevoerde code. Want als de awaitable code lang duurt dan staan de threads te wachten op het uitvoeren van de code na de await. Maar the treadpoolmanager snapt dit niet zo goed (thread die stil staan) en gaat hier raar op reageren. Gebruik dan de Queue<> en de Task.WhenAll.

Dus voor IO gebonden werk, gebruik await. Voor CPU gebonden werk (veel ‘berekeningen’), dan kan Parallel ForEach jou enorm helpen.

Async await kan spagetti opleveren. Voorals als je veel doorverwijzingen hebt. -De voorbeelden waren iets te complex om zo even bij te typen- Je kunt enorm veel code en complexiteit wegnemen door code in tasks te stoppen en awaitable uit te voeren.

Benoem asynchrone methodes ook met het woord Async op het einde. Bibliotheken moeten ook niet liegen en doen alsof er asynchroon code uitgevoerd gaat worden. Want een awaitable methode mag intern geen andere thread opstarten! Een async methode mag dus geen Task.Run() uitvoeren want dat is vals spelen en kan zelfs tot deadlocks leiden. De threadpool is globaal voor onze hele applicatie.

Awaitable methodes moeten chucky zijn. Dit betekent dat ze grote brokken logica in één keer moeten uitvoeren en de data moeten in z’n geheel moeten aanleveren. Want dit betekent weinig overhead. Het mentale model is namelijk dat allocaties duur zijn, er moet ooit een garbage collector afgaan.

Deze sessie is zeker aan te raden om nog eens opnieuw te bekijken. Zeker het laatste gedeelte over performance is erg interessant.

 

DEV-B322 Building Web Apps and Mobile apps using Microsoft Azure Active Directory for Identity Management

Dit is de laatste presentatie van vandaag. De spreker met een zwaar maar verstaanbaar Italiaans accent.

WIN_20141030_171854

De sessie was erg interessant compleet met hands-on demo’s maar helaas was de opzet van de sessie niet echt zo te volgen zodat ik het hier nog eens rustig in kon typen. Dus als je met AAD bezig bent of wilt beginnen, dan is dit jouw sessie.

Deze sessie raakt vooral de verschillende scenario’s over hoe je vanuit een website of een ap connectie kunt maken met AAD en de spreker laat zien hoe de berichten op de achtergrond uitgewisseld worden. Ook komt regelmatig Owin even voorbij. Dit is de nieuwe software stack van MSFT voor alle web gerelateerde systemen.

Prima sessie dus.

 

 

 

Teched 2014 Barcelona, de woensdag

Na een leuke avond waarbij we Atos collega’s uit Denemarken hebben ontmoet, is het weer tijd voor de volgende dag vol interessante sessies.

WIN-B333 Windows 10: Internet of Things

De eerste sessie van vandaag staat in het teken van IoT en wordt gegeven door een David (geen naam op sheet)

WIN_20141029_083305

Was is IoT voor Microsoft? Het val uiteen in Devices, connectivity, de data heen en terug en uiteindelijk analytics. Het is een cross-company missie dus.

En voor Analytics denk aan Microsoft Sql, HDInsight en PowerBI. De connectivity wordt met Azure opgelost. Deze sessie gaat over devices.

(tussendoor vliegt er een ruggedized Winows Phone door de lucht en landt op de grond tien meter verderop. En niet gebroken, stevig dingetje)

IoT devices vallen uiteen in vier groepen met ieder een eigen versie van windows (.net): Standaard (windows embedded industry), Mobile (Windows embedded handheld), Compact (windows embedded compact) en Micro (.Net Micro Framework). En er komen dus ook drie nieuwe smaken van Windows voor de eerste drie groepen: “Industry”, “Mobile” en “Athens Windows Embedded Compact”.

De Industry versie draait om de x86 architectuur. De mobile draait om ARM of x86 architectuur (universal app support). En Athens draait ook op ARM en x86 en is een zeer geoptimaliseerde versie voor eenvoudige devices. Ik zie wel veel overlap. Microsoft wilt zich onderscheiden met Windows 100 voor IoT met “One Platform”, “Scalability” en “Trust”.

Wat de klanten mee worstelen zijn: deployment en management complexiteit, Cyber crime dus security en LoB complexiteit over meerdere soorten apparaten. Microsoft zal proberen alle zorgen van deze drie punten weg te nemen met Windows 10…

Met de Image Configuration Designer (ICD) wordt het eenvoudiger om industriële apparaten van software en updates te voorzien. Je kunt bij uitrollen kiezen voor Wipe-and-load, In-Place en Provisioning voor OS uitrol. Ook wordt activatie aangepakt, het wordt nog eenvoudiger 🙂 Er is geen internet meer direct nodig want activatie kan ook met een Windows Activation Marker.

En MDM support gaat nog meer uitgebreid worden.

Wat betreft thread management. Malware heeft bijna geen kans, je kunt kiezen voor het draaien van trusted apps. Alleen wat gesigned is, mag ook draaien op de machine. Signen gaat via een aparte service, er is geen extra aanpassing aan de code nodig.

En voor alle soorten devices (form factors) is het mogelijk om vast te stellen welke apps gedraaid mogen worden. Zo is er een ‘Write filter’. Het wordt zo heel eenvoudig om read-only sessie te leveren. Na uitloggen wordt het OS weer naar de startsituatie gebracht. Het USB filter vertelt precies welke devices aan de USB gehangen mogen worden. Er is ook een Dialog en Notification filter. Tijdelijk of geheel blokkeren wordt zo heel eenvoudig. En met het Input filter kan bepaalde input of gestures uitgezet worden. Ook werden nog Applocker en Shell launcher genoemd.

Bestaande applicaties geschreven voor Windows 7 en hoger blijven werken op Windows 10. Niks raars daar. Windows Iot, Windows desktop en mobile delen hetzelfde app development mode, dezelfde Universal API.

Windows 10 krijgt ook automatisch ondersteuning voor printers voor bonnetjes, payment terminals en kassasystemen. En blijkbaar dus ook voor de mobiele versie. Ook zal Bluetooth LE, low power wifi en Zigbee ondersteund worden.

Deze sessie was een high-level presentatie over de volle breedte van Windows 10. De nadruk lag vooral op Retail als voorbeeld voor de verschillende toepassingen van devices in een zelfde omgeving. En welke data daaruit voortkomt.

 

Tweede sessie: DEV-312 Building Customer Facing Mobile Apps with Microsoft Azure.

Deze sessie van Yavor Georgiev draait vooral om Azure Mobile Services (AMS). Dit is een laagdrempelige oplossing in Azure voor het beschikbaar stellen van database toegang, authenticatie, push notficatie, scheduler en sourcecontrol met TFS.

WIN_20141029_110514

AMS komt in twee smaken (programming model): javascript gebaseerd op node.js en een C# project gebaseerd op Web API.

Voor datatoegang wordt de tablecontroller dis databeschikbaar stelt via het REST protocol. Maar je kunt zelf een datastorage injecteren via de database manager (mongoDB, tablestorage, ms sql of BYOD(atabase)).

En er is offline sync ivm. SQLite. Het maakt niet uit welke backend je gebruikt. Er wordt gebruik gemaakt van optimistic concurrency.

De database demo begint in Azure met het aanmaken van een service. En daarna krijg je een first-start experience. Er komt uitleg hoe je met oa. IOS, Xamarin en Windows clients verder kunt gaan.

Het is voldoende om met de free version te beginnen. Er is ook een basic en een standaard editie. Het aantal calls dat je mag maken, maakt het verschil.

Daarna werd het .net code project gedownload. Dit is de backend (oa. De controllers) en universal apps die connectie maken met deze backend.

De backend kan ook lokaal draaien en is zo te debuggen. Het is prettig dat er ook een documentatie pagina is om te ervaren wat de AMS aan API aanlevert. Standaard is er een ToDo tabel beschikbaar. En er is dus ook Todo (table) Controller.

Daarna werd de off-line client mogelijkheden gedemonstreerd. De code was een beetje aangepast… Hiervoor moet een pull uitgevoerd worden. Want standaard wordt een lokale database gebruikt en die is nog leeg.

Lokaal moeten we de data nu opslaan in de MobileSyncTable. En bij initialisatie moeten we een PULL uitvoeren. En wijzigingen moeten met een PUSH uitgevoerd worden. Bij een conflict tussen lokaal gewijzigde data en server data kan je zelf gaan kiezen/programmeren of je een override uitvoert. Er wordt namelijk een versie bijgehouden worden.

Dan authenticatie. Eerst werd Oauth via google, facebook, twitter, microsoft en AAD herhaald. Eigenlijk moet je eerst bij de gewenste providers de geheime sleutels ophalen en invullen in de portaal van de AMS website. Vervolgens moet je op de cliënt de keuze voor authentiseren coderen (achter verschillende knoppen indien meerdere) en de klant mag gaan inloggen, buiten onze macht om. Bij succesvol inloggen krijgen we gewoon een voor deze gebruiker unieke token terug.

Via de owin provider krijgen we ook netjes de claims door. Ga dit dus niet zelf uitprogrammeren (de slides en demo code komt beschikbaar).

Daarmee kan ik op de tablecontroller de beveiliging opvoeren tot alleen ingelogde gebruikers. Het kan ook op de methodes op de tablecontroller en die schijn nog meer bescherming te kunnen geven (welke gebruiker mag wat…).

Je kunt gewoon login aanvragen en inloggen werkt prima. Maar als je een single sign on gemak wilt hebben moet je iets mee doen want je moet het token onthouden. Hier werd eerst in facebook ingelogd. En het token daarvan konden we hergebruiken zodat de gebruiker niet steeds dat inlogscherm krijgen. Overigens komt dat scherm dan gewoon uit de facebook app.

Voor Pushnotificatie moet je voor de gewenste hubs (WNS, APNS of GCM) de registratie bij AMS configureren. Een pushmelding zal dan gewoon aankomen bij de devices gekoppeld aan deze hubs.

Een Nederlands bedrijf Sleevemusic gebruikt AMS en heeft vele duizenden gebruikers.

Daarna werd monitoring met NewRelic gedaan. Installeer daarvoor de Nuget package in AMS. En er is een Azure store NewRelic oplossing (voor gratis). En in de clients moet ook de newrelic nuget package toegevoegd worden met een enkele regel initialisatie code. Daarmee krijg ik een soort van Google analytics van de clients J En de duurste (in tijd gemeten) acties worden ook uitgelicht waarbij het verschil in code en in Sql wordt uitgelicht.

De roadmap voor het komende kwam ook aan bod. Op korte termijn komt SSO beschikbaar en er komt nieuwe VS2013 integratie. De offline code hierboven was een preview en komt binnenkort beschikbaar.

DEV-B320 DEV-B350 zijn andere gerelateerde items. Ik ga zeker ook naar die sessies!

 

DEV-B217 Go mobile with C#, Visual Studio and Xamarin.

Xamarin is geen product van Microsoft maar leunt enorm op VisualStudio, of beter C#. Met Xamarin krijg je de Write once-Run Everywhere aanpak. Want Xamarin levert native apps voor IOS en Android, met native API gebruik en native snelheid (met dezelfde optimalisatie als de eigen apps van dat platform) en allemaal geschreven in C#. En dat is mooi want C# draait op 2,6 miljard apparaten.

En waarom lukt dat? Omdat ze het MVVM model hebben geïmplementeerd.

WIN_20141029_120801

MVVM is just like MVC but with more M’s and less C’s

Dus je schijft de code voor model en controller en viewmodellen. En de views kunnen native opgelost worden of met het nieuwe Xamarin Forms (met XAML beschreven). Maar let op: Forms in nog echt een 1.0 versie, geen autocomplete etc.

Eerst werd een native view gebouwd voor Android (zoiets heet een target en bevat views en resources). Dit was voor mij even schrikken, ik zag geen echte binding. Een button op de view had nog steeds een click event en daarbinnen werd het viewmodel aangeroepen en weer data uit het viewmodel in controls geschreven. Ik zag geen echte MVVM binding logica. De opmaak van de view zat in een axml (Android XML).

Xamarin heeft overigens eigen Android emulators gebaseerd op Hyper-V. Deze zijn een stuk sneller dan de emulators van Google zelf!

Met IOS werd de ervaring al een stukje beter: een ItemSource op een barchart! Maar ook hier is er nog geen echte binding…

Maar, de code sharing van de business logica in de viewmodellen in de Portable class libraries (PCL) werkte gewoon! En in de PLC kunnen we gewoon conditioneel Android en IOS code plaatsen via compiler directives.

Leuk: als je de demo app met de T-Shirt shop aan de praat krijgt met jouw eigen account, dan krijg je gratis een T-Shirt thuisgestuurd.

En met Xamarin Forms wordt het dus mogelijk om de schermlogica te gaan delen met codebehind of XAML (40+ controls: content, masterdetail, navigation, grid, stack, scrollview, frame, etc.). En dit heeft dus 2-weg data binding. En er is standaard navigatie en animatie aanwezig. Er zit ook een messaging service in.

Deze sessie was een aardige introductie voor iedereen die meer over Xamarin wilt weten. Maar ik raadt zeker aan om daarna de PluralSight video’s over Xamarin te gaan bekijken.

 

DEV-B219 Latest Innovations for Asp.Net MVC

Deze sessie van Brian Noyes geeft een opsomming van de verschillende innovaties in Asp.Net MVC.

WIN_20141029_152148

De sessie is een samenvatting met oa. de volgende onderwerpen:

  • One asp.net
  • Browserlink
  • Bootstrap
  • Attribute routing
  • Owin/Katana
  • Asp.Net Identity
  • SignalR

Deze sessie was eigenlijk gewoon een herhaling van beschikbare technieken. Er zijn betere bronnen op het web dan wat ik er over kan extraheren uit deze sessie 😦

 

Teched 2014 Barcelona, de dinsdag

Keynote Teched 2014

Iedere Microsoft conferentie, dus ook deze Teched start met een keynote. Deze keer zijn de belangrijkste sprekers Jason Zander en Joe Belfiore.

DSC04282

Jason Zander is de Corporate Vice President van het Microsoft Azure Team voor de Cloud & Enterprise groep @jlzander. Joe Belfiore is werkzaam als Corporate Vice President van de PC, Tablet en Phone tak.

We hopen dus op veel onthullingen. Jason trapt af.

WIN_20141028_081616

In 2008 waren er al 7 miljard connected devices. Meer dan de wereldpopulatie dus. En momenteel is het een veelvoud hiervan. En de data groeit ook explosief door de combinatie van users, devices, apps en data. De cloud maakt dit mogelijk: mobile first + cloud first.

En ook voor bedrijven verandert er heel veel. Een product als Cortana, een digitale assistent, beidt opeens productiviteit door de achterliggende, onzichtbare, intelligentie.

Microsoft heeft hier een platform visie voor. Een product als Office365 maakt cloudintegratie mogelijk, ook voor de Enterprise. Het is veilig en ‘compliant’.

DSC04276

Joe pakte daarna de presentatie over met Windows 10 en de Enterprise ondersteuning daarin. Denk aan betere beveiliging en verdere integratie met je eigen devices. Windows 10 moet kunnen draaien op alle soorten devices gaan draaien: pc’s, xbox, phones, tables, en enorme schermen voor presentaties. Dit bouwt verder op Windows 8.1 en Windows Phone 8.1 die ook al veel delen.

Gebruikers ervaren Windows 8 nogal wisselend. Daarom is Microsoft terug naar de basis gegaan. Dus Windows 7 gebruikers zonder touchscreen gaan een betere ervaring krijgen door de terugkomst van het startmenu. Maar deze heeft nog meer waarde gekregen door de integratie met de live tiles. De gebruikers kunnen dis zelf volledige aanpassen en toevoegen. Ook store apps gaan zich voor hen ook gedragen als gewone apps. Dus wel het gemak van de sand-boxed lichtgewicht apps maar toch in de bekende vorm van wat men gewend is.

En dan de grootste innovatie van Windows 10 J De dosbox krijgt control-c control-v ondersteuning. En ook tekst copy uit de box wordt gewoon copy paste!

Wat erg mooi is dat we nu eenvoudig vier apps kunnen verdelen over het scherm. En ook kan de gebruiker meerdere schermen naast elkaar aanmaken: 1 voor privé, 1 voor het werk, 1 voor spelletjes, etc.

Als je echt multi-monitor werkt dan werkt de snap-mode ook over meerdere schermen. Iets halverwege (rechts bij de linker monitor of omgekeerd) snappen werkt straks ook.

De echte verbeteringen voor consumenten komen in het volgende voorjaar als de consumenten preview van Windows10 beschikbaar komt.

Windows 10 komt ook met een betere beveiligingen: Zo kan ingesteld worden dat alleen gesign-de code uitgevoerd wordt op een machine. En corporate data kan beveiligd worden. Zo werd getoond dat bedrijfsdata niet in twitter kon worden gekopieerd. Bedrijven kunnen namelijk aangeven welke apps wel of niet met beveiligde data mogen omgaan en mogen uitwisselen. Er is ook een mogelijkheid om het alleen toe te staan als de gebruiker een reden opgeeft voor in de audit log.

En er werd ook twee-factor beveiliging getoond bij het inloggen op een PC. De gebruiker kreeg een melding op zijn telefoon, die dus in de buurt moet zijn, om de daadwerkelijke pincode in te voeren.

De app store gaat ook volume-licensing ondersteunen. Het wordt dus enorm eenvoudig om een eigen bedrijfsstore te starten.

Ook werd getoond hoe eenvoudig het wordt om zo maar eigen hardware van medewerkers binnen het bedrijfsnetwerk toe te passen, inclusief alle gewenste policies.

Jason ging verder met zijn presentatie over de nieuwe Cloud mogelijkheden. Denk hierbij aan integratie met je eigen cloud en de integratie met service providers in Azure. Dit valt uiteen in hybride, enterprise grade en hyperscale.

Er komen nieuwe versies van Windows Server en Microsoft System Center met Storage Qos, network controller, gesynchroniseerde storage replicatie en mixed mode clusters.

En Microsoft komt met Azure Operational Insights. Erg interessant om je verbruik goed te meten en te stroomlijnen. En er zit ook Change tracking in. Je weet dus gewoon wat er allemaal gebruikt. En het is ook eenvoudig om bv. Te kijken welke machines nog niet de laatste security updates hebben. Het is eenvoudig te meten door een agent op de servers te zetten. Ook werd getoond dat het vollopen van VM’s eenvoudig opgemerkt kan worden. Erg prachtig dus.

Jeff Woolsey gaat dit demonstreren. Zo komt er dus Storage Replicatie. Hij demonstreerde dat ‘nodes’ op meerdere plaatsen in Amerika volledige gelijk bleef bij problemen. Dit heet Synchronious Replication.

Maar Azure komt ook naar eigen datacenters. Er komt een Azure pack voor verdere integratie van eigen bronnen (machines, disks, databases). In de Azure portaal komt dan ook het beheer van eigen machines beschikbaar. De uitrol van een VM kon ook vanuit de portaal, dus eigen hardware versmelt met Azure.

Er komt ook een Cloud Platform System. Dit wordt Azure in a box. Je eigen azure cloud implementeren heeft Microsoft dan al gedaan  dus je bent zo aan de slag.

Op dit moment draait Azure op 19 regio’s en heeft 2 maal zoveel regio’s als de grootste concurrent. Australië is er net bijgekomen. Jason noemde nog een aantal enorme getallen over hoeveel opgeslagen wordt in Azure en de nieuwste machines werden genoemd. Ook werd er nieuwe opslag genoemd, nog sneller, die was gewoon 8 tot 100 maal sneller (61000 I/O acties per seconde).

Ook werd Azure Batch genoemd. Erg interessant want je kunt jobs definiëren en door Azure laten schedulen en laten opschalen indien nodig. Dit maakt het schedulen van meerdere taken nu enorm eenvoudig en je betaalt alleen voor het uitvoeren. Het Scheelt dus dat je geen Azure website met Webjobs of een eigen Worker role hoeft te schrijven. Er werd een integratie getoond met een renderapplicatie. Er gaaf om te zien hoe vanuit een consumenten applicatie op de achtergrond Azure werd toegepast om brute-force een renderplaatje door te rekenen.

Er is nu ook een docker client voor windows getoond. Nu ok je Linux docker containers te onderhouden, in de toekomst komen er ook op windows gebaseerde docker hosts.

Microsoft wilt zich afzetten tegen de enige twee concurrenten op Cloud gebied (dus tov. Google en Amazon).

Voor Enterprise gebruik is er ook ExpressRoute voor een hybride oplossing van je eigen datacenter en Azure. Met een SLA van 99.9%. De concurrentie kan dit gewoon niet leveren.

En Azure heeft een nieuwe Azure Marketplace met tientallen partners. We kunnen hier ook eigen apps op gaan verkopen?

Microsoft is erg geinteresseerd in het ondersteunen van mobiele devices in een enterprise omgeving. Denk daarbij ook aan identificatie op Android, IOS en Windows. En daarnaast is er ook Office365 met MDM support. Julia White gaf de demo’s.

Zij toonde hoe een Azure Active Directory gekoppeld werd aan de eigen Active directory. Dit geeft beheer en single sign on! Ook beheerde ze policies voor Office for Ipad apps (bv. Data kan alleen tussen beheerde apps, ook voor copy/paste). Dat gebeurde met Intune en leek enorm op wat voor Windows 10 werd aangekondigd. En dit komt al over enkele maanden beschikbaar!

En er komt ook een Office386 SDK voor Ipad beschikbaar.

En had ik al verteld dat Onedrive ongelimiteerde opslag krijgt voor Office 365 gebruikers? Geldt dit ook MSDN gebruikers want daar zit toch ook een Office365 account in?

Dit was de keynote. Ik had wat meer verwacht wat betreft aankondigingen maar in het algemeen was het toch wel indrukwekkend.

WP_20141028_004

Tweede sessie: FDN05 The Modern Development Platform: Create applications that span mobile and cloud

Het was een introductie blok van sessies en deze sloot het meeste aan bij mijn huidige werkzaamheden.

Er zijn nieuwe eisen aan het ontwikkelen van moderne applicaties.

Ten eerste gebruiken we standaarden die voortdurend wijzigen. Denk aan HTML. En we moeten het op alle moderne browsers kunnen tonen. De applicaties moeten ook enorm interactief zijn, dit moet allemaal getest worden. Visual studio helpt ons daarbij voor web applicaties.

Zo kunnen we direct gaan debuggen met meerdere typen browsers naast elkaar en we kunnen zelfs visuele componenten in de browser aanpassen die direct in de code bijwerkt worden. Erg fraai. Dit werkt zonder plugins. Het is een in-proces truc van VS2013. Ook is deployment vanuit Visual Studio heel eenvoudig.

Voor windows kun je nu kiezen voor Universal Windows Apps welke op telefoons, de xbox en in windows draaien. Maar je kunt de app ook voor .Net Native laten genereren (via een popupmenu op het project).

Er is ook de wens voor cross-platform ontwikkeling. Dit kan via webtechnieken maar dit wordt lastig als er echt native apps gevraagd worden. Microsoft biedt hier Xamarin voor aan door hun samenwerkingsverband met die partij.

We krijgen dan de beschikking over native applicaties waarvan de MVVM code in C# geschreven is. DE views worden wel per OS apart uitgewerkt. Hoewel, met Xamarin Forms zou ook dat uniform kunnen worden. Xamarin heeft hiervoor een integratie met VS2013 beschikbaar (naast hun eigen IDE) en specifieke OS-afhankelijke code kan via plugins abstract gemaakt worden. DEV-B217 DEV-B321

Ook Apache Cordova is getoond. Dit biedt hybride HTML apps voor toestellen. Dit lijkt me zoiets als PhoneGap met een browseromgeving die via javascript/typescript met het OS kan praten (in beperktere mate dan een native ervaring).

Wat we ook zien is dat Office overal beschikbaar komt. Alleen al de iPad versie van Outlook werd direct 1,5 miljoen keer gedownload. En we zien dit ook met de Office365 oplossingen (denk aan gebruikers, bestanden, mail, kalenders en contacten). Office365 biedt een omgeving waarin apps te laden zijn die gezamenlijk SSO ondersteunen. Wij als ontwikkelaars kunnen hier ook onze eigen apps in laten plaatsen. De apps krijgen dan toegang tot de kalender van de gebruiker en de contacten/collega’s. De SDK komt ook beschikbaar voor Android. Open source uiteraard. DEV-B207

Wat erg gaaf was dat er ook een API sandbox in de browser is om met Javascript de API te leren gebruiken. Een conversie naar je eigen code is dan nog een kleine stap.

Sharepoint is natuurlijk al langer beschikbaar voor enterprise users. Ook daar werd een korte demo over gegeven.

Als laatste kwam ook Asp.Net vNext aan bod. Dit beschouw ik als een compleet nieuwe versie van asp.net hoewel er op zich niet zo veel verandert…. Maar onder water is het volledig modulair gemaakt. De grootste uitdaging was namelijk ok dit ook voor Linux beschikbaar te maken. DEV-B334

De sessie was heel high-level maar gaf een aardige indruk van de huidige reikwijdte aan tools voor dit soort applicaties.

Derde sessie: DEV-B218 Introduction to API management on microsoft Azure

Deze sessie draait om het aanbieden van API’s. Deze ontsluiten de logica van jouw systeem. En het zou prachtig zijn als je het gebruik van de API ook kunt meten. Wat wordt veel gebruikt?

DSC04284

Maar het is ook interessant op eventueel geld te verdienen aan jouw API. Kies daarbij tussen publiek of privaat aanbieden. Hoe wel je ‘merk’ in de gaten.

Wat heb je nodig voor een Api? Het begint met een end-point op het intranet of internet. En je moet een protocol kiezen zoals Rest en json. Biedt jouw API’s uniform aan. Beveilig je core-bussiness. En je hebt een dashboard nodig.

Azure biedt nu API beheer aan. Het heeft een portaal en de mogelijkheid om een API als proxy rond bepaalde logica aan te bieden.

Demotijd.

Op de portaal werd een api aangemaakt met een URL wat aangeroepen gaat worden door ‘gebruikers’. De url valt uiteen in een domeinnaam en een host naam voor die ene api. Iedere andere api krijgt dus een andere host naam. Dit gaat wellicht nog veranderen in de toekomst.

Op de api worden dan operaties aanmaakt. Hier werd een REST api getoond met een GET (maar het hele rijtje, POST, DELETE, etc. was mogelijk). En er werden ook query parameters ingegeven.

Daarna werd de API aan een product toegevoegd. Products beschrijven de toegang tot de api. Wie mag erbij? Het is mogelijk om een mail te krijgen als iemand jouw product wilt consumeren. Er is ook een visibility aan gekoppeld.

En daarna was het een kwestie van publiceren. Hiermee komt er een developers portal beschikbaar voor de api. Deze geeft inzicht in het gebruik van de API en de producten. Het is tijdens het aanmaken van de API ook mogelijk om beschrijvingen (zoals voorbeelden) in te geven.

Heb ik dan direct toegang? Nee, aan een API komt ook een policy te hangen. Dit is nu nog een stukje XML maar wellicht wordt dit nog eens grafisch weergegeven. Hiermee kunnen de restricties beheerd worden. Dit zag er wel technisch uit.

Op de api kan ook caching toegepast worden. Ook dit is op de portaal in te geven.

En het was heel gaaf om de proxy aangepast te zien worden om van een gewone aanroep een meer restful aanroep te maken.

Daarna werden nog wat API’s geïmporteerd. Op 1 van de api’s werd een SUMO (Azure mobile services) header geplaats waardoor het zich zo ging gedragen.

WIN_20141028_140939

Eventueel kan ook echt autorisatie op de API gezet worden. Hier werd oauth 2.0 op een API geplaats. Hier werd one-note informatie gevraagd uit een bepaald account.

Om ook XML aan te kunnen bieden moet de policy nogmaals aangepast worden. Meer is er niet nodig, geen backend wijzigingen of zo…

Ook kan de sessie throttling ondersteunen. Druk maar eens een paar keer op de submit knop bij de test van de API.

Dit brengt ons ook bij de Analytics. Te zien was waar in de wereld aanvragen vandaan kwamen. Ook de throttling werd zichtbaar. En de API response time was te zien in grafieken.

De capaciteit is dat er rusting 1000 calls per minuut afgehandeld kunnen worden. Een burst gaat tot 2800 calls per minuut.

De toekomst? Het is een agile project. Als er vragen of wensen zijn dan kunnen die meegenomen worden.

Het afrekenmodel loopt via Azure. Daar zijn meer details te leven over deze service.

Gerelateerde sessies zijn oa. DEV-B410 over web-API.

Vierde sessie:DEV-B330 DEveloping Enterprise web applications on microsoft azure websites

Tijdens deze sessie wordt een demo gepresenteerd voor een enterprise app van 500 MB die op azure draait. De demo begint inloggen via oauth want op de achtergrond met Azure AAD gekoppeld aan deze site.

WIN_20141028_154626

Daarna kwam even een bruggetje om Visual Studio Online met continuous build en deployment te demonstreren. Deze rolt overigens alleen de DEV variant uit, het is niet de productie die vervangen wordt. Ok, staging werkt dus ook nog steeds 🙂

DSC04290

Maar nu werd een nieuwe manier toegepast wat betreft naar productie gaan. De site werd meerdere keren in productie gezet, dit heten slots. Maar je kunt de load varieren over de beschikbare slots. Dat kan 50-50 procent zijn maar het kan ook 10-90 of 0-100 of 100-0 zijn. Hiermee kun je in productie testen. Overigens is het mogelijk om via extra parameters deze routing te voorkomen en specifiek een bepaalde slot kiezen. Dit kan dus maximaal over 5 slots verdeelde worden.

En iedere slot kan ook met verschillende web hosting plans uitgerold worden. Productie draait dan op snelle servers en testers zitten op goedkopere/eenvoudiger vm’s.

Met de nieuwe portaal wordt het dus mogelijk om achteraf, na deployment, alsnog andere processoren te kiezen. Dit kon voorheen niet want die keuze was al in VS201x gemaakt.

Ook scaling werd getoond. Er zijn verschillende regels voor aan te maken. Geen verdere details gezien.

Er werd ook nog eens getoond dat we na productie extra monitoring kunnen toevoegen en dat we daar ook alerts over kunnen krijgen. Erg mooi.

Uit performance overwegingen werd ook een CDN toegevoegd. Via de network trace in IE werd gezien dat bepaalde resources van ver moesten komen. En deze resources werden in de CDN gezet.

Ook is een virtual network aangemaakt. Dit maakt het mogelijk om het adres van de database in de connectionstring om te zetten naar een 10.0.0.x adres. Dit voorkomt dat hackers jouw DB kunnen aanvallen als ze de site weten over te nemen.

Er werden webjobs gebouwd, kleine taken die via een scheduler getriggewrd worden: een ene is gebaseerd op C#, de andere doet precies hetzelfde maar is gebaseerd op Javascript. Eventuele configuratie wordt buiten de javascript gehouden via configureerbare key-value pairs, te onderhouden in portaal. En er werd een mailtje verstuurd vie SendGrid. SendGrid is een externe partij voor het mailen van mailtjes. De billing gaat via de Azure webportaal 🙂

De demo was wat fragmentarisch maar het was een mooi kijkje in een ‘echte’ website. Een deep dive die hier op voortborduurt, isDEV-B329

Laatste sessie: DEV-B410 ASP.NET API: Beyond the basics van Ido Flatow

We krijgen bij deze sessie een stuk over HTTP, de pipeline, caching, security, etc.

DSC04293

Er bestaat zoiets als de Web API pipeline. Hoe weet de pipeline nu welke controller aangeroepen moet worden? En hier kun je zelf tussen gaan zitten.

Er is een host die een call krijgt en de geeft de aanroep door aan message handlers. Die geeft de opdracht aan controllers en een model binding zoekt de juiste action. Het antwoord van de action gaat via een result conversion terug naar de controller klasse.

En ieder van deze onderdelen kan je met een eigen implementatie injecteren.

DSC04292

Iets specifieker, de http request message moet naar de routing dispatcher, dit gebeurt via de message handlers. En die geeft de opdracht door aan de controller dispatcher

Van controller naar action gaat het bericht eerst via de authenticatie filters. Daarna zijn de autorisatie filters aan de beurt. Vervolgens komen we langs de model bindings, de action filers, de action invoker en uiteindelijk bij de action method.

Overigens mag alleen de action method een response of een exception afgeven. Voorbeeld: de authenticatie filtert geeft GEEN response terug! (dit was voorheen wel mogelijk via de modules).

Over foutafhandeling, geef bij voorkeur altijd een 4xx foutmelding af. En gebruik exception filters ipv. Een try-catch op het hoogste niveau in je code. En er is een IExceptionLogger, kijk daar eens naar.

Demo.

Er is een delegatinghandler toegevoegd. En in de response werd een extra regel in de header toegevoegd. In dit geval de duur in milliseconden van de uitvoer. Handig!

Ook werden andere handlers ingeladen voor oa. Log4net (exceptionlogger, daar kan er meerdere van) en het verwerken van errors (exceptionhandlers daar is er maar één van).

Ook werd een ValidationFilter toegevoegd. Die kan als attribuut boven een action gezet worden en valideert de input.

Daarna werd caching doorgenomen. Maak gebruik van caching, waar mogelijk. Caching wordt via headers geregeld. (no-cache, no-store, max-age, private). En je kunt ook expiratie regelen (standaard is deze -1 dus expired. De standaard waarde). Een browser stuurt nooit een opdracht naar de server als deze gecached is en nog niet expired is. Met control-f5 wordt geforceerd om alsnog alles op te halen.

WebApi reageert niet op dfe CacheControlHeaderValue(). Zet de header waarden in een actionfilter (bij de response afhandeling natuurlijk).

Daarna werd eTags aan bod. Deze wordt steeds opnieuw meegestuurd. Krijg je een tweede aanroep met deze resource versie, geef dan een 304 (unmodified) Dit voorkomt extra werk op de server en de client vindt het best en de aanvraag is afgehandeld.

Demo

Er is een delegatinghandler toegevoegd. En in de response werd een extra regel in de header toegevoegd. In dit geval de duur in milliseconden van de uitvoer.

Handig!

Ook werden andere handlers ingeladen voor oa. Log4net (exceptionlogger, daar kan er meerdere van) en het verwerken van errors (exceptionhandlers daar is er maar één van).

Ook werd een ValidationFilter toegevoegd. Die kan als attribuut boven een action gezet worden en valideert de input.

Daarna werd caching doorgenomen. Maak gebruik van caching, waar mogelijk. Caching wordt via headers geregeld. (no-cache, no-store, max-age, private). En je kunt ook expiratie regelen (standaard is deze -1 dus expired. De standaard waarde). Een browser stuurt nooit een opdracht naar de server als deze gecached is en nog niet expired is. Met control-f5 wordt geforceerd om alsnog alles op te halen.

WebApi reageert niet op dfe CacheControlHeaderValue(). Zet de header waarden in een actionfilter (bij de response afhandeling natuurlijk).

Daarna werd eTags aan bod. Deze wordt steeds opnieuw meegestuurd. Krijg je een tweede aanroep met deze resource versie, geef dan een 304 (unmodified) Dit voorkomt extra werk op de server en de client vindt het best en de aanvraag is afgehandeld.

Vervolgend kwam nog streaming voorbij. Dit heet bij http “chunked transfer”. Dit kan ook bij Web API. Kijk naar de http request action “Transfer-Encoding: chunked”. De chuncks worden als length+inhoud verstuurd.

Gebruik hiervoor ReadAsMultipartAsync en PushStreamContent.

Dit was een interessante sessie en zeker het onderwerp is zeker de moeite waard om nog eens in te duiken. De spreker was trouwens ook lekker op dreef.

DSC04286

En hiermee is een einde gekomen aan de eerste dag van de TechEd. En de Surface 2 RT? Ik heb nog 6 procent batterij over. De wifi was deze dag zeer onbetrouwbaar. Ik heb flink geprobeerd om foto’s up te loaden en ik denk dat dat ook wel wat gekost heeft. En morgen zet ik de backlight van het excelente toetsenbord eens uit.

Disclaimer: Deze tekst is tijdens de sessies op een tablet op schoot ingetypt en zal, ondanks een vluchtige controle in de late uurtjes, zeker nog typo’s bevatten…

TechEd Europe 2014 in Barcelona

TechEd Europe 2014
#TEE14

Ja, vanaf 27 oktober is het weer zo ver: vijf dagen TechEd Europe. En ik ben er bij.

Tijdens deze TechEd zal hier dagelijks een semi-live blog verschijnen. Ik verwacht dat de Wifi connectie net zo goed, of slecht, als andere jaren zal zijn dus het uploaden zal voornamelijk ‘savonds in Hotel Jazz plaatsvinden.

Mocht er zo nu en dan toch internetverbinding zijn, dan zal ik ook hightlights plaatsen op twitter: @svelde met als hashtag #tee14

Tijdens deze TechEd werk ik met een Surface 2 RT. Eens kijken of dit de ideale reisgezel is voor de live-blogger. En natuurlijk heb ik ook mijn  Lumia 820 bij me. Omdat ik verwacht dat ik niet volledig op de batterij kan vertrouwen heb ik ook nog een Lumsing powerbank ingepakt.

Mocht je zelf ook gaan en mij willen ontmoeten? Laat even een berichtje achter of via twitter @svelde

C U @ Barcelona!

Teched Europe alumni
Returning again

Lowlands Windows Phone Developer Day 2014

Lowlands Windows Phone Developer Day
 
“Op zaterdag 18 oktober komen we met z’n allen (Belgen en Nederlanders!) bij elkaar in Tilburg om een hele dag te luisteren naar experts op dit gebied, om kennis te maken met andere Windows Phone enthousiastelingen en uiteraard om zelf te hacken!”
 
Ik ben aanwezig geweest bij de Lowlands Windows Phone Developer Day! Dit het tweede event want vorig jaar is dit begonnen met Windows Phone week. En tussendoor is er nog de battle geweest, een soort van hacketon met een Nederlands en een Belgisch team. Daarom is het nu ook in Tilburg georganiseerd. Prettig, een dagje in de buurt.
 
Na de opening door Dennis Vroegop zijn er twee parallel tracks gestart. Ik heb samen met collega Alex Faessen en Frankwin Faber een aantal sessies gevolgd.
 
DISCLAIMER: Dit werd live ingetypt. Typo’s en misinterpretatie van de spreker ligt op de loer…
 
Joost van Schaik – Geofencing
Geofencing is de mogelijkheid om je app acties te laten ondernemen op het moment dat je telefoon of tablet in de buurt van bepaalde locaties komt – of deze juist weer verlaat. Deze sessie laat je zien hoe je dit moet doen – in zowel in de voorgrond in een actieve app, als wel als in een achtergrond taak, zonder dat je steeds de locatie hoeft te pollen. Gebruik makend van universal apps kom je te weten hoe je deze techniek zowel in Windows Phone als Windows kunt toepassen, alsmede hoe je met handig gebruik van de emulator c.q. simulator zaken kunt testen.
 
Joost van Schaik aka LocalJoost zit in de GEO business.
 
Geofencing is rond een fysiek punt op de aarde een virtuele grens leggen. Er gebeurt iets als je over die grens stapt. En het wordt echt interessant als dit controleren continue, op de achtergrond, plaatsvindt.
 
Het zat al een tijdje in de Windows 8.X maar er zijn weinig devices met zo’n GPS dongle ingebouwd. Maar de logica kan als PCL geschreven worden en is daarmee ook voor Windows Phone beschikbaar.
 
Het kan zowel op de voorgrond als op de achtergrond toegepast worden, maak een keuze welke versie je gebruikt. De event mogen niet dubbel doorkomen, dit kost resources (batterij) en kan de logica/werking van je app verstoren .
 
Demo tijd met een Windows Phone simulator…
 
Joost demonstreerde een universal app want dan draait het op alle apparaten. Hij had ook een aantal hulpbibliotheken toegevoegd, waaronder één voor cirkels op het scherm (geopoint+radius=lijst van geopoints om een cirkel op de kaart te tekenen). We kunnen namelijk geen cirkels op de kaart tekenen.
 
Overigens gebruikt Joost voornamelijk Geopoint want die zijn interessanter dan BasicGeoPosition, een andere klasse waar we code mee schrijven.
 
Er is ook een GeoFence object. Die wordt toegepast door de GeoFenceMonitor. Hier kun je fences aan toevoegen: voor eenmalig gebruik en of je zowel bij binnenkomst of bij vertrek een signaal wilt krijgen. Een fence is dus een cirkel op de kaart. MSFT kent momenteel nog geen andere vormen. Of dit uitgebreid wordt met bv. Vierkanten, rechthoeken of polygonen is onbekend. Joost kon hier geen uitspraak over doen.
 
Ook is er de dwellingtime. Je wilt er zeker van zijn dat iemand echt een fence ingaat of verlaat. Normaal is die 10 seconden en dat is onhandig bij kleine fences en een hoge snelheid. Pas dit dus aan.
 
Overigens kreeg Joost het signaal van binnenkomst niet goed door. Waar zit de bug?
 
De GeoFenceMonitor geeft events af. In dit event moet je de rapporten van de monitor aflopen en actie ondernemen.
 
Demo met Windows 8…
 
De demo met de Windows 8 simulator was wat lastig. Je kunt steeds maar 1 coördinaat invoeren. En Joost gebruikte toasts, iets wat de simulator niet aankan. Joost lost dit op met een Debug.WriteLn. lol
 
En hij gebruikte bing maps. Vraag daar een key voor aan. De app verliest hiermee overigens de ‘any cpu’ compiler output. Zet ook even de capabilities aan (geo stuff en toasts).
 
Met bing maps krijgen we ook kaart layers tot de beschikking en polygonen!
 
Dit was tot nu toe allemaal code die op de voorgrond draait.
 
Om dit op de achtergrond te gebruiken, gebruiken we de location trigger. Helaas laat MSFT deze slechts iedere twee minuten afgaan om de batterij te sparen. Realtime meten moet dus in een draaiende app plaatsvinden.
 
Microsoft maakt de snelheid uit. Gebruik dit dus niet voor Mission critical.
 
Joost had de backgroundtask nog niet in een PCL gezet. Hij wist ook niet of dit zou kunnen. Wellicht wel…
 
Vergeet niet de background task voor locaties te declareren. En je moet ook de lockscreen badge toevoegen als je toast wilt draaien.
 
Demonstreren kan door de build op Local Machine te zetten, run de app dan zonder debugger. En start daarna de simulator. Want dan denkt de simulator dat er een background task is. Joost heeft er een sheet over 🙂
 
Het was dus een interessante presentatie. Ik wil dit wel gaan gebruiker. Ik kan hier erg leuke apps mee verzinnen.
 
Tijd voor koffie en daarna track 2.
 
Nico Vermeir – Background tasks in Universal Apps
 
Met de komst van Universal Apps werd ook het background processing verhaal op de schop genomen. Voornamelijk voor Windows Phone zijn er grote veranderingen.
 
In deze sessie doorloop ik een aantal scenario’s waarin een app een background task kan gebruiken, de verschillende vormen en soorten en hoe die geïmplementeerd worden.
 
@NicoVermeir geeft een presentatie over background tasks. Lol: het gaat op Windows 10 gepresenteerd worden.
 
Er zijn verschillende types.
 
Eerst moet je een Windows Runtime component project toevoegen. Daar moet de backgrond task in draaien. Waarom? Geen idee.
 
De task implementeert een interface IBackGroundTask. Deze heeft slecht één methode: Run. Registreer daarna de task.
 
Background tasks werken met triggers. Bv. Het benaderen of verlaten van een geofence. Deze task kan ook conditioneel uitgevoerd worden (in Big Windows). Denk aan draaien binnen lockscreen of connected zijn.
 
De gedemonstreerde types zijn: Push, Triggered en Geofencing.
 
Nico demonstreert eerst met een blanco shared project. Handig want dat is overzichtelijker voor de uit te voeren codeer stappen. (tip: stop geen xaml in je shared project)
 
– Voeg een portable project toe
– Implementeer de IBackgroundTask interface
– Nico voegt wat code toe om een teller op te hogen afhankelijk van het aantal keren wisselen van timezone door de background task. Dit is de System triggered background task
– Nico speelt met de ‘deferral’. Hiermee geeft de task aan dat hij nog even bezig is (denk aan langdurige acties). Kans op vroegtijdig afbreken door het OS neemt hiermee af.
– Pas je capabilities en declarations aan; wat mag de app?
– (er is ook een update task voor Windows Phone. Dit is heet handig voor als er updates klaar staan voor je app. Helaas heeft Nico dit overgeslagen)
– Voeg ook het entry point toe in het manifest. Let op: maar geen schrijffouten.
– Windows 8 moet ook lockscreen capable zijn. De naam van de badge logo wordt niet echt afgetest… En dam oenten we ook de Timer instellen in het manifest…
– Op de mainpage code behind moet de task ook geregistreerd worden. Doe dit in de Loaded event (awaitable backgrondexecutionmanager.RequestAccessAsync) De gebruiker krijgt op Big Windows dan een vraag of die background task wordt toegestaan.
– En we hebben een systeemtrigger en een entrypoint nodig (niet dubbelop: hier zeggen we wat we echt gaan executeren)
– Register op de taskbuilder
 
Debuggen kan met een breakpoint in de code. Nico demonstreerde dat met automagisch in de IDE na wat rebuilden dat de code aangeraakt wordt.
 
Daarna ging Nico door naar de Geofence background task. Hier was wat overlap met de demo van Joost.
 
Dit gaat met een LocationTrigger ipv. een systemtrigger. En daarna werd een Fence toegevoegd aan de geofence monitor toegevoegd. En hierna werd Location aan het manifest toegevoegd.
 
Ook Nico gaf net als Joost een toast af. Nico gaf aan dat de geofence demo niet echt lekker werkt op Windows 10. Ging het lukken? Niet direct 😦 We mochten gelukkig geloven dat het wel werkt 🙂
 
En vervolgens ging Nico demonstreren hoe we op notificaties konden reageren in een background task. Hiervoor is een extra task nodig met Pushnotification trigger. (vergeet niet de app al te registreren in de store en de code een associatie met de code app te geven. De app hoeft dus nog niet daadwerkelijk gepubliceerd te zijn.)
 
Helaas hadden we last van de demogoden voor de demo (of een irritante proxy?). Iedereen in het publiek kon pushnotificaties genereren via een azure cloud websitepagina. Ook hier mochte we geloven… De zaal zat blijkbaar blijkbaar vol met ‘beliebers’ 🙂
 
Overigens zijn er wat beperkingen aan de aantal keren dat de backgroundtask afgevuurd wordt. Het OS maakt het uit afhankelijk van hoeveelheid geheugen op het toestel, type background task, battery saver, etc.
 
Bij 8.1 kan het gedrag van de battery saver per app overruled worden.
 
Al met al was de presentatie erg interessant, helaas gingen een aantal demo’s minder vloeiend.
 
Lunch!
 
Fons Sonnemans – Twelve ways to make your apps suck less
 
In deze sessie leert Fons Sonnemans je aan de hand van 12 uiteenlopende onderwerpen je apps beter te maken. Hierin komen technische onderwerpen, design en marketing aan bod. Een sessie vol met do’s en dont’s voor je eigen apps.
 
Zo, de smakelijke lunch is verslonden. Op naar de volgende presentatie.
 
Fons heeft 1.8 miljoen downloads uit de Windows 8 store ondanks dat deze nog maar kort actief is. Dat uitgezet tegen 750.000 downloads na vier jaar en 25 apps in de Windows Phone store. Fons deelt met ons ervaring en tips. Hier een bloemlezing:
 
– Schrijf vanaf nu universal apps. Schrijf Windows 8 apps en breng het ook voor Windows Phone uit. Schrijf met Windows 10 in gedachte.
– Universal apps hebben ‘last’ van de fontsize uit de ease of access. Maar tekst past wellicht de knoppen . Pas dan opelementen de TextScaleFactorEnabled = False toe. Niet zo aardig maar wellicht wel handig. Gebruik met mate dus
– Ga naar Design.Windows.com . Lees dit eens door. Gebruik de guidelines. Design voordat je ontwikkelt. Wat is je visie? Waar blinkt je app in uit? Denk aan de unique selling point. Er is ook gallery met voorbeelden die er mooi uit ziet.
– De tegel van je app is het meest belangrijke 🙂 Het is je eye-catcher, je uithangbord. Pak de goede formaten en scale netjes. Op phone wordt het voor jou gescaled, handig. Gebruik een goede vector tool zoals Microsoft Expression Design (gratis van MSFT). Genereer vanuit dit programma slices met alle gewenste formaten en zelfs de transpartante tile. De tool maakt dan de bestandjes aan via de export.
– Creeer je eigen custom thema’s. Volg niet die van de gebruiker met zijn kleur. Want we willen een eigen identiteit. Dat is heel eenvoudig voor de eigen identiteit. Even doen is even weten. Gebruik ThemeManager van Dave Smits (is iets minder, moet beter) of hack de xaml files. Bij Windows Phone moet je enkele keren SystemColorControlAcetColor overrulen (want voor iedere thema wat je wilt overrulen). Bij Big Windows moet je veeeel meer doen. Of gebruik Hammer.Pants (Gedemonstreerd).
– Maak je app mobiel. Gebruik de juiste HttpClient, de Windows.Web.Http variant. Deze is veel beter dan de vorige variant.
– Zorg er voor dat je app ook bij een gebrekkig netwerk nog steeds werkt. Gebruik json, en alleen xml indien echt nodig. Test je internetconnectie type en pas je communicatie daar op aan.
– Gebruik datasense: zit je op internet? Zit je op wireless lan? Kost dat geld? Zit ip op 3g/4g? zijn daar geen kosten op? Of wel? En benaderen we of hebben we de kostenlimiet benaderen? (kijk hiervoor naar de WIN-B326 sessie van TechEd)
– Krijg veel en goede reviews. Smeek! Laat klachten gemaild worden? Laat je review dan bijwerken. Op Phone kan je ook een response geven op de review (geen idee hoe het werkt. Er werd geroepen dat het wellicht ook maar in een paar landen werkt).
– Gebruik JPG voor grote foto’s. Gebruik PNG voor perfecte kwaliteit. Schaal ook. Maar vectors werken altijd via de Path. Fons demonstreerde ook het gebruik van FontIcons Doe dit in Blend icm. Fontastic.me (gratis, even registreren).
– Grids en listviews moeten performen: Kijk naar het filmpje op vimeo van Kevin Dockx: Windows 8.1 apps. Given to Fly.
– Gebruik resource files voor verschillende talen. Met Engels alleen raak je maar 25 procent van je publiek in de wereld. Test via het schuiven in de language preferences op je ontwikkel PC. Of gebruik de vertaal tool van Microsoft. Die gebruikt Bing Translate
– Gebruik Blend
– Gebruik MVVM
– Windows apps worden niet meer op inhoud afgekeurd bij de keuring voor de store. Er wordt alleen achteraf ingegrepen bij klachten.
– Cache de eerste pagina! Kom steeds terug van een detail scherm op de plek waar je vertrok. Bij Phone werkt dit. Bij Windows niet: Gebruik de Cache mode regel ook in Windows. En de pagina cache size kan vergroot worden. Let op nevengedrag
 
Kortom, Fons heeft enkele zeer handige tips doorgegeven. Dankjewel. Volg zijn blog want enkele van deze tips zijn of worden daar in detail uitgelegd.
 
Diederik Krols – Cortona / speech integratie
 
In deze sessie toont Diederik Krols hoe je je Windows Phone 8.1 app kan opstarten en aansturen via de nieuwe Cortana services. Verder wordt dieper ingegaan op spraakherkenning (speech-to-text) en spraaksynthese (text-to-speech) in Windows Phone apps (zowel Silverlight als Universal).
 
In de pauze heb ik weer even een Surface 3 Pro vastgehouden. Wat een fantastische machine!
 
De laatste sessie voor vandaag is die van Diederik over Cortana en je app starten met Cortana.
 
Cortana levert spraakherkenning in Windows Phone en met Windows 10 ook op pc’s en tablets. Standaard wordt nu nog alleen Engels ondersteunen en zijn het vooral de standaard apps (alarms etc.) die het ondersteunen.  Je kunt ook afspraken maken en wat denk je van herinneringen? En Cortana doet aan geofencing.
 
Vraag maar eens “What can I say?” of “What can you do?”
 
Met de duurdere telefoons staat Cortana ook passief te luisteren op “Hey Cortana” zodat deze altijd staat te luisteren/wachten (op dat zinnetje).
 
Cortana werkt zowel in Windows Phone Silverlight als in Universal apps. Windows 8.1 lust het niet.
 
Diederik demonstreerde gelijk al dat hij zijn eigen app via Cortana kan opstarten. En binnen de app liet hij via de stem van Cortana een voorbeeld tekst voorlezen. Ook bleek er andere (mannelijke) stem te zijn.
 
Voor Cortana willen we dus:
 
– Maak voice command definities
– Registreer jouw vcd’s bij start van de app
– Reageer bij de app start op doorverwijzingen vanuit Cortana
 
Een VCD valt uiteen in CommandSets met een combinatie van commandprefix, commands etc. Dit al werkt zonder Wifi/data contract.
 
Het valt me op dat je bij de definities vooral in voorbeeld zinnen denkt en dat ik het bijbehorende gedrag moet opgeven. Dit is dus lekker fuzzy en minder ‘wiskundig’ met zinsopbouw.
 
De Phrase Topics zijn nieuw maar werken echt fuzzy, over het internet. Diederik heeft het niet gebruikt omdat het onduidelijk was of er vandaag Wifi zou zijn.
 
Tip: gebruik de taal van de commandset (= engels voor de grootste kans dat Cortana er goed mee om kan gaan)
 
De registratie is redelijk eenvoudig. De commandset moet aan Cortana bekend gemaakt worden. De code is lichtelijk anders tussen de twee verschillende project soorten.
 
Ook reageren gaat soms iets anders. In Windows Phone Silverlight moet dit in de Main pagina. Daar test je of je via Cortana opgestart bent. En als dit zo is, dan reageer je hier op.
 
Bij Universal apps wordt dit in de App.Xaml opgelost en naar de juiste pagina genavigeerd.
 
Je kunt testen of de opdracht een Voice command is. En als dit zo is, kun je de naam van het command opvragen. En daarna kun je weer onderdelen  van dat command uitvragen. Bij de doorverwijzen naar de juiste pagina geef jij dan ook de context van de aanroep door. Geef bij voorkeur niet direct de Cortana opmerking door.
 
Je moet ook zelf testen of de app discreet in ‘silent’ mode gestart wordt. Dan moet je jouw app ook niet geluid gaan maken. Dit is dus de ‘text mode’.
 
Dit waren de commando’s. Natuurlijk taal kan dus ook ondersteund worden.
 
Je kunt ook speach synthese toepassen om teksten uit te spreken. Ook hier zijn er enkele verschillen tussen de twee project types.
 
En er is dus binnen de app ook een SpeechRecongnition mogelijkheid. Dit kan uit losse worden bestaan. Maar er is ook mogelijkheid om grammatica op te stellen (volgens een zeer uitgebreide standaard definitie). Helaas lijkt dit veel minder fuzzy te zijn dan wat Cortana gebruikt. Persoonlijk komt me dit bekend voor, ik meen dit al vaker gezien te hebben met spraakherkenning in Windows (al vanaf versie Xp of zo?)
 
Deze presentatie van Diederik was uiteindelijk dus erg interessant. Dit is een mooie ear-catcher voor je gebruikers.
 
Deze presentatie van Diederik was erg interessant.
 
Dat waren de presentaties die ik gevolgd heb. Het was weer een aangenaam en nuttig dagje om mijn Windows (Phone) kennis bij te spijkeren. Een enorme dankjewel dus voor de organisatie en sprekers. Op naar de borrel!