Lambda-Ausdrücke in C# 3.0

Monday, April 28, 2008 10:43:51 PM (W. Europe Daylight Time, UTC+02:00)

Ganz weit oben in der Liste meiner “Lieblingsfeatures” von C# stehen Lambda-Ausdrücke. Vereinfacht gesagt sind Lambda-Ausdrücke die Weiterentwicklung der Anonymen Methoden aus C# 2.0. Anonyme Methoden erlauben es, Code direkt an einen Delegate zuzuweisen. Beispiel:

In C# 1.0/1.1 muss man einem Delegate eine vorhandene Methode zuweisen:

   1: public void BeispielMethode()
   2: {
   3:     button1.Click += new EventHandler(button1_click);
   4: }
   5:  
   6: private void button1_Click(object sender, EventArgs e)
   7: {
   8:     MessageBox.Show("Button wurde geklickt!");
   9: }

In C# 2.0 ist es nicht mehr erforderlich, dem Delegate eine benannte Methode zuzuweisen. Stattdessen kann man ihm direkt eine anonyme Methode zuweisen, der Code verkürzt sich auf die folgenden Zeilen:

   1: public void BeispielMethode()
   2: {
   3:     button1.Click += delegate(object sender, EventArgs e)
   4:     {
   5:         MessageBox.Show("Button wurde geklickt!");
   6:     };
   7: }

Mit den Lambda-Ausdrücken aus C# 3.0 wird der Code erneut deutlich kürzer:

   1: button1.Click += 
   2:     (sender, e) => MessageBox.Show("Button wurde geklickt!");

Dem Click-Ereignis wird hier ein Lambda Ausdruck zugewiesen. Dieser besteht aus zwei Teilen: einer Parameterliste (links vom =>) und einem Ausdruck, auf den diese Parameter abgebildet werden (rechts vom =>).

Der Compiler erkennt hier automatisch, dass sender vom Typ object und e vom Typ EventArgs ist.

Da ich super müde bin und gleich einschlafe (habe den ganzen Tag einen 70-536 Prüfungsvorbereitungskurs unterrichtet) soll das erst mal genug sein zu dem Thema, wer mehr über Lambdas wissen möchte finden einen guten Artikel bei Scott Guthrie:

New "Orcas" Language Feature: Lambda Expressions

Technorati Tags: ,
Kick it on dotnet-kicks.de

Vortrag von Holger Schwichtenberg zum Thema ASP.NET 3.5 Extensions in der .NET User Group Paderborn

Thursday, April 24, 2008 10:02:27 AM (W. Europe Daylight Time, UTC+02:00)

Zu unserem nächsten User Group Treffen am 05.05.2008 haben wir Holger Schwichtenberg eingeladen. Er wird die ASP.NET in .NET 3.5  und die ASP.NET 3.5 Extensions vorstellen:

Das zusammen mit .NET 3.5 erschienene ASP.NET 3.5 und die zugehörige Entwicklungsumgebung Visual Web Developer 2008/Visual Studio 2008 bieten neben der Integration der AJAX-Erweiterungen einige sehr interessante neue Steuerelemente (ListView, DataPager, LinqDataSource) sowie einen Designer, der im Bereich Formatierung, CSS sowie JavaScript-Programmierung stark verbessert wurde. Mitte 2008 wird ein weiteres Feature-Paket erscheinen: Darin enthalten sind vordefinierte Webservices zum Zugriff auf Daten (ADO.NET Data Services), Dynamic Data Controls, die eine Oberfläche zur Pflege von Datentabellen automatisch herstellen, die Lösung für das Problem mit der "Zurück"-Schaltfläche bei AJAX, Unterstützung für Silverlight sowie eine Framework für das Model-View-Controler-Pattern in ASP.NET.

Mehr Infos zur User Group gibt es unter http://www.dotnet-paderborn.de

Kick it on dotnet-kicks.de

Visual Studio 2008 und Vista SP1 Beta

Monday, November 19, 2007 7:24:06 PM (W. Europe Standard Time, UTC+01:00)

Wie man inzwischen in den meisten .NET Blogs lesen kann, hat Microsoft heute Visual Studi 2008 veröffentlicht. VS2008 läuft anscheinend nicht under der Beta des SP1 für Vista. Jedenfalls hatte ich gestern immer Fehlermeldungen beim Setup. Nach der Deinstallationd er SP1 Beta ließ sich VS2008 dann aber installieren.

Kick it on dotnet-kicks.de

CardSpace 3.5 funktioniert auch ohne SSL Zertifikat!

Sunday, October 07, 2007 12:04:09 AM (W. Europe Daylight Time, UTC+02:00)

Ein Feature dass ich mir schon lange vom CardSpace Team gewünscht habe - CardSpace ohne SSL Zertifikate. Mit .NET 3.5 und Windows Vista SP1 wird es möglich sein, CardSpace auch auf Seiten ohne SSL Zertifikate zu nutzen. Damit wird CardSpace auch für die breite Masse von privaten Webseiten und Blogs nutzbar werden, und nicht nur für kommerzielle Seiten, für die die Kosten eines SSL Zertifikats unbedeutend sind.

Diese und weitere Neuerungen von CardSpace 3.5 wurden über das neue Blog des CardSpace Teams angekündigt.

Ich habe mir daraufhin direkt mal eine Beta des SP1 für Vista installiert und CardSpace Unterstützung in das Login zum Admin-Bereich der .NET Camp Web Seite eingebaut. Ich habe dabei wie bereits auch für mein Blog wieder die TokenProcessor.cs aus den CardSpace-Samples auf http://cardspace.netfx3.com verwendet. Dabei war eine kleine Anpassung erforderlich. Bei SSL-basiertem CardSpace wird das an die Web Seite übermittelte Token verschlüsselt, und muss somit von der TokenProcessor-Klasse wieder entschlüsselt werden. Die TokenProcessor-Klasse sucht deshalb nach Informationen über den verwendeten Verschlüsselungsalgorithmuss, und wirft eine Exception, wenn diese nicht vorhanden sind:

// Find the EncryptionMethod element, grab the Algorithm
if (!reader.ReadToDescendant(XmlEncryptionStrings.EncryptionMethod, XmlEncryptionStrings.Namespace))
    throw new ArgumentException("Cannot find token EncryptedMethod.");

An dieser Stelle kann man einfach die Entschlüsselung überspringen, und das (ja bereits unverschlüsselte) Token wieder zurück geben:

if (!reader.ReadToDescendant(XmlEncryptionStrings.EncryptionMethod, XmlEncryptionStrings.Namespace))
{
    return UnicodeEncoding.Default.GetBytes(xmlToken);
}

Da das SAML Token nicht verschlüsselt übertragen wird könnte ein Angreifer das Token aufzeichnen und erneut an die Seite senden. Inwiefern die SAMLSecurityTokenAuthenticator-Klasse, die von der TokenProcessor-Klasse zur Überprüfung des Tokens verwendet wird, so etwas überprüft, habe ich mir noch nicht angesehen. Vibro geht in seinem Blog kurz darauf ein - wenn die Gültigkeitsdauer des Tokens nicht zu lang gewählt wird scheint dies wohl kein großes Problem zu sein. Jedenfalls ist CardSpace auch ohne SSL noch deutlich sicherer als unverschlüsselt Übertragene Passwörter.

In der .NET Camp Web Seite funktioniert das CardSpace Login schon sehr gut, und ich muss mir ein Kennwort weniger merken :)

Technorati tags: , ,
Kick it on dotnet-kicks.de

Microsoft veröffentlicht .NET Quellcode

Wednesday, October 03, 2007 8:31:39 PM (W. Europe Daylight Time, UTC+02:00)

Microsoft hat über das Blog von Scott Guthrie angekündigt, große Teile des Quellcodes der .NET Klassenbibliotheken zu veröffentlichen. Veröffentlicht werden der Quellcode der Base Class Library (System Namespace, IO, Text, Collections, CodeDom, Regular Expressions, usw), ASP.NET, Windows Forms und WPF. Später sollen auch weitere Teile veröffentlicht werden.

Der Quellcode wird über 2 Wege verfügbar sein:
1) Als Downloadpaket mit dem gesamten Quellcode
2) Über eine Integration in Visual Studio 2008

Besonders der 2. Punkt ist interessant: Über den Debugger wird es möglich sein, nicht nur durch eigenen Code, sondern auch den der .NET Framework Klassenbibliotheken zu debuggen. Der Code wird dann während des Debuggens von einem Webserver heruntergeladen.

Der Quellcode wird unter der Microsoft Reference License veröffentlicht. Diese erlaubt das Betrachten des Quellcodes, er darf aber nicht kopiert, verändert oder weiter verteilt werden.

Weitere Informationen und Screenshots der Visual Studio 2008 Integration gibt es bei Scott Guthrie.

Kick it on dotnet-kicks.de
Page 1 of 2 in the VisualStudioOrcasNET35 category Next Page