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.

 

 

 

Advertenties