Naar de inhoud

Blog

  • 4 jan 2011 r.lohman

    Wat is MVC3?

    dinsdag 4 januari 2011

    Logo asp.net MVC3Op dit moment is Microsoft druk bezig met de ontwikkeling van ASP.NET MVC3.Momenteel is RC2 op de markt en de verwachting is dat dit een van de laatste versies zal zijn voor de definitieve versie vrijgegeven zal worden. Reden genoeg om hier ook eens onderzoek naar te gaan doen en ermee te experimenteren.

    MVC3 kent een groot aantal interessante verbeteringen, maar de op dit moment meest interessante vind ik toch wel de Razor View Engine. Een van de grote verschillen is dat Razor gebruik maakt van CSHTML bestanden. Zo krijg je bijv.”SiteLayout.master” als masterpage in MVC2 terwijl in MVC3 dezelfde pagina “SiteLayout.cshtml” heet.

    Inhoudelijk lijken deze Masterpages (en andere pagina’s) op elkaar, behalve dat de syntax bij het gebruik van Razor anders is. Zo wordt onder andere al gebruik gemaakt van de HTML5 Doctype Declaration (DTD). Onderstaande vergelijking laat zien hoe de syntax met het gebruik van Razor verschilt van de huidige syntax in MVC2.

    Bestaande syntax MVC2

    Bovenstaande afbeelding laat zien wat de huidige syntax is bij MVC2 projecten. De onderstaande afbeelding toont de nieuwe syntax zoals deze in MVC3 met behulp van de nieuwe Razor View Engine wordt gebruikt

    Nieuwe syntax mvc3 Razor View Engine

    Wat opvalt is dat in de huidige .aspx-pagina’s elk code blok geopend en afgesloten wordt met <%= %>. In MVC3 met het gebruik van Razor wordt een codeblok geopend met een @ en hoeft deze niet perse worden afgesloten. De engine is zelf dusdanig intelligent dat hij zelf uitzoekt tot hoever de tekst die volgt na het @ uitvoerbare code is. Bij views waarin veel data getoond moet worden, zoals bijv. een productpagina van een webshop levert dit een veel leesbaardere en overzichtelijke pagina op voor de ontwikkelaar. Meer voorbeelden en informatie over de nieuwe Razor View Engine is te vinden in deze blogpost van Scott Guthrie.

    Andere interessante verbeteringen en nieuwe toevoegingen om te noemen zijn;

    • Verbeterde Javascript validatie
    • Standaard beschikking over de jQuery Validatie Plug-in
    • Nieuwe Action Results
      • Onder andere HttpNotFoundResult(); Dit is een standaard actionresult die een 404-melding toont wanneer een pagina niet gevonden kan worden.
      • Verbeterde Dependency Injection

    Na wat geëxperimenteerd te hebben met MVC3 en Razor kan ik zeggen dat Microsoft goed op weg is met MVC3. Naast het gebruik van de nieuwe Razor View Engine, die erg soepel werkt en voor schonere en compactere html zorgt, ben ik ook van de andere verbeteringen erg onder de indruk. Validatie lijkt een stuk beter te werken en ook het uitzetten van de request validatie (wat in MVC3 met een enkel attribuut kan) is een stuk vereenvoudigd. Met MVC3 lijkt Microsoft zich erop te richten om het de ontwikkelaar zo eenvoudig mogelijk te maken. Ook worden er al enkele HTML5 onderdelen gebruikt in zowel de validatie als de HTML. Verder zijn er nog enkele SEO-verbeteringen doorgevoerd, is jQuery UI standaard aanwezig en kan nu zelfs op Controller Niveau bepaald worden of de Sessionstate gebruikt moet worden. Er zijn teveel verbeteringen om ze allemaal in deze blog te noemen en misschien zeggen niet alle onderdelen jullie wat, daarom laat ik het hierbij.

    Schematische weergave werking mvc

    Mochten jullie meer willen weten over MVC3 dan raad ik jullie aan om de blogs van Scott Guthrie en Phil Haacked in de gaten te houden. Beiden werken voor Microsoft en komen regelmatig met goede blogs en informatie over MVC3.

    Vragen over dit onderwerp? Of ben je er zelf mee bezig? We zijn benieuwd naar jouw mening over dit onderwerp!


  • 13 apr 2010 Jan Aukema

    Devdays 2010

    dinsdag 13 april 2010

    Op dinsdag 30 en woensdag 31 maart waren de DevDays in het World Forum in Den Haag.

    Ik ben hier samen met collega’s naar toe gegaan om onder andere nieuwe informatie op te doen over de release van de nieuwe Visual Studio (2010) die op 12 april gelanceerd wordt en over C# 4.0.

    C# 4.0

    Eén van de sprekers, Anders Hejlsberg,  heeft een sessie gehouden over C# 4.0. Hij heeft hierbij voornamelijk laten zien wat de nieuwe mogelijkheden zijn bij het gebruik van C# 4.0.

    Een aantal van de besproken onderwerpen voor C#4.0 zijn:

    Dynamic Typing
    In c#4.0 is een nieuw type opgenomen genaamd “Dynamic” dit maakt het mogelijk om een variabele op te slaan zonder het type hiervan te definiëren. De variabele die dan gedefinieerd is als dynamic kan dan gebruikt worden zonder dat er bij het compileren fouten optreden. Fouten die optreden zullen in dit geval pas op run-time worden gezien.

    Een groot voordeel van het gebruik van het dynamic type, is dat er ook andere talen eenvoudig aangesproken kunnen worden. Zo is het bijvoorbeeld mogelijk om vanuit Silverlight, waarbij in C# geprogrammeerd wordt een aanroep te doen naar code die is geschreven in Javascript.

    Gebruik van Optional en Named parameters
    C#4.0 heeft de mogelijkheid om gebruik te maken van “Optional parameters”, waarbij het mogelijk wordt om parameters die aan een functie meegegeven dienen te worden optioneel te maken. Het voordeel hiervan is dat er geen rekening gehouden hoeft te worden met verschillende mogelijkheden van de aanroep van een functie, wat eerder met een overload opgelost zou worden.

    Ook is het mogelijk gebruik te maken van Named Parameters, waarbij waardoor het mogelijk is de parameters die ingevoerd dienen te worden, niet in een vaste volgorde ingevoerd hoeven te worden, maar ook aan de hand van de parameter naam kunnen worden ingevoerd.

    Het gebruik van Optional en Named parameters, zorgt ervoor dat er minder code geschreven hoeft te worden door niet vele overloads te hoeven gebruiken.

    Co- en contra variance
    Voor het gebruik generic types is het mogelijk om bij het type wat wordt gebruikt mee te geven of deze alleen voor output wordt gebruikt (covariant) of alleen voor input (contravariant), door gebruik te maken van de keywords “out” en “in”.

    C# 5.0

    Tijdens een presentatie van Anders Hejlsberg hebben we nog een preview gezien van C# 5.0. Hierin gaat de compiler als een service aangeboden worden en kan een applicatie live aangepast worden. Dit was wel indrukwekkend om te zien.

    ASP.NET MVC 2

    Scott Hanselman heeft een sessie gehouden over het nieuwe ASP.NET MVC 2 wat gelijk met de lancering van C#4.0 wordt geïntroduceerd.

    Hij heeft hierin een aantal nieuwe mogelijkheden besproken die een aantal taken uit handen kunnen nemen. Zoals het gebruik van T4 templates en het gebruik van templates voor de weergaven van velden die van een bepaald type zijn.

    Secure Coding

    Er was ook een sessie over Secure Coding die gehouden werd door Alex Thissen. Hier werd ingegaan op de verschillende aspecten van beveiliging in de applicatie. Deze dingen kwamen ons allemaal bekend voor wat wel een extra goed gevoel over onze bestaande applicaties geeft.

    Naast deze besproken punten zijn er nog een heel aantal zaken opgestoken van de diverse sessies die we bezocht hebben. Als samenvatting kunnen we zeggen dat het interessante dagen waren.

    Ben jij ook op de DevDays geweest? Ik ben benieuwd naar jou mening.

  • 2 jun 2009 Arno ten Hagen

    Microsoft Devdays 2009

    dinsdag 2 juni 2009

    Afgelopen donderdag en vrijdag (28 en 29 mei) vond in het World Forum in Den Haag de Microsoft DevDays 2009 plaats. De Microsoft DevDays is hét jaarlijks terugkerend evenement voor ontwikkelaars die gebruik maken van Microsoft technologiën. Dit jaar waren er meer dan 80 technische sessies over uiteenlopende onderwerpen. Samen met Arno ben ik donderdag naar Den Haag gereisd en hebben we enkele sessies bezocht.

    C# 4.0 / The Future of C#

    De eerste track werd verzorgd door Krishnan Subramanian en ging over c# 4.0.
    Er werd onder ander aandacht besteed aan de evolutie van c# (managed Code, Generics, LINQ, Dynamic programming), declarative programming, concurrency en de c# 4.0 features.

    Declarative programming
    Momenteel programmeren C# ontwikkelaars vooral hoe men een resultaat wil bereiken en niet wat men wil bereiken. Dit heet “imperative programming” en zorgt voor veel ruis waardoor men moeilijk kan nalezen wat een stuk code precies moet doen. Men kan deze ruis verminderen door gebruik te maken van “declarative programming”. Er worden enkele voorbeelden getoond van situaties waarin LINQ queries de leesbaarheid vergroten waardoor de functionaliteit makkelijker te achterhalen is.

    Concurrency
    De laatste tijd is de hardware/processor industrie tegen een limiet aangelopen met betrekking tot het verhogen van de kloksnelheden van de processor. Het komt daarom steeds vaker voor dat men als ontwikkelaar met multi-core processoren te maken krijgt (Dual core en Quad core CPU’s). C# 4.0 levert meer ondersteuning voor parallel programming in je applicaties zodat de workload over meerdere processoren kan worden verdeeld.

    De hoofdfunctionaliteiten van C# 4.0:

    • Dynamically typed objects
    • Optional and Named Parameters
    • Verbeterde COM interoperability

    Dynamically typed objects
    Objecten binnen C# zijn van een bepaald type. De compiler controleert of de bewerkingen in je code kunnen worden uitgevoerd en zal een melding geven wanneer dit niet het geval is. Met Dynamic lookup wordt het mogelijk om deze controle van compile-time naar run-time te verplaatsen. Men kan daardoor in de code COM/reflection/IronPython objecten gebruiken waarbij de runtime pas gaat bepalen wat er eigenlijk moet gebeuren.

    Om dit allemaal mogelijk te maken zal C# 4.0 de Dynamic Language Runtime (DLR) bevatten. Deze DLR zorgt ervoor dat Dynamic lookup mogelijk wordt en zal gebruik maken van caching om het proces te versnellen. Uitgebreidere informatie over dynamic lookup kun je vinden op deze blog.

    Optional and Named Parameters
    Wanneer men in C# een functie schrijft met een x aantal parameters, en je wil dezelfde functionaliteit in een functie die meer/minder parameters nodig heeft, kan men dat momenteel alleen maar bereiken middels een function overload. Vanaf C# 4.0 heeft men de beschikking over optionele en named parameters.
    Door een betreffende functie aan te roepen met “named parameters” wordt de code leesbaarder en maakt de volgorde waarin je de parameters meegeeft niets uit.
    Door in je functie een parameter een default value te geven wordt deze optioneel en hoeft deze parameter dus niet meer te worden meegestuurd in de functie aanroep.

    Verbeterde COM interoperability
    Door de nieuwe features van C# 4.0 wordt de koppeling met office applicaties sterk versimpeld.

    Securing ASP.NET

    Deze sessie ging over het beveiligen van ASP.NET applicaties. Na het tonen van zijn yo-yo kunsten ging Keith Brown vertellen over hoe we onze webapplicaties kunnen beveiligen tegen potentiële hackers.
    Het eerste gedeelte van de sessie werd gebruikt om aan te tonen hoe makkelijk men een zoekbox op een website kan misbruiken om een webapplicatie te hacken.
    In het tweede gedeelte werden er enkele tips gegeven om de kans te reduceren dat een webapplicatie wordt gehacked:

    • Gebruik altijd server side validation
      Maak altijd gebruik van server side validatie omdat hackers de clientside validatie erg makkelijk kunnen omzeilen.
    • ASP.NET account rechten instellen
      Geef het ASP.NET account voor je website zo min mogelijk rechten (dus niet de standaard ingestelde network service account). Dit zorgt ervoor dat de schade op de server beperkt blijft zodra een hacker de beveiliging toch heeft weten te kraken.
    • Foutafhandeling
      Toon de gebruiker van je applicatie geen gedetailleerde foutmeldingen, maar log deze naar een file/db.
    • Gebruik regular expressions
      Wanneer men gebruik maakt van regular expressions om input te valideren, zorg er dan voor dat de regex altijd begint met een ^ en eindigt met een $, anders kan kunnen de gebuikers nog steeds foutieve input injecteren.
    • Voorkom SQL injection
      Maak gebruik van parameterized queries op SQL injection te voorkomen
    • Voorkom XSS attacks
      Wanneer men de input van een gebruik naar het scherm schrijft dient deze (uiteraard) altijd HTML-encoded te zijn.

    Navigating through the hypes, Software architectures and patterns to help avoiding your projects to crash

    Dit was de laatste track van de dag en werd verzorgd door Sander Hoogendoorn.
    Tegenwoordig komen er steeds meer frameworks (van zowel Microsoft als open source) op de markt. Denk hierbij aan ASP.NET MVC, Castle, WF, Entity Framework, Unity, Linq2SQL, ADO.NET Data Services, WCF, nHibernate of Spring.NET. Wanneer men aan een nieuw project begint kiest men vaak enkele frameworks om het ontwikkelproces te versnellen. Dit brengt echter enkele gevaren met zich mee:

    • Wat als men al is begonnen met ontwikkelen en men komt erachter dat het framework niet voldoet?
    • Wat als de ontwikkelaar van je framework ermee ophoud?
    • Wat als er een nieuwe versie uitkomt met een totaal andere implementatie?

    Stel dat men halverwege een project erachter komt dat men van framework wil switchen, dan moet dit uiteraard wel mogelijk zijn.
    Om dit mogelijk te maken moet men proberen om zoveel mogelijk de afhankelijkheid van de gekozen frameworks te beperken.
    Er worden enkele methodieken besproken waarmee men dit kan bereiken:

    • Dependency Injection (constructor Injection, Setter injection, handmatig)
    • Layer Super-type
    • Descriptor pattern
    • Manager-Provider pattern

    Er werd dus veel aandacht besteed aan hoe men de structuur en kwaliteit van een software architectuur kan verbeteren. Dit soort sessies blijven altijd interessant voor elke ontwikkelaar.

    Conclusie

    Al met al was het een zeer geslaagde dag. De tijd vloog voorbij, ik heb enkele nieuwe dingen gehoord en tussen de sessies door heb ik veel collega ontwikkelaars gesproken.
    Op naar Devdays 2010!