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 2012, Woensdag

20120627-093241.jpg

Deze dag begon met een rustige start. We hadden een goed plekje gevonden bij de keynote welke voornamelijk in het teken van Windows 8 stond.

Windows 8 is voorbereik op een veranderende wereld. Onze wereld gaat draaien rond mobility, connectivity, content, people en touch. En de scheiding tussen thuis en op kantoor verdwijnt. Microsoft speelt hier op in.

Windows 8 pakt dit op door een nieuwe, vloeiende UI en apps. Volgens Microsoft is het zelfs beter dan Windows 7!

Het lockscreen geeft bv. al wat informatie over ongelezen mail of batterijstatus. En het picturepassword is een aardige feature, log niet in met een nummer maar met bepaalde gestures op een plaatje.

Win8 is ook ontdaan van chroom. MS heeft geprobeert alles weer functioneel te maken en de tierelantijntjes zijn weggelaten. De New Belgium Brewery app was een leuk voorbeeld van een simpele intuitieve applicatie met bing maps integratie en een kalender (leek net html zonder CSS).

Navigatie gaat ook zonder touch, de muis en keyboard worden ook nog ondersteund. Maar je moet wel beseffen welk gedrag gekoppeld is aan bepaalde lokaties op het scherm. Een klik links is iets anders dan linksboven.

En Semantic zoom is bv. via CTRL+ en CTRL- opgelost.

De bekende Windows 7 desktop is er natuurlijk ook nog steeds maar het ontging mij hoe ik er snel naar toe kon springen. Er was wel een tile voor. Dat de tiles als eerste getoond worden vind ik niet relevant. Als ik mijn pc opstart, dan wil ik meestal eerst even mail etc. controleren en dan zijn die apps snel beschikbaar.

De systeem search of all je apps is ook interessant. Je kunt nu direct detail info benaderen zonder eerst die apps op te starten.

De store is ook aardig. Alle navigatie die je verwacht, zit er in. Ik zag gelukkig ook “Top Free”.

Daarna kwam Virtualisatie aan bod. Win8 bezit een HyperV manager. Er werd ook direct vanuit Win8 een map uit een virtual harddisk benaderd door deze te openen vanuit de Win8 filemanager. Dat is erg handig en bespaart veel tijd.

Windows 8 kan ook vanaf een stick gestart worden, onder Windows 7! Je bedrijfs pc neem je dus op USB mee. De Win8 is dan volledig van je eigen Win7 gescheiden. En als je de stick er per ongeluk uit trekt, heb je 60 seconden om de stick weer terug te plaatsen. Win8 bevriest even maar crasht niet!

Hierna ben ik samen met Frankwin Faber naar de sessie Introducing the new Visual Studio 2012 Unit Testing Experience gegaan. Deze sessie werd gegeven door Peter Provost.

Deze sessie gaat over testen van je code terwijl je de code schrijft. Hij geeft ook een sessie op vrijdag over testen van ontestbare code.

MSUnit heeft een belabberde start gemaakt. Het was traag, ondersteunde geen C++ en het miste de nieuwste features. Het leek ook meer voor testers gemaakt te zijn en daardoor was het niet geschikt voor TDD.

Maar nu hebben we Vs2012…

Het testproject was er nog steeds. Maar de demo’s draaiden om XUnit. Het zit in Nuget en ik vond het wel verfrissend om eens geen MSUnit te zien. Als het maar door TFS Build ondersteund wordt…

Er wordt ook NUnit, QUnit en al enkele anderen ondersteund. En er is ook unittesting beschikbaar voor bv. javascript.

Er is nu een Test Explorer waardoor we ons niet meer door alle losse schermen hoeven te slepen. Let wel even op de te download VS2012 extension voor XUnit integratie (buiten Nuget om).

TFS build ondersteunt ook de 3de partij unittests en ook code coverage en ook de fakes. En het werkt ook allemaal in de Hosted Cloud build.

20120627-111540.jpg

Microsoft draait voor VS2012 wel 65000 tests binnen 8 minuten.

MSTest is wel verbeterd: snelheid, Je kunt direct ASync (await) testen, er is ondersteuning voor 64bit en .Net multitargetting. En MSTest zit in de Visual Studio Express edities!

XUnit ondersteunt ASync, NUnit wellicht snel.

Dezelfde bestaande MSunittests zijn onderling uitwisselbaar tussen VS2010 en VS2012.

Fakes zijn er nu voor isoleren van je code. De Stubs lijken het meeste op mocking. Maar Shims werkt met runtime interception en kan daardoor leuke dingen doen.

Shims werd gedemonstreerd door een DateTime.Now na te bootsen. De System.4.0.0.0 DLL werd daarvoor geshimt naar System.4.0.0.0.Fakes, er werd een lege schil voor aangemaakt. De System.Fakes.ShimDateTime nam de aanroep van de Now over met een lambda aanroep naar NowGet. Hierbij moest wel een ‘tijd’ scope opgegeven worden. De shim mag niet vor eeuwig blijven werken.

Dit is voor een gedeelte overgenomen van Pex en Moles. Maar er is geen directe overlap en migratie is nog niet mogelijk.

Stubs werd niet echt gedemonstreerd maar het lijkt er op dat we geen interfaces hoeven te genereren voor stubs. Ze kunnen ook van reguliere klassen gegenereerd worden. Even testen dus 🙂

Maar Shims is een code smell. Is het echt nodig of kan je terugvallen op de nette Stubs.

Codecoverage is ook bijgewerkt en is nu veel eenvoudiger geintegreerd (een eenvoudige rechterklik). En de colour coding van wat wel en niet geraakt wordt, is ook netjes. Het is helaas niet voor alle VS versies beschikbaar 😦

TFS build ondersteunt ook de 3de partij unittests en ook code coverage en ook de fakes. En het werkt ook allemaal in de Hosted Cloud build.

Helaas moet nog steeds VS2012 op de TFS server uitgerold worden. Microsoft wilt hier graag feedback over ontvangen.

Compiling wordt pas builden als je overstapt op continious building. Dit geldt ook voor continuous unit testing. Er is nu een knop: Run tests after build, binnen VS2012. De (succesvolle) build en de test draait nu echt helemaal op de achtergrond dus je kunt bouwen en testen tegelijkertijd. Hou die testen op groen! De build is nu echt snel geworden; Frankwin constateerde droog dat we nu minder koffie kunnen gaan halen.

Er komt binnenkort ook een Test emulatie voor SharePoint.

Daarna stond de volgende sessie op het programma. Helaas waren er twee sessies over TFS automation tegelijkertijd. Ik ben naar de sessie van Neno Loje gegaan. De andere sessie kijk ik wel op Channel 9.

Delivery is erg lastig en kost veel tijd. Zelfs in een Scrum sprint van twee of drie weken kost een dag uitrollen veel te veel. We moeten dus automatiseren. En dat geldt ook voor kwaliteit. We moeten de tijd om de kwaliteit te controleren beperken.

Dus bepaal eerst, wanneer is je code klaar?Dit is de Definition of Done DoD. En kwaliteit is onderhevig van wanneer het getest is. Streef naar een constante kwaliteit. Aleen dan kun je ook estimaten want je weet wat je opgeleverd hebt en wat je nog mist.

Daarna volgde een demo met een build. Builds kunnen nu ook gepauseerd worden voor een latere uitvoering. In de Build, controleer altijd even de workspace. Hierin wordt vastgesteld wat naar de buildserver verstuurd moet worden. Dit kan meestal een stuk efficienter.

TeamExplorer is ook wat handiger, deze toont altijd de buildstatus van je favoriete builds.

Continuous build is prima voor kleine teams. Grotere teams kunnen Gated Checkin gebruiken. Hele grote teams kunnen zelfs buildopdrachten laten samenvoegen met een maximum.

Ook werd even een unittestproject gedemonstreerd. Unittesten werd automatisch een onderdeel van de build omdat de projectnaam de tekst TEST bevatte. Dit werkt ook voor andere merken tests zoals XUnit. Maar neem de extra testrunner adapter en specifieke dll’s op voor de buildserver in een mapje met dependencies.

Codecoverage werd getoond. Dit is nu heel eenvoudig aan te zetten. Helaas is dit alleen voor VS2012 Premium gebruikers beschikbaar. En je hebt een extra licentie nodig voor de build server.

We kunnen nu eenvoudig de output uit meerdere solution in aparte mappen laten droppen. Dit was niet beschikbaar in de vorige versie van TFS.

20120627-055901.jpg

Shimes en fakes werd ook hier gedemonstreerd maar helaas met dezelfde demo als in het vorige uur. Pech, ik had gehoopt dat er afwisseling zou zijn. Is het zo moeilijk om verschilende voorbeelden te bedenken voor zo een belangrijke technologie?

Ook static code analysis is gedemonstreerd. Dit is een standaard onderdeel van de TFS Build. Je kunt eventueel je eigen rulesset samenstellen. Gewoon toepassen dus, een must have. Je kunt zelfs definieren dat warnings hieruit als builderrors worden beschouwd.

De layer diagram was ook heel aardig. Dit zit alleen in de Ultimate versie van VS2012. Even laagjes tekenen en de klassen er in plaatsen. Op de buildserver moet je de diagram checkbox aanzetten voor een layer check.

Labmanagement ondersteunt nu ook een eenvoudige testserver. Dit heet de standaard environment. Er is dan alleen geen snapshot mogelijkheid.

Op naar de volgende sessie. Vandaag is het echt een TFS dagje. Deze sessie gaat over het toepassen van scrum in VS2012.

Eerst wordt de Agile manifesto nog even aangehaald. En het sprint plaatje komt voorbij. Priotiseren van de backlog is belangrijk. De klant moet zich bewust zijn van wat er eerst gebouwd moet worden. De acceptatie criteria zijn bij de userstories ook van belang, pas dan mag je de items opnemen.

De nieuwe TFS backlog kan makkelijk priotiseren door drag en drop. En aan een backlog item kan een storyboard via Powerpoint aangemaakt en gekoppeld worden. Ook is er ruimte voor een acceptatie criterium. Items kunnen trouwens ook genest worden.

Het viel me op dat ik eigenlijk geen verschil heb gezien tussen TFS op premise en TFS in Azure. Erg mooi dus.

Van een productbacklog kunnen de items voorzien worden van Effort. dit gebeurt via planning poker (niet meegeleverd).

Dat kunnen de items aan sprints gekoppeld worden, afhankelijk van de velocity en de somatie van effort. En natuurlijk de hoogste prioriteit eerst.

In de sprint wordt iedere story van echte taken voorzien. En taken worden aan collega’s toegewezen. TFS toont al snel of collega’s te zwaar belast worden, lees: te veel uren aan taken moet spenderen.

Pas dan kan de sprint gaan beginnen.

De burn down chart kwam helaas maar heel even ter spraken en ik zag er geen TFS voorbeeld van. Het zal toch wel tussen de rapportages zitten?

Wel kwam het sprintbord in beeld. Ah, rechtsboven zie ik een BDC 🙂 Weer drag en drop van items. Prima, dit wordt een mooi aanraakscherm op kantoor voor de standup!

Dit scherm werkt samen met de MyWork explorer. daar zie ik de aan mij toegekende taken en ik kan ze ook op hold zetten of als Klaar markeren. Dit zou ik graag in actie willen zien! Het lijkt wel redelijk aan te sluiten op mijn manier (wens) van werken.

Er was nog een unittest demo maar die is de afgelopen sessie al vaker beschreven (zie boven).

20120627-083530.jpg

Ook de Code Clone demo was wel interessant. Dit legt een vinger op de copy/paste wond.

Gaaf, als ik een taak aan het uitvoeren ben, dan kan ik onder die taak alle wijzigingen shelven. Dan kan ik netjes een andere bug of taak uitvoeren en later weer verder gaan met de ‘suspended’ taak. En later zal er een merge plaatsvinden vanwege de bugfix of andere taak.

Nu krijgen we dus vat op de velocity in TFS. Nu kan ik de forecast aanzetten in TFS en dan krijg ik een overzicht van hoeveel sprints ik nog moet uitvoeren. Dit is de waarheid, er is niks van gelogen. Komt het de klant niet uit? Dan moet er geschoven worden met resources. Helaas houdt de forecast geen rekening met vakantieperiodes en afwezigheid van collega’s. Er moet dus een correctie met de kalender in de hand gedaan worden.

De take aways:

20120627-085101.jpg