De introductie geeft aan dat het examen niet zo zeer gericht is op code uitwerken, maar meer op de kennis van ontwerpen, ontwikkelen en problemen fixen op basis van MVC 4. Maandag 10 september 2018 begonnen met hoofdstuk 1. Het eerste deel legt uit wat MVC (Model-View-Controller) is. Daarna een korte uitleg over de voormalige webservices (ASMX), het vervolg (WCF) en de webAPI die nu hot (en handig) is. Hierna volgt een uitleg over gedistribueerde systemen, met de verschillende soorten sessie-management (InProc, StateServer en SQLServer mode). En een hybride applicatie komt ter sprake (op eigen hardware de code laten draaien, maar ook deels in bijvoorbeeld de Azure-cloud bepaalde acties laten uitvoeren).
Woensdag 12 september hoofdstuk 1 uitgelezen. Uitleg over modules en handlers, bekend werk. Uitleg over websockets, verschillende soorten caching, uitleg over cookies en andere lokale storage/opslag. Het enige nieuwe is de paragraaf over de rollen in Azure (web, worker en VM role). Hierna nog wat uitleg over het uitvoeren van scripts bij het opstarten.
Donderdag 13 september hoofdstuk 2 gelezen. De titel "Design the user experience" gaf me al het idee dat dit hoofdstuk niet veel nieuws zou bevatten. En dat is ook zo. Css (stylesheets), javascript (ajax), partial views worden besproken en syntax in Razor (.cshtml) en de ASPX syntax.
Maandag 17 september door met hoofdstuk 3, een interessant hoofdstuk. Eerste paragraaf kun je skippen, die gaat over HTML-opbouw, SEO. De tweede paragraaf gaat over globalization en localization. Het aanbieden van een meertalige website. De derde paragraaf gaat over MVC controllers en acties. Het instellen van filters, action behaviors, action results (ContentResult, ViewResult) en model binding, dus hoe je de inputs op de view kunt koppelen aan het model. De vierde paragraaf gaat over het ontwerpen en implementeren van de routering. Hoe je met constraints kunt zorgen dat je routering optimaal gebruikt wordt. Over het toevoegen van routes.Ignore items, zodat ongeldige aanroepen meteen afgekapt worden zonder alle extra verwerking. Hoe je "area's" in kunt richten, zodat je bijvoorbeeld een "front-end" en een "back-end" voor een webshop hebt en ieder zijn eigen "order"-controller. De vijfde paragraaf gaat wat meer de diepte in over hoe je MVC filters kunt implementeren en je eigen controller factories instelt. Je eigen view-engine. Paragraaf 6 gaat over het verminderen van de te gebruiken bandbreedte. Dus het samenvoegen van javascript-bestanden in bundles. Het gebruik maken van gzip.
Dinsdag 18 september naar hoofdstuk 4, ook een interessant hoofdstuk. Thema van dit hoofdstuk is troubleshooten en debuggen. De eerste paragraaf gaat over de performance wizard, Visual Studio Profiler, Performance Monitor. Security issues, tracing, loggen en debuggen. Een interessant item zijn code contracten. Hiermee kun je bepaalde businessrules afdwingen. Preconditions (de meegegeven parameter moet altijd > 0 zijn), invariants (zaken die niet wijzigen tijdens het uitvoeren van de methode) en postconditions, voorwaarden die gecontroleerd worden bij het afronden van de methode. Hier moet ik nog maar eens naar kijken. Hiervoor moet je de Code Contracts Editor Extensions uit de Visual Studio Gallery installeren. Hierna nog informatie over het aan zetten en configureren van health monitoring. Standaarden daarvoor kun je in de algemen web.config terug vinden op %WINDIR%\Micorosoft.NET\Framework\version\CONFIG. De tweede paragraaf gaat over het ontwerpen van een exception handling strategie. Hoe je deze via de verschillende lagen in je applicatie gaat afhandelen. Hoe je je eigen error-pagina's in kunt stellen. Een item wat ik erg interessant vind is het afhandelen van first chance exceptions. Als je dit activeert, je debugt je applicatie, en je komt in een exception-branche, dan hoef je niet expliciet een Exception e te plaatsen, om te inspecteren wat e nu bevat, maar Visual Studio geeft je zelf al weer wat de fout is. Ook kun je dit zelf in de global.asax instellen om ook tijdens productie fouten die een beetje "weggemoffeld" zijn toch te kunnen registreren. In paragraaf 3 beginnen we met het testen van een web applicatie. Over hoe je unit tests kunt toevoegen. Integration tests, het aanmaken van mocks, Fakes Assembly, shims en stubs. Een overzicht van de verschillende soorten load tests (lichte belasting, stress-test, performance (controle hoe je applicatie nog reageert of blijft "hangen") en capacity planning (je stelt in dat de CPU maximaal 75% belast mag worden, dan gaat deze test kijken met welke waardes dat te bereiken is). De laatste paragraaf gaat over het debuggen van een Azure applicatie. Dat is even wat moeilijker dan het debuggen van een applicatie in Visual Studio of op eigen hosting. Je kunt dit doen via de Windows Azure Compute node of via RDP.
Woensdag 19 september, vandaag jarig, maar met een stukje appel-citroenvlaai toch in het boek gedoken, vandaag hoofdstuk 5, het laatste hoofdstuk van dit boek. Daar gaan we. Dit hoofdstuk gaat over het ontwerpen en implementeren van beveiliging, security. De eerste paragraaf gaat over het configureren van authenticatie. Anonymous, basic authentication, digest authentication, forms authentication en windows authentication. Membershipproviders en hoe je je eigen membershipproviders in kunt stellen. De tweede paragraaf gaat over het configureren en toepassen van autorisatie. Het instellen van rollen en role-providers. De derde paragraaf gaat over het ontwerpen en implementeren van claims-gebaseerde authenticatie over federated identity stores. Dit gaat dus over Azure. Hier komt OAuth ter sprake, SAML en SWT. De vierde paragraaf gaat over het beheren van data-integriteit. Hierin komen MD5, SHA, DES en AES ter sprake. Ook het encrypten van bepaalde gegevens in je .config-bestanden. Het signen van data om te voorkomen dat er mee om gerommeld wordt. Paragraaf vijf gaat over het implementeren van een veilige site met ASP.Net. Zo is er natuurlijk het zorgen dat de applicatie via https bereikbaar is en niet via http. Het salten en hashen van wachtwoorden voor opslag. HTML-encoding gebruiken om cross-site scripting te voorkomen (AntiXSS Library). Het implementeren van deferred (uitgestelde) validatie en het uitvoeren van ongevalideerde requests. Hoe je door het parametiseren van query's SQL injection-aanvallen te lijf kunt gaan. Hoe je cross-site request forgeries (XSRF, CSRF) moet gebruiken. Iets wat ik in praktijk gebracht heb door het toevoegen van een hidden variabele en een cookie op de cliƫnt valideren of het request daadwerkelijk afkomstig is van een eigen formulier/pagina.
Tot zover was dit boek 70-486. Zo te zien een betere aanschaf dan de 70-487, hoofdstuk 3, 4 en 5 vond ik zeker de moeite waard. Ik vind het fijn om de boeken zelf in te kopen/in bezit te hebben, omdat ik nu even met tempo de hoofdstukken doorneem, komt het examen dichterbij, dan zal ik dit boek zeker nog een aantal maal en dan wat meer gericht op details doornemen.