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 😦

 

Advertenties