<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2dutchfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Born 2 Code .NET</title><link>http://pipes.yahoo.com/pipes/pipe.info?_id=8e539bb885405398d2e9b33d7507e20b</link><description>A merge of several feeds from http://born2code.net</description><language>en</language><generator>http://pipes.yahoo.com/pipes/</generator><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Born2Codenet" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FBorn2Codenet" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBorn2Codenet" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Born2Codenet" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBorn2Codenet" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBorn2Codenet" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBorn2Codenet" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Open Space bijeenkomst</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/DDHGIln1O6Q/68-open-space-bijeenkomst.html</link><category>General</category><pubDate>Wed, 10 Jun 2009 12:07:21 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Een hele zaterdag met mede-enthousiastelingen praten over software ontwikkeling, welke geek wil dat nu niet? Devnology bied op zaterdag 4 juli de uitgelezen mogelijkheid om te leren van elkaar. Ben jij gepassioneerd over het ontwikkelen van software, en vind je het leuk hierover van gedachten te wisselen met mensen die deze passie delen? Dan is dit event voor jou. We verwachten een divers gezelschap, of je uit de Ruby hoek komt, meer met Java of .Net doet, of misschien enthousiast bent over functionele talen of DSL's - iedereen is welkom op Devnology events.&lt;/p&gt; &lt;p&gt;Aanmelden voor deze Open Space kan &lt;a rel="nofollow" target="_blank" href="https://devnology.nl/volgende-bijeenkomst/details/2-open-space-01"&gt;hier&lt;/a&gt;!&lt;/p&gt; &lt;h2&gt;Open Space Technology&lt;/h2&gt; &lt;p&gt;Een Agile manier om bijeen te komen, dat is waar Open Space voor staat. Het is een manier om bijeenkomsten van een hoge mate van interactie en zelf organisatie te voorzien. In plaats van de hele inhoud van het event vantevoren vast te stellen - de waterval methode - stellen we de inhoud aan het begin van de bijeenkomst vast. Dit gebeurt door de bezoekers zelf. Bezoekers kunnen zelf sessie voorstellen, onderwerpen aan dragen voor discussie of bijvoorbeeld graag hun ervaringen uit willen wisselen met andere bezoekers. Door dat bezoekers de agenda bepalden sluit deze altijd aan bij de verwachting en wensen van de bezoekers en is de organisatie van de bijeenkomst niet meer dan het bieden van een goed raamwerk. De agenda staat overigens niet vast, over de gehele duur van de bijeenkomst zijn er momenten waarop sessies aan de agenda worden toegevoegd, gewijzigen, samengevoegd of verwijderd. Op deze manier blijft de agenda altijd synchroon met de wensen van de bezoeker.&lt;/p&gt; &lt;h2&gt;Aanmelden&lt;/h2&gt; &lt;p&gt;Op de website van Devnology vind je de aanmeldingspagina voor dit event: &lt;a rel="nofollow" target="_blank" href="https://devnology.nl/volgende-bijeenkomst/details/2-open-space-01"&gt;Open Space&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/DDHGIln1O6Q" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/68-open-space-bijeenkomst.html</feedburner:origLink></item><item><title>Wildcard Proposal verschenen op de DevDays website!</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/pz92XNYt1vo/67-wildcard-proposal-verschenen-op-de-devdays-website.html</link><category>General</category><pubDate>Tue, 21 Apr 2009 03:07:09 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Inmiddels is mijn sessievoorstel verschenen op de DevDays website. Wil jij graag je stem uitbrengen op deze sessie en daarmee mijn kans op een podiumplaats willen vergroten? Dan kun je hier - na &lt;a rel="nofollow" target="_blank" href="https://www.devdays.nl/Registreer.aspx"&gt;registratie&lt;/a&gt; - stemmen: &lt;a rel="nofollow" target="_blank" href="https://devdays.nl/Media/Detail.aspx?id=ffb83556-245e-4b18-8a01-d870692ffd6c"&gt;Wildcard Proposal: Introductie Design by Contract in .NET&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Wie weet, tot op de devDays!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/pz92XNYt1vo" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/67-wildcard-proposal-verschenen-op-de-devdays-website.html</feedburner:origLink></item><item><title>Wildcard Proposal: Introductie Design by Contract in .NET</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/KONThLNf_kw/66-wildcard-proposal-introductie-design-by-contract-in-net.html</link><category>DevDays09</category><pubDate>Mon, 20 Apr 2009 06:09:41 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Met de introductie van ondersteuning voor het Design by Contract pradigma in .NET maakt het .NET ontwikkelplatform in mijn ogen een revolutie door! Waar we tot op heden alleen nog maar type en interface definities konden maken, is het met de komst van DbC mogelijk om ook state- en gedragsdefinities op te nemen.&lt;br /&gt;&lt;br /&gt;Als we kijken naar C# kunnen we in een objecten model gedragingen implementeren. Dit doen we door interfaces en types te defineren. Tijdens compilatie valideert de compiler onze implementatie op basis van de type specificatie. Het is tot op heden echter nog niet mogelijk om ook gedragspecificaties te valideren. Hiervoor gebruiken we Unit Tests. Deze tests moeten we zelf schrijven, zijn tijdrovend, repeterend en foutgevoelig. Met de komst van DbC kunnen we ook gedragspecificaties maken. Deze specificaties zullen tijdens compilatie gevalideerd worden en daarmee kunnen we bewijzen dat onze software bug vrij is!&lt;/p&gt;&lt;p&gt;Hoe dit precies in zijn werk gaat, wat dit betekend voor je architectuur en of dit Unit Testing overbodig maakt zal ik laten zien tijdens deze presentatie.&lt;/p&gt;&lt;span style="font-weight:bold;" class="Apple-style-span"&gt;Belangrijk: &lt;/span&gt;voor deze sessie kun je inmiddels stemmen op de Developer Days website: &lt;a rel="nofollow" target="_blank" href="https://devdays.nl/Media/Detail.aspx?id=ffb83556-245e-4b18-8a01-d870692ffd6c"&gt;Wildcard Proposal: Introductie Design by Contract in .NET&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/KONThLNf_kw" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/6-devdays09/66-wildcard-proposal-introductie-design-by-contract-in-net.html</feedburner:origLink></item><item><title>Laatste kans om Peli van MS research te ontmoeten!</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/2vUAfsoay2M/65-laatste-kans-om-peli-van-ms-research-te-ontmoeten.html</link><category>General</category><pubDate>Mon, 02 Mar 2009 16:32:22 PST</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Vandaag is de laatste kans om je in te schrijven voor de aankomende dotNed bijeenkomst met Jonathan "Peli" de Halleux van Microsoft Research!&lt;/p&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/en-us/people/jhalleux/"&gt;Jonathan "Peli" de Halleux&lt;/a&gt;, werkzaam bij &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/"&gt;Microsoft Research&lt;/a&gt;, komt naar Nederland om te spreken over &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/contracts"&gt;Code Contracts&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/pex"&gt;Pex&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/chess"&gt;CHESS&lt;/a&gt;. &lt;img src="http://research.microsoft.com/en-us/projects/pex/pexweb.png" border="0" alt="PEX" hspace="8" vspace="8" align="right"/&gt;Wellicht komen deze termen wat onbekend voor, maar dat is juist de reden om deze speciale meeting bij te wonen. Het thema van de avond is software reliability en testing. &lt;/p&gt; &lt;p&gt;Naast zijn werk voor Microsoft Research is Jonathan ook bekend als auteur van MbUnit, diverse add-ins voor Reflector en projecten voor de fun. Ligt de kwaliteit van programmacode je aan het hart, dan is dit een unieke kans om niet te missen. &lt;/p&gt; &lt;p&gt;De avond wordt gehost door de &lt;a rel="nofollow" target="_blank" href="http://www.vxcompany.com/"&gt;&lt;span class="nfakPe"&gt;VX&lt;/span&gt; &lt;span class="nfakPe"&gt;Company&lt;/span&gt;&lt;/a&gt; en vind maandag 9 maart plaats. Zoals altijd is de bijeenkomst gratis, inclusief een hapje en een drankje en ben je van harte welkom vanaf 18:00. &lt;/p&gt;&lt;h2&gt;Inschrijven &lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Inschrijven kan alleen vandaag nog! Schrijf je snel in op de volgende pagina: &lt;a rel="nofollow" target="_blank" href="http://dotned.nl/meetings/vsts.aspx"&gt;http://dotned.nl/meetings/vsts.aspx&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/2vUAfsoay2M" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/65-laatste-kans-om-peli-van-ms-research-te-ontmoeten.html</feedburner:origLink></item><item><title>[event] Code Contracts, Pex en CHESS</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/DpZNpLiUO2I/17.html</link><category>Bijeenkomst</category><pubDate>Mon, 23 Feb 2009 22:46:50 PST</pubDate><guid isPermaLink="false"></guid><description>Titel: Code Contracts, Pex en CHESS&lt;br /&gt;Locatie: VX Company / Baarn&lt;br /&gt;Categorie: Bijeenkomst&lt;br /&gt;Datum: 09.03.2009&lt;br /&gt;Tijd: 18.00 h - 21.30 h&lt;br /&gt;Omschrijving: &lt;p&gt;Op &lt;em&gt;maandag 9 maart&lt;/em&gt; hebben we bij de Visual Studio Team System sectie van &lt;span class="nfakPe"&gt;dotNed&lt;/span&gt; een bijzondere spreker. &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/en-us/people/jhalleux/"&gt;Jonathan "Peli" de Halleux&lt;/a&gt;, werkzaam bij &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/"&gt;Microsoft Research&lt;/a&gt;, komt naar Nederland om te spreken over &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/contracts"&gt;Code Contracts&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/pex"&gt;Pex&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/chess"&gt;CHESS&lt;/a&gt;. Wellicht komen deze termen wat onbekend voor, maar dat is juist de reden om deze speciale meeting bij te wonen. Het thema van de avond is software reliability en testing. &lt;/p&gt; &lt;p&gt;Naast zijn werk voor Microsoft Research is Jonathan ook bekend als auteur van MbUnit, diverse add-ins voor Reflector en projecten voor de fun. Ligt de kwaliteit van programmacode je aan het hart, dan is dit een unieke kans om niet te missen. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/DpZNpLiUO2I" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/17.html</feedburner:origLink></item><item><title>Virtual ALT.NET meeting verplaatst</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/7MltdqkZ1tY/64-virtual-altnet-meeting-verplaatst.html</link><category>General</category><pubDate>Tue, 03 Feb 2009 04:12:13 PST</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Gisteren vond de eerste Virtual ALT.NET meeting plaats, althans dat was de bedoeling. Helaas bleek dat Offlice Live Meeting en een Mac niet samen gaan. Door deze problemen is de meeting verplaatst naar volgende week maandag 9 februari. Ook is er een &lt;a rel="nofollow" target="_blank" href="http://colinjack.blogspot.com/2009/02/first-europe-van_02.html"&gt;backup plan&lt;/a&gt; toegevoegd :)&lt;/p&gt; &lt;p&gt;De spreker voor deze meeting blijft onveranderd. &lt;a rel="nofollow" target="_blank" href="http://codebetter.com/blogs/gregyoung/"&gt;Gregory Young&lt;/a&gt; zal zijn gedachten, ervaringen en visies delen rondom Domain-Driven Design.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Start:&lt;/strong&gt; maandag, 9 februari 2009, 20:00:00 CET&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Tot:&lt;/strong&gt; maandag, 9 februari 2009, 22:00:00 CET&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Live Meeting URL:&lt;/strong&gt; &lt;a rel="nofollow" target="_blank" href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/7MltdqkZ1tY" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/64-virtual-altnet-meeting-verplaatst.html</feedburner:origLink></item><item><title>Vanavond eerste Europese Virtual ALT.NET Meeting</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/gc0_r7yIhXc/63-vanavond-eerste-europese-virtual-altnet-meeting.html</link><category>General</category><pubDate>Mon, 02 Feb 2009 01:16:49 PST</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Domain-Driven Design enthousiast &lt;a rel="nofollow" target="_blank" href="http://codebetter.com/blogs/gregyoung/"&gt;Gregory Young&lt;/a&gt; zal vanavond tijdens de eerste Virtual ALT.NET meeting zijn gedachten, ervaringen en visies delen rondom DDD.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Start:&lt;/strong&gt; maandag, 2 februari 2009, 20:00:00 CET&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Tot:&lt;/strong&gt; maandag, 2 februari 2009, 22:00:00 CET&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Live Meeting URL:&lt;/strong&gt; &lt;a rel="nofollow" target="_blank" href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/gc0_r7yIhXc" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/63-vanavond-eerste-europese-virtual-altnet-meeting.html</feedburner:origLink></item><item><title>TechEd EMEA 2009, datums en locatie bekend</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/dLHv5wchabo/61-teched-emea-2009-datums-en-locatie-bekend.html</link><category>General</category><pubDate>Mon, 17 Nov 2008 04:01:59 PST</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Nu de 2008 editie van Microsoft EMEA TechEd tot het verleden behoord zijn de datums en de locatie voor de volgende editie gepubliceerd. De volgende editie van dit event zal in november 2009 plaats vinden in de stad Berlijn, Duitsland. Ook is het net als voorgaande edities opgedeelt in twee events: Developers en IT Profecionals. Beide duren 4 dagen en volgen elkaar op. Waarbij, anders dan dit jaar, de developers als eerst aan de beurt zijn:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;TechEd Developer: 2-6. November 2009 &lt;/li&gt; &lt;li&gt;TechEd ITPro: 9-13. November 2009&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/dLHv5wchabo" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/61-teched-emea-2009-datums-en-locatie-bekend.html</feedburner:origLink></item><item><title>Microsoft Store opent zijn deuren</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/WTGlDlmRoLc/60-microsoft-store-opent-zijn-deuren.html</link><category>General</category><pubDate>Fri, 14 Nov 2008 00:11:11 PST</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Vandaag heeft Microsoft een &lt;a rel="nofollow" target="_blank" href="http://microsoftstore.com/" title="General microsoft store url"&gt;webshop&lt;/a&gt; geopend. In deze shop kun je alle Microsoft producten direct van Microsoft zelf kunt kopen. Ook is het mogelijk om software na aankoop direct te downloaden.&lt;/p&gt;
&lt;p&gt;De US versie is nog een stuk uitgebreider dan de onze emea versie. Zo kun je daar ook Xbox games, de Zune en andere hardware kopen. Of Microsoft ook t-shirt en andere branded spullen zal gaan aanbieden zoals ze nu doen in de &lt;a rel="nofollow" target="_blank" href="https://shop.ecompanystore.com/MSEPPStore/login.aspx" title="Company Store"&gt;Microsoft Company Store&lt;/a&gt; is nog niet bekend.&lt;/p&gt;
&lt;p&gt;De webshop is te bereiken via:&lt;/p&gt;
&lt;ul&gt; &lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://microsoftstore.com/" title="General microsoft store url"&gt;microsoftstore.com&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://store.micosoft.com"&gt;store.microsoft.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/WTGlDlmRoLc" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/60-microsoft-store-opent-zijn-deuren.html</feedburner:origLink></item><item><title>Microsoft SecondLight video</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/VBElihK5iQ0/59-microsoft-secondlight-video.html</link><category>General</category><pubDate>Sat, 01 Nov 2008 06:29:09 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Microsoft Research heeft op de PDC Second Light gepresenteerd. Deze on steriods versie van Microsoft Surface ziet er echt indrukwekkend uit! Door videos als deze kijk ik uit naar de dag dat surface computing beschikbaar komt voor het grote publiek.&lt;/p&gt; &lt;p&gt;See for youself :)&lt;/p&gt; &lt;iframe class="embeddedvideo" src="http://images.video.msn.com/flash/soapbox1_1.swf" width="432" height="364" id="894apmla" type="application/x-shockwave-flash" pluginspage="http://macromedia.com/go/getflashplayer"&gt;&lt;/iframe&gt;&lt;noembed&gt;&lt;a rel="nofollow" target="_blank" href="http://video.msn.com/?mkt=en-GB&amp;playlist=videoByUuids:uuids:7319adac-988e-49be-8505-a3c368d50680&amp;showPlaylist=true&amp;from=msnvideo" title="Microsoft Second Light"&gt;Video: Microsoft Second Light&lt;/a&gt;&lt;/noembed&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/VBElihK5iQ0" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/59-microsoft-secondlight-video.html</feedburner:origLink></item><item><title>Framework Design Guidelines video online</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/FoNMwcte_tQ/58-framework-design-guidelines-video-online.html</link><category>General</category><pubDate>Thu, 30 Oct 2008 12:01:55 PDT</pubDate><guid isPermaLink="false"></guid><description>Een mustread voor elke .NET developer is het boek &lt;a rel="nofollow" target="_blank" href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1225392423&amp;sr=8-3"&gt;Framework Design Guidelines&lt;/a&gt; van Krzysztof Cwalina en Brad Abrams. Deze twee mannen werken al zo'n 10 jaar aan design guidelines en hebben deze week op de PDC hun ervaringen gedeeld. Een video van hun presentatie staat inmiddels op Channel9. Een mustsee voor elke .NET developer.&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://channel9.msdn.com/pdc2008/PC58/"&gt;PDC talk: Framework Design Guidelines&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/FoNMwcte_tQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/blog/1-general/58-framework-design-guidelines-video-online.html</feedburner:origLink></item><item><title>[event] Microsoft Tech·Ed EMEA 2008 Developers</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/2ty_KxjlV-Q/16.html</link><category>Conferentie</category><pubDate>Wed, 08 Oct 2008 11:34:34 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: Microsoft Tech·Ed EMEA 2008 Developers&lt;br /&gt;Locatie: / &lt;br /&gt;Categorie: Conferentie&lt;br /&gt;Datum: 10.11.2008 - 14.11.2008&lt;br /&gt;Tijd: 19.00 h - 21.00 h&lt;br /&gt;Omschrijving: &lt;p&gt;Microsoft Tech·Ed EMEA 2008 Developers is the Microsoft premier technical education conference just for developers. For five days, you and more than 4,000 of your peers have countless opportunities to explore about the latest cutting-edge technologies from Microsoft. &lt;/p&gt; &lt;h2&gt;Be a part of the experience&lt;/h2&gt; &lt;ul&gt;&lt;li&gt;Design a personalized schedule from 15 Technical Tracks and 3 Virtual Tracks&lt;/li&gt;&lt;li&gt;Advance your development skills in one of more than 200 Breakout Sessions&lt;/li&gt;&lt;li&gt;Go deep with Microsoft experts in one of more than 90 Interactive Sessions&lt;/li&gt;&lt;li&gt;Take your time and drill down on a specific task with our Self Paced Hands-on Labs&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; Be a part of this year’s Tech·Ed EMEA 2008 Developers, 10-14 November 2008, in the CCIB, Barcelona, Spain. &lt;/p&gt;  &lt;h2&gt;For more information, check out the following:&lt;/h2&gt; &lt;ul&gt;&lt;li&gt; Is Tech·Ed EMEA 2008 Developers right for you? &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/emea/teched2008/developer/about/who.aspx"&gt; Learn who should attend. &lt;/a&gt;&lt;/li&gt;&lt;li&gt; Why you can’t afford to miss Tech·Ed EMEA 2008 Developers. &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/emea/teched2008/developer/about/benefits.aspx"&gt; See the benefits of attending.&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/2ty_KxjlV-Q" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/16.html</feedburner:origLink></item><item><title>Users Hebben Geen Username en Password!</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/ibhqy5_ImaM/39-users-hebben-geen-username-en-password.html</link><category>Artikelen</category><pubDate>Fri, 19 Sep 2008 05:02:03 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;span class="info"&gt;Artikel gepubliceerd in SDN magazine Mei 2008&lt;/span&gt; &lt;p&gt;Veel software engineers beweren object-georiënteerd te werken. Ze automatiseren bedrijfsprocessen voor klanten in een taal als Java of C# en menen hiermee voldoende grond te hebben voor deze bewering. Een nadere beschouwing van de implementaties die ze produceren leert echter vaak, dat ze de basisconcepten van object oriëntatie niet of nauwelijks toepassen. Daarnaast is het modelleren van de bedrijfsprocessen – tijdens of voor de bouwfase – een klassiek ondergeschoven kindje. Software architects, verantwoordelijk voor het ontwerp van de te bouwen systemen, blijven vaak op een te technische manier kijken naar het op te lossen probleem. Business architects ontplooien hun activiteiten daarentegen doorgaans op een te vaag of abstract niveau.&lt;/p&gt; &lt;p&gt;In dit artikel presenteren we onze visie op het belang van modelleren in software engineering trajecten. Hierbij kijken we naar verschillende basisconcepten die een sleutelrol spelen, alsmede verschillende activiteiten die onder deze noemer ontplooid kunnen worden.&lt;/p&gt; &lt;h2&gt;Modelering&lt;/h2&gt; &lt;p&gt;Veel gebruikte definities voor een “model” in de software engineering spreken vaak van een abstractie van de werkelijkheid, die door versimpeling overzicht biedt over complexe systemen. In onze optiek is modellering echter meer een vertaling van de werkelijkheid naar een systeem. De abstractie is tot op zekere hoogte noodzakelijk, maar er zou niet in alle gevallen sprake moeten zijn van een versimpeling. Automatisering van een bepaald bedrijfsprobleem wordt vaak aangevlogen door van het begin af aan een versimpelde voorstelling te maken van de werkelijkheid. Hierdoor valt er snel een gat tussen wat het bedrijf werkelijk doet en de software-representatie van het bedrijf in het systeem (van oudsher bestempeld als business-IT misalignment). Het is dus van belang de bedrijfsspecifieke problematiek zo goed mogelijk in een model te vangen. Uiteraard is het mogelijk om bepaalde onduidelijkheden op wat hoger abstractieniveau te beschrijven, maar een volledig uitgemodelleerd systeem bevat in feite geen of nauwelijks versimpelingen&lt;/p&gt; &lt;h2&gt;Concepten&lt;/h2&gt; &lt;p&gt;We richten ons hier voornamelijk op het modelleren volgens een object georiënteerde stijl. Een aantal basisconcepten die in deze stijl een belangrijke rol spelen bespreken we hier kort. In onze optiek is het belangrijkste kernconcept in deze stijl de combinatie van gedrag en statusinformatie die elk object represen- teert. Objecten worden opgedeeld in classes en deze opdeling zou hoofdzakelijk gemaakt moeten worden naar verantwoordelijkheden voor bepaalde kernconcepten of actoren binnen een bedrijfsdomein. Dit heeft met techniek totaal niets te maken. Waar objectoriëntatie vaak ingezet wordt om technische vraagstukken op te lossen, zien wij juist de kracht van dit paradigma in de automatisering van op het eerste gezicht complexe bedrijfsprocessen. Door juist de kernactoren in een organisatie te onderkennen en deze via duidelijk gedefinieerde grenzen (interfaces) te laten samenwerken om zo een bepaald probleem op te lossen, zijn er zeer efficiënte en compacte maar volledige modellen te realiseren.&lt;/p&gt; &lt;p&gt;Een belangrijke basisregel in object georiënteerd ontwerp is de zogenaamde active/passive rule. Actieve objecten in de buitenwereld zijn passief in het model en andersom. Een andere manier van het omschrijven van deze basisregel is via encapsulatie: een object is verantwoordelijk voor zijn eigen interne status (state). Via publiekelijk beschikbare methoden biedt elk object een interface aan de buitenwereld, waarmee zijn interne status al dan niet gemanipuleerd kan worden.&lt;/p&gt; &lt;p&gt;Een tweede belangrijke basisregel in object orientatie is de chain of responsibility. Uitgangspunt bij het modelleren is dat objecten verantwoordelijkheden zoveel mogelijk delegeren aan andere objecten om zichzelf zo leeg mogelijk te houden. Een eigenschap van betere objectgeoriënteerde modellen is dan ook, dat er een uniforme verdeling van logica over de verschillende classes bestaat. Door samenwerking met andere objecten - aangeduid als collaborations - lossen netwerken van objecten het gestelde probleem stap voor stap op.&lt;/p&gt; &lt;p&gt;Een derde concept dat we hier expliciet willen noemen, is de door Dijkstra reeds in de jaren ‘60 geponeerde ‘separation of concerns’. Dit concept hangt nauw samen met de active/passive rule, maar we stippen hem hier expliciet aan. Het is belangrijk dat verantwoordelijk- heden op een juiste manier gescheiden worden. Deze regel gaat voor meerdere niveaus op – van objecten tot groepen van objecten. Om meer grip op bovenstaande concepten te krijgen, zijn er verschillende bronnen van inspiratie beschikbaar. Een van de meest gebruikte bronnen zijn zogenaamde Design Patterns, geïntroduceerd in de software engineering door ‘The gang of four’ [GAM 95]. Dit werk biedt een overzicht van toepassingen van principes uit de object - oriëntatie, inclusief concrete implementaties. Inmiddels zijn er minimaal zoveel boeken over design patterns als dat er patterns zijn bedacht.&lt;/p&gt; &lt;h2&gt;Toepassen&lt;/h2&gt; &lt;p&gt;Hoe passen we deze concepten toe in een concreet voorbeeld? Laten we gewoon eens met een alledaags voorbeeld beginnen. Veel architecten of software engineers hebben in het verleden wel eens een authenticatiemodule moeten uitwerken. Dit soort functionaliteit zou op een meer procedureel gerichte manier als in onderstaande figuur geïmplementeerd kunnen worden.&lt;/p&gt; &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://born2code.net/images/stories/image_2.png"&gt;&lt;img src="http://born2code.net/images/stories/image_thumb.png" border="0" alt="UML weergave relatie User RegistrationManager" width="348" height="126"/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Het userobject zou in dit geval een gebruikersnaam en wachtwoord voeren. Daarnaast zou de status (voor registratie/verificatie) in een statusveld beschikbaar zijn. Een vrij recht-toe-recht-aan benadering, maar wat gebeurt er als er nieuwe authenticatiemethodes ondersteund moeten worden? Denk bijvoorbeeld aan een vingerafdruk of irisscan.&lt;/p&gt; &lt;p&gt;Een tweede aspect, dat minder gracieus OO ontwerp genoemd kan worden in dit model, is de RegistrationManager class. Deze dirigeert het registratieproces van de gebruiker, maar dit staat haaks op de chain of responsibility en heeft meer weg van procedureel program- meren dan objectgeoriënteerd. Bij simpelere scenario’s kan dit heel goed en snel werken; zodra er echter complexere processen gemaakt moeten worden, neemt de vereiste effort exponentieel toe.&lt;/p&gt; &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://born2code.net/images/stories/image_4.png"&gt;&lt;img src="http://born2code.net/images/stories/image_thumb_1.png" border="0" alt="UML weergave volledige domein" width="628" height="331"/&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Martin Fowler [FOW 03] refereert aan deze stijl ook wel als ‘Transac- tion Script’.Als we de concepten toepassen die we eerder genoemd hebben, krijgen we een heel ander model voor onze authenticatie - module, b.v. zoals in bovenstaand ontwerp te zien is.&lt;/p&gt; &lt;p&gt;Allereerst bevat de User class geen verwijzingen meer naar specifieke authenticatie-technische onderdelen als username of password. Gekozen is om een nieuwe class te introduceren die verantwoordelijk gemaakt wordt voor het authenticeren van gebruikers. De (abstracte) Credential class biedt een standaard interface voor diverse mogelijke implementaties van het authenticatiescenario. Op deze manier kan door subclassing van de Credential class gekozen worden voor een fingerprint authenticatie, username/pasword authenticatie of wat al niet meer. Dit is een mooi voorbeeld van hoe goed ontwerp flexibiliteit kan verhogen zonder alles configurabel te maken.&lt;/p&gt; &lt;p&gt;Een tweede interessant onderdeel is de structuur die gekozen is om een registratieproces af te handelen. Registratie is typisch een proces dat middels een aantal sequentiële stappen een aantal gegevens van een gebruiker verzamelt via verschillende kanalen (email, sms, etc.). Na elke stap verandert de status van de gebruiker. Aangezien een dergelijk proces vaak verschillende eisen heeft (registratie voor een social net- working site is vaak wat minder kritisch dan registatie bij een bank) zouden we graag een patroon introduceren, dat ons in staat stelt het registratieproces elke keer anders te implementeren, waarbij we wel met de standaard User class kunnen blijven werken. De gekozen structuur is die van een State pattern als beschreven in het standaard werk over design patterns [GAM 95]. Dit patroon stelt ons in staat om transities die we uitvoeren op een user, te delegeren naar een state object met verschillende verschijningsvormen. Elke tran- sitie (Registreer(), Verifieer()) heeft een nieuwe state tot gevolg waarbij deze nieuwe state zijn voorganger kent. Op deze manier kunnen we een keten aan states laten beslissen wat de volgende stap in het proces zou moeten zijn.&lt;/p&gt; &lt;h2&gt;Conclusie&lt;/h2&gt; &lt;p&gt;We hebben in dit artikel kort gesproken over een aantal kernbegrippen binnen object georiënteerd ontwerp. Daarnaast is het belang van design patterns benadrukt en hoe deze standaard blokjes functionaliteit kunnen bijdragen aan een beter ontwerp. Afsluitend hebben we laten zien hoe we een veel voorkomend probleem op een andere manier kunnen oplossen waardoor we winnen aan flexibiliteit. We hebben hiermee laten zien, dat platte procedurele automatisering van bedrijfsprocessen tot moeilijk uitbreidbare en minder herbruikbare oplossingen leidt en dat toepassing van object-georiënteerd ontwerp een extra dimensie aan modellen kan toevoegen.&lt;/p&gt; &lt;h2&gt;Referenties&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;[GAM 95] Gamma et al. Design Patterns. Wiley, 1995 &lt;/li&gt; &lt;li&gt;[FOW 03] Martin Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2003 &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;Over de autheurs&lt;/h2&gt; &lt;p&gt;André Boonzaaijer is werkzaam bij Sogyo als Senior Software Engineer. Naast software ontwikkeling houdt hij zich bezig met modellering, ontwerp en architectuur van systemen. Tevens is hij betrokken bij het verzorgen van trainingen en masterclasses op het gebied van zijn expertise.&lt;/p&gt; &lt;p&gt;Pieter Joost van de Sande heeft een enorme passie voor alles wat met .NET en community te maken heeft. Hij is bestuurslid van dotNed, werkt mee aan verschillende open source projecten, heeft verschillende artikelen gepubliceerd en is regelmatig spreker op events. Voor zijn inzet voor de community heeft Microsoft hem in 2007 met de MVP C# Award beloond.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/ibhqy5_ImaM" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/artikelen/39-users-hebben-geen-username-en-password.html</feedburner:origLink></item><item><title>[event] Software Developer Conference 2008</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/HZWs_YJ86Rg/15.html</link><category>Conferentie</category><pubDate>Thu, 18 Sep 2008 09:32:05 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: Software Developer Conference 2008&lt;br /&gt;Locatie: Leeuwenhost Conference Centre / Noordwijkerhout&lt;br /&gt;Categorie: Conferentie&lt;br /&gt;Datum: 06.10.2008 - 07.10.2008&lt;br /&gt;Tijd: 19.00 h - 21.00 h&lt;br /&gt;Omschrijving: &lt;div id="dnn_ctr393_MLHTML_HtmlHolder" class="Normal"&gt;&lt;p&gt;Op 6 en 7 oktober organiseert het Software Development Network voor de 17e maal de SDN Conference. Voor jou als deelnemer betekent dat de zekerheid van het SDN als organisator van Conferenties voor Developers: de zekerheid van een goed geoliede organisatie en van commitment.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Don’t miss IT!&lt;/strong&gt; Dé toonaangevende Developer Conference in 100 procent jóuw taal! Ontwikkel je met C#, VB.Net, ASP.Net, DotNetNuke of Delphi dan is dit hét evenement om (weer) helemaal op de hoogte te raken. Kom twee dagen lang naar de SDN Conference. Een wereld line-up aan sprekers, zoals je van het SDN gewend bent, de mondiale guru’s van jouw ontwikkeltaal. Deel kennis en ervaringen met honderden SDN-developers. Ontdek in welke richting de omgeving en talen zich ontwikkelen. Voel de vibes en kom bruisend van inspiratie terug. Ontvang bovendien een assortiment aan tools, technieken en gadgets. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;SDN Conference 2008 mag je niet missen!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;De voorgaande editie in 2007 trok meer dan 450 developers, die luisterden naar, keken naar en spraken met meer dan 35 nationale en internationale sprekers. En deze 17e editie zal alleen maar beter, diepgaander en vernieuwender worden met informatie op alle niveaus over C#, Visual Basic.NET, ASP.NET, DotNetNuke, Delphi(.Net), SQL, Databases enz., enz. Deze SDN Conference kent en behoeft eigenlijk geen expliciet thema, want als je kijkt naar de sprekers en sessies, dan is er maar 1 thema mogelijk: de Software Developer, jij dus!&lt;/p&gt; &lt;p&gt;Gebleven is de focus op talen, de richting waarin het SDN zich inhoudelijk nog weer verder wil ontwikkelen, ook middels deze SDC. Het arsenaal van SDC 2008 bevat dan ook tracks op de volgende gebieden:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;.NET (C#, VB, etc.)&lt;/li&gt;&lt;li&gt;Usability (ASP.Net, Silverlight, Expressions, Flash, etc.)&lt;/li&gt;&lt;li&gt;Information Worker (MOSS, BizTalk, OBA, etc.)&lt;/li&gt;&lt;li&gt;DotNetNuke (OpenForce Europe ’08 conference)&lt;/li&gt;&lt;li&gt;Delphi&lt;/li&gt;&lt;li&gt;Databases&lt;/li&gt;&lt;li&gt;Architecture&lt;/li&gt;&lt;li&gt;Algemene sessies&lt;/li&gt;&lt;/ul&gt;Meer informatie vind je op de SDC website: &lt;a rel="nofollow" target="_blank" href="http://www.sdc.nl/Default.aspx?tabid=36&amp;language=nl-NL" title="Software Developers Conference website"&gt;www.sdc.nl&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/HZWs_YJ86Rg" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/15.html</feedburner:origLink></item><item><title>[event] Jimmy Nilsson - Beyond Agile &amp; Is DDD more then Entities and Repositories?</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/vcEHF9u5lOE/14.html</link><category>Bijeenkomst</category><pubDate>Wed, 16 Apr 2008 13:45:13 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: Jimmy Nilsson - Beyond Agile &amp; Is DDD more then Entities and Repositories?&lt;br /&gt;Locatie: Seats 2 Meat Maarsen / Maarssen&lt;br /&gt;Categorie: Bijeenkomst&lt;br /&gt;Datum: 24.04.2008&lt;br /&gt;Tijd: 18.00 h - 22.30 h&lt;br /&gt;Omschrijving: &lt;h2&gt;Sessie 1: Beyond agile&lt;/h2&gt;
&lt;p&gt;Right now you might be feeling that everybody is so agile it hurts, that they have been using the agile practices for decades and that agile is the solution to every problem. Don't get me wrong, I do like the agile practices. I have tried to apply them to the best of my understanding for a couple of years and I think I start to have a feeling for how to. Yet, while we may be getting better and better at applying the agile practices, let's just assume for a moment that the agile practices are a commodity and we can take them as granted. Then what? There are technologies, practices, and concepts that are not typically considered as being the agile practices and are not yet widespread. But even if they aren't part of the dogma, they are highly useful. It might be both interesting and important to have a look at these and get started with them if you haven't already done so. In this session we will start with a quick look at problems that the agile practices don't focus on, and then discuss possible solutions.&lt;/p&gt;
&lt;h2&gt;Sessie 2: Is Domain-Driven Design more than Entities and Repositories?&lt;/h2&gt;
&lt;p&gt;Yes, the design language stipulated in Domain-Driven Design (DDD) has many more elements than just Entities and Repositories. But that’s just the automatic answer. In this presentation we will dive out and discuss DDD from some other angles as well and not just the basic building blocks. We will discuss DDD philosophy, the ubiquitous language, strategic design, DDD layering and the value of value objects.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/vcEHF9u5lOE" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/14.html</feedburner:origLink></item><item><title>[event] DSL Tools en VS Shell</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/BNWPO77yZUk/13.html</link><category>Workshop</category><pubDate>Fri, 04 Apr 2008 06:16:38 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: DSL Tools en VS Shell&lt;br /&gt;Locatie: / &lt;br /&gt;Categorie: Workshop&lt;br /&gt;Datum: 10.04.2008 - 10.04.2008&lt;br /&gt;Tijd: 18.00 h - 21.00 h&lt;br /&gt;Omschrijving: &lt;p&gt;Je hebt de sessies gevolgd, je hebt de websites en blogs gelezen, nu wil je zelf aan de gang. Maar ja.... hoe?&lt;/p&gt;
&lt;p&gt;Onze workshops, of liever gezegd: hands-on labs bieden een uitkomst! Onder begeleiding van experts ga je zelf aan de gang. Dit is het vervolg op de theoretische sessie, met meer info, meer interactie en meer diepgang!&lt;/p&gt;
&lt;p&gt;Geinteresseerd? Schrijf je in en kom langs!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/BNWPO77yZUk" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/13.html</feedburner:origLink></item><item><title>[event] Trends in .NET en Developing XBOX games</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/1a0MnVe6EFs/12.html</link><category>Bijeenkomst</category><pubDate>Thu, 13 Mar 2008 10:44:40 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: Trends in .NET en Developing XBOX games&lt;br /&gt;Locatie: Sogyo / De Bilt&lt;br /&gt;Categorie: Bijeenkomst&lt;br /&gt;Datum: 12.02.2008&lt;br /&gt;Tijd: 18.00 h - 21.00 h&lt;br /&gt;Omschrijving: &lt;p&gt;In dit seminar krijg je een brede overview van belangrijke ontwikkelingen op .NET vlak en specifiek de rol van XNA.&lt;/p&gt;
&lt;p&gt;Pieter Joost van de Sande zal een introductie geven over Microsoft’s XNA, waarin hij o.a. vertelt waarom Microsoft het framework op de markt heeft gezet en waarom dit voor .NET ontwikkelaars en software ontwikkelaars zo interessant is. Pieter Joost zal verder live in een korte XNA-demo een flightsimulator bouwen en een demo geven waarin hij de Wii-mote gebruikt als input device.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/1a0MnVe6EFs" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/12.html</feedburner:origLink></item><item><title>[event] Domain Driven Design in .NET</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/D6uycP0XXhc/11.html</link><category>Bijeenkomst</category><pubDate>Thu, 13 Mar 2008 10:40:03 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: Domain Driven Design in .NET&lt;br /&gt;Locatie: Sogyo / De Bilt&lt;br /&gt;Categorie: Bijeenkomst&lt;br /&gt;Datum: 24.04.2008&lt;br /&gt;Tijd: 19.00 h - 21.00 h&lt;br /&gt;Omschrijving: &lt;p&gt;De alom bekende Jimmy Nillson zal naar Nederland komen om ons te vertellen over Domain Driven Design en hoe deze architectuur style toe te passen is in .NET&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/D6uycP0XXhc" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/11.html</feedburner:origLink></item><item><title>[event] Microsoft DevDays 2008</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/ceztLqkQmWI/10.html</link><category>Bijeenkomst</category><pubDate>Thu, 13 Mar 2008 10:26:04 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: Microsoft DevDays 2008&lt;br /&gt;Locatie: Amsterdam RAI / Amsterdam&lt;br /&gt;Categorie: Bijeenkomst&lt;br /&gt;Datum: 22.05.2008 - 23.05.2008&lt;br /&gt;Tijd: 19.00 h - 21.00 h&lt;br /&gt;Omschrijving: &lt;p&gt;Op 22 en 23 mei staat de Amsterdam RAI bol van de ideeën. Twee dagen boordevol nieuws, inspirerende showcases en achtergronden moeten u als developer wel op ideeën brengen. Maar met een idee alleen bent u er niet... U wilt uw idee de kans geven realiteit te worden. DevDays 2008 reikt u de handvatten aan om dit te bewerkstelligen; u krijgt toegang tot de technologie, kennis en ervaring waarmee u uw eigen ideeën tot leven kunt brengen.&lt;/p&gt;
&lt;p&gt;Inspiratie krijgt u dit jaar van internationale topsprekers zoals Daniel Moth en Ingo Rammer. Buiten de sessies over onderwerpen zoals het .NET Framework 3.5, Visual Studio 2008, ASP.NET Ajax en het 2007 Microsoft Office System is er natuurlijk weer van alles te doen. Dit jaar is er een speciaal avondprogramma onder de naam DevDays Geek
Night. Op deze speciale avond kunt u onder het genot van een hapje en drankje even bijkomen van alle ervaringen die u tijdens DevDays hebt opgedaan. Op deze avond staat plezier voorop en is er ruime aandacht voor producten en oplossingen die veelal onderbelicht blijven, maar het vak van developer zo boeiend en interessant maken.&lt;/p&gt;
&lt;p&gt;Dit jaar wordt DevDays 2008 wederom gecombineerd met een congres speciaal voor (online) grafisch ontwerpers. Mix Essentials biedt bezoekers acht boeiende sessies die uitgebreid ingaan op alle design-aspecten van Windows- en webapplicaties.&lt;/p&gt;
&lt;p&gt;DevDays 2008 - dat is nieuwe ideeën opdoen en die tot leven wekken. Die kans mag u als ontwikkelaar natuurlijk niet missen!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/ceztLqkQmWI" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/10.html</feedburner:origLink></item><item><title>[event] Expeditie 2008</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/dO4xxWuoqe8/9.html</link><category>Bijeenkomst</category><pubDate>Thu, 13 Mar 2008 10:14:29 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: Expeditie 2008&lt;br /&gt;Locatie: Reehorst / Ede&lt;br /&gt;Categorie: Bijeenkomst&lt;br /&gt;Datum: 28.03.2008&lt;br /&gt;Tijd: 08.30 h - 17.30 h&lt;br /&gt;Omschrijving: &lt;p&gt;Op vrijdag 28 maart organiseert het SDN het 1e Software Developer Event van 2008 onder de noemer "Expeditie 2008”: welke nieuwe zaken komen in 2008 op ons als developers af waar we ons, uiteraard met hulp van o.a. het SDN, weer manmoedig doorheen ‘moeten’ slaan? Traditiegetrouw wordt tijdens deze SDE ook de Algemene Ledenvergadering gehouden, daar heb je de kans om je stem over het afgelopen jaar maar ook over de toekomst van het SDN te laten horen.&lt;/p&gt;
&lt;p&gt;Naast het vertrouwde programma van de SDE is er ook de Community Launch van Visual Studio 2008, SQL Server 2008 en Windows Server 2008. Hoewel Microsoft deze producten op 6 maart in Nieuwegein launcht, zullen de communities dat gelijktijdig met de SDE van de SDN doen. Voor deze launch is een speciale track gevuld. Aan de invulling van deze track is mee gewerkt door de verschillende Communities van Nederland, VBcentral, St. DotNed, PASS Nederland en de SDN. De launch track bestaat uit sessies over: What’s new in Visual Basic 2008, SQL Server 2008 for developers, LINQ to SQL, Quality tools in VS2008 en IIS7 in Windows Server 2008. Het volledige programma is hieronder te vinden.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/dO4xxWuoqe8" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/9.html</feedburner:origLink></item><item><title>[event] DSL Tools en VS Shell</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/kalholuUmj8/8.html</link><category>Bijeenkomst</category><pubDate>Thu, 13 Mar 2008 10:02:58 PDT</pubDate><guid isPermaLink="false"></guid><description>Titel: DSL Tools en VS Shell&lt;br /&gt;Locatie: Peak IT Den Haag / Den Haag&lt;br /&gt;Categorie: Bijeenkomst&lt;br /&gt;Datum: 27.03.2008&lt;br /&gt;Tijd: 19.00 h - 21.00 h&lt;br /&gt;Omschrijving: De Visual Studio Shell is eigenlijk niets anders dan Visual Studio zonder alle compilers en talen. Je kunt het bijvoorbeeld gebruiken om je eigen DSL's te maken. In deze sessie laat Dennis zien hoe je je eigen ontwikkelomgeving kunt bouwen met daarin je eigen Domain Specific Language. De DSL die we gaan ontwikkelen is een simpele, maar toch zul je zien hoe ontzettend krachtig deze mogelijkheid is. En zeg nou zelf: wie wil nou niet een eigen editor voor zijn DSL's maken?&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/kalholuUmj8" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/8.html</feedburner:origLink></item><item><title>[event] Serious Gaming, serious business for IT</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/FoJBSv3Pvlc/7.html</link><category>Bijeenkomst</category><pubDate>Fri, 07 Mar 2008 05:58:11 PST</pubDate><guid isPermaLink="false"></guid><description>Titel: Serious Gaming, serious business for IT&lt;br /&gt;Locatie: Hogeschool Utrecht / Utrecht&lt;br /&gt;Categorie: Bijeenkomst&lt;br /&gt;Datum: 01.04.2008&lt;br /&gt;Tijd: 09.30 h - 17.00 h&lt;br /&gt;Omschrijving:&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/FoJBSv3Pvlc" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/events/details/7.html</feedburner:origLink></item><item><title>New Item Template, public access modifier</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/1c3Z8xNCjZc/4-new-item-template-public-access-modifier.html</link><category>Artikelen</category><pubDate>Sat, 29 Sep 2007 08:42:20 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;span class="note"&gt;Niet getest met Visual Studio 2008.&lt;/span&gt;
&lt;p&gt;Iets wat we toch vrij veel doen als developers is nieuwe classes aanmaken. Dit voornamelijk gescheiden in aparte bestanden. Nu ga ik er eigenlijk ook vanuit van jullie ook allemaal gebruik maken van Visual Studio en dat jullie ook voor sommige projecten Visual Studio 2005 gebruiken. Het laatste waar ik ook vanuit ga is dat jullie voor sommige projecten C# gebruiken. Voldoe je niet aan deze punten, dan is het misschien toch verstandig om even verder te lezen omdat je er wellicht in de toekomst nog mee in aanraking komt.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/1c3Z8xNCjZc" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/artikelen/4-new-item-template-public-access-modifier.html</feedburner:origLink></item><item><title>?? operator</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/_DsDU0cbJhg/5--operator.html</link><category>Artikelen</category><pubDate>Sat, 04 Aug 2007 04:24:00 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Na een C# code sample die ik naar een collega had gestuurd kwam hij met de vraag wat het volgende statement nou precies inhoud:&lt;/p&gt;&lt;pre&gt;return note ?? String.Empty;&lt;/pre&gt;
&lt;p&gt;In dit statement maak ik gebruik van een nieuwe operator die in C# 2.0 geïntroduceerd is. Blijkbaar is deze operator nog niet bij iedereen bekend, dus we reden genoeg om deze operator even onder de aandacht te brengen!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/_DsDU0cbJhg" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/artikelen/5--operator.html</feedburner:origLink></item><item><title>Bandwidth throttling</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/8fitSiNa8qE/13-bandwidth-throttling.html</link><category>Artikelen</category><pubDate>Mon, 02 Apr 2007 07:36:44 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;span class="info"&gt;Dit is een crosspost van codeproject. Zie het orgineel inclusief source code vind je op CodeProject zelf: &lt;a rel="nofollow" target="_blank" href="http://www.codeproject.com/KB/IP/Bandwidth_throttling.aspx"&gt;CodeProject: Bandwidth throttling&lt;/a&gt;.&lt;/span&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Hosting a website can be fun. But when you offer big downloads or streaming media you do not want a visitor to eat up the full bandwith. Or maybe you want to offer a premium account from where users can download without limitation and a free account where users cannot download faster than 50kb/s. Here is where throttling comes in.
&lt;p&gt;Bandwidth throttling helps provide quality of service (QoS) by limiting network congestion and server crashes. For example, you make sure a connection does not get more then an X number of bytes per second. &lt;p&gt;The purpose of this article is to show how to use bandwidth throttling with a small helper class. &lt;h2&gt;Using the code&lt;/h2&gt;
&lt;p&gt;Within the source code you will find a class named &lt;code&gt;ThrottledStream&lt;/code&gt;. This class is derived from the abstract &lt;code&gt;Stream&lt;/code&gt; that can be found in the &lt;code&gt;System.IO &lt;/code&gt;namespace. In the constructor it accepts a &lt;em&gt;base&lt;/em&gt; stream to throttle. Here is a small line of code that shows how to instantiate a &lt;code&gt;ThrottledStream&lt;/code&gt;:&lt;pre&gt;Stream throttledStream = new ThrottledStream(Response.OutputStream, 1024);&lt;/pre&gt;
&lt;p&gt;Now everything you do with the &lt;code&gt;throttledStream&lt;/code&gt; will be limited to 1024 bytes per second and will be send to or read from the &lt;code&gt;OutputStream&lt;/code&gt; that is a member of the Response property that exists within an ASP.NET page.
&lt;p&gt;Because the &lt;code&gt;ThrottledStream&lt;/code&gt; is derived from the abstract &lt;code&gt;Stream&lt;/code&gt; class it is easy to add throttling to an existing application or website. For example when you have a process that sends file content over a &lt;code&gt;Stream&lt;/code&gt; and you want to enable bandwidth throttling, you only have to change the initialization of the destination stream. &lt;p&gt;The old code can look like this:&lt;pre&gt;Stream sourceStream;
Stream destinationStream; try
{ sourceStream = new FileStream(@"c:&amp;#92;myfile.bin", FileMode.Open, FileAccess.Read, FileShare.Read); destinationStream = new NetworkStream(mySocket, false); byte[] buffer = new byte[1024]; int readCount = sourceStream.Read(buffer, 0, BufferSize); while (readCount &amp;gt; 0) { destinationStream.Write(buffer, 0, readCount); readCount = sourceStream.Read(buffer, 0, BufferSize); }
}
finally
{ if (destinationStream != null) { destinationStream.Close(); } if (sourceStream != null) { sourceStream.Close(); }
}&lt;/pre&gt;
&lt;p&gt;Now we can easily add throttling support to this process. We only need to change the initialization: &lt;pre&gt; ... Stream originalDestinationStream = new NetworkStream(mySocket, false);
destinationStream = new ThrottledStream(originalDestinationStream, 51200); ...&lt;/pre&gt;
&lt;p&gt;By adding only one line of code this full process is throttled to 50 kb/s (51200 b/s). Now we go even a step further and will add throttling that is based on a membership:&lt;pre&gt; ... long bps; switch( user.Membership )
{ case MembershipLevel.Bronze: bps = 51200; break; case MembershipLevel.Silver: bps = 102400; break; case MembershipLevel.Gold: bps = 153600; break; case MembershipLevel.Platina: bps = ThrottledStream.Infinite; break;
} Stream originalDestinationStream = new NetworkStream(mySocket, false);
destinationStream = new ThrottledStream(originalDestinationStream, bps); ...&lt;/pre&gt;
&lt;p&gt;Here we have a situation where a Bronze membership will give you 50kb/s, Silver 100kb/s, Gold 150kb/s and Platina infinitive (no throttling).
&lt;h2&gt;Points of Interest&lt;/h2&gt;
&lt;p&gt;Bandwidth throttling can improve the QoS of your server and allows you to control the bandwidth for a specified connection. The helper class named &lt;code&gt;ThrottledStream&lt;/code&gt; is very easy to use and can be used in existing scenarios.&lt;/p&gt;
&lt;span class="download"&gt;You can download the project source here: &lt;a rel="nofollow" target="_blank" href="http://born2code.net//custom/attachments/throttling.zip"&gt;throttling.zip&lt;/a&gt;.&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/8fitSiNa8qE" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/artikelen/13-bandwidth-throttling.html</feedburner:origLink></item><item><title>Getting MIME types from extension</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/kJl5ZdBoQmY/14-getting-mime-types-from-extension.html</link><category>Artikelen</category><pubDate>Thu, 15 Feb 2007 06:48:03 PST</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Voor een implementatie voor het serveren van attachments moest ik de MIME specificeren. Omdat ik mijn code generiek wil houden, ben ik aan de slag gegaan om niet alleen de MIME types te specificeren die ik op dit moment moet serveren. En dat is de reden dat ik MimeTypes.cs geintroduceerd heb in mijn project.
&lt;/p&gt;&lt;p&gt;Omdat ik vast niet de enige ben die dit nodig heeft, wil ik het delen.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/kJl5ZdBoQmY" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/artikelen/14-getting-mime-types-from-extension.html</feedburner:origLink></item><item><title>Impersonation class</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/6MLW7ZDztb0/19-impersonation-class.html</link><category>Artikelen</category><pubDate>Sun, 06 Aug 2006 08:04:00 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;p&gt;Een klant liep tegen een rechten probleem aan. De ingelogde gebruiker waaronder de applicatie werd uitgevoerd had niet voldoende rechten. Afdeling systeem beheer wou hier liever geen uitzondering voor maken en gaf de voorkeur aan een apparte account waaronder deze code uitgevoerd kon worden zonder dat de gebruiker onder deze account ingelogd diende te zijn. Kort gezegt, het is dus de bedoeling dat sommige code uitgevoerd word onder een anderen user account.&lt;/p&gt;
&lt;p&gt;Als impersonation het eerste is wat in je opkomt zit je goed. Impersonation, oftewel het uitvoeren van code onder een andere gebruiker, is enorm handig als je iets wilt doen waar de huidige gebruiker niet genoeg rechten heeft. Dit kan bijvoorbeeld zijn dat een bepaalde directory uit te lezen of een bepaalde registery key value te kunnen wijzigen.&lt;/p&gt;
&lt;p&gt;Het FCL is enorm groot en bevat veel classes die taken opzich kunnen nemen. Helaas bestaat er nog geen class die de volledige impersonation taak op zich kan nemen en we zullen daarom gebruik moeten maken van P/Invoke om Win32 API calls te kunnen doen. De WindowsIdentity class uit de System.Security.Principal namespace kan een impersonation uitvoeren als jij hem de usertoken leverd. Dit is al een probleem, want deze is zonder een Win32 API niet te verkrijgen. In iedergeval niet vanuit een Domain&amp;#92;Username en password.&lt;/p&gt;
&lt;p&gt;Dan maar zelf aan de slag! Zoals ik al aangaf kunnen we als we de usertoken weten een heel eind komen met de WindowsIdentity class of met de &lt;a rel="nofollow" title="ImpersonateLoggedOnUser on MSDN" target="_blank" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/security/impersonateloggedonuser.asp"&gt;ImpersonateLoggedOnUser&lt;/a&gt; method uit &lt;code&gt;advapi32.dll&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Aan de slag&lt;/h3&gt;
&lt;p&gt;Het eerste en het meest belangrijkste wat we nodig hebben is the usertoken van de gebruiker waaronder we tijdelijk code willen uitvoeren. Hiervoor gebruiken we de &lt;a rel="nofollow" title="LogonUser documentation on MSDN" target="_blank" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/logonuser.asp"&gt;&lt;code&gt;LogonUser&lt;/code&gt;&lt;/a&gt; method uit &lt;code&gt;advapi32.dll&lt;/code&gt; en zullen de method signature eerst moeten specificeren zodat de compiler weet wat we willen callen en waar dit te vinden is. Voor de &lt;code&gt;LogonUser&lt;/code&gt; method gebruiken we het volgende (in de volledige code file vind je ook de enum declaraties):&lt;/p&gt;&lt;pre&gt;[DllImport(“advapi32.dll”, SetLastError=true)]
private static extern bool LogonUser( string username, string domain, string password, LogonType logonType, LogonProvider logonProvider, out IntPtr userToken );&lt;/pre&gt;
&lt;p&gt;Via deze method krijgen we de usertoken, de pointer naar de handle van de gebruiker, waarmee we de impersonation kunnen uitvoeren.&lt;br /&gt;De impersonation is daarna vrij simpel. Door een instantie van het WindowsIdentity te creeëren en de Impersonate method aan te roepen:&lt;/p&gt;&lt;pre&gt;// Create windows identity from the token and impersonate the user.
WindowsIdentity identity = new WindowsIdentity( userTokenDuplication );
WindowsImpersonationContext impersonationContext = identity.Impersonate(); try
{ // Run code withing the impersonation.
}
finally
{ // Revert to previous user. impersonationContext.Undo();
}&lt;/pre&gt;
&lt;p&gt;Omdat ik een herbruikbare class wil maken en ook een class die makelijk te gebruiken is, heb ik er voor gekozen om de impersonation direct in the constructor van de class uitgevoerd en het terug te draaien in de Dispose method. Door de class te implementeren met de IDisposeable interface is hij te gebruiken in een using statemen. Dit resulteerd in een easy-to-use constructie:&lt;/p&gt;&lt;pre&gt;using( new Impersonation( “pjvandesande”, “born2code.net”, “password” ) )
{ // Voer code uit onder anderen account.
}&lt;/pre&gt;
&lt;h3&gt;De volledige code&lt;/h3&gt;
&lt;p&gt;De volledige source van de Impersonation class:&lt;/p&gt;&lt;pre&gt;using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Security.Principal; namespace Born2Code.Net
{ public enum LogonType : int { ///  /// This logon type is intended for users who will be interactively using the computer, such as a user being logged on /// by a terminal server, remote shell, or similar process. /// This logon type has the additional expense of caching logon information for disconnected operations; /// therefore, it is inappropriate for some client/server applications, /// such as a mail server. ///  Interactive = 2, ///  /// This logon type is intended for high performance servers to authenticate plaintext passwords. /// The LogonUser function does not cache credentials for this logon type. ///  Network = 3, ///  /// This logon type is intended for batch servers, where processes may be executing on behalf of a user without /// their direct intervention. This type is also for higher performance servers that process many plaintext /// authentication attempts at a time, such as mail or Web servers. /// The LogonUser function does not cache credentials for this logon type. ///  Batch = 4, ///  /// Indicates a service-type logon. The account provided must have the service privilege enabled. ///  Service = 5, ///  /// This logon type is for GINA DLLs that log on users who will be interactively using the computer. /// This logon type can generate a unique audit record that shows when the workstation was unlocked. ///  Unlock = 7, ///  /// This logon type preserves the name and password in the authentication package, which allows the server to make /// connections to other network servers while impersonating the client. A server can accept plaintext credentials /// from a client, call LogonUser, verify that the user can access the system across the network, and still /// communicate with other servers. /// NOTE: Windows NT: This value is not supported. ///  NetworkCleartText = 8, ///  /// This logon type allows the caller to clone its current token and specify new credentials for outbound connections. /// The new logon session has the same local identifier but uses different credentials for other network connections. /// NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. /// NOTE: Windows NT: This value is not supported. ///  NewCredentials = 9, } public enum LogonProvider : int { ///  /// Use the standard logon provider for the system. /// The default security provider is negotiate, unless you pass NULL for the domain name and the user name /// is not in UPN format. In this case, the default provider is NTLM. /// NOTE: Windows 2000/NT: The default security provider is NTLM. ///  Default = 0, } public class Impersonation : IDisposable { #region Dll Imports ///  /// Closes an open object handle. ///  /// A handle to an open object. /// True when succeeded; otherwise false . [DllImport(“kernel32.dll”)] private static extern Boolean CloseHandle(IntPtr hObject); ///  /// Attempts to log a user on to the local computer. ///  /// This is the name of the user account to log on to. /// If you use the user principal name (UPN) format, user@DNSdomainname, the /// domain parameter must be null . /// Specifies the name of the domain or server whose /// account database contains the lpszUsername account. If this parameter /// is null , the user name must be specified in UPN format. If this /// parameter is “.”, the function validates the account by using only the /// local account database. /// The password /// The logon type /// The logon provides /// The out parameter that will contain the user /// token when method succeeds. /// True when succeeded; otherwise false . [DllImport(“advapi32.dll”, CharSet=CharSet.Auto, SetLastError=true)] private static extern bool LogonUser( string username, string domain, string password, LogonType logonType, LogonProvider logonProvider, out IntPtr userToken ); ///  /// Creates a new access token that duplicates one already in existence. ///  /// Handle to an access token. /// The impersonation level. /// Reference to the token to duplicate. ///  [DllImport(“advapi32.dll”, CharSet=CharSet.Auto, SetLastError=true)] private static extern bool DuplicateToken( IntPtr token, int impersonationLevel, ref IntPtr duplication ); ///  /// The ImpersonateLoggedOnUser function lets the calling thread impersonate the /// security context of a logged-on user. The user is represented by a token handle. ///  /// Handle to a primary or impersonation access token that represents a logged-on user. /// If the function succeeds, the return value is nonzero. [DllImport(“advapi32.dll”, SetLastError=true)] static extern bool ImpersonateLoggedOnUser( IntPtr userToken ); #endregion #region Private members ///  /// true if disposed; otherwise, false . ///  private bool _disposed; ///  /// Holds the created impersonation context and will be used /// for reverting to previous user. ///  private WindowsImpersonationContext _impersonationContext; #endregion #region Ctor &amp;amp; Dtor ///  /// Initializes a new instance of the  class and /// impersonates with the specified credentials. ///  /// his is the name of the user account to log on /// to. If you use the user principal name (UPN) format, /// user@DNS_domain_name, the lpszDomain parameter must be null . /// The name of the domain or server whose account /// database contains the lpszUsername account. If this parameter is /// null , the user name must be specified in UPN format. If this /// parameter is “.”, the function validates the account by using only the /// local account database. /// The plaintext password for the user account. public Impersonation( String username, String domain, String password ) { IntPtr userToken = IntPtr.Zero; IntPtr userTokenDuplication = IntPtr.Zero; // Logon with user and get token. bool loggedOn = LogonUser( username, domain, password, LogonType.Interactive, LogonProvider.Default, out userToken ); if( loggedOn ) { try { // Create a duplication of the usertoken, this is a solution // for the known bug that is published under KB article Q319615. if( DuplicateToken( userToken, 2, ref userTokenDuplication ) ) { // Create windows identity from the token and impersonate the user. WindowsIdentity identity = new WindowsIdentity( userTokenDuplication ); _impersonationContext = identity.Impersonate(); } else { // Token duplication failed! // Use the default ctor overload // that will use Mashal.GetLastWin32Error(); // to create the exceptions details. throw new Win32Exception(); } } finally { // Close usertoken handle duplication when created. if( !userTokenDuplication.Equals( IntPtr.Zero ) ) { // Closes the handle of the user. CloseHandle( userTokenDuplication ); userTokenDuplication = IntPtr.Zero; } // Close usertoken handle when created. if( !userToken.Equals( IntPtr.Zero ) ) { // Closes the handle of the user. CloseHandle( userToken ); userToken = IntPtr.Zero; } } } else { // Logon failed! // Use the default ctor overload that // will use Mashal.GetLastWin32Error(); // to create the exceptions details. throw new Win32Exception(); } } ///  /// Releases unmanaged resources and performs other cleanup operations before the ///  is reclaimed by garbage collection. ///  ~Impersonation() { Dispose( false ); } #endregion #region Public methods ///  /// Reverts to the previous user. ///  public void Revert() { if( _impersonationContext != null ) { // Revert to previour user. _impersonationContext.Undo(); _impersonationContext = null; } } #endregion #region IDisposable implementation. ///  /// Performs application-defined tasks associated with freeing, releasing, or /// resetting unmanaged resources and will revent to the previous user when /// the impersonation still exists. ///  public void Dispose() { Dispose( true ); GC.SuppressFinalize(this); } ///  /// Performs application-defined tasks associated with freeing, releasing, or /// resetting unmanaged resources and will revent to the previous user when /// the impersonation still exists. ///  /// Specify true when calling the method directly /// or indirectly by a user’s code; Otherwise false . protected virtual void Dispose( bool disposing ) { if( !_disposed ) { Revert(); _disposed = true; } } #endregion }
}&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/6MLW7ZDztb0" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/artikelen/19-impersonation-class.html</feedburner:origLink></item><item><title>Events vs. delegates</title><link>http://feedproxy.google.com/~r/Born2Codenet/~3/BuZ9KwM6c9o/3-events-vs-delegates.html</link><category>Artikelen</category><pubDate>Sat, 15 Jul 2006 04:24:21 PDT</pubDate><guid isPermaLink="false"></guid><description>&lt;h2&gt;Het verschil tussen een Delegate en een Event&lt;/h2&gt;
&lt;p&gt;Er zijn enorm veel overeenkomsten tussen een delegate en een event. De verklaring is dan ook simpel, volgens de&amp;nbsp;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfeventpg.asp"&gt;documentatie&lt;/a&gt; van C# is het event keyword gewoon een modifier voor een delegate. Toch zijn er een aantal dingen die je met delegates wel kunt en met events niet en versavisa.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Born2Codenet/~4/BuZ9KwM6c9o" height="1" width="1"/&gt;</description><feedburner:origLink>http://born2code.net/artikelen/3-events-vs-delegates.html</feedburner:origLink></item></channel></rss>
