Naar de inhoud

Blog

  • 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!