RSS 2.0
# Sunday, April 01, 2007

Het gebeurt niet vaak dat ik schrijf over dingen die niets met techniek te maken hebben, maar soms maak ik graag een uitzondering, zo ook nu...

Wij waren vandaag uitgenodigd voor een brunch waar iemand wat ging vertellen, meer was ons niet verteld. De vertelling was van Marieke de Lange, die op eigen houtje en uit eigen zak naar Afrika gegaan om daar kinderen te helpen door met ze een theatervoorstelling te maken. De beste vergelijking die je kunt trekken is met de organisatie Right To Play van Johan Olaf Koss, en in die lijn is Marieke nu ook meer mensen bij het project aan het betrekken. Met een kleine subsidie en donaties van particulieren en bedrijven gaat ze verder met het helpen van (kans)arme jongeren in de derde wereld. Ik kan het lang niet zo goed zelf vertellen, dus neem de moeite eens om op Marieke's blog te kijken. It blew me away!

Sunday, April 01, 2007 9:15:55 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0] -
Nederlands

Ik kreeg net de email van Microsoft binnen dat ik weer de gelukkige ontvanger ben van de Microsoft Most Valuable Professional (MVP) Award. Die erkenning is natuurlijk altijd weer leuk. Bedankt Microsoft. Hopelijk kan ik ook komend jaar eer doen aan de award.

Sunday, April 01, 2007 9:00:30 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0] -
Nederlands
# Thursday, March 29, 2007

Download the demo's here (34.39 KB)

During the session I promised to give put a sample here about using delegates for asynchronous processing, but what's the use if you can just read it on MSDN: Calling Synchronous Methods Asynchronously. Again, be aware that you shouldn't use this in ASP.NET!!! This is for console, desktop, and Windows Services only! In ASP.NET this would exhaust the thread pool pretty fast.

Thursday, March 29, 2007 12:37:31 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [1] -
ASP.NET | English | Events
# Wednesday, March 28, 2007

Download the demo's here (85.85 KB). If you want the slides, send me an email.

If you want to do the AspCompat demo, don't forget to register the VB6 component from the command line with regsvr32.

Wednesday, March 28, 2007 11:53:24 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0] -
ASP.NET | English | Events
# Wednesday, February 21, 2007

Reflector is een heerlijke tool waarmee je dde code kunt bekijken in asemblies, ook de System... assmeblies van Microsoft (heeeel leerzaam). Als je Reflector nog niet kent, haast je naar http://www.aisto.com/roeder/dotnet/ om 'm te downloaden. Ken je 'm wel al, haast je dan ook naar http://www.aisto.com/roeder/dotnet/ (of doe Check for Updates in je huidige versie).

Wednesday, February 21, 2007 3:51:17 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.NET | Nederlands

Zie deze zeer uitgebreide uitleg over hoe je het moet installeren en wat wel en niet kan: Integrating ASP.NET AJAX with SharePoint

Wednesday, February 21, 2007 3:35:39 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
ASP.NET | Nederlands
# Tuesday, February 20, 2007

SQL Server 2005 is al weer toe aan z'n 2e service pack. Deze is te downloaden van http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/servicepacks/sp2.mspx. Een nieuwe versie van de SQL Server 2005 Books Online kun je vinden op http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx.

Tuesday, February 20, 2007 9:45:04 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
Nederlands | SQL Server
# Monday, February 19, 2007

Het is heel gewoon om classes in een library public te maken, maar eigenlijk is dit helemaal niet handig. Dat betekent namelijk dat de class vanuit alle code die de library gebruikt beschikbaar is. Met andere woorden de class maakt onderdeel uit van de interface van de library. Er zijn meerdere redenen waarom dit onwenselijk is:

  1. De interface is onnodig groot en voor gebruiker van de library kan het daarom onduidelijk zijn welke classes gebruikt moeten worden.
  2. Het is veel lastiger om te achterhalen welke verbindingen er bestaan tussen de library en eventuele clients. Dit is bijvoorbeeld lastig bij refactoring.
  3. Het is in een client mogelijk om een sub-class te maken, terwijl dit wellicht niet de bedoeling is.

Veel beter is om classes internal te maken. Dit is ook standaard zo als je geen access modifier plaatst. Daarmee zijn classes alleen beschikbaar voor code binnen dezelfde assembly (tenzij men reflection gebruikt).

Het is verstandig om opo dezelfde manier even stil te staan bij class members. Die zijn standaard private, en als je dat verandert kun je ze protected (alleen beschikibaar voor de class zelf en sub-classes), internal, protected internal (protected of internal) of public maken. Als je dit consequent toepast kun je ook reflection tegengaan door de class te markeren met [ReflectionPermission(SecurityAction.Deny)]. Daarmee is de boel niet alleen veel handiger, maar ook veel veiliger.

Monday, February 19, 2007 3:19:15 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.NET | Nederlands
# Monday, February 12, 2007

Ik zie in code geregeld dat het Session object op allerlei plaatsen gebruikt wordt, met name in pagina's en controls, als volgt:

public void Page_Load(object sender, EventArgs e)
{
    Session["MySessionVar"] += 1;
}

public void Page_PreRender(object sender, EventArgs e)
{
    Label1.Text = Session["MySessionVar"].ToString();
}

Dit is om meerdere redenen niet aan te raden:

  1. Omdat de collectie loosely typed is, is er geen compile-time check bij het benaderen van de elementen in de collectie. Het is daarom heel makkelijk om een typfoutje te maken, waardoor je tegen het verkeerde object aan praat.
  2. Door elementen in het Session object te stoppen in de pagina, is er geen centrale administratie van de namen (keys) die in gebruik zijn.

Je kunt beide zaken oplossen door een centraal object te maken waarmee je de elementen in het Session-object benaderd, als volgt:

/// <summary>
/// Strongly typed toegang tot Session-object.
/// </summary>
internal static class TypedSession
{
   public static int MySessionVar
   {
      get
      {

         object o = 
HttpContext.Current.Session["MySessionVar"];
         if(o == null) return 0;

         return (int)o;
      }
      set
      {
         HttpContext.Current.Session["MySessionVar"] = value;
      }
   }
}

public void Page_Load(object sender, EventArgs e)
{
TypedSession.MySessionVar += 1;
}

public void Page_PreRender(object sender, EventArgs e)
{
Label1.Text = TypedSession.MySessionVar.ToString();
}

Merk op dat bij de get-accessor eerst gekeken wordt of het object null is. Dit is nodig omdat een int niet null mag zijn. Voor objecten waarvoor dat wel mag kun je desondanks besluiten dat er een standaardwaarde moet zijn, bijvoorbeeld een nieuw object.

Deze methodiek werkt ook uitstekend voor de Request.QueryString collectie en meer van dat soort collecties die je normaal gezien loosely typed gebruikt. Die zal je niet zo snel centraliseren, omdat het juist op een bepaalde pagina van toepassing is, maar daarmee strongly typed kunnen werken is nog steeds minder foutgevoelig. Bovendien hoeft de ontwikkelaar niet te weten waar de data vandaan komt.

Monday, February 12, 2007 11:40:18 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.NET | ASP.NET | Nederlands
# Wednesday, January 31, 2007

Onlangs kreeg ik de volgende melding in Visual Studio 2005: The project file ' ' has been renamed or is no longer in the solution. Hierdoor was het niet meer mogelijk om ook maar iets van het project te bouwen. Het vervelende aan dit probleem is dat je geen idee hebt wat er nu eigenlijk aan de hand is. Na enige tijd vond ik uit dat dit gebeurt als een Web Project referenties bevat naar assemblies of projecten die het niet kan vinden. Je lost dit als volgt op:

  1. Rechts-klik op het Web project en kies Property Pages.
  2. Er verschijnt een venster met alle referenties, zowel naar de bin-map, GAC of andere projecten in de solution.
  3. Verwijderer de referenties gemarkeerd met (unavailable).
  4. Waarschijnlijk kun je nu niet bouwen omdat je assemblies mist. Als je de referenties daar naartoe maakt zou alles moeten werken.
Wednesday, January 31, 2007 4:42:56 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
ASP.NET | Development | Nederlands
Sign In

Archive
<April 2007>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
About
This is the blog of Michiel van Otegem, a Senior Software Architect with Sogeti Netherlands, and author of several books and numerous articles on (ASP).NET, XML, and related technologies.
Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2012
Michiel van Otegem
All Content © 2012, Michiel van Otegem
DasBlog theme 'Business' created by Christoph De Baene (delarou)