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.
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.
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’.
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.
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?
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.
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.
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 🙂
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.
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.
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.
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…