.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv April 2009

C# Datentypen

30.04.2009 20:30:00 | Wolfgang Kluge

Insgesamt 15 Datentypen können direkt mit C#-Keywords beschrieben werden. Diese Schlüsselwörter sind dabei "nur" Aliasnamen für entsprechende .NET-Framework-Datentypen.

Übersicht

Die meisten Datentypen sind Werttypen (siehe struct). Diese können den angegebenen Werte annehmen. Dagegen können Verweistypen wie string und object (und alle Klassen) zusätzlich den "Wert" null annehmen. Will man nun, dass auch ein Werttyp null annehmen kann, so kann man auf die Nullable-Typen zugreifen.

Keyword .NET-Datentyp Speicher Wertebereich Bemerkung
bool System.Boolean 8 bit
1 byte
true oder false (0xFF oder 0x00)  
byte System.Byte 8 bit
1 byte

0x0 bis 0xFF
0 bis 255

 
char System.Char 16 bit
2 byte
0x0 bis 0xFFFF (ein Unicode-Zeichen)
0 bis 65.535
einzelnes Unicode-Zeichen innerhalb einfachen Anführungsstrichen (')
decimal System.Boolean 128 bit
16 byte
(-7,9x1028 bis 7,9x1028) / 10x10(0 bis 28) Suffix M
double System.Double 64 bit
8 byte
-1,79769313486232x10308 bis 1,79769313486232x10308 Suffix D
float System.Single 32 bit
4 byte
-3,402823x1038 bis 3,402823x1038 Suffix F
int System.Int32 32 bit
4 byte

0x8000 0000 bis 0x7FFFFFFF
-2.147.483.648 bis 2.147.483.647

 
long System.Int64 64 bit
8 byte

0x8000 0000 0000 0000 bis 0x7FFF FFFF FFFF FFFF
-9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807

Suffix L
object System.Object      
sbyte System.SByte 8 bit
1 byte

0x80 bis 0x7F
-128 bis 127

 
short System.Int16 16 bit
2 byte
0x8000 bis 0x7FFF
-32.768 bis 32.767
 
string System.String     Kein oder mehrere Unicode-Zeichen innerhalb doppelten Anführungsstrichen (") - oder null.
uint System.UInt32 32 bit
4 byte
0x0 bis 0xFFFF FFFF
0 bis 4.294.967.295
 
ulong System.UInt64 64 bit
8 byte
0x0 bis 0xFFFF FFFF FFFF FFFF
0 bis 18.446.744.073.709.551.615
Suffix UL (U, L)
ushort System.UInt16 16 bit
2 byte
0x0 bis 0xFFFF
0 bis 65.535
 

bool (System.Boolean)

Mit diesem Datentyp können die Werte true oder false dargestellt werden.

bool bo1 = false;
bool bo2 = true;

byte (System.Byte)

Dieser Datentyp kann die Werte 0 bis 255 annehmen.

byte by1 = 124;
byte by2 = 9;

char (System.Char)

Dieser Datentyp nimmt ein einzelnes Unicode-Zeichen an. Um ein Zeichen als Literal angeben zu können, muss dieses innerhalb einfachen Anführungsstrichen (') geschrieben werden.

char c1 = ' '; //Leerzeichen
char c2 = '\u1249'; //Unicode-Zeichen U+1249
char c3 = '\x0043'; //Hexadezimale schreibweise

decimal (System.Decimal)

Eine Datentyp, mit dem Kommazahlen dargestellt werden können, bei denen im Gegensatz zu double und float aber keine (bzw. weniger) "Rundungsfehler" auftreten. Das Suffix "M" kann zur Unterscheidung zu einer double-Zahl verwendet werden und hilft, Compiler-Warnungen zu vermeiden oder um var verwenden zu können.

decimal de1 = 1.23; //Compiler-Warnung
decimal de1 = 1.23M;
decimal de2 = decimal.Zero;

double (System.Double)

Dieser Datentyp kann Gleitkommazahl (IEEE 754) mit doppelter Genauigkeit aufnehmen. Double kann neben den "normalen" Werten auch die Werte double.PositiveInfinite (+∞), double.NegativeInfinite (-∞) und double.NaN (Not a Number) annehmen.

double do1 = 1.43;
double do2 = 23.33;

float (System.Single)

Dieser Datentyp kann Gleitkommazahl (IEEE 754) mit einfacher Genauigkeit (single) aufnehmen. Das Suffix F wird verwendet, um zwischen double und float unterscheiden zu können. Float kann neben den "normalen" Werten auch die Werte float.PositiveInfinite (+∞), float.NegativeInfinite (-∞) und float.NaN (Not a Number) annehmen.

float fl1 = 23.44299F;
float fl2 = -664.34F;

int (System.Int32)

Dieser Datentyp stellt Ganzzahlen zwischen -2.147.483.648 und 2.147.483.648 dar. int ist "der" Ganzzahlendatentyp überhaupt.

int in1 = 0;
int in2 = 232544;

long (System.Int64)

Dieser Datentyp stellt Ganzzahlen zwischen -9.223.372.036.854.775.808 und 9.223.372.036.854.775.808 dar.

long lo1 = 234;
long lo2 = -4234587;

object (System.Object)

Dies ist der Basis-Datentyp des .NET-Frameworks. D.h. alle anderen Klassen leiten sich von diesem Typ ab.

object ob1 = null;
object ob2 = 39.2;
object ob3 = "test";

sbyte

Dieser Datentyp kann die Werte -128 bis 127 annehmen.

sbyte sb1 = -124;
sbyte sb2 = 9;

short (System.Int16)

Dieser Datentyp stellt Ganzzahlen zwischen -32.768 und +32.767 dar.

short sh1 = 123;
short sh2 = -33;

string (System.String)

Die string-Klasse Stellt kein oder mehrere Unicode-Zeichen dar. Da es sich nicht um einen Verweistyp handelt, kann zusätzlich der Wert null angenommen werden. Damit ist eine Unterscheidung zwischen null (nicht angegeben) und "" (leere Zeichenfolge) möglich und nötig.

string st1 = "Das ist ein Test";
string st2 = null;
string st3 = "";
string st4 = "C:\\Programs\\Microsoft Visual Studio 9.0\\";
string st5 = @"
C:\Programs\Microsoft Visual Studio 9.0\";
string st6 = "
Mein \"Hase\" ist Name";
string st7 = @"Mein ""Hase"" ist Name";

uint (System.UInt32)

Dieser Datentyp stellt Ganzzahlen zwischen 0 und +4.294.967.295 dar.

uint ui1 = 2314543;
uint ui2 = 1;

ulong (System.UInt64)

Dieser Datentyp stellt Ganzzahlen zwischen 0 und +18.446.744.073.709.551.615 dar.

uint ul1 = 3576875224;
uint ul2 = 35;

ushort (System.UInt32)

Dieser Datentyp stellt Ganzzahlen zwischen 0 und +65.535 dar.

ushort us1 = 24566;
ushort us2 = 66;

 

Nullable-Types

Das Suffix Typ? ist eine Kurzschreibweise für Nullable<Typ>. Damit ist es möglich, einem Werttyp so zu erweitern, dass auch null gespeichert werden kann.

Suffixe

Die Suffixe geben an, welchen Datentyp man wirklich meint. Dabei gilt folgende Tabelle:

Was Suffix Beispiel Datentyp
Ganzzahl ohne
var t1 = 253; //int
var t2 = -3231991134; //long
var t3 = 3231991134; //uint
var t4 = 9255388339999993837; //ulong
Kleinster Datentyp aus int, uint, long und ulong
Ganzzahl U
var t1 = 253U; //uint
var t2 = 7231991134U; //ulong
var t3 = -3231991134U; //long
Kleinster Datentyp aus uint und ulong
Bei negativen Zahlen keine Auswirkung
Ganzzahl L
var t1 = 253L; //long
var t2 = 7231991134L; //ulong
var t3 = -3231991134L; //long
Kleinster Datentyp aus long und ulong
Compilerwarnung, wenn L klein geschrieben wird
Ganzzahl UL
var t1 = 22238984UL;
ulong 
Kommazahl ohne
var t1 = 144.33;
double 
Kommazahl F
var t1 = 24.53F;
float
Kommazahl M
var t1 = 44.21M;
decimal 
Type ?
char? c1 = 'x';
int? i1 = null;
Ein Werttyp, der auch den "Wert" null annehmen kann

Die Groß-/Kleinschreibung ist bei den Suffixen nicht relevant. Genausowenig die Reihenfolge der Buchstaben bei UL. Dennoch sind Großbuchstaben und eine konstistente Reihenfolge aus Gründen der besseren Lesbarkeit Empfehlenswert.

MSDN erweitert Foren-Angebot: mit neuen Foren und neuer Foren-Plattform

30.04.2009 20:13:21 | Kay Giza

Es ist mir eine Freude folgendes ankündigen zu dürfen:

Um knapp 30 Diskussionsforen hat MSDN sein deutschsprachiges Online-Angebot erweitert.
Die neuen Foren ergänzen die bereits seit 2006 verfügbaren deutschsprachigen MSDN-Foren rund um die ’Visual Studio Express’-Produkte und decken sämtliche relevanten Microsoft Entwickler-Werkzeuge und -Technologien ab. Das Spektrum reicht von A wie ASP.NET oder Azure über Themen wie „Parallele Programmierung“ und „Sicherheit“ bis hin zu den Sprachen Visual Basic, C++ und C#. Die neue Kommunikationsplattform basiert auf dem Community-Prinzip „Anwender helfen Anwendern“ und soll Entwicklern den Info-Austausch untereinander erleichtern. Mitarbeiter von MSDN Deutschland als Teil der Community sind in den Foren im Rahmen ihrer jeweiligen Themenschwerpunkte zum Teil aktiv, ein technischer Support kann dort allerdings nicht angeboten werden.

In den MSDN Foren können Sie Fragen stellen und beantworten sowie sich mit anderen Benutzer zu bestimmten Themen austauschen und diskutieren. Die MSDN Foren sind Teil der weltweiten und mehrsprachigen MSDN Online-Platform und daher auch mehrsprachig und in verschiedenen Ländern verfügbar.

An dieser Stelle weise ich gerne darauf hin, dass Sie in unabhängigen Foren ebenfalls ausgezeichnete Hilfestellungen zum Microsoft Entwicklungs-Produkten und -Services erhalten. Eine Auswahl an Foren finden Sie im Microsoft Community Guide.  Weiterhin unterstützt Microsoft mit einer Reihe von Maßnahmen Entwickler, IT-Professionals und qualifizierte Anwender bei ihrem Engagement in Web-Communities, User Groups und Newsgroups oder beim Aufbau neuer Anwender-Vereinigungen. Was sich hinter den Programmen verbirgt und wie Sie davon profitieren können, erfahren Sie auf der Seite ‘Microsoft Community Initiativen & Programme‘ oder in unserer Community-Broschüre, die Sie hier herunterladen können.

Ich wurde häufig gefragt die letzten Tage, ob man denn auch z.B. auf sein eigenes Forum / Webseite verweisen darf, wenn dort die Lösung steht. Antwort: logisch und selbstverständlich und gerne darf und vor allem soll man in den Foren im direkten Antwortbezug auch auf andere Community-Angebote, Webseiten oder Ressourcen verweisen. Kommerzielle Werbung für Produkte oder Dienstleistungen anderer Unternehmen jeglicher Art ist zu unterlassen. Hierunter fallen auch Links oder Hinweise zu (Online-)Auktionen. Benutzer die gegen diese Regel verstoßen werden gesperrt / gelöscht. Ausgenommen hiervon sind natürlich Antworten auf direkte Fragen zu einem bestimmten Thema (z.B.: Welches Tool kann man empfehlen um XYZ zu realisieren?).

Die Einführung der deutschen Foren wird sukzessive nun fortgesetzt, mit der Integration in MSDN Online Deutschland. Auch wird die Forenplattform weiterhin optimiert und angepasst, u.a. werden wir im Mai 2009 noch eine neue Kategorisierung einführen. In dem Forum 'Generelle Fragen zu MSDN Online, zu den MSDN Foren oder Social Bookmarking' können allgemeine Fragen zur MSDN Online, zur Bedienung des Forums oder Vorschläge zur Foren-Plattform gestellt werden sowie Fehler oder Probleme gemeldet werden. Auch können Sie hier gerne generelle Fragen zum MSDN Angebot stellen und mit anderen Foren-Teilnehmern diskutieren.

Wer gerne und viel auf Twitter unterwegs ist, kann auch gerne die Foren-Aktivitäten über http://twitter.com/MSDN_Foren verfolgen.
Ich lade Sie ein, stellen Sie Fragen, tragen Sie Ihre Lösungen und Nöte der Community vor. Es sind bereits eine ganze Reihe von engagierten Usern, MVPs und Kollegen aktiv dabei, Fragen zu beantworten, Tipps zu geben und ihr Know-how mit der Community zu teilen.

Die MSDN Foren erreicht man über die MSDN Startseite oder über den folgenden Link...

Link:
MSDN Foren



This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Win7 RC ab heute Abend als Download verfügbar. Go get it, tiger!

30.04.2009 20:00:07 | Steffen Ritter

Yeeha! Der Release Candidate von Windows 7 ist ab heute Abend für Besitzer eines MSDN-Abonnements als kostenloser Download verfügbar. Auch in Deutsch und natürlich sowohl für 32- wie auch für 64-Bit-Architekturen. Der Status „Release Candidate“ sagt aus, dass diese Vorabversion bereits über sämtliche für das fertige Produkt vorgesehene Funktionalität verfügt, gewährt dazu aber noch keine grundsätzliche Fehlerfreiheit. Hier entlang zum Download des Windows 7 RC auf MSDN Online (Download ist evtl. noch nicht online, sollte ab heute Abend erreichbar sein).

Wer nicht über ein MSDN-Abonnement verfügt muss sich noch eine Weile gedulden, für die breite Öffentlichkeit wird der Release Candidate etwas später zur Verfügung stehen. (Andererseits hat vermutlich sowieso jeder ernstzunehmende Entwickler ein MSDN-Abonnement. Wie sonst kriegt man Zugriff auf alle wichtigen Design- und Entwicklungstools von Microsoft im Rundum-Sorglos-Paket? Mehr dazu hier…)

Videos: Steve Ballmer live in Koeln [Download]

30.04.2009 19:31:15 | Kay Giza

Bei zwei Veranstaltungen hat Steve Ballmer am vergangenen Freitag in Köln einen Einblick in die Zukunft von Microsoft gegeben – in anstehende Investitionen, in neue Produkte und Marktchancen des Unternehmens. Am Vormittag war der Microsoft CEO auf Einladung des nordrhein-westfälischen Innovationsministers Dr. Andreas Pinkwart zu Gast beim Event „Innovation Live!“ an der Fachhochschule Köln. Im Anschluss begrüßte Ballmer als Keynote-Sprecher die Teilnehmer des „Microsoft Software Strategy Summit“.

MSDN Online Deutschland präsentiert exklusiv die Ballmer-Reden von beiden Veranstaltungen mit Aufzeichnungen der ’Innovation Live’-Ansprache und der ’Software Strategy Summit’-Keynote.

Ist sehr interessant, dem Steve zuzuhören, wie ich finde.



This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Download: Windows 7 RC | Vista SP2 RTM

30.04.2009 19:20:38 | Kay Giza

Hallo zusammen,
lange nicht mehr aktiv hier im Weblog gewesen. Warum? Ganz einfach, es gab viel zu tun (ihr wisst schon, nach dem Motto: packen wir's an ;-)).
Z.B. das aufbereiten der MSDN Seiten für folgende Neuigkeiten :)

Daher fange ich heute mal an und hole ein wenig nach :)
Wichtigste Neuigkeiten natürlich:

Windows 7 Release Candidate für MSDN Subscriber verfügbar
Inhaber einer MSDN Subscription können ab sofort den offiziellen Release Candidate (RC) von Windows 7 herunterladen. Zur Verfügung stehen auch deutschsprachige Versionen, natürlich sowohl für 32- wie auch für 64-Bit-Architekturen. Der Status "Release-Kandidat" sagt aus, dass diese Vorabversion bereits über sämtliche für das fertige Produkt vorgesehene Funktionalität verfügt, gewährt dazu aber noch keine grundsätzliche Fehlerfreiheit: Download Windows 7 RC auf MSDN Online.
Interessenten ohne MSDN-Abonnement erhalten ab dem 5. Mai 2009 Gelegenheit zum Download. Im MSDN Windows Developer Center finden Sie auch weiterführende Informationen.

Ganz still und heimlich...
Service Pack 2 für Windows Vista und Windows Server 2008 verfügbar
Das zweite Service Pack für Windows Vista und Windows Server 2008 (RTM Version = released to manufacturing) enthält neben neuen Verbesserungen und Korrekturen ebenfalls alle Updates, die seit Service Pack 1 veröffentlicht wurden, sowie Unterstützung für neue Hardware und Hardwarestandards. Das Updatepaket wurde für beide Betriebssysteme zusammengefasst, um Bereitstellung und Support zu vereinfachen. Eine kurze Übersicht über die Änderungen in SP2 finden Sie im Dokument zu den wesentlichen Änderungen. Im MSDN Windows Developer Center finden Sie auch weiterführende Informationen.
MSDN Subscription-Download: Windows Vista Service Pack 2

Hinweis: Aktualisieren Sie Windows 7 Beta rechtzeitig auf den Release Candidate. Nutzer der Beta-Version von Windows 7 sollten bis zum 1. Juli 2009 den Umstieg auf den Release Candidate vollzogen haben. Denn nach diesem Datum ist die Beta-Version nur noch bis zum 1. August und, durch zweistündliches Herunterfahren, sehr eingeschränkt nutzbar - etwa für letzte Datensicherungen. Zwei Wochen vor dem kritischen Termin wird die Beta-Version Sie mit entsprechenden Warnhinweisen an diese Einschränkungen erinnern.

Und wer gerne sich austauschen will und möchte: Community: MSDN Windows Forum
Sie können sich mit Entwicklern im offiziellen Windows 7-Forum oder Windows Vista-Forum auf MSDN Online austauschen und Fragen oder Anregungen diskutieren. Besuchen Sie auch den Microsoft Community Guide und entdecken Sie eine Auswahl der besten deutschsprachigen Communities, Anwendergruppen und Blogger rund um das Windows-Betriebssystem.



This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Service Pack 2 für Windows Vista und Windows Server 2008 verfügbar

30.04.2009 18:35:00 | Oliver Scheer

Das zweite Service Pack für Windows Vista und Windows Server 2008 (RTM Version = released to manufacturing) enthält neben neuen Verbesserungen und Korrekturen ebenfalls alle Updates, die seit Service Pack 1 veröffentlicht wurden, sowie Unterstützung für neue Hardware und Hardwarestandards. Das Updatepaket wurde für beide Betriebssysteme zusammengefasst, um Bereitstellung und Support zu vereinfachen. Eine kurze Übersicht über die Änderungen in SP2 finden Sie im Dokument zu den wesentlichen Änderungen. Im MSDN Windows Developer Center finden Sie auch weiterführende Informationen.
MSDN Subscription-Download: Windows Vista Service Pack 2

Windows 7 Release Candidate für MSDN Subscriber verfügbar

30.04.2009 18:33:55 | Oliver Scheer

Inhaber einer MSDN Subscription können ab sofort den offiziellen Release Candidate (RC) von Windows 7 herunterladen. Zur Verfügung stehen auch deutschsprachige Versionen, natürlich sowohl für 32- wie auch für 64-Bit-Architekturen. Der Status "Release-Kandidat" sagt aus, dass diese Vorabversion bereits über sämtliche für das fertige Produkt vorgesehene Funktionalität verfügt, gewährt dazu aber noch keine grundsätzliche Fehlerfreiheit: Download Windows 7 RC auf MSDN Online.
Interessenten ohne MSDN-Abonnement erhalten ab dem 5. Mai 2009 Gelegenheit zum Download. Im MSDN Windows Developer Center finden Sie auch weiterführende Informationen.

Hex String zu int und umgekehrt

30.04.2009 14:56:00 | Peter Bucher

Es ist interessant wieviele komplexe Lösungen es Aufgabenstellungen gibt, die schon in .NET implementiert sind.
Um einen hexadezimalen String in einen int umzuwandeln und umgekehrt, braucht es nur jeweils eine Zeile:

Hex String zu int:
int dec = Convert.ToInt32("ff", 16); // Ergibt 255.

int zu einem Hex String:
string hex = Convert.ToString(255, 16); // Ergibt "ff".

Das wars schon und ich kann mir in nächster Zeit das Suchen ersparen :)

Terminankündigung Technology Roadshow Dresden - Microsoft und die Zukunft der Software

30.04.2009 13:18:15 | Peter Kirchner

Der nächste Termin für die Technology Roadshow in Dresden steht fest! Die Technology Roadshow ist für alle Startups interessant, die Software entwickeln, oder all die, die sich einen kurzen Überblick über die aktuellen Trends bei Microsoft verschaffen möchten.

Termin: 14. Mai 2009
Beginn: 15:00
Eintritt: kostenlos

Ort:
BioInnovationsZentrumDresden
Tatzberg 47
01307 Dresden

Themen:

  • Microsoft Cloud Computing Strategie
    Dr. Carsten Rudolph, Microsoft Deutschland GmbH
  • Moderne Benutzerschnittstellen
    Peter Kirchner, Microsoft Deutschland GmbH
  • Wie komme ich  mit Microsoft ins Geschäft?
    Dr. Carsten Rudolph, Microsoft Deutschland GmbH

Link: http://www.futuresax.de/Termine/Terminübersicht/tabid/95/Default.aspx

Coole Befehle für die CMD.exe

30.04.2009 12:31:24 | Lars Keller

Wie ich gerade von Karim gelernt habe, gibt es in der ComandShell (cmd.exe) ein paar coole Befehle und Tasten.

Wenn man in der CMD einmal F7 drückt, dann erscheint eine Befehlsübersicht:

cmd_F7

Mit F8 kann man die ganzen Befehle durch scrollen, ähnlich wie mit den Pfeiltasten. Einziger Unterschied ist, dass wenn man z.B. “di” eingibt und F8 drückt, dann nur noch die Befehle angezeigt werden die mit “di” beginnen.

Auch sehr nützliche Kommandos sind “pushd .” und “popd” s. dazu einen Blogpost von Scott Hanselman.

kick it on dotnet-kicks.de

This weblog is sponsored by netcreate OHG.

Coole Befehle für die CMD.exe

30.04.2009 11:31:24 | Lars Keller

Wie ich gerade von Karim gelernt habe, gibt es in der ComandShell (cmd.exe) ein paar coole Befehle und Tasten.

Wenn man in der CMD einmal F7 drückt, dann erscheint eine Befehlsübersicht:

cmd_F7

Mit F8 kann man die ganzen Befehle durch scrollen, ähnlich wie mit den Pfeiltasten. Einziger Unterschied ist, dass wenn man z.B. “di” eingibt und F8 drückt, dann nur noch die Befehle angezeigt werden die mit “di” beginnen.

Auch sehr nützliche Kommandos sind “pushd .” und “popd” s. dazu einen Blogpost von Scott Hanselman.

kick it on dotnet-kicks.de

Free eBook: Testing Chapter from Beginning ASP.NET MVC

30.04.2009 11:17:58 | Robert Mühsig

image Wieder ein interessantes eBook:

- Free Chapter of Beginning ASP.NET MVC 1.0 – Testing ASP.NET MVC Applications (Blogpost vom Autor)

(Der andere Link zum “Agile Principles Patterns and Practices in C#” habe ich lieber wieder entfernt, weil ich nicht weiß wie legal das Angebot ist.)

ShareThis

Silverlight – Unter Windows den angemeldeten Benutzer ermitteln

30.04.2009 11:05:00 | Gregor Biswanger

Normal 0 21 false false false DE X-NONE X-NONE

Am 19.März 2009 veröffentlichte Microsoft neben der Betaversion von Silverlight 3, auch Expression Blend 3 in der Preview-Version (CTP). Bei Expression Blend 3 hat sich einiges getan, was auf den ersten Blick nicht so ersichtlich ist. Neu dabei wären zwei unterschiedliche Effekte für WPF- und Silverlight-Anwendungen. In der „Objects and Timeline“ können beim Aufzeichnen von Animationen diese an Controls definiert werden.

Der BlurEffect

Als Beispielanwendung wird ein neues WPF-Projekt erzeugt. Die Größe auf 400x400 Definiert und ein Image auf die Mitte gelegt. Dann wird unter „Objects and Timeline“ ein neues Storyboard mittels Plus-icon erstellt. Als Name wird der Standard „Storyboad1“ belassen.



Abb.1.1. – Neues Storyboard anlegen.

Expression Blend wechselt sofort in den Animation-Workspace. Jetzt können Links in der Toolbox die „Asset Library“ aufgerufen werden. Zu Beginn werden alle Standard-Controls angezeigt. Die Effekte liegen nun im Tabulator unter „Effects“.



Abb.1.2. – Effekte auswählen in der „Asset Library“

Für dieses Beispiel soll der BlurEffect mit gedrückter Maustaste auf das Image Control unter „Objects and Timeline“ gezogen werden.



Abb.1.3. – Der BlurEffect für das Image-Control

Unter dem Image-Control wird nun das Icon für den BlueEffect angezeigt. Das wird nun zu Beginn ausgewählt und im rechten Properties-Menü unter Miscellaneous der Radius auf 10 gesetzt. Das Image wird verschwommen und undeutlich angezeigt. In der Timeline wird unter dem Effekt automatisch ein Record Keyframe gesetzt.



Abb.1.4. – BlurEffect Einstellen

Dann wird ein Klick bei der Timeline auf der 2-Sekundenlinie gesetzt und der Radius auf 0 eingestellt.



Abb.1.5. – BlurEffect Animation erzeugen

Ein Trigger wird später für die Steuerung der Animation benötigt. Neben dem Projekte-Fenster befindet sich das Trigger-Fenster. Ein Trigger ist so eine Art Event, was auf bestimmte Aktionen ausgelöst werden soll. Bei einem neuen Storyboard wird dieser automatisch auf „Window.Loaded“ (Wenn Anwendung gestartet) gesetzt.

Bei diesem Beispiel soll die Animation gestartet werden wenn der Mauszeiger den Focus vom Bild erreicht. Dazu wird „Window.Loaded“ Markiert und darunter bei „When Window Loaded is raised“, auf Window das Image ausgewählt. Daneben kommt die Auswahl bei welchem Ereignis der Trigger gestartet werden soll. Hier wird MouseEnter für das Eintreffen der Maus verwendet. Damit der Trigger nun mit unserem Storyboard gebunden wird, muss mittels Plus-Icon daneben „Add new action“ das Storyboad mit der Aktion Begin gewählt werden. Bei einem kurzen Start der Anwendung mit der Taste F5, kann der Trigger live getestet werden.

Wenn der Mauszeiger das Bild verlässt soll das Bild wieder den ursprünglichen Zustand erhalten. Dazu wird mit + Event ein neuer Trigger erzeugt, der auf „Image“ – „MouseLeave“ gestellt wird. Unter deren Storyboard stellt Remove den Ursprung wieder her.



Abb.1.6. – Trigger erzeugen

Die Animation mit dem neuen Effekt wäre nun fertig. Mit ein wenig Feintuning in der Timeline kann dies noch ein wenig verbessert werden (z.B. 0,5 Sekunden).

Fazit

Unter Flash man erinnere sich an Swish, waren fertige Effekt-Animationen eine große Stärke. Microsoft bietet hier direkt in der Designer-Anwendung fertige Effekte, das sehr schön ist. Dennoch sind in der Preview-Version nur zwei dabei, das sich mit Sicherheit noch ändern wird. Umso spannender werden Effekte von Drittanbietern.

Office 2007 Bedienung für 2003 Profis

30.04.2009 09:47:16 | Andre Kraemer

Da immer mehr und mehr meiner Freunde, Kunden und Kollegen auf Office 2007 umsteigen werde ich in letzter Zeit häufiger gefragt, wo sich ein unter 2003 bekannter Menüpunkt innerhalb des Office 2007 Ribbons versteckt.

Die Frage lässt sich relativ leicht durch die folgenden drei interaktiven "Handbücher" beantworten:

Wer es noch nicht kennt:

Dem Anwender wir die gewohnte Office 2003 Oberfläche präsentiert. Nach Auswahl eines Menüpunktes wird per Animation der neuer Ort angezeigt. Schick, oder?



blog.codemurai.de © André Krämer |Impressum | Abonieren

Übersehenes Feature in ASP.NET 2.0

30.04.2009 08:58:43 | Andre Kraemer

Seit über drei Jahren ist ASP.NET 2.0 nun schon in der Final Version auf dem Markt und bis Mitte letzter Woche habe ich sie übersehen: Die Eigenschaft AssociatedControlID des ASP.NET Label Controls. Bisher habe ich auf den Einsatz dieses Controls möglichst verzichtet, da es in meinen Augen "nur" einen unnötigen Span-Tag um meinen Text setzt.

Habe ich in meiner aspx Seite also folgenden Code:

<asp:Label ID="Label1" runat="server" Text="Ich bin ein Label"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server">Ich bin eine Textbox</asp:TextBox><br />

wird dies zu folgendem Markup:

<span id="Label1">Ich bin ein Label</span>
<input name="TextBox1" type="text" value="Ich bin eine Textbox" id="TextBox1" /><br />

Alles in allem ist dies wenig spektakulär.

Erweitere ich meinen Code nun jedoch um die Eigenschaft AssociatedControlID

<asp:Label ID="Label2" runat="server" AssociatedControlID="TextBox2" Text="Ich bin auch ein Label"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server">Ich bin auch eine Textbox</asp:TextBox></div>

wird das ASP.NET Label nicht mehr als Span-Tag, sondern als HTML Label-Tag gerendert:

<label for="TextBox2" id="Label2">Ich bin auch ein Label</label>
<input name="TextBox2" type="text" value="Ich bin auch eine Textbox" id="TextBox2" />

Schön und gut, aber wo liegt der Vorteil?

Zum einen schafft der HTML Code durch den Zusatz "for=<anderes Control>" eine logische Verknüpfung zwischen Eingabefeld und Beschriftung. Dies kann von Screenreadern ausgelesen werden und verbessert somit die Barrierefreiheit.

Dies ist jedoch nicht alles. Für den Standardbenutzer ergibt sich der Vorteil, dass er nun innerhalb des Browsers mit der Maus einfach auf das Label klicken kann und anschließend automatisch das assozierte Steuerlement den Fokus erhält.

Mein Fazit: ein tolles Feature, was sowohl Usability, als auch Barrierefreiheit mit sehr wenig Aufwand erhöht.

Näheres findet sich übrigens auch bei selfhtml.

Die Frage ist nur: Warum habe ich es so lange übersehen? Vielleicht liegt es daran, dass es unter ASP.NET 1.0 noch nicht existierte und die anderen Neuerungen einfach so viel aufregender waren?



blog.codemurai.de © André Krämer |Impressum | Abonieren

10 Wege einen guten Software-Entwickler zu vertreiben

30.04.2009 03:40:00 | Jürgen Gutsch

(via: ZCOPE | Blog)

Christian Gaisberger hat auf seinem Blog zehn Tipps bereitgestellt, wie man mit absoluter Sicherheit einen guten Software-Entwickler vertreiben kann. Dem einen oder anderen Entwickler werden die aus dem Leben gegriffenen Beispiele sicher auch bekannt vorkommen:

Zum Beitrag: Zehn Wege einen guten Software Entwickler zu vertreiben

DotNetKicks-DE Image

Coole Befehle für die CMD.exe

30.04.2009 02:31:02 | Lars Keller

Wie ich gerade von Karim gelernt habe, gibt es in der ComandShell (cmd.exe) ein paar coole Befehle und Tasten.

Wenn man in der CMD einmal F7 drückt, dann erscheint eine Befehlsübersicht:

cmd_F7

Mit F8 kann man die ganzen Befehle durch scrollen, ähnlich wie mit den Pfeiltasten. Einziger Unterschied ist, dass wenn man z.B. “di” eingibt und F8 drückt, dann nur noch die Befehle angezeigt werden die mit “di” beginnen.

Auch sehr nützliche Kommandos sind “pushd .” und “popd” s. dazu einen Blogpost von Scott Hanselman.

kick it on dotnet-kicks.de

BizTalk 2009: Ein Feature das keines ist

29.04.2009 19:31:00 | Wolfgang Kluge

Das neue Projektformat der BizTalk-Projekte lässt einiges erhoffen. Neben MSBuild-Deploys z.B. auch, dass unterschiedliche Elemente wie z.B. C#-Dateien mit eingefügt werden können. Und tatsächlich ist sogar schon eine *.cs-Datei in neuen BizTalk-Projekten enthalten: AssemblyInfo.cs.

Und diese ist nicht nur proforma vorhanden, sondern wird tatsächlich auch vom C#-Compiler kompiliert.

Wenn man in dem Projektformat statt der C#-Bindings z.B. die VB-Bindings einfügen würde, könnte man wahrscheinlich auch eine VB-Datei mit einbinden - und alles landet in einer Assembly.

Nun, kompiliert wird wie gesagt. Auch neu eingefügte Dateien schließt das nicht aus. Und im Kontextmenü des Projekts findet man tatsächlich auch "Add Class".

 

Allerdings führt der Befehl zum Dialog, in dem die verfügbaren Projekt-Items aufgelistet werden (Add New Item) - und da ist keine Klasse dabei. Man kann sich allerdings mit "Add Existing Item" weiterhelfen. Einfach eine (an sich beliebige) *.cs-Datei auswählen und schon klappts.

 

Doch als ich dann endlich loslegen wollte kam das, was nicht hätte kommen sollen: das Feature entpuppt sich als Nullnummer - oder ich hab's nicht kapiert ;) Eins davon muss es ja sein, denn der Orchestration Designer kennt meine Klasse einfach nicht. Egal ob public oder nicht, ob static oder nicht - meine Klasse bleibt unbekannt. Nachdem ich mit ILDasm nochmal geprüft habe, ob meine Klasse auch wirklich enthalten ist, kann ich mir das nur so erklären: wahrscheinlich geht der Designer immer noch davon aus, dass alle (Hilfs-)Klassen extern sein müssen und übersieht dabei diejenigen, die in der eigenen Assembly vorkommen.

Schade, war es doch ein sehnlichst erwünschtes Feature und da ansonsten ja alles funktioniert glaube ich nicht, dass es sonderlich schwer zu implementieren ist. Bleibt zu hoffen, dass ein Update diese "Blindheit" behebt.

Insgesamt hatte ich mehr erwartet. Ich hab mir damals noch die Beta angeschaut und da war man ähnlich weit. Gehofft hab ich auf den neuen XSLT-Mapper oder auf den neuen Solution Designer... Beide Videos sind von 2005 - so neu dann auch wieder nicht, aber beide Features fehlen weiterhin.

VSTS Pre-Beta Release live sehen

29.04.2009 19:17:23 | Christian Binder

Auf der www.teamconf.de vom 5. Mai bis 7. Mai 2009 in München werde in meinen VSTS 2010 Sessions nicht mehr den November CTP zeigen, sondern einen Pre-Beta Build, der schon die neue WPF Oberfläche hat. Wer Lust hat, die Bit’s live zu sehen, sollte die Sessions nicht verpassen.

VSTS2010

Aus VSTS Sicht gibt es die auch die neue MMC zu sehen:
image

oder das neue Test- und Labcenter:

image

und noch vieles mehr, wie die neuen Dashboards …..

 image

Chris

Announcing Service Pack 2 for Office SharePoint Server 2007 and Windows SharePoint Services 3.0

29.04.2009 14:50:00 | Ozgur Aytekin

KB Article Links
Description of Windows SharePoint Services 3.0 SP2 and of Windows SharePoint Services 3.0 Language Pack SP2
http://support.microsoft.com/kb/953338
Description of 2007 Microsoft Office servers Service Pack 2 (SP2) and of 2007 Microsoft Office servers Language Pack Service Pack 2 (SP2)
http://support.microsoft.com/kb/953334


Download Links
Service Pack 2 for Windows SharePoint Services 3.0, x86 & x64
http://www.microsoft.com/downloads/details.aspx?FamilyId=79BADA82-C13F-44C1-BDC1-D0447337051B&displaylang=en


Service Pack 2 for Office SharePoint Server 2007, x86 & x64
http://www.microsoft.com/downloads/details.aspx?FamilyId=B7816D90-5FC6-4347-89B0-A80DEB27A082&displaylang=en

Schon wieder Premiere – Mein erstes Silverlight / WPF Training gehalten

29.04.2009 12:58:28 | Jan Schenk

Gestern hatte ich die Ehre, vor einer Reihe von Microsoft-Partnern aus dem embedded-Bereich ein ganzes Training zum Thema Silverlight und WPF zu halten. Vier Stunden, die einen Vortrag zu den Basics von Silverlight und WPF, XAML, eine Demo in der ein Silverlight RSS-Reader mit Crossdomain-Funktionalität gebaut wurde, ein Lab zu Expression Blend und zu guter Letzt Deep Zoom Composer und eine “Frage und Antwort”-Runde enthielten.

Hatte ich am Anfang noch Angst, die vier Stunden nicht füllen zu können, so wurde das Gefühl doch recht schnell abgelöst von “Hoffentlich sind die Fragen nicht zu heftig”.

Ich habe gemerkt und gelernt, wo ich langsamer vorgehen sollte, wo mehr Erklärungsbedarf besteht und wie so ein Training aufgebaut sein sollte. Dass Virtuelle PCs oft mehr Ärger machen als erwartet, vor allem wenn man eine Silverlight-Solution zum weitermachen herausgibt.* Außerdem, dass eine Audience nicht gleich einer Audience ist. Die Zielgruppe ist für den Inhalt des Vortrages entscheidend. Soweit war das ja klar. Das schwierigste Publikum bisher war die CeBIT, weil man hier bei Vorträgen einen Kessel Buntes im Publikum sitzen hat. Aber auch die eigenen Vorstellungen, die man von einer Audience hat, erweisen sich oft als Fehleinschätzung. Und dann muss man bereit sein, zwei Gänge hoch oder einen runter zu schalten. Und dafür braucht es eben Vorbereitung und jede Menge Tiefenwissen. Beides Dinge, die ich mit meinen Wikiwiki(hawaiianisch für Schnell-schnell)-Vorbereitungen nicht unbedingt hatte. Trotz alle dem schien das Training gut angekommen zu sein. Was ich nicht zuletzt der Bereitschaft der Audience zu verdanken hatte.

Dann würde ich ja wahnsinnig gerne noch all das, was ich im Speaker-Training gelernt habe, also Körpersprache, Dramaturgie etc., einfließen lassen. Das kommt gerade noch viel zu kurz. Einfach aus dem Grund, weil derzeit Content in meiner Prioritätenliste höher steht. Ich will eine inhaltlich korrekte Session halten, dafür reicht die Vorbereitungszeit gerade so, dann das Ganze noch in eine gute Show zu verpacken gelingt mir derzeit noch nicht so richtig. Ich arbeite aber daran.

Ich nörgle also selber an mir herum, bzw. bin wahrscheinlich mein härtester Kritiker, wobei Oliver Scheer da auch immer ganz gute Dienste leistet. Wenn er in einer meiner Sessions im Publikum saß, sehe ich sein Feedback durchaus als wertvolle Kritik an. Wenn er zum Beispiel sagt, ich habe mehr mit der Leinwand als mit dem Publikum geredet, dann weiß ich, dass das ein Punkt ist, den ich definitiv ändern muss. Und habe das auch für das nächste Mal im Hinterkopf.

Back to the topic: Expression Blend und Silverlight / WPF ist für Neulinge in dem Bereich erst mal ein Hammer. Funktionsumfang und Möglichkeiten in den Applikationen und der Technologie erschlagen einen fast immer. Da ist es gut, einfache Beispiele und Demos zu haben, die einen Überblick bieten. Richtig in die Tiefe zu gehen macht nur Sinn, wenn mindestens eine dieser Voraussetzungen erfüllt ist:

  • Designvorkenntnisse (mit anderen Tools)
    oder
  • .NET-Programmiervorkenntnisse

Falls jetzt einer der Teilnehmer mitliest:
Ihr wart super. Ich weiß, dass es ein harter Brocken ist, in diese Technologien einzusteigen, habe ich doch diesen Weg auch vor einem halben Jahr begangen. Die Bereitschaft, sich neue Technologien anzuschauen ist der wichtigste Schritt, alles danach kommt praktisch von selbst. Und das habt ihr demonstriert! Danke an dieser Stelle für eure Mitarbeit und Unterstützung!

Ich freue mich schon auf das nächste Training,
viele Grüße,
jan

 

Footnotes (*):
*Der Punkt war, dass ich eine Solution mit einem Silverlight-Projekt und einem Web-Projekt in Visual Studio 2008 vorgearbeitet hatte. Als die Teilnehmer diese dann in Visual Web Developer 2008 geöffnet hatten, war der Web-Service aus dem Web-Projekt nicht mehr verfügbar. Zum Glück hatte einer der Teilnehmer die Erleuchtung, dass sowohl das Web-Projekt als Startprojekt festgelegt werden musste, als auch die html-Testpage aus dem Web-Projekt die Startseite des Projektes sein musste.

2nd generation Android phones battle it out with iPhone

28.04.2009 19:54:00 | Ozgur Aytekin

The new phones, running Android 1.5 (Cupcake edition) will be competing head to head with the Apple iPhone, running the iPhone OS 3.0. Assuming you’re lucky enough to live in an place where these phones are actually available, how do you decide which one to get? In this article I’ll briefly compare them in areas such as their displays, keyboards (or lack thereof), and applications.

http://blogs.zdnet.com/Burnette/?p=1073&tag=nl.e019

MS Office 2007 SP 2 ist nun verfügbar

28.04.2009 17:14:40 | Lars Keller

Ab heute steht das Service Pack 2 für MS Office 2007 zum Download bereit. Es gab nicht nur Bug Fixes und Performance-Updates (besonders bei Outlook), sondern auch einige neue Feature, z.B. die Integration von ODF (Open Document Format).

Link:



This weblog is sponsored by netcreate OHG.

MS Office 2007 SP 2 ist nun verfügbar

28.04.2009 16:14:40 | Lars Keller

Ab heute steht das Service Pack 2 für MS Office 2007 zum Download bereit. Es gab nicht nur Bug Fixes und Performance-Updates (besonders bei Outlook), sondern auch einige neue Feature, z.B. die Integration von ODF (Open Document Format).

Link:

BizTalk Server 2009 verfügbar

28.04.2009 11:56:00 | Wolfgang Kluge

Seit heute ist der BizTalk Server 2009 verfügbar. Eine 120-Tage-Testversion gibt's hier zum download.

Neben Verbesserungen an den Adaptern ist auch das Entwickeln der Orchestrations und Mappings vereinfacht worden. BizTalk-Projekte sind nun (wie C#- oder VB.NET-Projekte) echte "MSBuild-Projekte" (ich kenn keinen anderen Namen dafür). Dadurch steht einer Unterstützung von MSBuild (was zuvor mit vielen kleinen Hilfsmitteln auch ging) und Team Foundation Server nichts mehr im Weg, Der SQL Server 2008 wird nun unterstützt und auch die Unterstützung von SQL Server 2005 wurde verbessert.

Mit Visual Studio 2008 lassen sich die Projekte nun debuggen (z.B. Map debug), Unit Tests unterziehen und mittels MSBuild auch automatisierte Builds erstellen. Zudem wird ein Optimierter EDI- und AS2-Support versprochen... Und sowieso ist alles besser ;)

Vieles ging auch vorher - nur wesentlich umständlicher. Um z.B. ein Mapping zu debuggen musste man sich mittels "Validate Map" den XSLT-Code ausgeben und diesen dann mit XSLT-Debug debuggen.

MS Office 2007 SP 2 ist nun verfügbar

28.04.2009 07:14:04 | Lars Keller

Ab heute steht das Service Pack 2 für MS Office 2007 zum Download bereit. Es gab nicht nur Bug Fixes und Performance-Updates (besonders bei Outlook), sondern auch einige neue Feature, z.B. die Integration von ODF (Open Document Format).

Link:

HowToCode: Keep it simple & was fliegt, dass fliegt!

28.04.2009 02:29:50 | Robert Mühsig

image

Vor einer ganze Weile habe ich über eine Idee geschrieben, die wir eine ganze Weile auch in einem Projekt so verfolgt haben. Ein anderes geniales Konzept, wo ich mir nicht ganz sicher war, war das Exception Handling. Nachdem ich beide Ideen in einem Projekt umgesetzt hatte, kommt jetzt mein Fazit: Keep it simple!

 

(more…)

ShareThis

8 Fakten über mich

28.04.2009 01:46:00 | Jürgen Gutsch

Oh man, wie ich diese Stöckchen liebe :-/ (Da fühlt man sich doch wie des Nachbars Waldi)

Dennoch fühle ich den seltsamen inneren Drang nach diesem Stöckchen zu springen, das Peter mir zugeworfen hat.

Hier also die 8 Fakten:

  1. Lieblingszahl: 12
  2. Auto: Toyota Corolla Kombi und manchmal einen VW Lupo TDI
  3. Zocken? keine Zeit dafür und wenn dann nur mit dem Baby und seiner Rassel
  4. Windows Server 2008? Zuhause und im Geschäft. Das beste System bisher für Webentwickler.
  5. Musik? Alles solange ich nicht gezwungen bin die Texte zu verstehen
  6. “Entwicklerischer Evolutionsbaum”:
    Sprachen: VBScript => VBScript/VB6 => VB.NET => C#
    Technologien: Classic ASP => Classic ASP/ActiveX => ASP.NET
  7. Ich besitze nichts auf dem ein angebissener Apfel drauf ist…
  8. Und außer ASP.NET? Radfahren, Garten, Kochen und Familie.

Wer macht weiter mit diesem Spam? Ich bin für Stefan, Thomas und Karsten.

… endlich bin ich den Stock los…

DotNetKicks-DE Image

8 Fakten über mich

27.04.2009 21:47:00 | Peter Bucher

Es gab schon lange kein Stöckchen oder ähnliches, darum mache ich mal den Anfang :-)

Folgend also die 8 Punkte:

  1. 4 ist meine Lieblingszahl.
  2. Ich fahre einen Toyota.
  3. Wenn ich mal Zeit dazu finde, spiele ich Half-Life 2 Deathmatch, Battlefield 2 oder eine Runde Echtzeitstrategie (KKND2, AR2).
  4. Windows 2008 Server läuft bei mir schon seit _Ewigkeiten_ ohne Probleme *never touch a running system* :-)
  5. Ich höre (bis auf ganz wenige Ausnahmen) jegliche Art von Musik – von allem das beste. Bevorzugt allerdings technische Musik, Rock und Filmmusik.
  6. Mein “entwicklerischer Evolutionsbaum” von links nach rechts:
    Sprachen: QBasic => VB6 => VBScript => C# && VB.NET.
    Technologien: DOS => VB6 => Classic ASP => WindowsForms => Managed DirectX => ASP.NET.
  7. Ich bin zufriedener IPod Touch Besitzer. (Von der Software abgesehen)
  8. Abgsehen von allem ASP.NET interessiere ich mich – wie es in der Beschreibung im Blog steht – auch für die Spieleentwicklung.
    Mein erstes Spiel war ein Snake Klon.

Meine Idee war, dass Jürgen, Michael / Michael und Golo versuchen über über die selben 8 Punkte wie ich, ihre Person in Fakten zu beschreiben :-)

SQL Server UDF to pad a string

27.04.2009 20:39:00 | Ozgur Aytekin

While Transact-SQL (T/SQL) does not offer a comparable function similar to LPAD or RPAD available in other RDBMSs, the SQL Server Professional does have the REPLICATE() function that can be used to build a simple user-defined function that can be used to pad a string. Let's take a look at the REPLICATE() function and what it offers before moving on to the code for the custom padding function.

REPLICATE (string_expression ,integer_expression) will allow you to replicate a character string (the string_expression parameter the number of times consecutively per the integer_expression parameter).

http://www.mssqltips.com/tip.asp?tip=1738

Silverlight - Dynamischer Content mittels Reflection

27.04.2009 19:20:00 | Gregor Biswanger

Normal 0 21 false false false DE X-NONE X-NONE MicrosoftInternetExplorer4

In dem Artikel „ADO.NET Data Services - Der REST Anbieter für Modelle“ wurde geschildert, wie einfach O/R-Modelle, als Web-Service mit REST Funktionalität zur Verfügung gestellt werden können. Dabei wurde ein Entity-Model von Entity-Framework verwendet. Der Test von REST wurde mittels Browser (URL) Demonstriert.

Dieser Artikel wird Demonstrieren, wie der Web-Service von ADO.NET Data Service mittels LINQ auf Clients konsumiert wird. Dafür wird das Projekt aus dem Vorbericht verwendet: ADONETExample

Du gehörst zu mir!

Der Solution wird jetzt ein weiteres Projekt, der für den Client steht, hinzugefügt. Als Anwendung reicht eine einfache Consolen-Anwendung, die den Namen: ADONETExample.Client, bekommt.

Abb.1.1. – Neuen Client „ADONETExample.Client“ hinzufügen.

Dann muss dem Client eine Reference vom Web-Service mitgeteilt werden. Dazu macht man ein rechtsklick auf „References“ und wählt „Add Service Reference…“.



Abb.1.2 – Service Referenz auf den Web-Service

Anschließend wird mittels „Discover“ automatisiert in der Solution nach Web-Services gesucht. Der Namespace wird hier auf: ServiceReference, ergänzt.



Abb.1.3 – Web-Service auswählen

LINQ-2-ADO.NET-Data-Service

Wenn der Web-Service im Client Referenziert ist, möchte ich kurz einen Einblick unter die Hauben machen. Im Solution-Explorer gibt es oben ein kleines Icon mit „Show All Files“, nun werden zu dem eben erzeugen Service-Reference weitere Daten angezeigt. Die Datei service.edmx ist ein kleines Abbild vom Entity-Model das unter ADONETExample.WebDAL.Model liegt. Interessant ist auch der Inhalt von Reference.cs unter Reference.datasvcmap. Der Inhalt spiegelt dieselben Entities von Server auf Client-Seite ab (siehe Abb.1.4). Es werden demnach die Regeln und Standards dem Client so zur Verfügung gestellt. Bei einem üblichen Web-Service, werden die Definitionen im WSDL-Standard (XML) beschrieben (siehe Abb.1.5).



Abb.1.4 – Web-Service im Detail



Abb.1.5 – Herkömlicher Web-Service mit dem WSDL-Standard

Um auf die Entities mit LINQ Dynamisch zugreifen zu können, muss erst unser Entity-Model vom Web-Service Instanziiert werden. Dazu ist der Name: NorthwindEntities gleich geblieben. Der Konstruktor von NorthwindEntities verlangt ein URI. Ein URI ist gleichermaßen wie eine URL, nur mit dem Unterschied, das ein URI als einzigartig gelten muss. Bei einer URL kann sich jederzeit etwas an der Adresse ändern (z.B. Subdomains). Um die genaue Adresse beim Entwickeln feststellen zu können, muss der Web-Service manuell im Browser kurz geöffnet werden. Das kann ganz einfach mittels Rechtsklick auf die Datei: WebDataService.svc und „View in Browser“. Im Browserkopiert man die Adresse und übergibt diese einer neuen URI-Instanz, die dann mit den NothwindEntities instanziiert werden kann (siehe Abb.1.6.).



Abb.1.6 – NorthwindEntities mit URI Instanziieren

Jetzt kann wie gewohnt eine LINQ abfrage ausgeübt werden. Hier soll nach einer ID mit „ALFKI“ unter Customers abgefragt werden. Die LINQ-Abfrage dazu ist sehr einfach und selbsterklärend.

 

Abb.1.7 – LINQ-Abfrage einer Customer ID

Die generierte LINQ-Abfrage muss man nun als DataServiceQuery Instanziieren, damit die Abfrage durch Asynchrone-Kommunikation erweitert wird (siehe, Abb.1.8.). Die Klasse DataServiceQuery steht im Namespace: System.Data.Services.Client, zur Verfügung.



Abb.1.8 – LINQ-Abfrage in DataServiceQuery instanziieren

Wie bereits erwähnt, findet eine Web-Service-Kommunikation immer Asynchron statt. Das bedeutet, es muss jetzt eine Anfrage an den Web-Service gestellt werden, wenn es eine Antwort gibt, soll ein Event dementsprechend eine Methode aufrufen. Dafür ist beim dataServiceQuery-Objekt eine Methode mit BeginExecute (Starte Anfrage), womit beim ersten Parameter diese „aufzurufenden“ Methode definiert wird (OnLoadComplete). Der zweite Parameter benötigt eine eigene Instanz von dataServiceQuery. Am Ende soll die Console einfach warten mit Consolte.ReadKey(), sonst beendet sich das Fenster von selbst.

Abb.1.9 –DataServiceQuery Asynchrone-Kommunikation starten.

Wenn der Web-Service anschließend Antwortet, wird die Methode OnLoadComplete aufgerufen. Die Methode bekommt dann alle Informationen von Server über den Parameter result mitgeteilt. Diese muss allerdings erst einmal geformt werden. Dazu wird der Asynchrone-Status wieder als dataServiceQuery-Objekt instanziiert. Danach steht die Methode EndExecute bereit. Die das Komplette Ende des Parameters result in ein IEnumberable-Objekt zurück gibt.

Abb.1.10 –Asynchrone-Kommunikation empfangen.

Das IEnumberable-Objekt hat jetzt alle weiteren Informationen erhalten und kann mit einer Foreach-Schleife ausgelesen werden.

Abb.1.11 – Mit einer Foreach-Schleife durchs Objekt.

Damit der Code nun ausgeführt werden kann, muss sichergestellt sein, dass die Consolen-Anwendung auch als Startprojekt ausgewählt wurde. Das Aktiviert man  mit einem rechtsklick auf „ADONETExample.Client“ und auf „Set as StartUp Project“. Das Testen vom Code kann nun mit [F5] gestartet werden.

Abb.1.12 –Ausgabe auf der Console.

Fazit

ADO.NET Data Services sind für ein einfaches CRUD  (Create, Read, Update und Delete) geradezu ideal. Für jede weitere Logik müssen wohl zusätzliche Web-Services verwendet werden. Wie bereits von Robert Mühsig beim letzten Blog-Eintrag Kommentiert, arbeitet Microsoft bereits an einer erweiterten Variante der ADO.NET Data Services, dem Projekt .NET RIA Services. Bei einem persönlichen Test und genaueren Analyse der .NET RIA Services, möchte ich kurz mein Statement dazu geben: Die Web-Service Kommunikation soll vereinfacht werden, da hier keine weiteren Methoden für eine Asynchrone Verbindung erstellt werden müssen. Bestimmte Logik auf dem Server wird auch auf dem Client zur Verfügung gestellt. Das wird bestimmt Sinnvoll, wenn zum Beispiel Silverlight 3 Out-of-the-Browser Offline benutzbar seien soll. Desweiteren konnten keine wirklichen Vorteile festgestellt werden. Es gab hier genauso wenige Möglichkeiten die Business-Logik bei der Bereitstellung der Daten via REST unterzumischen. Die derzeitige Preview-Version funktionierte allerdings nicht einwandfrei bei mir. Beim Build-Prozess wird die jeweilige Logik aufgeteilt und konnte aber vom Client nicht gefunden werden. Ich sage daher Abwarten, derzeit gibt es dadurch keine wirklichen Vorteile. Es gibt dennoch für die ADO.NET Data Service einen möglichen aber nicht sauberen Weg die Business-Logik unterzuschieben. Daher zum Fazit: Gemeinsam mit der Verwendung von LINQ der automatisch die REST abfragen generiert und dem Data-Binding Unterstützung, ist das ADO.NET Data Service für das einfache CRUD sehr angenehm und zu Empfehlen.

Silverlight Roadshow - Mit Silverlight das Web entdecken

27.04.2009 19:20:00 | Gregor Biswanger

Normal 0 21 false false false DE X-NONE X-NONE

In dem Artikel „ADO.NET Data Services - Der REST Anbieter für Modelle“ wurde geschildert, wie einfach O/R-Modelle, als Web-Service mit REST Funktionalität zur Verfügung gestellt werden können. Dabei wurde ein Entity-Model von Entity-Framework verwendet. Der Test von REST wurde mittels Browser (URL) Demonstriert.

Dieser Artikel wird Demonstrieren, wie der Web-Service von ADO.NET Data Service mittels LINQ auf Clients konsumiert wird. Dafür wird das Projekt aus dem Vorbericht verwendet: ADONETExample

Du gehörst zu mir!

Der Solution wird jetzt ein weiteres Projekt, der für den Client steht, hinzugefügt. Als Anwendung reicht eine einfache Consolen-Anwendung, die den Namen: ADONETExample.Client, bekommt.

Abb.1.1. – Neuen Client „ADONETExample.Client“ hinzufügen.

Dann muss dem Client eine Reference vom Web-Service mitgeteilt werden. Dazu macht man ein rechtsklick auf „References“ und wählt „Add Service Reference…“.



Abb.1.2 – Service Referenz auf den Web-Service

Anschließend wird mittels „Discover“ automatisiert in der Solution nach Web-Services gesucht. Der Namespace wird hier auf: ServiceReference, ergänzt.



Abb.1.3 – Web-Service auswählen

LINQ-2-ADO.NET-Data-Service

Wenn der Web-Service im Client Referenziert ist, möchte ich kurz einen Einblick unter die Hauben machen. Im Solution-Explorer gibt es oben ein kleines Icon mit „Show All Files“, nun werden zu dem eben erzeugen Service-Reference weitere Daten angezeigt. Die Datei service.edmx ist ein kleines Abbild vom Entity-Model das unter ADONETExample.WebDAL.Model liegt. Interessant ist auch der Inhalt von Reference.cs unter Reference.datasvcmap. Der Inhalt spiegelt dieselben Entities von Server auf Client-Seite ab (siehe Abb.1.4). Es werden demnach die Regeln und Standards dem Client so zur Verfügung gestellt. Bei einem üblichen Web-Service, werden die Definitionen im WSDL-Standard (XML) beschrieben (siehe Abb.1.5).



Abb.1.4 – Web-Service im Detail



Abb.1.5 – Herkömlicher Web-Service mit dem WSDL-Standard

Um auf die Entities mit LINQ Dynamisch zugreifen zu können, muss erst unser Entity-Model vom Web-Service Instanziiert werden. Dazu ist der Name: NorthwindEntities gleich geblieben. Der Konstruktor von NorthwindEntities verlangt ein URI. Ein URI ist gleichermaßen wie eine URL, nur mit dem Unterschied, das ein URI als einzigartig gelten muss. Bei einer URL kann sich jederzeit etwas an der Adresse ändern (z.B. Subdomains). Um die genaue Adresse beim Entwickeln feststellen zu können, muss der Web-Service manuell im Browser kurz geöffnet werden. Das kann ganz einfach mittels Rechtsklick auf die Datei: WebDataService.svc und „View in Browser“. Im Browserkopiert man die Adresse und übergibt diese einer neuen URI-Instanz, die dann mit den NothwindEntities instanziiert werden kann (siehe Abb.1.6.).



Abb.1.6 – NorthwindEntities mit URI Instanziieren

Jetzt kann wie gewohnt eine LINQ abfrage ausgeübt werden. Hier soll nach einer ID mit „ALFKI“ unter Customers abgefragt werden. Die LINQ-Abfrage dazu ist sehr einfach und selbsterklärend.

 

Abb.1.7 – LINQ-Abfrage einer Customer ID

Die generierte LINQ-Abfrage muss man nun als DataServiceQuery Instanziieren, damit die Abfrage durch Asynchrone-Kommunikation erweitert wird (siehe, Abb.1.8.). Die Klasse DataServiceQuery steht im Namespace: System.Data.Services.Client, zur Verfügung.



Abb.1.8 – LINQ-Abfrage in DataServiceQuery instanziieren

Wie bereits erwähnt, findet eine Web-Service-Kommunikation immer Asynchron statt. Das bedeutet, es muss jetzt eine Anfrage an den Web-Service gestellt werden, wenn es eine Antwort gibt, soll ein Event dementsprechend eine Methode aufrufen. Dafür ist beim dataServiceQuery-Objekt eine Methode mit BeginExecute (Starte Anfrage), womit beim ersten Parameter diese „aufzurufenden“ Methode definiert wird (OnLoadComplete). Der zweite Parameter benötigt eine eigene Instanz von dataServiceQuery. Am Ende soll die Console einfach warten mit Consolte.ReadKey(), sonst beendet sich das Fenster von selbst.

Abb.1.9 –DataServiceQuery Asynchrone-Kommunikation starten.

Wenn der Web-Service anschließend Antwortet, wird die Methode OnLoadComplete aufgerufen. Die Methode bekommt dann alle Informationen von Server über den Parameter result mitgeteilt. Diese muss allerdings erst einmal geformt werden. Dazu wird der Asynchrone-Status wieder als dataServiceQuery-Objekt instanziiert. Danach steht die Methode EndExecute bereit. Die das Komplette Ende des Parameters result in ein IEnumberable-Objekt zurück gibt.

Abb.1.10 –Asynchrone-Kommunikation empfangen.

Das IEnumberable-Objekt hat jetzt alle weiteren Informationen erhalten und kann mit einer Foreach-Schleife ausgelesen werden.

Abb.1.11 – Mit einer Foreach-Schleife durchs Objekt.

Damit der Code nun ausgeführt werden kann, muss sichergestellt sein, dass die Consolen-Anwendung auch als Startprojekt ausgewählt wurde. Das Aktiviert man  mit einem rechtsklick auf „ADONETExample.Client“ und auf „Set as StartUp Project“. Das Testen vom Code kann nun mit [F5] gestartet werden.

Abb.1.12 –Ausgabe auf der Console.

Fazit

ADO.NET Data Services sind für ein einfaches CRUD  (Create, Read, Update und Delete) geradezu ideal. Für jede weitere Logik müssen wohl zusätzliche Web-Services verwendet werden. Wie bereits von Robert Mühsig beim letzten Blog-Eintrag Kommentiert, arbeitet Microsoft bereits an einer erweiterten Variante der ADO.NET Data Services, dem Projekt .NET RIA Services. Bei einem persönlichen Test und genaueren Analyse der .NET RIA Services, möchte ich kurz mein Statement dazu geben: Die Web-Service Kommunikation soll vereinfacht werden, da hier keine weiteren Methoden für eine Asynchrone Verbindung erstellt werden müssen. Bestimmte Logik auf dem Server wird auch auf dem Client zur Verfügung gestellt. Das wird bestimmt Sinnvoll, wenn zum Beispiel Silverlight 3 Out-of-the-Browser Offline benutzbar seien soll. Desweiteren konnten keine wirklichen Vorteile festgestellt werden. Es gab hier genauso wenige Möglichkeiten die Business-Logik bei der Bereitstellung der Daten via REST unterzumischen. Die derzeitige Preview-Version funktionierte allerdings nicht einwandfrei bei mir. Beim Build-Prozess wird die jeweilige Logik aufgeteilt und konnte aber vom Client nicht gefunden werden. Ich sage daher Abwarten, derzeit gibt es dadurch keine wirklichen Vorteile. Es gibt dennoch für die ADO.NET Data Service einen möglichen aber nicht sauberen Weg die Business-Logik unterzuschieben. Daher zum Fazit: Gemeinsam mit der Verwendung von LINQ der automatisch die REST abfragen generiert und dem Data-Binding Unterstützung, ist das ADO.NET Data Service für das einfache CRUD sehr angenehm und zu Empfehlen.

Neues Open-Source Projekt: Silverlight OOB Extension

27.04.2009 19:20:00 | Gregor Biswanger

Normal 0 21 false false false DE X-NONE X-NONE

In dem Artikel „ADO.NET Data Services - Der REST Anbieter für Modelle“ wurde geschildert, wie einfach O/R-Modelle, als Web-Service mit REST Funktionalität zur Verfügung gestellt werden können. Dabei wurde ein Entity-Model von Entity-Framework verwendet. Der Test von REST wurde mittels Browser (URL) Demonstriert.

Dieser Artikel wird Demonstrieren, wie der Web-Service von ADO.NET Data Service mittels LINQ auf Clients konsumiert wird. Dafür wird das Projekt aus dem Vorbericht verwendet: ADONETExample

Du gehörst zu mir!

Der Solution wird jetzt ein weiteres Projekt, der für den Client steht, hinzugefügt. Als Anwendung reicht eine einfache Consolen-Anwendung, die den Namen: ADONETExample.Client, bekommt.

Abb.1.1. – Neuen Client „ADONETExample.Client“ hinzufügen.

Dann muss dem Client eine Reference vom Web-Service mitgeteilt werden. Dazu macht man ein rechtsklick auf „References“ und wählt „Add Service Reference…“.



Abb.1.2 – Service Referenz auf den Web-Service

Anschließend wird mittels „Discover“ automatisiert in der Solution nach Web-Services gesucht. Der Namespace wird hier auf: ServiceReference, ergänzt.



Abb.1.3 – Web-Service auswählen

LINQ-2-ADO.NET-Data-Service

Wenn der Web-Service im Client Referenziert ist, möchte ich kurz einen Einblick unter die Hauben machen. Im Solution-Explorer gibt es oben ein kleines Icon mit „Show All Files“, nun werden zu dem eben erzeugen Service-Reference weitere Daten angezeigt. Die Datei service.edmx ist ein kleines Abbild vom Entity-Model das unter ADONETExample.WebDAL.Model liegt. Interessant ist auch der Inhalt von Reference.cs unter Reference.datasvcmap. Der Inhalt spiegelt dieselben Entities von Server auf Client-Seite ab (siehe Abb.1.4). Es werden demnach die Regeln und Standards dem Client so zur Verfügung gestellt. Bei einem üblichen Web-Service, werden die Definitionen im WSDL-Standard (XML) beschrieben (siehe Abb.1.5).



Abb.1.4 – Web-Service im Detail



Abb.1.5 – Herkömlicher Web-Service mit dem WSDL-Standard

Um auf die Entities mit LINQ Dynamisch zugreifen zu können, muss erst unser Entity-Model vom Web-Service Instanziiert werden. Dazu ist der Name: NorthwindEntities gleich geblieben. Der Konstruktor von NorthwindEntities verlangt ein URI. Ein URI ist gleichermaßen wie eine URL, nur mit dem Unterschied, das ein URI als einzigartig gelten muss. Bei einer URL kann sich jederzeit etwas an der Adresse ändern (z.B. Subdomains). Um die genaue Adresse beim Entwickeln feststellen zu können, muss der Web-Service manuell im Browser kurz geöffnet werden. Das kann ganz einfach mittels Rechtsklick auf die Datei: WebDataService.svc und „View in Browser“. Im Browserkopiert man die Adresse und übergibt diese einer neuen URI-Instanz, die dann mit den NothwindEntities instanziiert werden kann (siehe Abb.1.6.).



Abb.1.6 – NorthwindEntities mit URI Instanziieren

Jetzt kann wie gewohnt eine LINQ abfrage ausgeübt werden. Hier soll nach einer ID mit „ALFKI“ unter Customers abgefragt werden. Die LINQ-Abfrage dazu ist sehr einfach und selbsterklärend.

 

Abb.1.7 – LINQ-Abfrage einer Customer ID

Die generierte LINQ-Abfrage muss man nun als DataServiceQuery Instanziieren, damit die Abfrage durch Asynchrone-Kommunikation erweitert wird (siehe, Abb.1.8.). Die Klasse DataServiceQuery steht im Namespace: System.Data.Services.Client, zur Verfügung.



Abb.1.8 – LINQ-Abfrage in DataServiceQuery instanziieren

Wie bereits erwähnt, findet eine Web-Service-Kommunikation immer Asynchron statt. Das bedeutet, es muss jetzt eine Anfrage an den Web-Service gestellt werden, wenn es eine Antwort gibt, soll ein Event dementsprechend eine Methode aufrufen. Dafür ist beim dataServiceQuery-Objekt eine Methode mit BeginExecute (Starte Anfrage), womit beim ersten Parameter diese „aufzurufenden“ Methode definiert wird (OnLoadComplete). Der zweite Parameter benötigt eine eigene Instanz von dataServiceQuery. Am Ende soll die Console einfach warten mit Consolte.ReadKey(), sonst beendet sich das Fenster von selbst.

Abb.1.9 –DataServiceQuery Asynchrone-Kommunikation starten.

Wenn der Web-Service anschließend Antwortet, wird die Methode OnLoadComplete aufgerufen. Die Methode bekommt dann alle Informationen von Server über den Parameter result mitgeteilt. Diese muss allerdings erst einmal geformt werden. Dazu wird der Asynchrone-Status wieder als dataServiceQuery-Objekt instanziiert. Danach steht die Methode EndExecute bereit. Die das Komplette Ende des Parameters result in ein IEnumberable-Objekt zurück gibt.

Abb.1.10 –Asynchrone-Kommunikation empfangen.

Das IEnumberable-Objekt hat jetzt alle weiteren Informationen erhalten und kann mit einer Foreach-Schleife ausgelesen werden.

Abb.1.11 – Mit einer Foreach-Schleife durchs Objekt.

Damit der Code nun ausgeführt werden kann, muss sichergestellt sein, dass die Consolen-Anwendung auch als Startprojekt ausgewählt wurde. Das Aktiviert man  mit einem rechtsklick auf „ADONETExample.Client“ und auf „Set as StartUp Project“. Das Testen vom Code kann nun mit [F5] gestartet werden.

Abb.1.12 –Ausgabe auf der Console.

Fazit

ADO.NET Data Services sind für ein einfaches CRUD  (Create, Read, Update und Delete) geradezu ideal. Für jede weitere Logik müssen wohl zusätzliche Web-Services verwendet werden. Wie bereits von Robert Mühsig beim letzten Blog-Eintrag Kommentiert, arbeitet Microsoft bereits an einer erweiterten Variante der ADO.NET Data Services, dem Projekt .NET RIA Services. Bei einem persönlichen Test und genaueren Analyse der .NET RIA Services, möchte ich kurz mein Statement dazu geben: Die Web-Service Kommunikation soll vereinfacht werden, da hier keine weiteren Methoden für eine Asynchrone Verbindung erstellt werden müssen. Bestimmte Logik auf dem Server wird auch auf dem Client zur Verfügung gestellt. Das wird bestimmt Sinnvoll, wenn zum Beispiel Silverlight 3 Out-of-the-Browser Offline benutzbar seien soll. Desweiteren konnten keine wirklichen Vorteile festgestellt werden. Es gab hier genauso wenige Möglichkeiten die Business-Logik bei der Bereitstellung der Daten via REST unterzumischen. Die derzeitige Preview-Version funktionierte allerdings nicht einwandfrei bei mir. Beim Build-Prozess wird die jeweilige Logik aufgeteilt und konnte aber vom Client nicht gefunden werden. Ich sage daher Abwarten, derzeit gibt es dadurch keine wirklichen Vorteile. Es gibt dennoch für die ADO.NET Data Service einen möglichen aber nicht sauberen Weg die Business-Logik unterzuschieben. Daher zum Fazit: Gemeinsam mit der Verwendung von LINQ der automatisch die REST abfragen generiert und dem Data-Binding Unterstützung, ist das ADO.NET Data Service für das einfache CRUD sehr angenehm und zu Empfehlen.

C# 2008 Profibuch fast geschenkt!

27.04.2009 11:07:00 | Ozgur Aytekin

Der Online-Buchversand Terrashop hat für alle Freunde von http://dotnet-snippets.de ein unschlagbares Angebot vorbereitet.

Das Buch "C# 2008 - Profihandbuch und Referenz" gibt es für nur 9,95€! Der Originalpreis ist 49,95€.
Das Angebot ist nur bis zum 15.5.2009 verfügbar und solange der Vorrat reicht.

Jetzt schnell zugreifen: http://dotnet-snippets.de/dns/C-Sharp-2008-Profihandbuch-und-Referenz.aspx

Onlineshop in Silverlight 2 – www.eastberlinshop.com

27.04.2009 10:34:49 | Oliver Scheer

Das Webunternehmen Weltretter insbesondere Christoph Schuster (www.weltretter.com) hat vor einigen Tagen einen Onlineshop für das Modelabel Eastberlin fertig- und onlinegestellt.

image

Die Website basiert zu 100% auf Silverlight 2.

Die Website von Eastberlin ist hier zu finden: www.eastberlinshop.com

Wenn du es eilig hast, gehe langsam - Lothar J. Seiwert

27.04.2009 05:13:00 | Ozgur Aytekin




Mehr Zeit in einer beschleunigten Welt

In unserem hektischen und komplexen Alltag reicht Zeitsparen allein schon lange nicht mehr aus. Darum ist das Credo von Zeitmanagement- Papst Lothar J. Seiwert: ganzheitliches Lebensmanagement!
In der Neuausgabe seines Bestsellers zeigt er, wie wir durch eine bessere Selbstorganisation mehr Lebensqualität gewinnen.

http://www.campus.de/isbn/9783593376653

Ödipuskonflikt

26.04.2009 17:51:00 | Ozgur Aytekin

Der Ödipuskonflikt bezeichnet eine Theorie der Psychoanalyse Sigmund Freuds, wonach jedes männliche Kind im Laufe seiner Entwicklung eine "ödipale Phase" durchläuft, in der es die eigene Mutter begehrt und mit dem Vater rivalisiert. Von einem Ödipuskomplex spricht man, wenn der Erwachsene immer noch in dieser Problemstellung verharrt, der kindliche Konflikt also nicht befriedigend gelöst werden konnte. Allerdings wird der Begriff Ödipuskomplex oft auch synonym im Sinne des kindlichen Ödipuskonflikts gebraucht.

http://de.wikipedia.org/wiki/%C3%96dipuskomplex

50 Erfolgsmodelle. Kleines Handbuch für strategische Entscheidungen

26.04.2009 14:56:00 | Ozgur Aytekin



WARUM SIE DIESES BUCH LESEN SOLLTEN
Dieses Buch ist für alle geschrieben, die mit Menschen zu tun haben. Egal ob Sie Kindergärtnerin sind oder Hochschullehrer, Pilot oder Topmanager: Sie werden immer wieder vor den gleichen Fragen stehen. Wie treffe ich die richtige Entscheidung? Wie motiviere ich mich oder mein Team? Wie kann ich Dinge verändern? Wie arbeite ich effizienter? Aber auch: Was verraten meine Freunde über mich? Lebe ich im Jetzt?


Was will ich?

WAS SIE IN DIESEM BUCH FINDEN
Die 50 besten Modelle - bekannte und unbekannte -, die Ihnen in diesen Fragen weiterhelfen. Erwarten Sie nicht Vollständigkeit, erwarten Sie Verblüffendes. Erwarten Sie Anregungen zum Nachdenken. Zudem eignen Sie sich die Art von Wissen an, mit der Sie beim nächsten Abendessen auftrumpfen können: Was ist der Black Swan? Was der Long Tail? Und was das Pareto-Prinzip? Warum vergessen wir immer alles? Wie sollte ich mich in Konfliktsituationen verhalten?

WIE SIE DIESES BUCH ANWENDEN
Dieses Buch ist ein Arbeitsbuch. Sie können die Modelle abschreiben, ausfüllen, durchstreichen, weiterentwickeln. Egal, ob Sie eine Präsentation machen müssen oder ein Jahresgespräch führen, ob eine schwerwiegende Entscheidung vor Ihnen liegt oder ein langer Streit hinter Ihnen. Egal, ob Sie ihre Geschäftsidee überprüfen wollen oder sich selbst besser kennen lernen- dieses Buch ist Ihre Anleitung,. Und die Antwort sind Sie selbst.

http://www.keinundaber.ch/buecher_und_records/buecher/krogerus_tschaeppeler_50_modelle_die_deine_welt_erklaeren/index.html

Silverlight-Spiel Dr. Dobbs’s Challenge Deuce

26.04.2009 12:28:38 | Oliver Scheer

Spielen, erweitern, selbst entwickeln …und Preise im Wert von bis zu 10.000$ gewinnen! (+ TeamConf09)

Dr. Dobbs’s Challenge Deuce ist ein klassischer Plattformer im 8-Bit-Style. Dr. Dobbs und seine Freunde hüpfen und hangeln sich durch eine Vielzahl Level und sammeln Visual Studio Power-Ups – und als wäre das noch nicht genug Spaß: Jeder kann das Spiel erweitern und alleine oder mit gemeinsam mit Freunden neue Level gestalten und dabei Preise im Wert von bis zu 10.000$ gewinnen (da der Dollar mittlerweile ja leider wieder etwas wert ist, ist das eine ganze Menge).

clip_image002

Mittels der Option „Create“ kann jeder auch ohne Programmierkenntnisse direkt innerhalb des Spiels neue Level gestalten und nimmt damit automatisch an der wöchentlichen Verlosung für den besten Level teil. Verlost werden Dr. Dobbs “Wackeldackel-Puppen” und wöchentlich 500$.

Wer stattdessen beweisen will dass er (oder sie) auch über „mad coding skills“ verfügt kann die Silverlight-Anwendung inklusive SDK usw. herunterladen und ein eigenes Spiel auf Basis des Quellcodes entwickeln. So richtig „mad“ müssen die Programmierkenntnisse übrigens gar nicht sein, denn Tutorials und ausführliche Einführungen sind ebenfalls verfügbar. Damit fällt auch Einsteigern mit sehr geringen Programmierkenntnissen das Entwickeln eines eigenen Silverlight-Spiels leicht.

Interessiert? Dann nix wie hin: http://dobbschallenge2.com

Und da wir schon beim Thema Visual Studio Power-Ups sind: Vom 5.-7. Mai findet in München die TeamConf statt – die Konferenz zum Thema Visual Studio Team System in der Praxis, veranstaltet in Kooperation mit iX aus dem Heise Zeitschriften Verlag.

Ziel der Konferenz ist es, den Teilnehmern eine breite Kommunikationsplattform rund um das Thema Microsoft Visual Studio Team System und dem Team Foundation Server zu bieten. Hierzu werden in Anwenderberichten renommierte Unternehmen über ihre bisher mit Microsoft Visual Studio Team Systems gesammelten Erfahrungen berichten. In Fachvorträgen werden sowohl lösungsorientierte Szenarien und Best Practices mit Visual Studio Team System vorgestellt als auch Methodiken des modernen Software Engineerings beleuchtet. Zusätzlich wird in Technologiebeiträgen auf die technischen Details einzelner Funktionsbereiche von Visual Studio Team System eingegangen.
Absolute Highlights der Konferenz sind die Keynotes von Ken Schwaber (Erfinder von SCRUM) und Cameron Skinner (Product Unit Manager im Visual Studio Team System (VSTS)-Team).

Ausführliche Informationen zur TeamConf 2009 erhalten Sie hier: www.teamconf.de

Wer dabei noch sparen möchte, kann sich bei meinem Kollegen Christian Binder melden, er kann noch den Code für den Frühbucher-Rabatt besorgen, mit dem sich bis zu 200,- Euro sparen lassen.

Im Handumdrehen zur passenden Software mit den Microsoft Subscriptions

26.04.2009 10:36:59 | Oliver Scheer

Immer die aktuellsten Entwicklungs- und Designwerkzeuge zur Hand, das gesamte Microsoft-Portfolio zum unbegrenzten Testen beziehungsweise Evaluieren, immer auf dem neuesten Stand und kostenloser Profisupport. Lebenslange Lizenzen, verteilte Zahlungen und bessere Kosten-Planbarkeit.

Gute Gründe, die gerade in der aktuellen Krise dafür sprechen, Software via Abonnement/Subscription zu lizenzieren anstatt teuer einzelne Boxen zu kaufen. Aber welche der drei Subscriptions ist ideal für Sie? Microsoft bietet maßgeschneiderte Lösungen für Designer/Webentwickler, klassische Softwareentwickler und für IT-Profis an. Mit einem neuen kurzen Test finden Sie anhand weniger Fragen heraus, welche für Ihren Arbeitsalltag und Ihre Firmenstruktur optimal ist:

  • Expression Professional Subscription: Das „Rundum-Sorglos-Softwareabo“ für Webdesigner, Webentwickler und Entwickler von Rich Internet Applications mit den neuesten Tools für WPF und Silverlight.
  • MSDN Subscriptions: Die optimale Ergänzung zu Visual Studio: für das professionelle Entwerfen, Entwickeln und Testen aller Arten von IT-Anwendungen.
  • TechNet Plus Abonnement: Die unverzichtbare Ressource für IT-Experten, um Probleme zu lösen, die Systemsicherheit zu optimieren und Deployments vorzubereiten.

clip_image002

Klicken Sie hier, um herauszufinden welches Modell Ihnen am besten dabei helfen kann, Ihre Kosten deutlich zu senken und Ihre Designer, Entwickler und Administratoren optimal auszustatten: http://www.microsoft.com/germany/aktionen/subscriptions/

Migrating SharePoint Content Databases To A New Farm While Keeping Security Settings

25.04.2009 16:40:29 | Alexander Groß

The server this blog is hosted on was upgraded recently, i.e. is now run on a new dedicated server. Actually, next to this blog there’s a lot more going on. We, a bunch of geeks, are self-hosting mail, web sites, blogs and some collaboration tools like SharePoint (Windows SharePoint Services, in our case). Yeah, SharePoint, a true beast in and of itself. I can’t tell you how much I do not miss developing software for it and setting up customer sites.

I wanted to make the move to the new server as smooth as possible for our SharePoint users. Because we do not use Active Directory to authenticate our users, we obviously had to migrate the SharePoint user accounts manually. That is, re-create each user on the new server giving them a random password and communicate the change.

Moving a SharePoint site is surprisingly pretty well documented on TechNet, but won’t tell you about one important aspect: When you move the site to a new farm and the site does not use Active Directory, you will have to set up security anew.

Why? Because SharePoint matches user accounts by their SID, a value that is unique for each user account, even across machines: OLDMACHINE\foo’s SID is different from NEWMACHINE\foo’s SID. Burdening the four site collection administrator with this task is simply a no-go.

During my research how to work around that I found the Dustin Miller’s excellent post “Fix those SIDs”. It describes the process of massaging a SharePoint site collection database to replace old SIDs with the account SIDs of the current machine. I’ve extended it a bit, because I also decided to rename the SharePoint Search account while moving to the new server (note the extra REPLACE in line 11).

DECLARE @login nvarchar(255), @SystemId varbinary(512)

DECLARE curUsers CURSOR LOCAL FOR 
SELECT tp_Login, tp_SystemID FROM UserInfo WHERE tp_Deleted = 0

OPEN curUsers
FETCH NEXT FROM curUsers INTO @login, @systemid

WHILE @@FETCH_STATUS = 0
BEGIN
    DECLARE @newLoginName AS nvarchar(255) = REPLACE(REPLACE(@login, 'OLDMACHINE', 'NEWMACHINE'), 'spsearch', 'sharepoint-search')
    DECLARE @newSID varbinary(85) = SUSER_SID(@newLoginName)
    
    IF @newSID IS NOT NULL
    BEGIN
        PRINT 'Resetting user ' + @login + ' to new login ' + @newLoginName  + ' with SID '
        PRINT SUSER_SID(@newLoginName)

        UPDATE UserInfo
        SET    tp_SystemID = SUSER_SID(@newLoginName),
               tp_Login = @newLoginName
        WHERE CURRENT OF curUsers
    END
    
    FETCH NEXT FROM curUsers INTO @login, @systemid
END

CLOSE curUsers
DEALLOCATE curUsers
GO

After the script ran, take a look at the UserInfo table and SELECT rows that still contain OLDMACHINE in the tp_Login column. This helps you get a quick overview of what accounts have been missed during account re-creation.

As an extra step, I found it appropriate to update the site’s user entry as well (the account name that shows up in the site’s user list when no full name is given) to reflect the new machine name.

UPDATE    [AllUserData]
SET       [nvarchar1] = REPLACE(REPLACE([nvarchar1], 'OLDMACHINE', 'NEWMACHINE'), 'spsearch', 'sharepoint-search'),
          [nvarchar2] = REPLACE(REPLACE([nvarchar2], 'OLDMACHINE', 'NEWMACHINE'), 'spsearch', 'sharepoint-search'),
          [nvarchar3] = REPLACE(REPLACE([nvarchar3], 'OLDMACHINE', 'NEWMACHINE'), 'spsearch', 'sharepoint-search')

SharePoint Versions

25.04.2009 07:04:00 | Ozgur Aytekin

12.0.0.6327 - MOSS 2007 or WSS 3.0 Cumulative update (KB956056 & KB956057)
12.0.0.6318 - MOSS 2007 or WSS 3.0 Infrastructure Update (KB951695 & KB951297)
12.0.0.6303 - MOSS 2007 or WSS 3.0 post-SP1 hotfix (KB948945)
12.0.0.6301 - MOSS 2007 or WSS 3.0 post-SP1 hotfix (KB941274)
12.0.0.6300 - MOSS 2007 or WSS 3.0 post-SP1 hotfix (KB941422)
12.0.0.6219 - MOSS 2007 or WSS 3.0 SP1
12.0.0.6039 - MOSS 2007 or WSS 3.0 October public update
12.0.0.6036 - MOSS 2007 or WSS 3.0 August 24, 2007 hotfix package
12.0.0.4518 - MOSS 2007 or WSS 3.0 RTM
12.0.0.4407 - MOSS 2007 or WSS 3.0 Beta 2 TR
12.0.0.4017 - MOSS 2007 or WSS 3.0 Beta 2

http://sharepointadminwiki.com/display/SharePointAdministrationWiki/SharePoint+Versions

Im Handumdrehen zur passenden Software mit den Microsoft Subscriptions

24.04.2009 13:52:13 | Steffen Ritter

Immer die aktuellsten Entwicklungs- und Designwerkzeuge zur Hand, das gesamte Microsoft-Portfolio zum unbegrenzten Testen beziehungsweise Evaluieren, immer auf dem neuesten Stand und kostenloser Profisupport. Lebenslange Lizenzen, verteilte Zahlungen und bessere Kosten-Planbarkeit.

Gute Gründe, die dafür sprechen, Software via Abonnement/Subscription zu lizenzieren statt einzelne Boxen zu kaufen. Aber welche der drei Subscriptions ist ideal für Sie? Microsoft bietet maßgeschneiderte Lösungen für Designer/Webentwickler, klassische Softwareentwickler und für IT-Profis an. Mit einem neuen kurzen Test finden Sie anhand weniger Fragen heraus, welche für Ihren Arbeitsalltag und Ihre Firmenstruktur optimal ist:

  • Expression Professional Subscription: Das „Rundum-Sorglos-Softwareabo“ für Webdesigner, Webentwickler und Entwickler von Rich Internet Applications mit den neuesten Tools für WPF und Silverlight.
  • MSDN Subscriptions: Die optimale Ergänzung zu Visual Studio: für das professionelle Entwerfen, Entwickeln und Testen aller Arten von IT-Anwendungen.
  • TechNet Plus Abonnement: Die unverzichtbare Ressource für IT-Experten, um Probleme zu lösen, die Systemsicherheit zu optimieren und Deployments vorzubereiten.

Finden Sie heraus wie Sie das Maximum an Software für den geringsten Preis herausholen!

Klicken Sie hier, um herauszufinden welches Modell Ihnen am besten dabei helfen kann, Ihre Kosten deutlich zu senken und Ihre Designer, Entwickler und Administratoren optimal auszustatten: http://www.microsoft.com/germany/aktionen/subscriptions/

ADO.NET Data Service - Der REST Anbieter für Modelle

23.04.2009 18:19:00 | Gregor Biswanger

Normal 0 21 false false false DE X-NONE X-NONE

Web-Services haben sich in Laufe der letzten Jahre sehr etabliert. Ist ja auch kein Wunder, sie bringen auch eine Handvoll von Vorteile mit sich. Durch den allgemeinen WSDL-Standard, kann eine externe Kommunikation der Daten, durch unterschiedliche Technologien konsumiert werden. Es spielt am Ende keine Rolle mehr, ob der Client nun eine .NET oder Java-Applikation ist. Dennoch sind Web-Services nicht nur wegen Ihrer Flexibilität so beliebt, sondern auch an der einfachen Implementierungsunterstützung der einzelnen IDE´s.

Wie bereits beim Blog-Artikel „Web-Service und die Datenschicht – Alles nur Facade?„ - kann der Zugriff der Server-Daten einfachst über eine Facade zur Verfügung gestellt werden. Erfahrungsgemäß ist hier zu jeder Anforderung ein CRUD (Create, Read, Update und Delete) zu Programmieren. Das bringt viel an Pflege und Arbeit mit sich. Viele Entwickler kämpfen bereits Täglich mit diesem Problem. Doch wie bereits in zahlreichen Artikeln von mir geschildert, gibt es zu immer wiederkehrenden Problemen meist ein Entwurfsmuster „Design-Pattern“. In diesem Fall würde ein Unit-of-Work-Pattern, die Anforderungen mit einem CRUD perfekt abdecken.

Nun wäre es ein perfekter Lösungsweg, die Facade des Web-Services mit einem Unit-of-Work-Pattern auszustatten. Doch bevor man sich Gedanken um die Umsetzung macht, soll ein Blick auf bisherige Technologien geworfen werden. Sehr Modern ist derzeit die Datenkommunikation mittels REST “Representational State Transfer“. REST ist eine Technologie, die von Anlauf des Internet Zeitalters existiert. Denn jede Kommunikation vom Browser zum Web-Server geschieht mittels REST beim HTTP-Protokoll. REST stellt für diese Kommunikation genau genommen eine Unit-of-Work-Lösung bereit, demnach wird hier als flexibler weg ein CRUD zur Verfügung gestellt. Der Hauptsächliche nutzen von REST fand durch das Aufrufen der Websites im Adress-Zeilen Bereich mittels URL statt, oder das versenden von Formularen (Post). Unterdessen bei einer solchen abfrage bisher kaum Daten zur Kommunikationsbeschreibung gebraucht werden, wie zum Beispiel eine XML-Definition bei WSDL (Web-Services), ist REST auch noch sehr Performant. Weil hier eine umfangreiche Kommunikationsbeschreibung erspart bleibt. Das einzige Problem steht hierbei nur im Weg, wenn ein fester Aufbau eines Web-Services mittels REST von unterschiedlichen Anbietern konsumiert werden soll, fehlt die erleichterte WSDL-Definition.

ADO.NET Data Service erstellen

Mit dem .NET-Framework 3.0 ist eine neue Kommunikationstechnologie mitgekommen, die Windows Communication Foundation (kurz WCF). Mit WCF lassen sich Kommunikationen erstellen, die nachträglich flexibel eingesetzt werden können. Es spielt später keine Rolle mehr, ob eine Kommunikation noch über ein Web-Service oder Socket stattfindet. Zudem bringt WCF noch einiges mehr mit sich, obwohl Web-Services Asynchron verarbeitet werden, kann ein Client von Web-Service aufgerufen werden.

ADO.NET Data Service ist mit dem .NET-Framework 3.5 gemeinsam mit dem Entity-Framework und LINQ dazugekommen. ADO.NET Data Service basiert auf WCF und ist für das bereitstellen von Entity-Framework-Modellen konzeptioniert worden. Dabei werden die Modelle automatisiert als Web-Services zur Verfügung gestellt. Der Web-Services bietet das komplette CRUD mittels REST an.

Um das besser zu verbildlichen, erzeugen wir ein neues Projekt „ASP.NET Web Application“ mit dem Namen ADONETExample.WebDAL, und der Solution Name lautet: ADONETExample (siehe Abb.1.1).



Abb.1.1. – Neues „ASP.NET Web Application“-Projekt in Visual Studio erstellen.

Als nächstes wird die zur Verfügung gestellte Default.aspx-Datei gelöscht, und dem Projekt ein neues Verzeichnis mit Model erzeugt. In das Verzeichnis Model muss nun ein neues Item hinzugefügt werden (siehe Abb.1.2).



Abb.1.2. – Neues Item hinzufügen.

Hier erzeugen wir uns ein neues ADO.NET Entity Data Model. Damit wird vom Entity-Framework (O/R-Mapper) ein Abbild der Datenbanktabellen als Klassen erzeugt. Bei dieser Demo wird die Beispieldatenbank Northwind von Microsoft eingesetzt. Daher wird der Name auf NorthwindModel vergeben.



Abb.1.3. – ADO.NET Entity Data Model erzeugen

Daraufhin wird ein Wizard angezeigt, womit „Generate from database“ ausgewählt wird, da ein Abbild von einer Datenbank erwünscht ist. Dann muss unter „New Connection“ die erwünschte Datenbank ausgewählt werden.



Abb.1.4. – Überblick der Datenbank verbindung

Als nächstes Zeigt und der Wizard alle Verfügbaren Funktionen der Datenbank an, die mit in das Model zur Verfügung gestellt werden können. Das wären: Tables, Views und Stored Procedures. Für diese Demo reichen Tabellen vollkommen aus.



Abb.1.5. – Nur Tabellen werden ausgewählt

Beim bestätigen auf „Finish“ wird vom Entity-Framework alles Nötige Generiert und eine Übersicht vom Model wird Grafisch im Designer-Modus dargestellt. Hier könnten nun weitere Einstellungen für das Model durchgenommen werden. Das kann allerdings auch jederzeit im Projekt, durch ein Doppelklick auf die Model-Datei ausgeübt werden.



Abb.1.6. – Entity-Model im Designer dargestellt

Jetzt wird der Designer geschlossen und zum Solution Explorer gewechselt. Dort ist nun unter dem Verzeichnis Model das Entity-Model NorthwindModel.edmx zu finden. Ein Blick auf die Code-Behind Datei NorthwindModel.Designer.cs unterhalb von NorthwindModel.edmx, zeigt die einzelnen Tabellen als Klasse abgebildet. Womit später ganz bequem darauf zugegriffen werden kann. Doch jetzt wird sich prämier auf das ADO.NET Data Service konzentriert.



Abb.1.7. – Code-Behind-Datei vom Entity-Model

Unsere Web-Service-Datenschicht: ADONETExample.WebDAL, benötigt nun das ADO.NET Data Service als neues Item. Dazu wird ein rechtsklick auf ADONETExample.WebDAL gemacht und auf New Item geklickt. Dort wählt man ADO.NET Data Service und vergeben den Namen: WebDataService.svc



Abb.1.8. – ADO.NET Data Service hinzufügen

Nach dem erzeugen des ADO.NET Data Services, öffnet sich der Source-Code. Hier werden einfachst durch Kommentare beschrieben, welche Schritte hier durchgeführt werden müssen. Als erstes müssen wir in den eckigen Klammern, bei der Basisklasse DataService unser Entity-Model überreichen. Also schreiben wir hier: NorthwindEntities. Damit NorthwindEntities auch vom Verzeichnis Model gefunden werden kann, darf das Using zum Namespace nicht vergessen werden: using ADONETExample.WebDAL.Model;



Abb.1.9. – Das Entity-Model dem ADO.NET Data Service bekannt machen.

Die nächste Aufgabe ist eine etwas aufwändigere Angelegenheit. Beim Instanziieren des Web-Services wird beim Konstruktor die Configuration übermittelt, womit hier noch einmal Manuell bestimmte Konfigurationen, wie zum Beispiel das Thema Sicherheit behandelt werden kann. Wichtig! Die Konfiguration benötigt eine Definition der Sicherheit. Daher müssen explizit für die Entities und den Services die Regeln definiert werden. Wir greifen auf den Parameter config zu und setzen für beide Methoden SetEntitySetAccessRule und SetServiceOperationAccessRule die Regeln fest. Nun muss erstens der Name des Entities zum Beispiel „Customer“ aus dem Entity-Model als String geschrieben werden. Doch für dieses Demo geben wir hier nur ein „*“ mit, das soviel bedeutet: „Diese Regel für ALLE Entities“. Danach kann eine explizite Regel dafür eingestellt werden mittels des enum EntitySetRights. Die Regeln die gesetzt werden können sind: Nur Lesen, Nur Schreiben, Kompletter Zugriff uvm. Hier wählen wir den Punkt: ALL.

Dieselbe Regelung definieren wir auch für die SetServiceOperationAccessRule, danach wäre unser ADO.NET Data Service fertig. Bei einem richtigen Unternehmensscenario muss auf jeden Fall genügend Zeit für die Sicherheitdefinition investiert werden, und sollte daher kein „*“ zum Einsatz kommen. Um ein besseres Bild zu bekommen, siehe Abb. 1.10.



Abb.1.10. – ADO.NET Data Service – Regeln für den Zugriff Definieren.

Der ADO.NET Data Service wäre Fertig! Um die REST Funktionalitäten zu testen, kann das Projekt mittels [F5]-Taste gestartet werden. Das Projekt wird gebuildet und der Web-Service im Browser gestartet. Es werden alle Tabellen aus unserem Entity-Model als XML dargestellt. Für die XML Darstellung verwendet das ADO.NET Data Service den allgemeinen Standard ATOM.



Abb.1.11. – Web-Service zeigt Tabellen als ATOM (XML) auf dem Browser an.

REST Funktionalität Testen

Um nun die ersten REST-Funktionalitäten über URL zu nutzen, muss beim Internet Explorer die automatisierte Anzeige von RSS-Feeds deaktiviert werden. Da ATOM ein Standard für Feeds bedacht war. Dazu muss man beim Internet Explorer unter Extras – Internetoptionen – Inhalte – (Feeds) Einstellungen. Dann den Hacken „Feedleseanzeige einschalten“ deaktivieren.



Abb.2.1. – Internet Explorer für REST-Test vorbereiten.

Als erstes soll der Inhalt der Tabelle „Customers“ angezeigt werden. Dazu erweitern wir die URL mit dem Namen „/Customers“. Nach dem bestätigen mit ENTER wird der Browser mit dem Inhalt von „Customers“ neugeladen.



Abb.2.2. – Tabelle „Customers“ mit REST abfragen.

Wenn nun ein einzelner Customer mit seiner ID angezeigt werden soll, muss dementsprechend in Klammern die ID übergeben werden. Geben wir einmal „/Customers('ALFKI')“ ein, um explizit diesen Benutzer zu sehen.



Abb.2.3. – Einzelne abfrage eines Customer mittels ID.

Die abfragen können beliebig nach Wunsch weitergeführt werden. Das besondere an unserem Web-Service ist, das keine Zeile Code für deren Funktionalität geschrieben werden musste. Bis auf das Definieren des Modells und die Konfiguration der Sicherheit.

Alle anderen Funktionalitäten, wie das Updaten, Löschen oder Erstellen, können mit Visual Studio Unterstützung einfachst in Clients verfügbar gemacht werden. Bei Projekten wie WPF oder Silverlight, übernimmt das Data-Binding diese eleganten Aufgaben.

Fazit

REST findet an seiner einfachen und fertigen Einsatzmöglichkeit an hoher Beliebtheit. Was mich persönlich total freut, ADO.NET Data Service ist nicht nur auf das Entity-Framework beschränkt! Eigene Modelle oder Modelle anderer O/R-Mapper wie NHibernate können gleichermaßen zum Einsatz kommen. Es muss nur ein Interface IUpdatable implementiert werden. Zugegeben, es gibt dann noch ein paar weitere Schritte die gemacht werden müssen, aber deren Aufwand ist nicht gleichzustellen, als wenn man eine Unit-of-Work-Lösung selbst schreiben müsste.

Immer mehr Projekte beginnen mit WPF- oder Silverlight-Clients. Deren Data-Binding Funktionalität mit ADO.NET Data Service enorm mächtig machen.

Krise? Nein! „Service-Orientierung heute und morgen“: 5 Tage volle Power und praktisches Wissen

23.04.2009 13:45:12 | Christian Binder

Wer auf der Suche nach einem Training zum Thema Service-Orientierung mit .Net ist und Top Referenten zum Thema sucht sollte sich folgendes Training anschauen:

Zitat:

…….

Gemeinsam mit Referenten und Experten thinktecture präsentiert DevelopMentor fünf Tage voller Power, geballtem Wissen und praktischer Umsetzung mit dem „Service-Orientierung heute und morgen“-Kurs.

Dominick Baier und Christian Weyer zeigen Ihnen in gewohnt praxisorientierter Art und Weise sowohl Grundlagen und Konzepte als auch deren konkrete und pragmatische Umsetzung, alles basierend auf jahrelanger Projekterfahrung.
Erleben Sie wie Sie Service-Orientierung heute und morgen - gemischt mit dem zukunftsweisenden Themenkomplex Cloud Computing - auf Basis der Windows- und .NET –Plattform lokal und in der Cloud realisieren können. In Hands-on-Labs können Sie selbst die Ärmel hochkrempeln und gleich das Gelernte in Form von Code in Tatsachen umsetzen.

Nach diesen fünf Tagen werden Sie basierend auf diesen Themenbereichen die ersten Schritte in der Welt von Service-Orientierung alleine gehen können und vor allem vorbereitet sein für kommende Projektaufgaben:

  • Service-Orientierung
  • Cloud & Cloud Computing
  • Identitäts-Management & Claims-basierte Identität
  • Windows Communication Foundation (WCF)
  • Windows Workflow Foundation (WF)
  • Azure Services Plattform (mit Windows Azure und .NET Services

…..

Alle Infos gibt’s hier

Chris

Die ganze Welt der deutschen User Gruppen auf einen Blick

23.04.2009 12:06:58 | Sebastian Gerling

Gerade bei Michael in der SharePoint Community gefunden:     Stuttgart: 28.4.2009, 18:00 Uhr,Yves Rocher GmbH, Albstadtweg 10, 70567 Stuttgart Dresden: 28.4.2009, 19:00 Uhr T-Systems Saxonia Systems AG, Fritz-Foerster-Platz 2, 01069 Dresden Frankfurt: 28.4.2009, 18:00 Uhr, IP-SystemsSolutions, Scheidswald Str. 44 – 46 , 60385 Frankfurt/M Saarbrücken: 7.5.2009, 17:00 Uhr,Data One GmbH, Nell-Breuning-Allee 8, 66115, Saarbrücken Ostwestfalen: 12.5.2009, Paderborn (Details folgen) Berlin: 14.5.2009, [...]

dotnet-kicks-Plugin für den Windows Live Writer

23.04.2009 08:44:00 | Jürgen Gutsch

Nachdem Jan Welker im .NET-Forum nach der Meinung (Eure Meinung zu dotnet-kicks.de ist gefragt) zu dotent-kicks.de gefragt hatte und Rainer Schuster und ich uns für eine Plugin für den Windows Live Writer ausgesprochen hatten, muss Gordon Breuer sofort aufgesprungen sein um das bestehende Plugin für DotNetKicks.com abzuändern. ;-)

Herausgekomen ist das Plugin das ich hiermit ausprobieren werde.

Ich starte den Test….

Update:

… Ich beende den Test erfolgreich :-)

Am Seitenende erscheint nun ein Button mit dem man diesen und viele weitere Beiträge "kicken" kann.

Gute Arbeit Gordon und Danke für die schnelle Umsetzung :-)

Das Plugin gibt es hier zum Download:
DNK-Plugin für den Windows Live Writer

DotNetKicks-DE Image

Der .NET-Zeitgeist

22.04.2009 23:09:00 | dotnet-kicks.de Blog

Wie sagt man im Englischen, wenn man einen Satz mit der Wortgruppe „dem Zeitgeist entsprechend“ formulieren möchte? „zeitgeisty“! Klingt seltsam, ist aber so!
Zeitgeist ist eins der wenigen englischen Wörter, die aus dem deutschen Wortschatz übernommen wurden.

Warum schreibe ich in einem .NET Blog über seltsame englische Vokabeln?
Bei der Lokalisierung und Übersetzung von dotnet-kicks.de bin ich über das Wort Zeitgeist gestolpert und habe im Wörterbuch meines Vertrauens nachgeschlagen :-)

Zeitgeist ist ein Zusatzfeature von dotnet-kicks.de das wir (Klaus, Gordon und Ich) hiermit freigeben möchten. Zeitgeist ist eine reine Statistikfunktion von dotnet-kicks.de. Es ist nach Jahren, Monaten und Tagen, gegliedert. Für jeden Tag, für jeden Monat und für jedes Jahr können folgende Daten abgerufen werden:

- Die bekanntesten Artikel
- Die am häufigsten vorgeschlagenen Artikel
- Die am häufigsten verwendeten Tags
- Die am häufigsten veröffentlichten Benutzer
- Die bekanntesten Domänen
- Die am häufigsten veröffentlichten Domänen

Für diese Daten werden jeweils die Top Ten angezeigt. Zusätzlich werden angezeigt:

- Anzahl der vorgeschlagenen Artikel
- Anzahl der veröffentlichten Artikel
- Prozentualer Anteil der veröffentlichten Artikel
- Anzahl der gekickten Artikel
- Anzahl der Artikelkommentare
- Anzahl der Benutzerregistrierungen

Bei dieser Fülle an Informationen dürften eigentlich keine Fragen mehr offen bleiben. :-)
Alle Statistikfreaks können die neue Unterseite unter diesem Link: http://dotnet-kicks.de/zeitgeist erreichen.

Viel Spaß mit dem neuen Feature!

kick it on dotnet-kicks.de

Was ist eigentlich ASP.NET?

22.04.2009 20:29:00 | Michael Schwarz

Letzte Woche habe ich während meines Urlaubs am Bodensee jQuery auf dem .NET Stammtisch Konstanz-Kreuzlingen vorgestellt; hat mir mal wieder richtig Spaß gemacht, und nebenbei neue Gesichter Entwickler kennengelernt.

Während meines Vortrags hatte ich mich gewundert, warum ich eigentlich die Auszeichnung Most Valuable Professional (MVP) im Fachbereich ASP.NET Development erhalten habe, denn in meinen Beispielen (als auch in nahezu allen anderen Web Projekten) habe ich keine Features wie Web Server Controls, ViewState, UpdatePanels und Co. verwendet.

Jürgen Gutsch schreibt:

Ist das nun wirklich so oder war das nur eine provokante Äußerung gegen – aus seiner Sicht – einschränkende Features wie Web Server Controls, ViewState, UpdatePanels  und Co.?

Je nachdem was nun ASP.NET ausmacht, kann die Frage so oder so beantwortet werden…

Weiter lesen


Back from vacation – Und der Wahnsinn geht weiter

22.04.2009 17:55:10 | Jan Schenk

Bin seit heute wieder im Office, nach einem schönen aber zu kurzen Urlaub im mallorquinischen Hinterland.

Gestern bin ich auch schon am Rechner gesessen, weil ich eine Einreichung bei einer Konferenz fertig machen musste. Das war aber nicht sonderlich viel Arbeit, so sollte dann ein Urlaub auch nicht ausklingen. So war es völlig in Ordnung und ich konnte mich freuen, heute wieder in meinen täglichen Wahnsinn zu starten.

Der war dann auch tatsächlich gleich da, ich habe nämlich mit Oliver Scheer eine kurze Serie zu Silverlight aufgenommen, die allerdings erst noch durch den Konverter muss. Gibt es in ein paar Tagen zu sehen. Das ungewöhnliche an dieser Show, die wir kurzerhand “Silverlight 2 Druckbetankung” getauft haben, ist, dass man uns beide sieht und wir sozusagen die zwei Alten aus der Muppet-Show mimen, und uns gegenseitig mit Fragen unterbrechen. Im Vordergrund steht aber natürlich wie gewohnt der Inhalt, und damit auch – wie bei normalen Webcasts – der Bildschirminhalt.

Am Schluss sind dann sage und schreibe 3 Stunden aufgeteilt auf 4 Videos rausgekommen. Die Pläne für weitere Serien dieser Art werden bereits geschmiedet.

Spass macht so eine Kolaboration (fein ausgedrückt für Rumalbern) auch noch, ist aber auch nicht zu unterschätzen, was die notwendige Energie angeht, die man dafür braucht.

Sobald die Videos fertig sind gibt's hier auch den Link. Wie immer!

Was ich aber eigentlich sagen wollte: I am back!

Viele Grüße,
jan

 

PS:

Mia_ich_und_die_ziegen

Und so sehe ich übrigens aus, wenn ich meiner Tochter (2) die großen Geheimnisse des Universums erkläre. Warum zum Beispiel Ziegen keine Sonnenhüte brauchen, oder wieso denen Gras schmeckt, ihr aber nicht…

Neue Codebeispiele für die Outlook 2007 Developer Reference bei Office Online

22.04.2009 14:38:06 | Lars Keller

Helmut Obertanner, mein deutschsprachiger MVP VSTO Kollege, hat Beispielcode für die Outlook 2007 Developer Reference für Office Online beigesteuert. Zum ersten Mal wurde Beispielcode von einem MVP dafür benutzt.

Hier eine Anleitung, wie man die Beispiele von Helmut ansehen kann:

If you would like to see these code samples, they are available in the Office Online version of the Outlook 2007 Developer Reference. To view these code samples:

  1. In Outlook, click F1.
  2. Click the down arrow next to Search.
  3. Under Content from Office Online, select Developer Reference if it is not already selected. This selection allows you to view the most current content in the Outlook 2007 Developer Reference on Office Online. This content is more up-to-date than the Outlook 2007 Developer Reference on MSDN.
  4. Type account in the text box adjacent to Search.
  5. Select the topics, “Account Object”, and “How to: Send an E-mail Given the SMTP Address of an Account” returned in the search results.

Typing other search keywords such as Helmut or MVP also returns these topics. Other than searching, developers can get to the new "How to: Send an E-mail Given the SMTP Address of an Account" topic via the following topics

  • "How Do I... in Outlook" - lists this how-to topic in the list of how-to's in the developer reference

The following reference topics also list this how-to topic in the See Also section:

  • Account object topic
  • Account.SmtpAddress property topic
  • Accounts object topic
  • MailItem object topic
  • MailItem.Body property topic
  • MailItem.Recipients property topic
  • MailItem.Subject property topic
  • MailItem.Send method topic
  • MailItem.SendUsingAccount property topic

Link:



This weblog is sponsored by netcreate OHG.

Neue Codebeispiele für die Outlook 2007 Developer Reference bei Office Online

22.04.2009 13:38:06 | Lars Keller

Helmut Obertanner, mein deutschsprachiger MVP VSTO Kollege, hat Beispielcode für die Outlook 2007 Developer Reference für Office Online beigesteuert. Zum ersten Mal wurde Beispielcode von einem MVP dafür benutzt.

Hier eine Anleitung, wie man die Beispiele von Helmut ansehen kann:

If you would like to see these code samples, they are available in the Office Online version of the Outlook 2007 Developer Reference. To view these code samples:

  1. In Outlook, click F1.
  2. Click the down arrow next to Search.
  3. Under Content from Office Online, select Developer Reference if it is not already selected. This selection allows you to view the most current content in the Outlook 2007 Developer Reference on Office Online. This content is more up-to-date than the Outlook 2007 Developer Reference on MSDN.
  4. Type account in the text box adjacent to Search.
  5. Select the topics, “Account Object”, and “How to: Send an E-mail Given the SMTP Address of an Account” returned in the search results.

Typing other search keywords such as Helmut or MVP also returns these topics. Other than searching, developers can get to the new "How to: Send an E-mail Given the SMTP Address of an Account" topic via the following topics

  • "How Do I... in Outlook" - lists this how-to topic in the list of how-to's in the developer reference

The following reference topics also list this how-to topic in the See Also section:

  • Account object topic
  • Account.SmtpAddress property topic
  • Accounts object topic
  • MailItem object topic
  • MailItem.Body property topic
  • MailItem.Recipients property topic
  • MailItem.Subject property topic
  • MailItem.Send method topic
  • MailItem.SendUsingAccount property topic

Link:

Ergebnis: Das TFS Experiment

22.04.2009 12:22:00 | Christian Binder

Tom Wendel , einer meiner Kollegen hat das TFS Experiment durchgeführt :-)
Das Setup hatte ich schon mal hier auf meinem Blog beschrieben.

Lest das Ergebnis auf Tom’s Blog  (von unten nach oben …) :-) Kann ich nur jedem empfehlen der hauptsächlich nicht im Team entwickelt,
alle anderen sollten diese Probleme schon kennen.

Was mich gefreut hat, ist dass die Probleme keine Tool Probleme waren, obwohl alles nur mit unserem Demo  TFS VPC Image durchgeführt wurde.  Auf der anderen Seite zeigt sich, wie wichtig das Sprint Breakdown Meeting mit dem Scrum Master am Anfang  der Iteration ist. Das beste Tool kann nicht helfen, wenn der Entwicklungsprozess nicht 100% klar ist. Ich werde Tom nochmal ein wenig befragen, um ein paar Detail’s raus zu kitzeln..

stay tuned  
Chris

Silverlight-Spiel Dr. Dobbs’s Challenge Deuce: Spielen, erweitern, selbst entwickeln …und Preise im Wert von bis zu 10.000$ gewinnen! (+ TeamConf09)

22.04.2009 11:32:48 | Steffen Ritter

Dr. Dobbs’s Challenge Deuce ist ein klassischer Plattformer im 8-Bit-Style. Dr. Dobbs und seine Freunde hüpfen und hangeln sich durch eine Vielzahl Level und sammeln Visual Studio Power-Ups – und als wäre das noch nicht genug Spaß: Jeder kann das Spiel erweitern und alleine oder mit gemeinsam mit Freunden neue Level gestalten und dabei Preise im Wert von bis zu 10.000$ gewinnen (da der Dollar mittlerweile ja leider wieder etwas wert ist, ist das eine ganze Menge).

image

Mittels der Option „Create“ kann jeder auch ohne Programmierkenntnisse direkt innerhalb des Spiels neue Level gestalten und nimmt damit automatisch an der wöchentlichen Verlosung für den besten Level teil. Verlost werden Dr. Dobbs “Wackeldackel-Puppen” und wöchentlich 500$.

Wer stattdessen beweisen will dass er (oder sie) auch über „mad coding skills“ verfügt kann die Silverlight-Anwendung inklusive SDK usw. herunterladen und ein eigenes Spiel auf Basis des Quellcodes entwickeln. So richtig „mad“ müssen die Programmierkenntnisse übrigens gar nicht sein, denn Tutorials und ausführliche Einführungen sind ebenfalls verfügbar. Damit fällt auch Einsteigern mit sehr geringen Programmierkenntnissen das Entwickeln eines eigenen Silverlight-Spiels leicht.

Interessiert? Dann nix wie hin: http://dobbschallenge2.com (Ach ja, und würde bitte jemand damit eine Silverlight-Variante von Terramax entwickeln? Ich hatte das Spiel 1990 auf AMIGA fast durch und bin leider nie ganz fertig geworden…)

Und da wir schon beim Thema Visual Studio sind: Vom 5.-7. Mai findet in München die TeamConf statt – die Konferenz zum Thema Visual Studio Team System in der Praxis, veranstaltet in Kooperation mit iX aus dem Heise Zeitschriften Verlag.

Ziel der Konferenz ist es, den Teilnehmern eine breite Kommunikationsplattform rund um das Thema Microsoft Visual Studio Team System und dem Team Foundation Server zu bieten. Hierzu werden in Anwenderberichten renommierte Unternehmen über ihre bisher mit Microsoft Visual Studio Team Systems gesammelten Erfahrungen berichten. In Fachvorträgen werden sowohl lösungsorientierte Szenarien und Best Practices mit Visual Studio Team System vorgestellt als auch Methodiken des modernen Software Engineerings beleuchtet. Zusätzlich wird in Technologiebeiträgen auf die technischen Details einzelner Funktionsbereiche von Visual Studio Team System eingegangen.
Absolute Highlights der Konferenz sind die Keynotes von Ken Schwaber (Erfinder von SCRUM) und Cameron Skinner (Product Unit Manager im Visual Studio Team System (VSTS)-Team).

Ausführliche Informationen zur TeamConf 2009 erhalten Sie hier: www.teamconf.de

Wer dabei noch sparen möchte, kann sich bei meinem Kollegen Christian Binder melden, er kann noch den Code für den Frühbucher-Rabatt besorgen, mit dem sich bis zu 200,- Euro sparen lassen.

Neue Codebeispiele für die Outlook 2007 Developer Reference bei Office Online

22.04.2009 04:38:00 | Lars Keller

Helmut Obertanner, mein deutschsprachiger MVP VSTO Kollege, hat Beispielcode für die Outlook 2007 Developer Reference für Office Online beigesteuert. Zum ersten Mal wurde Beispielcode von einem MVP dafür benutzt.

Hier eine Anleitung, wie man die Beispiele von Helmut ansehen kann:

If you would like to see these code samples, they are available in the Office Online version of the Outlook 2007 Developer Reference. To view these code samples:

  1. In Outlook, click F1.
  2. Click the down arrow next to Search.
  3. Under Content from Office Online, select Developer Reference if it is not already selected. This selection allows you to view the most current content in the Outlook 2007 Developer Reference on Office Online. This content is more up-to-date than the Outlook 2007 Developer Reference on MSDN.
  4. Type account in the text box adjacent to Search.
  5. Select the topics, “Account Object”, and “How to: Send an E-mail Given the SMTP Address of an Account” returned in the search results.

Typing other search keywords such as Helmut or MVP also returns these topics. Other than searching, developers can get to the new "How to: Send an E-mail Given the SMTP Address of an Account" topic via the following topics

  • "How Do I... in Outlook" - lists this how-to topic in the list of how-to's in the developer reference

The following reference topics also list this how-to topic in the See Also section:

  • Account object topic
  • Account.SmtpAddress property topic
  • Accounts object topic
  • MailItem object topic
  • MailItem.Body property topic
  • MailItem.Recipients property topic
  • MailItem.Subject property topic
  • MailItem.Send method topic
  • MailItem.SendUsingAccount property topic

Link:

Silverlight 2 – Kleine Grafiktrickkiste

21.04.2009 11:38:45 | Oliver Scheer

Gerade habe ich einen neuen Webcast zu Silverlight 2 erstellt und dort meine drei Lieblingskniffe erläutert.

Buttons (mein Lieblingsdesign-Thema :-) )

image

Noch mehr Buttons

image

Reflektionen

image

Ampeln mit dem Visual State Manager

image

Der Code dazu kann hier herunter geladen werden:

MSDN Trainings- und Zertifizierungsressourcen

21.04.2009 10:59:37 | Peter Kirchner

Für Entwickler, die ihre Kenntnisse im Bereich der IT erweitern und ihr Wissen unter Beweis stellen wollen, bietet Microsoft seit mehr als zehn Jahren das Microsoft Certified Professional Program (MCP-Programm) in Zusammenarbeit mit anerkannten Trainingsanbietern an. Mehr über aktuelle Trainingsangebote für Entwickler erfahren Sie in der Rubrik “Lernen” von MSDN Online. Hier finden Sie das richtige Training um Ihr Wissen auf dem neuesten Stand zu halten. Lernen Sie, wie es Ihnen am meisten liegt – schauen sie sich ein Video an, nehmen Sie an einem Kurs teil oder lesen Sie ein Buch – entsprechend Ihrem Wissensstand, egal ob Sie noch Einsteiger oder schon Profi sind.

Ob Trainings, Kurse, Workshops, Webcasts, CodeClips, Bücher, Technische Artikel oder  Zertifizierungen – die Mitte April 2009 neugestaltete “Learning-Seite” für Entwickler enthält zahlreiche Einstiegspunkte für die Weiterbildung.

Jetzt informieren: http://msdn.microsoft.com/de-de/bb188199.aspx

image

TechTalk Juni 2009: Parallele Programmierung mit Visual Studio 2010 und Intel Parallel Studio

21.04.2009 10:48:06 | Peter Kirchner

Die Etablierung von Mehrprozessorsystemen bedeutet für den Anwendungsentwickler, dass ein Performancegewinn durch zusätzliche Prozessorkerne nur noch dann stattfindet, wenn die vorhandene Software angemessen parallelisiert und skaliert. Allerdings ist die Parallelisierung einer Anwendung nicht unbedingt einfach. Die Kenntnisse über die vorhandene Hardware, das Betriebssystem und die Entwicklungsumgebung stellen hier oft eine große Hürde dar. Gleiches gilt für die vorhandenen APIs, die man benutzen kann, um eine Anwendung vollständig oder in Teilen zu parallelisieren.

Deshalb steigt gerade jetzt - im Zeitalter der Mehrkernprozessoren - der Bedarf nach geeigneten Methoden, um verschiedene Anwendungsteile parallel ablaufen zu lassen. Genau hier setzen Intel und Microsoft an. In diesem MSDN TechTalk werden Mario Deilmann von Intel und Dariusz Parys von Microsoft die verschiedenen Technologien und Tools im Bereich C/C++ und C# erklären, die es dem Entwickler erlauben, auf einer abstrakteren Ebene parallele Ausführungspfade zu definieren. Erleben Sie dabei die Verwendung von Intel® Parallel Studio und einen Ausblick auf die Parallel Extensions des .NET Framework 4.0 vom kommenden Visual Studio 2010.

Dieser MSDN TechTalk richtet sich an alle Entwickler, die vor der Frage stehen, wie man eine Anwendung geeignet parallelisiert, egal ob native C++, C#, Visual Basic.

Daten & Orte:

  • 08.06. Karlsruhe
  • 09.06. München
  • 15.06. Köln
  • 22.06. Hamburg
  • 29.06. Berlin
  • 30.06. Dresden

Details und Anmeldung unter: http://www.microsoft.com/germany/msdn/techtalk/aktuell2/default.mspx

Sonderkonditionen für Kurzentschlossene zur Teamconf 2009 in München vom 5-6. Mai 2009

21.04.2009 09:32:02 | Christian Binder

Ganz aktuell die Info, dass es jetzt auch Tageskarten für die TeamConf (www.teamconf.de) gibt, falls ihr kurzfristig noch daran teilnehmen wollt.

Wer dabei noch sparen möchte, bei mir melden, ich kann Euch noch den Code für den Frühbucher Rabatt mitteilen und ihr könnt bis zu 200€ sparen.

Wie bereits bei gebloggt, die Konferenz richtet sich sowohl an Einsteiger, die sich komprimiert über Einsatzszenarien und Best Practices von Visual Studio Team System informieren wollen, als auch an Experten, die den Austausch mit anderen Anwendern suchen und frühzeitig Einblicke in Visual Studio Team System 2010 erlangen wollen.

Ich selbst werde auch Vorträge dort halten :-)

Viel Spass

Chris

Internet Explorer 8-Podcast

21.04.2009 08:43:22 | Oliver Scheer

Bereits am 17. März 2009 wurde der Internet Explorer 8-Podcast zwischen Kai Schätzl (Microsoft MVP für Internet Explorer) und Kay Giza (Microsoft) aufgezeichnet. In dem gut eineinhalb Stunden langen Podcast unterhalten sich die beiden Web-Experten über häufig gestellte Fragen zum Internet Explorer 8 aus den Newsgroups und deren Antworten,  über Installationsprobleme und wie man diese am schnellsten löst. Themen wie Schnellinfos, verbesserte Navigation, Sofortsuche, Web Slices und Sicherheitsthemen wie InPrivate-Browsen oder InPrivate-Filterung sowie viele weitere Themen werden behandelt. Details und Download-Links entnehmen Sie bitte diesem Forum-Posting auf dem MSDN Forum zum Internet Explorer. Dort können Sie auch gleichzeitig Feedback und Themenwünsche zu zukünftigen Podcasts rund um den Internet Explorer abgeben.

HowTo: RSS Feeds mit C# / XLINQ lesen

21.04.2009 02:16:09 | Robert Mühsig

imageVor einige Zeit hatte ich schon etwas zu XLinq (oder Linq to Xml) geschrieben. RSS Feeds einlesen ist eigentlich keine große Sache, weil der Standard recht simpel ist. Allerdings gibt es da auch Abweichungen ;)
Da ich bereits geschrieben habe wie man ein RSS Feed erstellt, zeige ich nun an einem einfachen Beispielen wie man RSS Feeds einlesen kann.

(more…)

ShareThis

Damit bloß keiner auf „Abbrechen“ klickt: So gestalten Sie die optimale Installationsaufforderung für Silverlight

20.04.2009 18:35:27 | Oliver Scheer

Auch wenn Silverlight inzwischen binnen weniger als 18 Monaten auf mittlerweile über 350 Millionen Computern installiert wurde, so gibt es immer noch eine Handvoll jungfräuliche Rechner, auf denen Silverlight beim ersten Aufrufen einer Rich Internet Application wie jedes andere Browser-Plugin einmalig installiert werden muss.


Vermutlich liegt es daran dass die meisten Entwickler keine Marketingausbildung hinter sich haben, denn der eigentlich logische Grundsatz „Mach den Besucher zuerst neugierig und wecke ernsthaftes Interesse für Dein Angebot – und dann mach es ihm/Ihr so einfach und angenehm wie möglich, die Installationshürde zu nehmen“ scheint viel zu oft vernachlässigt zu werden. Sprich: Eine große Anzahl Silverlight-Websites legt leider immer noch viel zu wenig Wert auf eine gute, überzeugende und vor allem effektive Installationsaufforderung für die Silverlight-Runtime (wenn der Anwender noch kein Silverlight auf seinem Rechner haben sollte).


Allerdings ist gerade die Entscheidung zur Installation meist die größte Hürde – und eine rein psychologische dazu. Zumindest wenn der Prozess schlecht implementiert wird. Technisch ist die Installation keine Herausforderung. Sie dauert im Schnitt nur 20 Sekunden und drei Klicks – der Besucher muss nur effektiv dazu animiert werden, diese 20 Sekunden auch zu investieren. Studien haben gezeigt dass die Conversion Rate (die Anzahl der Anwender die das Silverlight-Plugin bei Aufforderung installieren) je nach Art und Weise der Installationsaufforderung tatsächlich zwischen „fast alle“ (also irgendwo im Bereich von 95%) und „fast keiner“ (weniger als 5% der Besucher) schwanken kann.


Um Designern und Entwicklern zu helfen die Conversion Rate ihrer Website in Richtung 95% (oder mehr) zu treiben, hat Microsoft ein englischsprachiges Whitepaper mit dem Titel „CREATING A CUSTOM SILVERLIGHT INSTALLATION EXPERIENCE“ veröffentlicht, in dem alle wichtigen Fragen zum Thema „Wie funktioniert eine effektive Installationsaufforderung für Silverlight?“ beantwortet werden.


Die ausführliche Anleitung zur Implementierung eines besseren Silverlight-Installationserlebnisses mit vielen hilfreichen Tipps und Beispielcode finden Sie hier: CREATING A CUSTOM SILVERLIGHT INSTALLATION EXPERIENCE

So gestalten Sie die optimale Installationsaufforderung für Silverlight

20.04.2009 18:29:18 | Oliver Scheer

Wie jedes Browserplugin muß Silverlight beim ersten Aufrufen einer Silverlight-Website einmalig installiert werden. Technisch ist die Installation keine Herausforderung. Sie dauert im Schnitt nur 20 Sekunden und drei Klicks – der Besucher muss nur effektiv dazu animiert werden, diese 20 Sekunden auch zu investieren. Studien haben gezeigt dass die Conversion Rate (die Anzahl der Anwender die das Silverlight-Plugin bei Aufforderung installieren) je nach Art und Weise der Installationsaufforderung tatsächlich zwischen „fast alle“ (also irgendwo im Bereich von 95%) und „fast keiner“ (weniger als 5% der Besucher) schwanken kann. Im offiziellen deutschen Silverlight-/Expression-Blog finden Sie jetzt einen hilfreichen Artikel in dem alle wichtigen Fragen zum Thema „Wie funktioniert eine effektive Installationsaufforderung für Silverlight?“ beantwortet werden: http://blogs.msdn.com/riablog/archive/2009/04/20/damit-blo-keiner-auf-abbrechen-klickt-so-gestalten-sie-die-optimale-installationsaufforderung-f-r-silverlight.aspx

Silverlight 3 Demos und Trainingskit

20.04.2009 15:56:00 | Oliver Scheer

Zu meinen Aufgaben als Developer Evangelist gehört auch das Erstellen von Demos (meistens vor Publikum) oder erstellen von Beispiel-Code. Das ist prinzipiell sehr einfach. Allerdings ist das Bereitstellen oftmals etwas komplizierter als man denkt, und aber auch die Wartung von Aktualisierungen dieses Codes.

Daher habe ich mir jetzt im Rahmen der Silverlight 3 Beta, ein sogenanntes Demo und Trainingskit ausgedacht, das sich jeder lokal (out of browser) aber auch Online direkt live angucken und downloaden kann. Dort werde ich nach und nach immer mehr meiner Demos inkl. Sourcecode bereitstellen.

Das ganze befindet sich noch im Aufbau, daher bin ich sehr an Feedback interessiert, wie man die Darstellung und die Inhalte verbessern könnte.

Das Demokit befindet sich hier: http://www.the-oliver.com/sl3Training/

image

Wichtig: Es wird Silverlight 3 Beta 1 benötigt um sich die Seite anzusehen.

Silverlight 2 – Minigame

20.04.2009 15:47:56 | Oliver Scheer

Diese Woche wird ein weiterer Webcast zum Thema Spieleentwicklung mit Silverlight bei www.my-msdn.com/webcasts veröffentlicht.

Dazu habe ich mein Lieblingsspiel im Windows Mobile Spiele-Sortiment als Vorlage verwendet und es auf Silverlight nach implementiert. Dauer zwei Stunden, meine Freundin ist leidtragende Zeugin :-)

image

Die Live Version für Silverlight 2 kann man hier finden:
http://www.the-oliver.com/demos/sl2/bubblesgame/

Den gesamten Code kann hier herunterladen.

Das ganze ist recht simple gehalten, darf aber sehr gerne hergenommen werden und um neue Features erweitert werden … Einzige Bedingung … ich will es auch mal spielen dürfen :-)

Für die Konfiguration des Spiels habe ich die Klasse Settings.cs erstellt

public class Settings
{
    private static int _dimensionX = 12;
    public static int DimensionX
    {
        get 
        { 
            return Settings._dimensionX; 
        }
        set { Settings._dimensionX = value; }
    }
 
    private static int _dimensionY = 12;
    public static int DimensionY
    {
        get { return Settings._dimensionY; }
        set { Settings._dimensionY = value; }
    }
 
    private static int _margin = 1;
    public static int Margin
    {
        get { return Settings._margin; }
        set { Settings._margin = value; }
    }
 
    private static GameLevel _level = GameLevel.Normal;
    public static GameLevel Level
    {
        get 
        {
            if (HtmlPage.IsEnabled == false)
            {
                return _level;
            }
 
            if (IsolatedStorageSettings.ApplicationSettings.Contains("Level"))
            {
                try
                {
                    GameLevel level = (GameLevel)IsolatedStorageSettings.ApplicationSettings["Level"];
                    return level;
                }
                catch
                {
                    return _level;
                }
            }
            return _level; 
        }
        set
        {
            switch (value)
            {
                case GameLevel.Kindergarten:
                    DimensionX = 6;
                    DimensionY = 6;
                    break;
 
                case GameLevel.Hammer:
                    DimensionX = 20;
                    DimensionY = 20;
                    break;
 
                case GameLevel.Normal:
                default:
                    DimensionX = 12;
                    DimensionY = 12;
                    break;
                    
            }
            IsolatedStorageSettings.ApplicationSettings["Level"] = value;
        }
    }
 
    public enum GameLevel
    {
        Kindergarten,
        Normal,
        Hammer
    }
 
}

Zweiter Schritt: Das Basis-Element der “Bubble” in der Klasse Bubbles.xaml und Bubbles.xaml.cs

<UserControl x:Class="Bubbles.Controls.Bubble"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="Auto" Height="Auto" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="18" d:DesignHeight="18">
    <Grid x:Name="LayoutRoot" Background="{x:Null}">
        <Grid.RowDefinitions>
            <RowDefinition Height="0.5*"/>
            <RowDefinition Height="0.5*"/>
        </Grid.RowDefinitions>
 
        <Ellipse Stroke="{x:Null}" Grid.RowSpan="2">
            <Ellipse.Fill>
                <RadialGradientBrush GradientOrigin="0.5,0.987">
                    <RadialGradientBrush.RelativeTransform>
                        <TransformGroup>
                            <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="0.782" ScaleY="0.782"/>
                            <SkewTransform CenterX="0.5" CenterY="0.5"/>
                            <RotateTransform CenterX="0.5" CenterY="0.5"/>
                            <TranslateTransform Y="0.114" X="-0.006"/>
                        </TransformGroup>
                    </RadialGradientBrush.RelativeTransform>
                    <GradientStop x:Name="_g0" Color="#FF000000" Offset="1"/>
                    <GradientStop x:Name="_g1" Color="#FFFFFFFF" Offset="0"/>
                </RadialGradientBrush>
            </Ellipse.Fill>
        </Ellipse>
        <Path Stretch="Fill" Stroke="{x:Null}" Data="M154,78 C155.90759,106.84779 118.52592,63.935123 76,63.935123 C33.474075,63.935123 -0.95520449,109.44034 0,78 C0.78876519,52.037975 34.474075,0 77,0 C119.52592,0 152.05786,48.629925 154,78 z" Margin="0.032,0.085,-0.042,0.389">
            <Path.Fill>
                <LinearGradientBrush EndPoint="0.506,0.915" StartPoint="0.5,0">
                    <GradientStop Color="#19FFFFFF" Offset="1"/>
                    <GradientStop Color="#BFFFFFFF"/>
                </LinearGradientBrush>
            </Path.Fill>
        </Path>
 
    </Grid>
</UserControl>

Die entsprechende Klasse dazu:

 

using System.Windows.Controls;
using System.Windows.Media;
using System;
 
namespace Bubbles.Controls
{
    public partial class Bubble : UserControl
    {
        public Bubble()
        {
            InitializeComponent();
        }
 
        private Color _bubbleColor;
        public Color BubbleColor
        {
            get
            {
                _bubbleColor = _g0.Color;
                return _bubbleColor;
            }
            set
            {
                _bubbleColor = value;
                _g0.Color = _bubbleColor;
            }
        }
 
 
        internal void Remove()
        {
            //throw new NotImplementedException();
        }
    }
}

Die eigentliche Spielfläche (Playground.cs)

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Collections.Generic;
using System.ComponentModel;
 
namespace Bubbles.Controls
{
    public partial class PlayGround : UserControl
    {
        Bubble[,] _bubbleArea;
        Grid _grid;
        MediaElement _sound;
 
        public PlayGround()
        {
            InitializeComponent();
 
            // Only for Design Time
            if (DesignerProperties.GetIsInDesignMode(this))
            {
                CreatePlayground();
 
                return;
            }
            
            // Trick to initialize ;-)
            Settings.Level = Settings.Level;
        }
 
        #region Events
 
        public event EventHandler GameFinished;
        public event BubblesRemovedEventHandler BubblesRemoved;
 
        #endregion
 
        #region Eventhandler
 
        void bubble_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            Bubble bubble = sender as Bubble;
 
            DoBubbleClick(bubble);
        }
 
 
        #endregion
 
        public void Start()
        {
            CreatePlayground();
        }
 
        private void CreatePlayground()
        {
            #region Create Bubble Area
 
            // Create Grid
            _grid = new Grid();
            this.Content = _grid;
 
            // Create Columns
            double width = 1 / Convert.ToDouble(Settings.DimensionX);
            for (int x = 0; x < Settings.DimensionX; x++)
            {
                ColumnDefinition cd = new ColumnDefinition();
 
                cd.Width = new GridLength(width, GridUnitType.Star);
                _grid.ColumnDefinitions.Add(cd);
            }
 
            // Create Rows
            double height = 1 / Convert.ToDouble(Settings.DimensionY);
            for (int y = 0; y < Settings.DimensionY; y++)
            {
                RowDefinition cd = new RowDefinition();
                cd.Height = new GridLength(height, GridUnitType.Star);
                _grid.RowDefinitions.Add(cd);
            }
 
            #endregion
 
            #region Create Bubbles
 
            // Create Bubble
            _bubbleArea = new Bubble[Settings.DimensionX, Settings.DimensionY];
            Random rnd = new Random();
            for (int x = 0; x < Settings.DimensionX; x++)
            {
                for (int y = 0; y < Settings.DimensionY; y++)
                {
                    // Create Random Bubble
                    Bubble bubble = new Bubble();
                    bubble.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(bubble_MouseLeftButtonDown);
 
                    Color color;
                    switch (rnd.Next(5))
                    {
                        case 0:
                            color = Colors.Blue;
                            break;
 
                        case 1:
                            color = Colors.Red;
                            break;
 
                        case 2:
                            color = Colors.Yellow;
                            break;
 
                        case 3:
                            color = Colors.Green;
                            break;
 
                        case 4:
                            color = Colors.Orange;
                            break;
 
                        default:
                            color = Colors.Black;
                            break;
                    }
                    bubble.BubbleColor = color;
                    _bubbleArea[x, y] = bubble;
                }
            }
 
            #endregion
 
            #region Display Bubbles
 
            // Display Bubbles
            for (int x = 0; x < Settings.DimensionX; x++)
            {
                for (int y = 0; y < Settings.DimensionY; y++)
                {
                    Bubble bubble = _bubbleArea[x, y];
                    bubble.Margin = new Thickness(Settings.Margin);
                    bubble.SetValue(Grid.ColumnProperty, x);
                    bubble.SetValue(Grid.RowProperty, y);
                    _grid.Children.Add(bubble);
                }
            }
 
            #endregion
 
            #region Add Sound
 
            _sound = new MediaElement();
            _sound.Source = new Uri("bubblepop.wma", UriKind.Relative);
            _sound.AutoPlay = false;
            _sound.Volume = 1;
            _grid.Children.Add(_sound);
 
            #endregion 
        }
 
        private void DoBubbleClick(Bubble bubble)
        {
            // Find Surrounding Bubbles
            List<Bubble> surroundingBubbles = new List<Bubble>();
            GetSurroundingBubbles(bubble, surroundingBubbles);
            surroundingBubbles.Add(bubble);
 
            if (surroundingBubbles.Count > 1)
            {
                RemoveBubbles(surroundingBubbles);
            }
        }
 
        private void RemoveBubbles(List<Bubble> surroundingBubbles)
        {
            if (surroundingBubbles.Count == 0)
            {
                return;
            }
 
            _sound.Stop();
 
            if (BubblesRemoved != null)
            {
                BubblesEventArgs args = new BubblesEventArgs();
                args.BubbleCount = surroundingBubbles.Count;
                BubblesRemoved(this, args);
            }
 
            _sound.Play();
            
            foreach (Bubble b in surroundingBubbles)
            {
                for (int x = 0; x < Settings.DimensionX; x++)
                {
                    for (int y = 0; y < Settings.DimensionY; y++)
                    {
                        if (_bubbleArea[x, y] == b)
                        {
                            _bubbleArea[x, y] = null;
                            b.Remove();
                            b.MouseLeftButtonDown -= bubble_MouseLeftButtonDown;
                            _grid.Children.Remove(b);
                        }
                    }
                }
            }
 
            LetBubblesFall();
        }
 
        private void LetBubblesFall()
        {
            for (int x = 0; x < Settings.DimensionX; x++)
            {
                for (int i = 0; i < Settings.DimensionY - 1; i++)
                {
                    for (int y = Settings.DimensionY - 2; y >= 0; y--)
                    {
                        Bubble bubble = _bubbleArea[x, y];
 
                        if (_bubbleArea[x, y + 1] == null)
                        {
                            // Move Bubble down
                            _bubbleArea[x, y + 1] = _bubbleArea[x, y];
                            _bubbleArea[x, y] = null;
                        }
                    }
                }
            }
            BubblesToTheRight();
        }
 
        private void BubblesToTheRight()
        {
            for (int y = 0; y < Settings.DimensionY; y++)
            {
                for (int i = 0; i < Settings.DimensionY - 1; i++)
                    for (int x = 0; x < Settings.DimensionY - 1; x++)
                    {
                        if (_bubbleArea[x + 1, y] == null)
                        {
                            if (_bubbleArea[x, y] != null)
                            {
                                _bubbleArea[x + 1, y] = _bubbleArea[x, y];
                                _bubbleArea[x, y] = null;
                            }
                        }
                    }
            }
 
            UpdateBubbles();
        }
 
        private void UpdateBubbles()
        {
            // Display Bubbles
            for (int x = 0; x < Settings.DimensionX; x++)
            {
                for (int y = 0; y < Settings.DimensionY; y++)
                {
                    Bubble bubble = _bubbleArea[x, y];
                    if (bubble != null)
                    {
                        bubble.SetValue(Grid.ColumnProperty, x);
                        bubble.SetValue(Grid.RowProperty, y);
                    }
                }
            }
            CheckForEnd();
        }
 
        private void CheckForEnd()
        {
            bool finished = true;
            for (int x = 0; x < Settings.DimensionX; x++)
            {
                for (int y = 0; y < Settings.DimensionY; y++)
                {
                    Bubble bubble = _bubbleArea[x, y];
 
                    List<Bubble> surroundingBubbles = new List<Bubble>();
                    GetSurroundingBubbles(bubble, surroundingBubbles);
 
                    if (surroundingBubbles.Count > 0)
                    {
                        finished = false;
                        break;
                    }
                }
            }
            if (finished)
            {
                if (GameFinished != null)
                {
                    GameFinished(this, EventArgs.Empty);
                }
            }
        }
 
        private void GetSurroundingBubbles(Bubble bubble, List<Bubble> surroundingBubbles)
        {
            if (bubble == null)
            {
                return;
            }
 
            int bubbleX = -1;
            int bubbleY = -1;
 
            // Display Bubbles
            for (int x = 0; x < Settings.DimensionX; x++)
            {
                for (int y = 0; y < Settings.DimensionY; y++)
                {
                    if (_bubbleArea[x, y] == bubble)
                    {
                        bubbleX = x;
                        bubbleY = y;
                        break;
                    }
                }
            }
 
            Bubble bubbleToCheck;
 
            // Left Bubble
            if (bubbleX > 0 && bubbleY != -1)
            {
                bubbleToCheck = _bubbleArea[bubbleX - 1, bubbleY];
                CheckBubble(bubbleToCheck, bubble, surroundingBubbles);
            }
 
            // Right Bubble
            if (bubbleX < Settings.DimensionX - 1 && bubbleY != -1)
            {
                bubbleToCheck = _bubbleArea[bubbleX + 1, bubbleY];
                CheckBubble(bubbleToCheck, bubble, surroundingBubbles);
            }
 
            // Top Bubble
            if (bubbleX != -1 && bubbleY > 0)
            {
                bubbleToCheck = _bubbleArea[bubbleX, bubbleY - 1];
                CheckBubble(bubbleToCheck, bubble, surroundingBubbles);
            }
 
            // Bottom Bubble
            if (bubbleX != -1 && bubbleY < Settings.DimensionY - 1)
            {
                bubbleToCheck = _bubbleArea[bubbleX, bubbleY + 1];
                CheckBubble(bubbleToCheck, bubble, surroundingBubbles);
            }
        }
 
        private void CheckBubble(Bubble bubbleToCheck, Bubble bubble, List<Bubble> surroundingBubbles)
        {
            if (bubbleToCheck == null)
            {
                return;
            }
 
            if (bubbleToCheck.BubbleColor == bubble.BubbleColor)
            {
                if (!surroundingBubbles.Contains(bubbleToCheck))
                {
                    surroundingBubbles.Add(bubbleToCheck);
                    GetSurroundingBubbles(bubbleToCheck, surroundingBubbles);
                }
            }
        }
    }
}

Die Hauptseite (Page.xaml)

<UserControl x:Class="Bubbles.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Bubbles_Controls="clr-namespace:Bubbles.Controls" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignWidth="300" d:DesignHeight="300" MinHeight="300" MinWidth="300" >
    <Grid x:Name="LayoutRoot">
        <Grid.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FF000000"/>
                <GradientStop Color="#FFB9B9B9" Offset="0.906"/>
                <GradientStop Color="#FF000000" Offset="1"/>
            </LinearGradientBrush>
        </Grid.Background>
 
        <Grid.RowDefinitions>
            <RowDefinition Height="36"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
 
        <Bubbles_Controls:PlayGround x:Name="_playground" Grid.Row="1"/>
 
        <TextBlock HorizontalAlignment="Left" x:Name="_header" VerticalAlignment="Top" FontSize="20" Text="Bubbles" TextWrapping="Wrap" Foreground="#FFFFFFFF" FontFamily="Comic Sans MS"/>
        <TextBlock HorizontalAlignment="Right" x:Name="_points" VerticalAlignment="Center" Text="0" TextWrapping="Wrap" Foreground="#FFFFFFFF" Margin="0,0,0,0" FontFamily="Comic Sans MS" FontSize="20"/>
        <StackPanel HorizontalAlignment="Left" Margin="82,0,0,0" Width="Auto" Orientation="Horizontal" VerticalAlignment="Center">
            <Button Content="Start" d:LayoutOverrides="Width" x:Name="_startButton" Foreground="#FFFFFFFF" Template="{StaticResource ButtonControlTemplate1}" FontSize="8"/>
 
            <Button Margin="4,0,0,0" x:Name="_optionsButton" Foreground="#FFFFFFFF" Template="{StaticResource ButtonControlTemplate1}" Content="Optionen" FontSize="8"/>
            <Button x:Name="_highScoreButton" Foreground="#FFFFFFFF" Template="{StaticResource ButtonControlTemplate1}" Content="Highscore" Height="24" Width="66" FontSize="8"/>
        </StackPanel>
        <Grid x:Name="_optionsGrid" Grid.RowSpan="2" Background="#7F000000">
            <Bubbles_Controls:Options Height="Auto" Margin="0,0,0,0" x:Name="_options" VerticalAlignment="Stretch"/>
        </Grid>
        <Grid x:Name="_highScoreGrid" Background="#7F000000" Grid.RowSpan="2">
            <Bubbles_Controls:HighScore HorizontalAlignment="Center" VerticalAlignment="Center" x:Name="_highScore" Margin="20,20,20,20"/>
        </Grid>
        <Grid Height="Auto" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" Width="Auto" Grid.Row="0" x:Name="_nameGrid" Grid.RowSpan="2" Background="#7F000000">
            <Bubbles_Controls:EnterNameControl BorderThickness="0,0,0,0" Margin="0,0,0,0" d:LayoutOverrides="Height" HorizontalAlignment="Center" VerticalAlignment="Center" x:Name="_nameControl"/>
        </Grid>
 
    </Grid>
</UserControl>

Plus die Codebehindklasse (Page.xaml.cs)

using System;
using System.Windows;
using System.Windows.Controls;
using System.ComponentModel;
 
namespace Bubbles
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
 
            _playground.GameFinished += new EventHandler(_playground_GameFinished);
            _playground.BubblesRemoved += new BubblesRemovedEventHandler(_playground_BubblesRemoved);
            _startButton.Click += new RoutedEventHandler(_startButton_Click);
            _optionsButton.Click += new RoutedEventHandler(_optionsButton_Click);
            _options.Closed += new EventHandler(_options_Closed);
            _highScore.Closed += new EventHandler(_highScore_Closed);
            _highScoreButton.Click += new RoutedEventHandler(_highScoreButton_Click);
            _nameControl.NameSaved += new Bubbles.Controls.SaveNameEventHandler(_nameControl_NameSaved);
 
            if (!DesignerProperties.GetIsInDesignMode(this))
            {
                _optionsGrid.Visibility = Visibility.Collapsed;
                _highScoreGrid.Visibility = Visibility.Collapsed;
                
                _nameGrid.Visibility = Visibility.Collapsed;
 
                // Init Trick
                Settings.Level = Settings.Level;
            }
        }
 
        void _nameControl_NameSaved(object sender, Bubbles.Controls.SaveNameEventArgs args)
        {
            HighScores.AddHighscore(args.Name, _points.Text, Settings.Level);
            _nameGrid.Visibility = Visibility.Collapsed;
            _highScoreGrid.Visibility = Visibility.Visible;
            _highScore.ShowHighscore();
        }
 
        void _highScore_Closed(object sender, EventArgs e)
        {
            _highScoreGrid.Visibility = Visibility.Collapsed;
        }
 
        void _highScoreButton_Click(object sender, RoutedEventArgs e)
        {
            _highScoreGrid.Visibility = Visibility.Visible;
        }
 
        void _options_Closed(object sender, EventArgs e)
        {
            _optionsGrid.Visibility = Visibility.Collapsed;
        }
 
        void _optionsButton_Click(object sender, RoutedEventArgs e)
        {
            _optionsGrid.Visibility = Visibility.Visible;
        }
 
        void _playground_BubblesRemoved(object sender, BubblesEventArgs args)
        {
            UpdatePoints(args.BubbleCount);
        }
 
        private void UpdatePoints(int bubbles)
        {
            int points = int.Parse(_points.Text);
            points += bubbles * bubbles;
            _points.Text = points.ToString();
        }
 
        void _startButton_Click(object sender, RoutedEventArgs e)
        {
            StartGame();
        }
 
        private void StartGame()
        {
            _playground.Opacity = 1;
            _points.Text = "0";
            _playground.Start();
        }
 
        void _playground_GameFinished(object sender, EventArgs e)
        {
            _playground.Opacity = .5;
            _nameGrid.Visibility = Visibility.Visible;
            
        }
    }
}

Es gehören noch einige Elemente mehr hinzu, wie z.B. Highscores, Namenseingabe und das Setzen des Spiellevels über die Optionen.

Internet Explorer 8-Podcast [Download]

20.04.2009 13:28:02 | Kay Giza

Bereits am 17. März 2009 habe ich einen Podcast mit Kai Schätzl (Microsoft MVP für Internet Explorer) aufgenommen.
In dem Podcast (1:38 Std.) unterhalte ich mich mit Kai über

  • Häufig gestellte Fragen zum Internet Explorer 8 aus den Newsgroups
  • Internet Explorer 8-Installationsprobleme
  • Schnellinfos
  • Verbesserte Navigation
  • Verbesserte Verwaltung von Favoriten und Verlauf
  • Sofortsuche
  • Web Slices
  • InPrivate-Browsen
  • InPrivate-Filterung
  • Kompatibilität
  • Liste "Kompatibilitätsansicht" im Internet Explorer
  • Kostenfreier Installationssupport
  • ...

Streaming & Download:

Weiterführende Links (die wir auch im Podcast erwähnt haben):

Feedback
Kai und ich haben den Podcast via Telefon aufgenommen, daher bitten wir die Tonqualität entsprechend zu entschuldigen. Wir sind auf Ihr Feedback sehr gespannt. Wir waren uns nicht sicher, ob wir den Podcast z.B. in verschiedene Teile aufteilen sollten. Gefällt Ihnen der Podcast? Sollten wir noch einen machen, z.B. zu einem ganz anderen Thema, welches wir hier nicht zum Thema Internet Explorer angesprochen haben? Wir würden uns sehr über Ihr Feedback freuen und wir würden gerne mit Ihnen über den Podcast diskutieren.

Danke
Vielen Dank an dieser Stelle noch einmal an Kai Schätzl! Kai - es hat richtig Spaß gemacht diesen Podcast mit Dir aufzunehmen, auch wenn es eine spontane Idee war ;-)
Danke Dir!

Viele Grüße,
Kay



This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

The industry's 10 best IT certifications

20.04.2009 12:43:00 | Ozgur Aytekin

IT certifications boast numerous benefits. They bolster resumes, encourage higher salaries, and assist in job retention. But which IT certifications are best?

Technology professionals generate much debate over just that question. Many claim vendor-specific programs best measure a candidate’s skills, while others propose vendor-independent exams are the only worthy way of measuring real-world expertise. Still other observers believe the highest-level accreditations — Microsoft’s MCSE or new Architect Series certification, Cisco’s CCIE, etc. — are the only credentials that truly hold value.

http://blogs.techrepublic.com.com/10things/?p=464

RSS-Feeds von MSDN Online Deutschland auf eigener Webseite einbinden – kostenfrei

20.04.2009 07:21:19 | Kay Giza

Für ausgewählte Bereiche des MSDN Online-Portals in Deutschland stehen seit langer Zeit RSS-Feeds zur Verfügung, die automatisch über neue Inhalte informieren, ohne dass Sie laufend selbst auf MSDN nachschauen müssen. Dabei erhalten Sie nicht nur unsere werktäglichen News & Infos - die wir für Softwareentwickler aufbereiten - sondern erhalten auch Infos zu technischen Ressourcen wie Webcasts, CodeClips, Artikel oder Bücher - aber auch zu Veranstaltungen und Community-Events. Derzeit kann man über 30 aktuelle Infoquellen als RSS-Feed abonnieren. Sehr häufig haben wir die Anfrage bekommen, ob man diese Inhalte auf seiner eigenen Webseite integrieren darf und ob es auch einen einfachen Weg gibt diese einzubinden, wenn man keine speziellen Webentwicklungs-Kenntnisse hat. Ja - Sie dürfen :) Dafür haben wir nun den sogenannten RSS-Konfigurator entworfen, mit dem Sie schnell und einfach, auch ohne Programmierkenntnisse diese Inhalte (bitte beachten Sie die Nutzungsbedingungen) auf Ihren Webseiten einbinden können. Mehr Informationen sowie Screenshots in diesem Blogposting auf Giza-Blog.de... [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

HowTo: Twittern mit C#

20.04.2009 02:34:58 | Robert Mühsig

imageTwitter ist eigentlich der Mikroblogging Dienst im Internet - ich selber bin ebenfalls auf der Plattform vertreten. Twitter hat seit beginn auch eine kostenlose API, wodurch sehr viele Twitter Applikationen entstanden sind. Auch mit .NET kann man sehr leicht die Twitter API nutzen bzw. gibt es bereits sehr interessante Bibliotheken, wie z.B. Tweetsharp.

(more…)

ShareThis

Ein kleiner Fehler im RSS-Feed von Blogengine.NET 1.5

18.04.2009 15:25:00 | Klaus Bock

Nach der letzten Aktualisierung auf Blogengine.NET 1.5.0.9 und der anschließenden Prüfung mit den verschiedenen W3C-Validatoren, wurde der RSS-Feed meines Blog nicht mehr als valide erkannt. Der Feed.Validator mokierte einen falschen Inhalt im Author-Tag eines jeden Artikel. Der W3C Feed-Validator verlangt hier eine gültige Emailadresse als Inhalt. Bis zur Blogengine.NET Version 1.4.5 wurde der RSS-Feed meines Blog immer als valide erkannt. Also musste sich das Problem mit dem Update auf die Version 1.5 eingeschlichen haben. Und tatsächlich; Beim direkten Vergleich der Klasse SyndicationGenerator aus dem Blogengine.Core Namensraum wurde der kleine aber gravierende Unterschied deutlich.
In der statischen Methode WriteRssItem(XmlWriter writer, IPublishable publishable) wird dem author-Element der Namen des Beitragsautor mitgegeben und keine Emailadresse.
Also brauch hier nur die betreffende Zeile wie im folgenden Listing ersetzt zu werden und der RSS-Feed wird wieder als valide erkannt.

//------------------------------------------------------------
//	Write optional channel item elements
//------------------------------------------------------------
// canged to pass the W3C feed test
writer.WriteElementString("author", BlogSettings.Instance.Email.Replace("@", ".nospam@nospam.") + " (" + publishable.Author + ")");
//writer.WriteElementString("author", publishable.Author);

Mir ist nicht ganz klar warum diese Änderung erfolgte. Ein Grund könnte die bessere Unterstützung für Blogs mit mehreren Autoren sein. Doch dann sollte, um einen validen Rss-Feed zu erzeugen, die Email des jeweiligen Autor aus dem Benutzerprofil verwendet werden.

TSUG = Team System User Group Virtual Edition

17.04.2009 13:57:16 | Christian Binder

Leider bin ich erst jetzt dazu gekommen über die TSUG zu bloggen :-( Die TSUG ist eine Virtuelle TFS User Group, die sich via Livemeeting 1 mal im Monat trifft.
Zur Zeit sind Weltweit 170 User angemeldet, wobei es eine Section für EMEA und eine für Amerika gibt, um das Zeitzonen Problem zu umgehen. Wer also Interesse hat teilzunehmen, einfach auf http://www.tsug-ve.com vorbeischauen und anmelden.

Auf diese Weise könnt Ihr an einer Reihe von TFS Vortägen teilnehmen, an die man sonst nur schwer ran kommt :-)
Tipp:  Schaut Euch mal im Session Archiv um…..

Viel Spass

Chris

Was ist eigentlich ASP.NET?

17.04.2009 07:27:00 | Jürgen Gutsch

Nach dem letzten Treffen des .NET-Stammtisch Konstanz-Kreuzlingen standen Peter, Thomas Huber und ich noch eine Weile zusammen und überlegten uns tatsächlich, was denn ASP.NET genau ist, bzw. was ASP.NET nun ausmacht.

Der Grund für die Diskussion war eine Bemerkung die Michael Schwarz während seines Vortrages über jQuery mehrfach fallengelassen habe. Genauer sagte er, er habe die ASP.NET MVP Auszeichnung komischerweise verliehen bekommen, ohne dass er mit ASP.NET arbeiten würde.

Ist das nun wirklich so oder war das nur eine provokante Äußerung gegen – aus seiner Sicht – einschränkende Features wie Web Server Controls, ViewState, UpdatePanels  und Co.?

Je nachdem was nun ASP.NET ausmacht, kann die Frage so oder so beantwortet werden…

Uns dreien war bei der Überlegung klar, das es sich lediglich um eine provokante Bemerkung gehandelt hat. Nur wieso? Michael verzichtet – wie er sagt – auf serverseitiges, dynamisches rendern von HTML, genauso wie auf die typische Features von WebForms wie PostBack und ViewState. Alles dynamische HTML wird clientseitig per JavaScript erzeugt. Dynamische Daten werden per AJAX vom Server geholt und per JavaScript angezeigt.

Ist das dann noch ASP.NET? Die Seite, welche das JavaScript und das HTML-Grundgerüst bereitstellt, könnte dann auch eine einfache HTML-Seite sein, da sich an dieser Stelle keine serverseitige Logik verbirgt. Wo versteckt sich dann aber das ASP.NET?

Mir waren bisher vier Konzepte bekannt, wie ASP.NET genutzt wird. Schaut man sich diese Konzepte genauer an, haben sie eines gemeinsam:

  • Web Forms: Dieses ist das ursprüngliche Konzept, wie es von Anfang an vorgesehen war. Die ASPX Seite bildet ein (Web) Form, welches mit Controls aller Art bestückt werden kann. Die Abarbeitung der Seite erfolgt in der Regel von einem Event zum nächsten.
  • Web Services: Die klassischen XML Web Services wurden zur gleichen Zeit wie die Web Forms vom Framework bereitgestellt. Auch Web Services funktionieren nach dem klassischen “Client-Server”-Prinzip: Der Client sendet eine Anfrage (Web Method Aufruf) an den Server und erhält eine Antwort. Statt HTML wird aber XML übertragen.
  • ASP.NET MVC: MVC ist das neueste Konzept um dynamische Webseiten zu erzeugen. Es werden nicht mehr hauptsächlich Events abgearbeitet, sondern Controller Aktionen versorgen die Views (ASPX-Dateien) mit Informationen (Models) die dann in den Views angezeigt werden oder zur ANzeigesteuerung genutzt werden. PostBack und ViewState gibt es nicht mehr. Ein PostBack ist nur noch ein klassischer POST der selber verarbeitet werden muss.
  • sharpcms-Konzept: (Ein richtiger Name fällt mir dazu im Moment nicht ein) Hierbei handelt es sich um ein komplett anderes Konzept. Die Ausgabe der Daten die im XML-Format vorliegen wird per XSLT gesteuert. Die Ausgabe ist daher flexibel und kann von HTML, über WordML bis hin zu PostScript reichen. Das einzige was hier ASP.NET ist, ist der HttpHandler der die Anfragen verarbeitet, die XML-Daten transformiert und das Resultat an den Client sendet

Die Gemeinsamkeit aller vier Konzepte ist das Interface IHttpHandler. Alle Anfragen werden also über einen HttpHandler verarbeitet. Handelt es sich also dann um ASP.NET wenn eine Anfrage vom Client, am Server über einen HttpHandler verarbeitet wird? Es scheint fast so.

Mehr zu HttpHandlern:
Daten mit ASP.NET zum Client schicken, oder: Wieso eigentlich HttpHandler?
HttpHandler der besonderen Art - Page Handler
Exemplarische Vorgehensweise: Erstellen eines synchronen HTTP-Handlers

Schaut man sich das Konzept von Michael genauer an, kann es tatsächlich unabhängig von ASP.NET funktionieren. Wichtig ist nur, dass irgendwie per Ajax Daten vom Server geholt werden können. Dabei ist es eigentlich egal, wie und mit welcher Technik die Daten serverseitig bereitgestellt werden.

O-Ton Peter Bucher:
Alle oben genannten Konzepte beruhen auf der Grundlage von ASP.NET, die beim Webserver, genauer dem ISAPI-Modul von ASP.NET anfangen.
Es besteht eine Applikation und Endpoints (Handler), die einfach verschieden genutzt werden.
WebForms implementiert einen IHttpHandler der sich „Page“ nennt und ermöglicht es mit intelligenten Konzepten eine Controlhierarchie, Events und vieles mehr zu haben.
Webservices stellen auch nur einen Entpoint mithilfe eines HttpHandlers zur Verfügung, die Daten in einem geeigneten Format an den Client schicken. Sie nutzen also die weiter oben gelegenen Features von WebForms nicht, macht ja auch keinen Sinn.
ASP.NET MVC hingegen setzt nutzt sehr viel vom Kern von ASP.NET, lässt hierbei aber die Klasse Page und die Controls aus dem Spiel, sowie die Konzepte die damit zusammenhängen (Events, View- Controlstate, etc...).
Es gibt einen Handler der alle Anfragen entgegen nimmt und dann intern einer Klasse / Methode zuweist. Intern besteht also ein anderes Konzept, dass allerdings – genau so wie mit Events – auch ein Einhängen in den Zyklus erlauben. Wenn auch auf eine viel simplere und transparentere Art und Weise (Actionfilter / AOP).
Um mehr zu erfahren was unter der Haube von ASP.NET abgeht, könnt ihr den Artikel von Rick Strahl lesen.

Programmiert man nun allerdings gerne mit C# und stellt man die Daten deswegen – der Einfachheit halber – per HttpHandler zur Verfügung, so basiert dieses Konzept – nach obiger Definition – ebenfalls auf ASP.NET. Genau so sah das Beispiel in Michaels Vortrag nämlich aus ;-)

Michael hat seine MVP Auszeichnung als somit zurecht ;-)

Update 23.04.2009:
Hier ist übrigens Michaels Beitrag zu dem Thema zu finden:
http://michael-schwarz.blogspot.com/2009/04/was-ist-eigentlich-aspnet.html

MSDN Training- und Zertifizierungsressourcen

16.04.2009 21:34:31 | Oliver Scheer

Für Entwickler, die ihre Kenntnisse im Bereich der IT erweitern und ihr Wissen unter Beweis stellen wollen, bietet Microsoft seit mehr als zehn Jahren das Microsoft Certified Professional Program (MCP-Programm) in Zusammenarbeit mit anerkannten Trainingsanbietern an. Mehr über aktuelle Trainingsangebote für Entwickler erfahren Sie in der Rubrik „Lernen“ von MSDN Online. Hier finden Sie das richtige Training um Ihr Wissen auf dem neuesten Stand zu halten. Lernen Sie, wie es Ihnen am meisten liegt – schauen sie sich ein Video an, nehmen Sie an einem Kurs teil oder lesen Sie ein Buch – entsprechend Ihrem Wissensstand, egal ob Sie noch Einsteiger oder schon Profi sind. Ob Trainings, Kurse, Workshops, Webcasts, CodeClips, Bücher, Technische Artikel oder  Zertifizierungen – die Mitte April 2009 neugestaltete „Learning-Seite“ für Entwickler enthält zahlreiche Einstiegspunkte für die Weiterbildung. Jetzt informieren: http://msdn.microsoft.com/de-de/bb188199.aspx

Identitätsspalte zurücksetzen

16.04.2009 19:44:00 | Wolfgang Kluge

Manchmal kommt es vor, dass man (z.B. nach letzten Tests) seine Daten aus Tabellen löschen und dabei entsprechende Identitätsspalten zurücksetzen will.

Hierbei gibt es mehrere Möglichkeiten. Man kann z.B. mittels TRUNCATE TABLE gleich beides auf einmal erledigen. Das empfiehlt sich aber nicht wirklich, da dies spätestens dann aufhört, wenn die Tabelle repliziert wird oder Foreign Keys gesetzt sind. Die Replikation kann auch dafür verantwortlich sein, dass man eine Tabelle nicht einfach so löschen und neu anlegen kann.

Mit all diesen Versuchen kann man aber - wenn Sie denn überhaupt gelingen - immer nur ganz von vorne anfangen. Es müssen alle Daten gelöscht werden. Falls Daten erhalten bleiben sollen, müssen diese zuerst gelöscht und danach wieder eingefügt werden.

Aber es gibt natürlich noch eine andere Möglichkeit. Der Befehl

DBCC CHECKIDENT ('table'[, NORESEED|RESEED[, seed_value]] )

ist zwar nicht sonderlich bekannt, wird aber durchaus verwendet. Dennoch, auch DBCC CHECKIDENT hat so seine Tücken. Zum Einen werden neu erstellte und bereits verwendete Tabellen unterschiedliche behandelt. Dadurch fällt es wiederum etwas schwerer, DBCC CHECKIDENT innerhalb eines Scripts zu verwenden.

Weitaus schwerwiegender ist aber, dass man mit diesem Befehl auch doppelte Identitätswerte schaffen kann. Wenn man seed_value so setzt, dass einer der nächsten Werte ein bereits vorhandener ist, dann kommt es zu einem Fehler oder eben zumindest zu doppelten Werten (was nicht mehr viel mit Identity zu tun hat).

Daher hab ich eine Stored Procedure geschrieben, die genau diese Aufgaben übernimmt. Der Identitätswert wird auf den Ursprungswert (wie in CREATE TABLE angegeben) zurückgesetzt. Wenn allerdings bereits Daten vorhanden sind, dann wird der größte Wert verwendet. So kann es nicht zu doppelten Werten kommen und der nächste Wert ist immer der Kleinstmögliche. Dabei wird auch die wahrscheinlich selten verwendete ID-Schrittweite beachtet.

Neu erstellte Tabellen (oder eben die, die mit TRUNCATE TABLE gelöscht wurden) werden ignoriert - die sind ja bereits auf dem Ursprungswert.

Download (1,42 kB)

Will man diese Prozedur global (d.h. in allen Datenbanken) verfügbar machen, so muss man diese SP in der master-Datenbank erstellen und mittels sp_ms_marksystemobject kennzeichnen (detaillierter beschrieben im Artikel Globale Stored Procedure im SQL Server).

Sending email from SQL Server Integration Services (SSIS)

16.04.2009 19:23:00 | Ozgur Aytekin

Sending an email is a frequent requirement to notify a user on the occurrence of certain events, especially if an unexpected event happens (for example sending notification on failure that could be either logical or physical). SSIS provides a built-in "Send Mail Task" to send email in these circumstances. The Send Mail Task is quite simple and straight forward in its configuration and use, but it has some inherent limitations for example, first it supports only sending plain text email (doesn’t support HTML formatted mail) and second it doesn’t support passing username and password while connecting to SMTP server (it only supports Windows authentication i.e. none windows authentication is not allowed) nor does it support specifying a SMTP port number to send emails if your SMTP server does not use the default value.

http://www.mssqltips.com/tip.asp?tip=1731

Microsoft SharePoint “14” is now Microsoft SharePoint 2010

16.04.2009 16:51:00 | Ozgur Aytekin

You have probably seen the news announcement today where we announced the public beta for the new Microsoft Exchange Server 2010. As part of that announcement, we also talked about some of the names for the “14” wave of products including Microsoft Office 2010 and Microsoft SharePoint Server 2010. I wanted to answer some questions that I think will inevitably pop to the top of your mind:

What happened to the Office piece of the name? We love MOSS. . . .

The first thing you’ll notice is that the MOSS acronym goes away with the new name since Office is no longer in the SharePoint official name. No one should worry that SharePoint doesn’t work great with Office 2010 since we removed Office from the name, just like people didn’t worry whether SharePoint was a great portal product when we removed Portal from the 2007 name.

The primary reason why we took Office out of the name - lots of folks associate the name Office with the Office client. We wanted to take the opportunity to reestablish the Office name and brand to be synonymous with the client suite. I say “Give the people what they Want” so everyone should immediately think of Microsoft Office = Office apps.

Don’t try to acronym Microsoft SharePoint Server to MSS since MSS is already taken by Microsoft Search Server. Just remember, SharePoint is SharePoint is SharePoint.

http://blogs.msdn.com/sharepoint/archive/2009/04/14/microsoft-sharepoint-14-is-now-microsoft-sharepoint-2010.aspx#9551931

Introducing the Microsoft Certified Master and Certified Architect for SharePoint

16.04.2009 16:44:00 | Ozgur Aytekin

The Master program is designed to be the top-tier technical certification for SharePoint Products and Technologies for years to come. The goal of the MCM is to provide a means for training, recognizing, and developing the top SharePoint technical experts in the world. Specifically, the MCM is intended for technical professionals whose primary responsibilities include designing, building, configuring, deploying, and supporting large, often complex, MOSS 2007 environments.

http://blogs.msdn.com/sharepoint/archive/2008/11/10/introducing-the-microsoft-certified-master-and-certified-architect-for-sharepoint.aspx

Das zweite .NET-Stammtischtreffen

16.04.2009 02:48:00 | Jürgen Gutsch

Wie Peter am Dienstag angekündigt hat, fand gestern um 19:00 Uhr das zweite Treffen des .NET-Stammtisch Konstanz-Kreuzlingen statt. Dieses Treffen war übrigens auch das erste Treffen als .NET-Usergroup und nicht mehr als einfacher Stammtisch. Das heißt von nun an finden alle offiziellen Treffen in dieser Form in den Räumen der FH-Konstanz statt.

Der Hörsaal im Gebäude F (Raum F023) übertraf übrigens meine Erwartungen. Vor allem die Lage (direkt schräg gegenüber des Eingangs) ist absolut genial. Beamer, Pult und genug Sitzplätze waren vorhanden. Die nächsten drei Termine sind bereits gebucht und finden ebenfalls im gleichen Hörsaal statt.

Die Planung dieses Treffens war leider etwas holprig, aber im großen und ganzen können wir sicher behaupten, dass dieses Treffen erfolgreich abgelaufen ist.

Wie lief das Treffen nun ab? Nach der Begrüßung durch Peter, fand eine kurze Vorstellrunde statt und ich habe – in meinem ersten, sehr holprigen Usergroup-Vortrag – die Website des .NET-Stammtisches sowie das “dotnetkk”-Projekt vorgestellt.

Anschließend hat Peter die Verlosung eines Jahresabonnements der Zeitschrift “Visual Studio ONE” vorgenommen. Das Abonnement wurde uns freundlicherweise von der ppedv AG zur Verfügung gestellt.

Das Highlight des Abends war dann der Vortrag über das JavaScript Framework jQuery vom ASP.NET MVP Michael Schwarz, der uns – während seines Urlaubs am Bodensee – als Gastsprecher besucht hat.

Während der Pause hat Michael noch einige mitgebrachte .NET Micro Framework Geräte vorgestellt und auch Anwendungsbeispiele, sowie ein Codebeispiel gezeigt.

Kurzes Fazit: Ich würde sagen, es war ein – im Großen und Ganzen – ein erfolgreiches Treffen. Es gab ein paar neue Gesichter zu sehen. Schade war lediglich, dass am Ende keine Zeit mehr geblieben ist um sich noch eine halbe Stunde locker zu unterhalten und über das gezeigte zu diskutieren.

Ankündigung: Das nächste Treffen, am 13.05.2009 um 19:00 Uhr, steht übrigens schon fest und findet ebenfalls wieder in der FH-Konstanz (Gebäude: F, Raum: F023) statt. Die Themen sind hier zu finden:
http://www.dotnetkk.de/Appointments/Details/dritter-net-stammtisch-konstanz-kreuzlingen

jQuery 1.3 Cheat Sheet

16.04.2009 02:13:02 | Jürgen Gutsch

(via Pixelgangster)

Auch ganz kurz: Für jQuery wird auf a coding fool ein Cheet Sheet bereitgestellt, dass alle wichtigen Funktionen und Eigenschaften beinhaltet:

http://acodingfool.typepad.com/blog/jquery-13-cheat-sheet.html

Free eBooks: ADO.NET Entity Framework, Powershell & C#

16.04.2009 02:06:04 | Jürgen Gutsch

Ganz kurz: Robert Mühsig verlinkt einem seiner neuesten Beiträge, auf drei eben entdeckte eBooks: Free eBooks: ADO.NET Entity Framework, Powershell & C#

Free eBooks: ADO.NET Entity Framework, Powershell & C#

15.04.2009 22:42:22 | Robert Mühsig

HowTo: Asynchrone Methoden mit Unit Tests testen

15.04.2009 21:11:43 | Robert Mühsig

imageIm letzten HowTo ging es um den Einstieg in die asynchrone Programmierung. Ein "Problem" dabei war, dass man nie genau weiß wie lange die Operation dauert. Mit einem kleinen Trick lassen sich auch solche Sachen elegant in einem UnitTest (oder Integrationstest) automatisiert testen.

(more…)

ShareThis

Lokalisierung in BlogEngine.NET anpassen

15.04.2009 20:57:00 | Wolfgang Kluge

Wenn man mal einen Eintrag in der labels.de.resx (oder einer anderen Resourcen-Datei) geändert hat, kennt man das.

Was macht man bei einem Update? Einfach die Datei weglassen geht sicherlich daneben, da einige Einträge dann mit aller wahrscheinlichkeit fehlen werden. Überschreiben bedeutet auf der anderen Seite, dass die Änderungen verloren gehen oder dass man diese nochmal ausführen muss.

Einfacher geht es - zumindest bei den Sprachen, bei denen nur die Kultur lokalisiert wurde - wenn man zusätzlich zu dieser noch eine Datei für die Subkultur anlegt. Also beispielsweise eine Datei Namens labels.de-de.resx.

Ein solcher Eintrag ist z.B. nützlich, wenn man den "Mehr" - Schalter mit einem anderen Text versehen will. Statt "Mehr" kann man auch "[vollständigen Artikel anzeigen]" angeben. In der Datei labels.de-de.resx ist dieser Text definitiv besser aufgehoben und muss bei einem Update lediglich wieder in das entsprechende Verzeichnis kopiert werden... Natürlich müsste man bei einem Update auch Testen, ob die Schlüsselnamen sich nicht geändert haben, aber davon muss man nicht unbedingt ausgehen (wäre ja unnötige Arbeit).

In den Einstellungen sollten man dann für die Sprache des Blogs auch den entsprechenden Eintrag (in dem Fall "Deutsch (Deutschland)") auswählen.

Download: labels.de-de.zip (1,64 kb)

Different ways to execute a SQL Agent job

15.04.2009 20:18:00 | Ozgur Aytekin

Every database person might have come across the situation of maintenance tasks such as backing up of databases, re-indexing tables and other such tasks. We often schedule jobs for such tasks, so that they execute as per the set schedule. But there is sometimes the need for these tasks to be executed “On Demand”. This tip shows various ways of executing such tasks on demand by any user regardless of whether the person is technical or not.

http://www.mssqltips.com/tip.asp?tip=1730

Download Microsoft Exchange Server 2010 Beta

15.04.2009 20:05:00 | Ozgur Aytekin

Microsoft Exchange Server 2010 helps you achieve new levels of reliability and performance by delivering features that help to simplify your administration, protect your communications, and delight your users by meeting their demands for greater business mobility.

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=1898ed2c-2f88-48ac-824e-d3d20fad77d7#Overview

Weitere Lokalisierungslücken in BlogEngine.NET 1.5.0.7 und 1.5.0.8

15.04.2009 19:24:00 | Wolfgang Kluge

Wenn man mal anfängt zu suchen... ;) Es fehlen innerhalb der lablels.de.resx-Datei etliche Einträge. Welche davon überhaupt noch verwendet werden, und welche nicht, hab ich im einzelnen jetzt mal nicht nachvollzogen. Ein paar sind zumindest auch außerhalb der Administration zu finden - und dort stört mich das ein wenig (z.B. nextPost und previousPost).

Zum aufspüren der fehlenden Einträge habe ich die Dateien lable.resx und label.de.resx verglichen (aus Version 1.5.0.8). Dabei sind folgende Einträge aufgefallen, die in der deutschen Übersetzung fehlen, was natürlich gleich nachgeholt wurde.

Key Englisch Deutsch
changePassword Change password Passwort ändern
chooseOtherName Please choose another name Bitte verwenden Sie einen anderen Namen
emailSubjectPrefix Subject prefix Prefix im Betreff
enablePingbacks Enable pingbacks Pingbacks aktivieren
enableTrackbacks Enable trackbacks Trackbacks aktivieren
enterValidEmail Please enter a valid e-mail Bitte geben Sie eine gültige eMail-Adresse an
enterValidUrl Please enter a valid URL Bitte geben Sie eine gültige URL an
mobileTheme Mobile theme Thema für Mobilgeräte
nextPost Next post Nächster Artikel
nextPosts Next posts Nächste Artikel
previousPost Previous post Vorheriger Artikel
previousPosts Previous posts Vorherige Artikel
receive Receive Empfangen
required Required Erforderlich
savingTheComment Saving the comment... Kommentar speichern...
send Send Senden
showPostNavigation Show post navigation links Links zur Artikel-Navigation anzeigen
userProfiles User Profile(s) Benutzerprofil(e)
view View Ansicht
firstName First Name Vorname
aboutMe About Me Über mich
birthday Birthday Geburtstag
cityTown City/Town Stadt
displayName Display Name Anzeigename
fullName Full Name Voller Name
gender Gender Geschlecht
industry Industry Branche
interests Interests Interessen
isPrivate Is Private Privates Profil
lastName Last Name Nachname
occupation Occupation Beruf
photoURL PhotoURL Photo URL
regionState State/Region Staat / Region
saveProfile Save Profile Speichern
switchUserProfile Switch to user profile zu Benutzerprofil wechseln
company Company Firma
middleName Middle Name Zweitname
phoneFax Phone Fax Fax
phoneMain Phone Main Telefon
phoneMobile Phone Mobile Mobil
profile Profile Profil
calendar Calendar Kalender
commentWaitingModeration Thank you for the feedback. The comment is now awaiting moderation Vielen Dank für Ihren Beitrag. Der Kommentar wartet auf Bestätigung vom Moderator
requireSslForMetaWeblogApi Require SSL for MetaWeblog API Für die MetaWeblog API wird SSL benötigt
requireSslForMetaWeblogApiDescription Enforce the use of SSL when communicating with the MetaWeblog API SSL für Kommunikation mit MetaWeblog API erzwingen
compressWebResource Compress WebResource.axd WebResource.axd komprimieren
compressWebResourceDescription This may break third-party functionality Dies kann Funktionen von Drittanbietern beeinträchtigen
useBlogNameInPageTitles Use blog name in page titles Blogname in Seitentitel anzeigen
useBlogNameInPageTitlesDescription Prefixes the page titles with the name of the blog Zeigt den Blognamen im Seitentitel als Prefix zum Artikelnamen an
uncategorized Uncategorized Unkategorisiert
cancel Cancel Abbrechen
filter Filter Filter
filterByApml Filter by APML APML-Filter
filterByApmlDescription Enter the URL to your website or to your APML document Geben Sie die URL zu Ihrer Website oder zu Ihrem APML-Dokument an
login Log in Anmelden
logoff Log off Abmelden
useRawHtmlEditor Use raw HTML editor Puren HTML-Editor verwenden
enableCommentNesting Enable nested comments Verschachtelte Kommentare aktivieren
enableCommentNestingDescription This only works if the theme supports it. Funktioniert nur, wenn das Thema dies unterstützt
replyTo In reply to In Beantwortung von
replyToBase the original post dem Originalartikel
replyToThis Reply Antwort
deleteKeepReplies Delete this, but keep replies Diesen Eintrag löschen, Antworten behalten
deletePlusReplies Delete this and replies Diesen Eintrag und alle Antworten löschen
cancelReply Cancel reply to comment Antwort auf Kommentar abbrechen
numberOfCharacters Number of characters Anzahl der Buchstaben
ratingHasBeenRegistered Your rating has been registered. Thank you! Ihre Bewertung wurde gespeichert. Vielen Dank.
rateThisXStars Rate this {0} star{1} out of 5 Diesen Artikel mit {0} von 5 Sternen bewerten

Ich bin kein Übersetzer! Daher bin ich dankbar für Verbesserungen ;) Die Liste habe ich zwar bereits auch als Patch veröffentlicht, aber das ist änderbar...

Bis es soweit ist, und die Übersetzung in einem Release endet, kann man diese aber auch hier herunterladen: labels.de.zip (5,25 kb). Die enthaltene Datei einfach in den Ordner App_GlobalResources kopieren.

UPDATE: geänderte Einträge werde ich rot markieren (und nicht jedes mal dazuschreiben, warum *g*)...

UPDATE 2: in Version 1.5.0.9 kam die letzte Zeile dazu. Damit ist beim Rating nun auch der Tooltip-Text lokalisiert...

Comics mit Silverlight 2 selber erstellen

15.04.2009 15:30:09 | Oliver Scheer

Unter den MSDN Webcast (www.my-msdn.de/webcasts) findet sich nun ein neuer Silverlight 2-Tipps und Tricks Webcast zum Thema: Comics mit Silverlight erstellen.

Dazu habe ich in wenigen Stunden einen kleinen Comic-Strip aus der Sicht eines Entwicklers geschrieben:

  • Controls für immer wiederverwendete Elemente im Comic
  • Eigenschaften an Controls bzw. Charakteren zum Steuern (z.B. Augen)

image

Die Charaktere habe ich dabei mit einem einfachen Trick erstellt. Ich habe ein JPG als Vorlage genommen und mit Expression Design die Konturen einfach mit Vektortools nachgezeichnet, hat überraschend wenig Zeit gekostet.

Den gesamten Source kann man sich unter dem folgenden Link anschauen:

Das Projekt live erleben, kann man auf meiner Homepage unter:
http://www.the-oliver.com/project/comic/

image

Microsoft Certification Coaching Session: Preparing for your Microsoft Windows SharePoint Services 3.0 – Application Development Exam (70-541)

14.04.2009 19:41:00 | Ozgur Aytekin

Take advantage of this coaching session hosted by a Microsoft Certified Trainer to help prepare for your Microsoft Certification exam.

This session is intended for Developers and IT Professionals pursuing Technical Specialist: Windows SharePoint Services 3.0 - Application Development certification. You will review key exam topics including deploying Windows SharePoint Services and custom components, developing components, manipulating site content and configuration. The session will help you understand the key exam topic areas and how to better focus your study efforts.

http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032406314&EventCategory=2&culture=en-US&CountryCode=US

A Developer's First Look at Windows 7

14.04.2009 19:34:00 | Ozgur Aytekin

This series introduces Windows 7 with an emphasis on those new features that will be of most interest and use to developers. It consists of: two introductory sessions, one focusing on the new user interface, and one on behind-the-scenes features, two hour-long sessions that cover compatibility and security issues, six shorter sessions which focus on coding for a single new feature
...

http://www.msdev.com/Directory/SeriesDescription.aspx?CourseId=104

Visual Basic QuickStarts and How-to Topics for the Composite Application Guidance for WPF and Silverlight - February 2009 - English

14.04.2009 19:32:00 | Ozgur Aytekin

The Composite Application Guidance for WPF and Silverlight is designed to help you more easily build enterprise-level Windows Presentation Foundation (WPF) and Silverlight client applications. It will help you design and build enterprise-level composite WPF client applications—composite applications use loosely coupled, independently evolvable pieces that work together in the overall application.

This download includes QuickStarts, the Composite Application Library (only provided in C#), and documentation. This download is provided to help the Visual Basic developer use the Composite Application Library. The documentation includes:
...

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=537da1cd-43e1-4799-88e7-a1da9166fb46

Morgen: Zweites Treffen des .NET Stammtisch Konstanz-Kreuzlingen

14.04.2009 19:07:18 | Peter Bucher

Morgen ist es schon soweit, dotnetkk.de geht in die nächste Runde.

Das Treffen findet am 15.04.09 um 19:00 Uhr in der FH-Konstanz (Brauneggerstrasse 55) statt.

Das Programm in Kürze:

  1. Vorstellung des Projektes “dotnetkk” (Webpräsenz des Stammtisches) von Jürgen Gutsch
  2. Verlosung eines Jahresabonnements von “ASP.NET professional” von mir
  3. Vortrag über jQuery von Michael Schwarz

Jürgen Gutsch stellt am Anfang des Treffens das Projekt “dotnetkk” vor, dass das Fundament für die Webpräsenz der Stammtisches darstellt und auch von anderen UserGroups genutzt werden kann.
Dabei geht es um: ASP.NET MVC, LINQ to XML, ASP.NET Provider, Forms Login und vieles mehr.

Anschliessend werde ich ein Jahresabonnement von “ASP.NET professional” verlosen, das uns ppdedv AG freundlicherweise für das Treffen zur Verfügung stellt.

An dritter Stelle im Programm haben wir den bekannten Gastsprecher Michael Schwarz zu Besuch.
Er hält einen Vortrag über jQuery, das bekannte Javascript-Framework.

Dabei geht er auf die allgemeinen Probleme mit Javascript ein und stellt anschliessend jQuery vor.
Siehe auch: .NET Stammtisch Konstanz-Kreuzlingen – jQuery und .NET Micro Framework

Ich freue mich auf die neuen Gesichter. Bis Morgen!

Kleiner Fehler in BlogEngine.NET 1.5.0.7

14.04.2009 18:49:00 | Wolfgang Kluge

Da hat sich wohl ein kleiner Lokalisierungs-Fehler eingeschlichen...

"Be the first to rate this post" steht an jedem Post dran - statt der lokalisierten Variante "Gib die erste Bewertung ab" wie sie auch (immer noch) in der entsprechenden .resx - Datei steht.

Das Problem scheint Aufgrund einer Lade-Optimierung hervorgekommen zu sein, denn das Rating wird nun über die JavaScript-Funtion showRating innerhalb der Datei blog.js angezeigt - und dort steht der Text fest drin ;) Kurzfristig hilft es also nur, genau diesen Text innerhalb blog.js zu ändern...

 

Hier eine kleine Übersetzungshilfe ins Deutsche:

Zeile Ist Soll
339
p.innerHTML = 'Be the first to rate this post';
p.innerHTML = 'Gib die erste Bewertung ab';
342
p.innerHTML = 'Currently rated ' + new Number(rating).toFixed(1) + ' by ' + raters + ' people';
p.innerHTML = 'Bewertung: ' + new Number(rating).toFixed(1) + ' von ' + raters + ' Benutzern';
352
li.innerHTML = 'Currently ' + rating + '/5 Stars.';
li.innerHTML = 'Bewertung: ' + rating + '/5';
361
a.title = "Rate this " + i.toString() + " star" + (i == 1 ? "" : "s") + " out of 5";
a.title = "Diesen Artikel mit " + i.toString() + " von 5 Sterenen bewerten";

 

UPDATE:
Nach meiner Anfrage ist dieser Fehler in Version 1.5.0.8 wieder behoben ;) Das ging schnell.

Und wie man sieht, funktioniert es auch wunderbar.

UPDATE 2:
Bis auf den Tooltip-Text (Zeile 364, ehemals 361). Der ist gleich geblieben und immer noch nicht lokalisiert :(

UPDATE 3:
In Version 1.5.0.9 soll auch dies nun behoben sein. Mal sehn - heut Abend werd ich's installieren...

Globale Stored Procedure im SQL Server

14.04.2009 17:38:00 | Wolfgang Kluge

Um eine Stored Procedure im SQL Server global (d.h. über mehrere Datenbanken hinweg) verfügbar zu machen, gibt es den nur wenig (bzw. offiziell gar nicht) dokumentierten Befehl sp_ms_marksystemobject. Damit es funktioniert muss der Name der Stored Procedure mit "sp_" beginnen und in der master-Datenbank gespeichert sein! Es gibt keine Fehlermeldung, falls dies nicht so wäre...

Folgende Tabelle soll den Unterschied verdeutlichen. Die Aufgerufene Stored Procedure gibt (wie in dem Beispiel unten) lediglich den aktuellen Datenbanknamen zurück.

SP Aufruf aus AdventureWorks-DB DB_NAME()
in master-Datenbank, aber nicht als System Object markiert
EXEC master.dbo.StoredProcedure
master
EXEC dbo.StoredProcedure
Fehler
in master-Datenbank und als System Object markiert
EXEC master.dbo.StoredProcedure
master
EXEC dbo.StoredProcedure
AdventureWorks

Der Aufruf einer als System-Objekt markierten Stored Procedure erfolgt also, als ob diese in der lokalen Datenbank vorhanden wäre.

Achtung. Dieser Befehl ist undokumentiert und kann in einer der nächsten Versionen wegfallen... Die Verwendung ist auf live-Systemen daher nicht zu empfehlen.

Beim Entwickeln stört das allerdings nur wenig - und wenn man sich Hilfsfunktionen schreibt, die man in jeder Datenbank mal gebrauchen kann, dann steht der Verwendung dieses Befehls auch nichts im Wege (bis er wegfällt *g*).

Immer in einer lokalen Datenbank zu arbeiten bringt den Vorteil mit sich, dass man auch lokale Objekte ansprechen kann, ohne beim Entwickeln wissen zu müssen, in welcher Datenbank dies geschehen soll. Das erleichtert z.B. den Zugriff auf die sys-Views für unterschiedliche Datenbanken. Allerdings kann das auch bedeuten, dass die entsprechende Tabelle nicht vorhanden ist oder über andere Spaltennamen verfügt. Das sollte man beim Erstellen der Prozedur im Hinterkopf behalten.

Zum Testen:

USE master
GO
CREATE PROCEDURE sp_testGlobal
AS BEGIN
    SELECT DB_NAME() AS CurrentDB
END
GO

EXEC sp_ms_marksystemobject 'sp_testGlobal'

Diese Stored Procedure gibt den aktuellen Datenbanknamen zurück und kann nun aus jeder anderen Datenbank aufgerufen werden..

Will man übrigens wirklich eine lokale Tabelle, View, Gespeicherte Prozedur oder Funktion aufrufen, dann muss man diese eventuell (zumindest kurzfristig) auch in der master-Tabelle anlegen, da es sonst Fehler beim Anlegen/Ändern der globalen gespeicherten Prozedur geben könnte. Auch Intellisense ist an dieser Stelle ohne entsprechende Objekte nicht möglich. Etwas einfacher und eleganter geht es mit einem Alias, der in der master-Tabelle eingerichtet wird (aber meistens klappts ja auch einfach so).

Das Ganze funktioniert (trotz mehrfacher, gegenteiliger Ankündigung) immer noch - auch noch im SQL Server 2008. Dort aber leider ohne Intellisense-Unterstützung.

21.04.09 .NET Developer Group Braunschweig – Von “CAB” zu “CAL” – Modulare Client-Architekturen für WPF-Anwendungen

14.04.2009 13:54:16 | Lars Keller

dotnet-bs_banner_blog

Unser 31 User Group Treffen der .NET Developer Group Braunschweig findet am 21.04.09, ab 19:00 Uhr in Kilian's Raffinerie statt.

Dieses Mal haben wir den Microsoft Sprecher Jörg Jooss (Software-Architekt im Microsoft Technology Center (MTC)) zu Gast:

Der Vortrag beschreibt die in Architektur-Design-Workshops gewonnenen und erprobten Vorgehensmuster zum Entwurf von Rich Clients mit Hilfe der Composite Application Library (CAL) von Microsoft patterns & practices für Windows Presentation Foundation-Anwendungen, sowie die Unterschiede zum Composite Application Block (CAB) für Windows Forms. Darüber hinaus beleuchtet der Vortrag nützliche Features in CAL, die auch einzeln für sich genommen einen Mehrwert für die WPF-Entwicklung bieten.

Achtung! Damit wir die Räumlichkeiten besser planen können, benötigen wir dieses Mal eine Anmeldung für das User Group Treffen. Anmeldeschluss ist der kommende Sonntag 20.04.2009.

Für die Anmeldung genügt es einfach eine formlose E-Mail an keller [@] dotnet-braunschweig [dot] de zuschreiben.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!



This weblog is sponsored by netcreate OHG.

21.04.09 .NET Developer Group Braunschweig – Von “CAB” zu “CAL” – Modulare Client-Architekturen für WPF-Anwendungen

14.04.2009 12:54:16 | Lars Keller

dotnet-bs_banner_blog

Unser 31 User Group Treffen der .NET Developer Group Braunschweig findet am 21.04.09, ab 19:00 Uhr in Kilian's Raffinerie statt.

Dieses Mal haben wir den Microsoft Sprecher Jörg Jooss (Software-Architekt im Microsoft Technology Center (MTC)) zu Gast:

Der Vortrag beschreibt die in Architektur-Design-Workshops gewonnenen und erprobten Vorgehensmuster zum Entwurf von Rich Clients mit Hilfe der Composite Application Library (CAL) von Microsoft patterns & practices für Windows Presentation Foundation-Anwendungen, sowie die Unterschiede zum Composite Application Block (CAB) für Windows Forms. Darüber hinaus beleuchtet der Vortrag nützliche Features in CAL, die auch einzeln für sich genommen einen Mehrwert für die WPF-Entwicklung bieten.

Achtung! Damit wir die Räumlichkeiten besser planen können, benötigen wir dieses Mal eine Anmeldung für das User Group Treffen. Anmeldeschluss ist der kommende Sonntag 20.04.2009.

Für die Anmeldung genügt es einfach eine formlose E-Mail an keller [@] dotnet-braunschweig [dot] de zuschreiben.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!

Neuer Artikel bei dotnetpro: Multi-Touch-Applikationen für Microsoft Surface entwickeln

14.04.2009 11:14:00 | Gregor Biswanger

In der kommenden Ausgabe der dotnetpro gibt es einen neuen Artikel meinerseits:



Multi-Touch-Applikationen für Microsoft Surface entwickeln - Multi-Touch-Tisch

Touchscreens kennt man. Aber kennen Sie auch den Multi-Touch-Tisch Microsoft Surface? Da sitzen die Leute um einen LCD-Bildschirm, der als Tischplatte dient, alle fingern auf der Oberfläche herum, und das Programm weiß, was die ganzen Finger und Hände wollen. Brauchen Sie nicht? Sagen Sie das nicht!


Zu lesen ist der Artikel bei dotnetpro, Ausgabe 05/2009.
Oder http://www.dotnetpro.de/articles/onlinearticle2953.aspx

Vortrag und Einführung zu dem Thema: Multi-Touch mit WPF

Auf der dotnet Cologne 2009 werde ich passend zum Artikel alle Geheimnisse der Multi-Touch-Entwicklung lüften.
Es sind nur noch wenige Plätze frei, ich freue mich auf euer kommen.

XTOPIA [kompakt] heute in Karlsruhe…

14.04.2009 11:11:59 | Steffen Ritter

Der erste Termin der XTOPIA [kompakt]-Roadshow war ein voller Erfolg, daher freue ich mich heute um so mehr auf den nächsten Termin in Karlsruhe. Die Veranstaltung ist zwar komplett ausgebucht, aber da bei kostenlosen Events immer mit einer höheren Schwundrate zu rechnen ist, ist sicher noch der eine oder andere Platz frei, auch auf dem letzten Termin kamen einige Leute einfach so vorbei – und versprochen: Wir schicken niemanden nach Hause solange Platz im Raum ist.

Also nix wir schnell noch anmelden oder einfach vorbeikommen:

Novotel Karlsruhe Kongress
Festplatz 2
76137 Karlsruhe

Die Agenda für Dienstag, 14. April 2009 (Karlsruhe)

  • 17.00 Uhr
    • Begrüßung (Steffen Ritter)
    • UX/Surface/Multitouch/Win7 et al (Clemens Lutsch)
    • Vorstellung RIA Forum (Raju Bitter)
    • Internet Explorer 8 (Oliver Scheer)
  • 30 Minuten Pause & Catering (circa 18.15 – 18.45 Uhr)
  • 18.45 Uhr
    • Silverlight/Rich Internet Applications (Oliver Scheer)
    • Silverlight als plattformübergreifendes Frontend für Unternehmensanwendungen (Ludwig Neer)
    • Live Services API für Webentwickler (Frank Maenz)
    • PC-Ware
    • Browsergames in Silverlight (Otto Fischer)
  • 15 Minuten Pause (circa 20.35 – 20.50Uhr)
  • 20.50 Uhr
    • UI Design zu Silverlight & WPF (Clemens Lutsch/tbd.)
    • Visio für Web/Agenturen (Florian Müller)
    • Ausklang, Verlosung etc. (PC-Ware/Steffen Ritter)
  • 22.00 Uhr Ende

Die Veranstaltung beginnt pünktlich um 17.00 Uhr, danach kann kein Einlass oder Sitzplatz mehr gewährleistet werden. Kostenlose Getränke und Verpflegung für Zwischendurch werden natürlich von Microsoft gestellt.

Weitere Infos zur XTOPIA [kompakt] hier: http://blogs.msdn.com/riablog/archive/2009/02/24/xtopia-kompakt-die-ux-web-ria-roadshow-09.aspx

Brain Harry bei der Team System User Group Virtual Edition

14.04.2009 09:51:20 | Lars Keller

Am 16 April 2009 findet das monatliche EMEA-Meeting der Team System User Group Virtual Edition statt. Dieses Mal konnte Brian Harry als Sprecher gewonnen werden. Brian wird über die Internal Adoption von VSTS sprechen. Brian ist Technical Fellow und Manager der Product Unit für den Team Foundation Server.

Link:



This weblog is sponsored by netcreate OHG.

Brain Harry bei der Team System User Group Virtual Edition

14.04.2009 08:51:20 | Lars Keller

Am 16 April 2009 findet das monatliche EMEA-Meeting der Team System User Group Virtual Edition statt. Dieses Mal konnte Brian Harry als Sprecher gewonnen werden. Brian wird über die Internal Adoption von VSTS sprechen. Brian ist Technical Fellow und Manager der Product Unit für den Team Foundation Server.

Link:

WPF? Fast Start!

14.04.2009 08:25:37 | Oliver Scheer

Was ist WPF Fast Start?

Alte und neue Technologien in eine funktionierende Lösung zusammenführen – eine immerwährende Aufgabe für Softwareentwickler. Diesen, die bisher keine Möglichkeit hatten, Windows Presentation Foundation (WPF) zu evaluieren, soll nun der Einstieg besonders leicht gemacht werden. Dazu wird Microsoft auf MyMSDN für Softwarehersteller (www.mymsdn.de/isv) eine WPF-Komponente bereitstellen, die Entwickler in maximal 15 Minuten einsetzen und testen können. Diese WPF-Komponente können Entwickler entweder in ihre vorhandenen Anwendungen integrieren oder innerhalb der Beispielanwendungen testen, die ebenfalls bereitstellt werden. Es existieren schon sehr viele Stand-Alone-Beispiele zu WPF; bei WPF Fast Start steht allerdings die Integration in bestehende Anwendungen im Vordergrund.

Link: http://mymsdn.de/isv

Die WPF-Komponente in WPF Fast Start ist eine Adress-Visualisierung im bekannten Cover Flow – und so sieht sie aus:

clip_image001

TechTalk Juni 2009: Parallele Programmierung mit Visual Studio 2010 und Intel® Parallel Studio

14.04.2009 08:16:29 | Oliver Scheer

Die Etablierung von Mehrprozessorsystemen bedeutet für den Anwendungsentwickler, dass ein Performancegewinn durch zusätzliche Prozessorkerne nur noch dann stattfindet, wenn die vorhandene Software angemessen parallelisiert und skaliert. Allerdings ist die Parallelisierung einer Anwendung nicht unbedingt einfach. Die Kenntnisse über die vorhandene Hardware, das Betriebssystem und die Entwicklungsumgebung stellen hier oft eine große Hürde dar. Gleiches gilt für die vorhandenen APIs, die man benutzen kann, um eine Anwendung vollständig oder in Teilen zu parallelisieren.

Deshalb steigt gerade jetzt - im Zeitalter der Mehrkernprozessoren - der Bedarf nach geeigneten Methoden, um verschiedene Anwendungsteile parallel ablaufen zu lassen. Genau hier setzen Intel und Microsoft an. In diesem MSDN TechTalk werden Mario Deilmann von Intel und Dariusz Parys von Microsoft die verschiedenen Technologien und Tools im Bereich C/C++ und C# erklären, die es dem Entwickler erlauben, auf einer abstrakteren Ebene parallele Ausführungspfade zu definieren. Erleben Sie dabei die Verwendung von Intel® Parallel Studio und einen Ausblick auf die Parallel Extensions des .NET Framework 4.0 vom kommenden Visual Studio 2010.

Dieser MSDN TechTalk richtet sich an alle Entwickler, die vor der Frage stehen, wie man eine Anwendung geeignet parallelisiert, egal ob native C++, C#, Visual Basic.

Die Termine:

08.06. Karlsruhe

09.06. München

15.06. Köln

22.06. Hamburg

29.06. Berlin

30.06. Dresden

21.04.09 .NET Developer Group Braunschweig – Von “CAB” zu “CAL” – Modulare Client-Architekturen für WPF-Anwendungen

14.04.2009 03:54:01 | Lars Keller

dotnet-bs_banner_blog

Unser 31 User Group Treffen der .NET Developer Group Braunschweig findet am 21.04.09, ab 19:00 Uhr in Kilian's Raffinerie statt.

Dieses Mal haben wir den Microsoft Sprecher Jörg Jooss (Software-Architekt im Microsoft Technology Center (MTC)) zu Gast:

Der Vortrag beschreibt die in Architektur-Design-Workshops gewonnenen und erprobten Vorgehensmuster zum Entwurf von Rich Clients mit Hilfe der Composite Application Library (CAL) von Microsoft patterns & practices für Windows Presentation Foundation-Anwendungen, sowie die Unterschiede zum Composite Application Block (CAB) für Windows Forms. Darüber hinaus beleuchtet der Vortrag nützliche Features in CAL, die auch einzeln für sich genommen einen Mehrwert für die WPF-Entwicklung bieten.

Achtung! Damit wir die Räumlichkeiten besser planen können, benötigen wir dieses Mal eine Anmeldung für das User Group Treffen. Anmeldeschluss ist der kommende Sonntag 20.04.2009.

Für die Anmeldung genügt es einfach eine formlose E-Mail an keller [@] dotnet-braunschweig [dot] de zuschreiben.

Weitere Informationen unter www.dotnet-braunschweig.de.

Wie immer ist jeder herzlich willkommen!

Brain Harry bei der Team System User Group Virtual Edition

13.04.2009 23:51:02 | Lars Keller

Am 16 April 2009 findet das monatliche EMEA-Meeting der Team System User Group Virtual Edition statt. Dieses Mal konnte Brian Harry als Sprecher gewonnen werden. Brian wird über die Internal Adoption von VSTS sprechen. Brian ist Technical Fellow und Manager der Product Unit für den Team Foundation Server.

Link:

ASP.NET MVC & Windows Azure Trainings Kits

12.04.2009 23:25:19 | Robert Mühsig

image

Microsoft stellt immer wieder Trainings Kits zur Verfügung, welche aus Demoanwendung, Hands-on-Labs und Präsentationen bestheen. Anfang April wurden zwei interessante Tranings Kits veröffentlicht:

- ASP.NET MVC 
- Windows Azure

(more…)

ShareThis

HowTo: Multithreading in .NET - Asynchrone Programmierung (Eventbasiert)

12.04.2009 22:56:40 | Robert Mühsig

image

Hoch performante Systeme oder Desktopprogramme kommen ohne asynchrone Programmierung nicht weit. Wenn bei einer Windows Anwendung die Anwendung während einer Aktion "steht" und die Anwendung nicht mehr reagiert, dann wird diese Aktion synchron ausgeführt. In diesem HowTo zeige ich einen Einstieg, wie man seine Backend-Logik mit asynchronen Methoden ausstatten kann.

(more…)

ShareThis

Buch über Visual Studio Add-In Entwicklung

12.04.2009 12:16:08 | Lars Keller

vsadd-In Das Buch Add-In-Entwicklung für Visual Studio 2008 von Thomas Müller beschreibt wie der Titel es verrät, wie einfach ein Add-In für Visual Studio erstellt werden kann. Ich kann dieses Buch nur empfehlen, besonders wenn man einen Einstieg in Thematik sucht. Das Buch enthält viele praktische Tipps.

Produktbeschreibung

Vielleicht haben Sie ja schon einmal erste Schritte in der Add-in-Programmierung für Visual Studio gewagt. Dann könnte es Ihnen genau so wie mir ergangen sein und Sie haben sich mit den folgenden Fragen und Hindernissen herumärgern müssen:

  • Sie möchten Toolfenster erstellen, die sich genau so wie die Toolfenster von Visual Studio verhalten?
  • Sie haben eigene Symbole mit transparenten Bildbereichen, aber in den Toolfenstern von Visual Studio werden diese nicht angezeigt?
  • Sie möchten auf Ereignisse in Visual Studio reagieren, wissen aber nicht, wie Sie die entsprechenden Event-Handler abonnieren können?
  • Sie haben eigene benannte Befehle erstellt, die dann aber nur einmal angezeigt werden?
  • Sie möchten neben benannten Befehlen eigene Befehlsleistensteuerelemente und Symbolleisten erstellen, finden aber nur Beispiele in Makrocode, die für Visual Studio Add-ins nicht anzuwenden sind?
  • Sie möchten auf das Code-Modell in C#-Projekten zugreifen, ohne den gesamten Text einer C#-Datei zu parsen?

Auf diese und viele weitere spannende Fragen werden Sie in diesem Buch Antworten finden. Add-in-Entwicklung für Visual Studio ist das erste deutschsprachige Buch, dass sich praxisnah mit diesem Thema unter Verwendung der Sprache C# beschäftigt.

Über den Autor

Thomas Müller lebt in Nürnberg und ist Software Engineer bei der DATEV eG. Weiterhin ist Thomas Leiter der dodned User Group Franken und Sprecher auf der BASTA und bei anderen User Groups.

Link:



This weblog is sponsored by netcreate OHG.

Buch über Visual Studio Add-In Entwicklung

12.04.2009 11:16:08 | Lars Keller

vsadd-InDas Buch Add-In-Entwicklung für Visual Studio 2008 von Thomas Müller beschreibt wie der Titel es verrät, wie einfach ein Add-In für Visual Studio erstellt werden kann. Ich kann dieses Buch nur empfehlen, besonders wenn man einen Einstieg in Thematik sucht. Das Buch enthält viele praktische Tipps.

Produktbeschreibung

Vielleicht haben Sie ja schon einmal erste Schritte in der Add-in-Programmierung für Visual Studio gewagt. Dann könnte es Ihnen genau so wie mir ergangen sein und Sie haben sich mit den folgenden Fragen und Hindernissen herumärgern müssen:

  • Sie möchten Toolfenster erstellen, die sich genau so wie die Toolfenster von Visual Studio verhalten?
  • Sie haben eigene Symbole mit transparenten Bildbereichen, aber in den Toolfenstern von Visual Studio werden diese nicht angezeigt?
  • Sie möchten auf Ereignisse in Visual Studio reagieren, wissen aber nicht, wie Sie die entsprechenden Event-Handler abonnieren können?
  • Sie haben eigene benannte Befehle erstellt, die dann aber nur einmal angezeigt werden?
  • Sie möchten neben benannten Befehlen eigene Befehlsleistensteuerelemente und Symbolleisten erstellen, finden aber nur Beispiele in Makrocode, die für Visual Studio Add-ins nicht anzuwenden sind?
  • Sie möchten auf das Code-Modell in C#-Projekten zugreifen, ohne den gesamten Text einer C#-Datei zu parsen?

Auf diese und viele weitere spannende Fragen werden Sie in diesem Buch Antworten finden. Add-in-Entwicklung für Visual Studio ist das erste deutschsprachige Buch, dass sich praxisnah mit diesem Thema unter Verwendung der Sprache C# beschäftigt.

Über den Autor

Thomas Müller lebt in Nürnberg und ist Software Engineer bei der DATEV eG. Weiterhin ist Thomas Leiter der dodned User Group Franken und Sprecher auf der BASTA und bei anderen User Groups.

Link:

Buch über Visual Studio Add-In Entwicklung

12.04.2009 02:16:00 | Lars Keller

vsadd-InDas Buch Add-In-Entwicklung für Visual Studio 2008 von Thomas Müller beschreibt wie der Titel es verrät, wie einfach ein Add-In für Visual Studio erstellt werden kann. Ich kann dieses Buch nur empfehlen, besonders wenn man einen Einstieg in Thematik sucht. Das Buch enthält viele praktische Tipps.

Produktbeschreibung

Vielleicht haben Sie ja schon einmal erste Schritte in der Add-in-Programmierung für Visual Studio gewagt. Dann könnte es Ihnen genau so wie mir ergangen sein und Sie haben sich mit den folgenden Fragen und Hindernissen herumärgern müssen:

  • Sie möchten Toolfenster erstellen, die sich genau so wie die Toolfenster von Visual Studio verhalten?
  • Sie haben eigene Symbole mit transparenten Bildbereichen, aber in den Toolfenstern von Visual Studio werden diese nicht angezeigt?
  • Sie möchten auf Ereignisse in Visual Studio reagieren, wissen aber nicht, wie Sie die entsprechenden Event-Handler abonnieren können?
  • Sie haben eigene benannte Befehle erstellt, die dann aber nur einmal angezeigt werden?
  • Sie möchten neben benannten Befehlen eigene Befehlsleistensteuerelemente und Symbolleisten erstellen, finden aber nur Beispiele in Makrocode, die für Visual Studio Add-ins nicht anzuwenden sind?
  • Sie möchten auf das Code-Modell in C#-Projekten zugreifen, ohne den gesamten Text einer C#-Datei zu parsen?

Auf diese und viele weitere spannende Fragen werden Sie in diesem Buch Antworten finden. Add-in-Entwicklung für Visual Studio ist das erste deutschsprachige Buch, dass sich praxisnah mit diesem Thema unter Verwendung der Sprache C# beschäftigt.

Über den Autor

Thomas Müller lebt in Nürnberg und ist Software Engineer bei der DATEV eG. Weiterhin ist Thomas Leiter der dodned User Group Franken und Sprecher auf der BASTA und bei anderen User Groups.

Link:

Zu Besuch bei der DNUG Dresden

10.04.2009 00:01:17 | Lars Keller

Am Mittwoch war ich mit dem Thema VSTO zu Gast bei der DNUG Dresden. Nach anfänglichen Startschwierigkeiten mit meinem Notebook (Reminder an mich, lieber in den Stand-By fahren, als einen Reboot vor einem Vortrag zu machen). Nachdem das Notebook nicht mehr bockig war, konnten wir viele verschiedene Aspekte und Fragen zur MS Office Entwicklung mit VSTO klären.

Hier meine Folien & meinen Beispielcode:

Download Code

Download Folien

Anschließend sind wir noch in einer Kneipe etwas essen gegangen und haben dabei das eine oder andere Bier bei .NET Themen konsumiert. “Schwarzer Steiger” ist echt sehr lecker!

Der Abend hat mir sehr gefallen! :)



This weblog is sponsored by netcreate OHG.

Zu Besuch bei der DNUG Dresden

09.04.2009 23:01:17 | Lars Keller

Am Mittwoch war ich mit dem Thema VSTO zu Gast bei der DNUG Dresden. Nach anfänglichen Startschwierigkeiten mit meinem Notebook (Reminder an mich, lieber in den Stand-By fahren, als einen Reboot vor einem Vortrag zu machen). Nachdem das Notebook nicht mehr bockig war, konnten wir viele verschiedene Aspekte und Fragen zur MS Office Entwicklung mit VSTO klären.

Hier meine Folien & meinen Beispielcode:

Download Code

Download Folien

Anschließend sind wir noch in einer Kneipe etwas essen gegangen und haben dabei das eine oder andere Bier bei .NET Themen konsumiert. “Schwarzer Steiger” ist echt sehr lecker!

Der Abend hat mir sehr gefallen! :)

I am Speaker @ RIAWorld bringt Entwicklerthemen auf den Internet World Kongress 2009

09.04.2009 14:57:11 | Jan Schenk

RIAWorld-Speaker

Ich habe einen Speaker-Slot auf der RIAWorld in München!
Thema: “Silverlight und WPF – Das gemischte RIA-Doppel für Internet und Desktop”

Besucht meine Session
am 23. Juni um 16:15 Uhr auf der RIAWorld!

Über die RIAWorld:

“Rich Internet Applications (RIA) stehen im Mittelpunkt der erstmals stattfindenden Web-2.0-Entwicklerkonferenz, die am 23. und 24. Juni 2009 im ICM (International Congress Center) in München Premiere feiert. Im Themenverbund mit dem Internet World Kongress und der ebenfalls neuen Mobile Vision 09 entsteht so eine der größten deutschen Fachmessen und -konferenzen für Internet-Technologien, Web–Business und Mobile Computing.

Die zweitägige Konferenz startet am 23. Juni mit zehn Impuls- und Advanced-Vorträgen, in denen es z.B. um einen Vergleich zwischen Applikationen und Anbietern wie Adobes Flash und FLEX, Microsofts Silverlight und Suns neuer JavaFX-Technologie geht. Auf der Themenliste stehen weiterhin ‚Enterprise-Lösungen mit Ajax’, ,RIA in Embedded und Mobilen Systemen’ oder ‚Workflow in RIA-Projekten’.

Ganz- und halbtägige Technologie-Workshops vertiefen am zweiten Konferenztag ausgewählte Themen. ‚Silverlight 2.0 – Essentials’ sowie ‚RIA auf Apples iPhone’ sind bereits online zu buchen, weitere Workshops werden in den nächsten Wochen dazu kommen.”

Zu Besuch bei der DNUG Dresden

09.04.2009 14:01:01 | Lars Keller

Am Mittwoch war ich mit dem Thema VSTO zu Gast bei der DNUG Dresden. Nach anfänglichen Startschwierigkeiten mit meinem Notebook (Reminder an mich, lieber in den Stand-By fahren, als einen Reboot vor einem Vortrag zu machen). Nachdem das Notebook nicht mehr bockig war, konnten wir viele verschiedene Aspekte und Fragen zur MS Office Entwicklung mit VSTO klären.

Hier meine Folien & meinen Beispielcode:

Download Code

Download Folien

Anschließend sind wir noch in einer Kneipe etwas essen gegangen und haben dabei das eine oder andere Bier bei .NET Themen konsumiert. “Schwarzer Steiger” ist echt sehr lecker!

Der Abend hat mir sehr gefallen! :)

Web 2.0 im Unternehmen – der neue Newsletter ist raus...

09.04.2009 11:24:14 | Steffen Ritter

Der neue Newsletter der XING-Gruppe Web 2.0 im Unternehmen von Oliver Berger und Michael Bielitza ist ab sofort online und jedem Web 2.0-Interessierten zu empfehlen (ebenso wie eine Mitgliedschaft in der XING-Gruppe Web 2.0 im Unternehmen -- mit derzeit über 6.000 Mitgliedern – für jeden Web- und/oder Marketingprofi obligatorisch sein sollte).

Im aktuellen Newsletter finden sich u.a. die folgenden Themen:

  • Warum verlinkt der Newsletter auf ein Blog? Warum gibt es ihn als PDF? Warum das Nur-Text-Format in XING?
  • Einladung zur Xtopia 2009 Tour durch Deutschland
  • Einladung zur exklusiven Webinar-Reihe zum Thema FLEX im Unternehmenseinsatz
  • Dein Design im Gespräch: User generated Design als Geschäftsmodell (inkl. Gewinnspiel)
  • Near- und Offshoring in den Zeiten der Wirtschaftskrise. Wie ist die Stimmung in Ihrem Unternehmen?
  • DigitalFilmCamp am 17.04. in Berlin bringt Filmemacher und Web 2.0 Spezialisten zusammen

In der XING-Gruppe Web 2.0 im Unternehmen diskutieren Webexperten, PR- und Marketingprofis und IT-Entscheider neue Wege für Marketing, PR und Unternehmenskommunikation. Corporate-Blogs, Wikis, soziale Netzwerke, soziale Software, Communities - das neue Mitmachweb ist nicht nur relevant für innovative Start-Ups, es bietet auch für traditionelle Unternehmen viele interessante Denkansätze und Chancen. Es kann für die Unternehmenskommunikation wichtige Beiträge liefern, wenn das Potenzial richtig erkannt und genutzt wird. Aus unternehmerischer Perspektive gilt es, diese Herausforderungen und Möglichkeiten zu entdecken und zu nutzen.

IIS 7 und + in URLs

08.04.2009 19:12:00 | Wolfgang Kluge

Ich hab gerade nach einem Fehler suchen müssen, der Plus-Zeichen in URLs betrifft. "Früher" (IIS 6) hat's noch so funktioniert wie es funktionieren sollte. %20 ist der Code für ein Leerzeichen, aber auch + kann für ein Leerzeichen angegeben werden (warum auch immer). Auf dem Server wird dies wieder dekodiert und entsprechend verwertet. Wollte man, dass der Server ein Plus-Zeichen, statt einem Leerzeichen übergeben bekommt, so musste man das + entsprechend mit %2B codieren.

Im IIS 7 wurde aber aus %2B kein +, sondern es kam zu einer Fehlermeldung (File not found). Auch bei %252B (%25 ist das %-Zeichen selbst) kommt es zu diesem Fehler.

In der erweiterten Fehlermeldung eines lokalen IIS 7.0 steht es dann genauer drin. Hier wurden erweiterte Sicherheitsmechanismen erdacht, die (in diesem Fall) Schutz vor dem so genannten double encodingbieten sollen. Um diesen Schutz abzuschalten und damit wieder ein + in Dateinamen angeben zu können, muss man in die entsprechende web.config folgendes eintragen.

<configuration>
    <system.webServer>
        <security>
            <requestFiltering allowDoubleEscaping="true" />
        </security>
    </system.webServer>
</configuration>

Natürlich nur, wenn's nicht anders geht und man dieses Feature dringend oder gar zwingend braucht!

Wer im Besitz des Adminstration Packs for IIS 7.0ist, findet die Einstellung unter "Request Filtering",

... "Edit Feature Settings...",

... und dort unter dem Namen "Allow double escaping".

 

 

Xtopia [kompakt] – Die Starting Points für den Web Messenger

08.04.2009 18:01:43 | Jan Schenk

Liebe Xtopia [kompakt]-Besucher, ich kann euch leider die Slides noch nicht zum Download anbieten, allerdings habe ich hier mal das ganze Deck “gescreenshotted”, wer eine Gedankenstütze braucht, um sich an manches zu erinnern, dem sei das eine Hilfe.

Die Links poste ich eben mal hier rein:

http://dev.live.com

http://dev.live.com/messenger

http://messenger.mslivelabs.com/

http://mskyiv.com/Default.aspx

Terms of use http://dev.live.com/terms

Beispiele inkl. Pulse: http://messenger.mslivelabs.com/Samples.zip

Dokumentation: http://msdn.microsoft.com/en-us/library/dd570035.aspx

http://dev.live.com

http://messenger.live.de

dev.live.com/tools

www.microsoft.com/germany/aktionen/windowslive/

windowsliveblog.spaces.live.com

Kontakt:

E-Mail: jan.schenk_AT_microsoft.com

Live: lichtsucht_AT_live.de

Blog: http://blogs.msdn.com/jansche/

Web: http://msdn-online.de

 

Viel Spass beim Vollgas geben!
jan

Xtopia [kompakt] – Tag 1 (München) ist rum

07.04.2009 21:36:45 | Jan Schenk

Wie cool war der Abend denn? Neben mir waren natürlich auch noch andere gute Sprecher da *hüstel*, ich muss an meinem Unterhaltungswert noch etwas arbeiten. Wenn ich Oliver Scheer auf der Bühne sehe, dann werde ich immer etwas neidisch auf seine Lacher aus dem Publikum. Aber das wird, ich bin mir sicher. Zurück zur Roadshow:
Sehr viele sehr gute sehr knackige Vorträge. Das gefällt. Wer die Chance hat in einer anderen Stadt die Roadshow zu besuchen, unbedingt wahrnehmen!

Ich habe an Frank Maenz Stelle über “Windows LIve Services API für Entwickler” gesprochen, Hauptaugenmerk liegt hier auf dem Live Messenger und dessen Integration in bestehende Web-Auftritte.

Das PowerPoint zu meinem Vortrag kommt auch noch online, da bin ich jetzt nur nicht mehr zu fähig =)!

Viele Grüße und viel Spass in den anderen Städten,
mich seht ihr nochmal in Köln am 11. Mai!

jan

WPF Fast Start online

07.04.2009 15:06:44 | Peter Kirchner

Was ist WPF Fast Start?

Alte und neue Technologien in eine funktionierende Lösung zusammenführen – eine immerwährende Aufgabe für Softwareentwickler. Diesen, die bisher keine Möglichkeit hatten, Windows Presentation Foundation (WPF) zu evaluieren, soll nun der Einstieg besonders leicht gemacht werden. Dazu wird Microsoft auf MyMSDN für Softwarehersteller (www.mymsdn.de/isv) eine WPF-Komponente bereitstellen, die Entwickler in maximal 15 Minuten einsetzen und testen können. Diese WPF-Komponente können Entwickler entweder in ihre vorhandenen Anwendungen integrieren oder innerhalb der Beispielanwendungen testen, die ebenfalls bereitstellt werden.

Es existieren schon sehr viele Stand-Alone-Beispiele zu WPF; bei WPF Fast Start steht allerdings die Integration in bestehende Anwendungen im Vordergrund.

clip_image001

Ich freue mich auf Feedback!

Size Matters: Why Businesses Use The TIFF File Format

07.04.2009 13:46:00 | Ozgur Aytekin

TIFF images are the popular choice among many business sending documents electronically. The reason: size. TIFF image files are, on average, two to three times smaller than PDFs, which means they can be sent faster, use less bandwidth,and take up less disk space so more of them can be stored on a single server. This makes them the perfect choice for businesses needing to cost effectively catalog thousands of electronic documents.

http://blog.snowbound.com/tiff-file-forma/

Bitte weitergehen… Das RIA-Blog zieht um nach http://blogs.msdn.com/riablog

06.04.2009 11:28:57 | Steffen Ritter

Seit mittlerweile zwei Jahren schreibe ich in diesem Blog über Rich Internet Applications (RIAs), Silverlight, Expression Studio und verwandte Themen. Und das schönerweise für eine stetig wachsende Leserschaft, das Blog scheint sich demzufolge als relevanter Informationskanal etabliert zu haben. Dennoch ist es jetzt an der Zeit für einen Bruch, bzw. einen Umzug. Denn leider habe ich bei der ursprünglichen Einrichtung des Blogs quasi meinen Namen (steffenr) als URL verwendet. Allerdings möchte ich für die Zukunft das Blog stärker von meiner Person trennen und mehr zum offiziellen deutschen Expression/Silverlight/RIA-Blog machen.

Daher habe ich unter http://blogs.msdn.com/riablog das offizielle Blog zu den Themen Rich Internet Applications, Expression Studio und natürlich Silverlight eingerichtet. Ab sofort werden dort verschiedene Kollegen und ich zu diesen Themen schreiben; für Sie als Besucher ändert sich damit außer der URL kaum etwas, nur dass Sie nun noch mehr und noch aktuellere Informationen erhalten, da das neue Blog von mehreren Personen gefüttert wird und nicht mehr ausschließlich von mir.

Also da, es war schön und hat viel Spaß gemacht, aber jetzt ist es Zeit weiter zu ziehen. Besuchen Sie das neue Blog und abonnieren Sie gleich den RSS-Feed! Jetzt :)

SHAREPOINT DESIGNER 2007 IS NOW FREE!

06.04.2009 10:22:00 | Ozgur Aytekin

SHAREPOINT DESIGNER 2007 IS NOW FREE! Be sure to watch the video in the "Related Resources" below to learn more about details and future direction. Office SharePoint Designer 2007 provides the powerful tools you need to deliver compelling and attractive SharePoint sites and quickly build workflow-enabled applications and reporting tools on the SharePoint platform, all in an IT-managed environment.

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42

Silverlight 3-Tip 1: Out of Browser-Anwendungen

06.04.2009 09:00:00 | Oliver Scheer

In Silverlight 3 ist es nun möglich Browser-Anwendungen auch außerhalb des Browsers zu starten. Dazu sind nur ganz wenige Schritte notwendig.

Schritt 1: Aktivieren der Out-of-Browser-Funktionalität im Manifest (AppManifest.xml)

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Deployment.Parts>
    </Deployment.Parts>
 
    <Deployment.ApplicationIdentity>
        <ApplicationIdentity 
            ShortName="Olivers Silverlight 3 Demos" 
            Title="Olivers Silverlight 3 Demos">
            <ApplicationIdentity.Blurb>Silverlight 3 Demos</ApplicationIdentity.Blurb>
        </ApplicationIdentity>
    </Deployment.ApplicationIdentity>
    
</Deployment>

Schritt 2 a: Installieren via Code

void _demo1Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
    Application.Current.Detach();
}

Wichtige Vorbedingung: Es ist nicht möglich die Anwendung automatisch zu installieren Es ist nur möglich in einem Event, das von einem Benutzer ausgeführt wurde diesen Code einzufügen.

Schritt 2 b: Installieren via Kontext-Menü

image

Deinstallieren via Kontext-Menü …

image

Überprüfen ob man sich derzeit im Out-Of-Browser-Modus befindet geht ebenfalls sehr einfach.

Application.Current.ExecutionState

Gibt diese Methode den Wert True zurück, so bedeutet dies das die Anwendung nicht im Browser gestartet wurde, sondern vom sogenannten “Detach Mode”.

Application.Current.RunningOffline

Gibt dieser Wert "True” zurück, dann existiert derzeit keine Internetverbindung.

Reading an Excel spreadsheet using ADO.NET

05.04.2009 07:56:00 | Ozgur Aytekin

Sample code illustrating how to connect to an Excel spreadsheet data source using ADO.NET.

The binary can be used to test connecting to spreadsheets; it supports sheets, sheets with ranges, and named ranges. Arbitrary select statements may be executed; the results are displayed along with the connection string used.

Supports Excel 5.0, 95, 97, 2000, 2003, and 2007 (all three variants). Comments in the code point to additional resources.

http://code.msdn.microsoft.com/NitoExcel

EDMGen2 – Now with Reverse Engineering options

05.04.2009 07:51:00 | Ozgur Aytekin

Visual Studio 2008 and .Net 3.5 SP1 come with two tools that are capable of supporting a database-first application design scenario: the EdmGen command-line tool and the New ADO.Net Entity Model item template. These two tools produce Entity Framework metadata artifacts from a database instance, but the generated model and mapping have a one-to-one correspondence with the database. Any inheritance or partitioning relationships that may be naturally present in the schema or data of that instance are not represented in the generated model.

The new version of EdmGen2, recently released on Code Gallery, includes an option “RetrofitModel”. This extension is the result of collaboration with the database team at Microsoft Research, notably summer intern Ankit Malpani. When using this option, EdmGen2 uses data mining techniques to determine if there are TPH, TPT, or vertical partitioning relationships that are inherent in the instance. It then generates a suitable model and mapping in the form of csdl, msl, ssdl, and edmx files. The following figure illustrates one of the patterns that EdmGen2 looks for in an instance, and the resulting model:

...

http://blogs.msdn.com/adonet/archive/2009/04/04/edmgen2-now-with-reverse-engineering-options.aspx

„Ich suche…“ - „Ja, haben wir!“ – Der allesfindende MSDN Finder ist da!

03.04.2009 18:32:48 | Steffen Ritter

Mit dem neuen MSDN Finder ist für Softwareentwickler jetzt Schluss mit Suchen. Damit durchstöbern und erkunden sie jetzt die derzeit nahezu 3.500 Inhalte der MSDN Webcast-, MSDN Solve- und MSDN Mediathek-Rubriken von einem einzigen Ort --  umfangreichen Sortier- und Filtermöglichkeiten helfen dabei, genau die Ergebnisse zu erhalten, die relevant sind.

Mit zusätzlichen Funktionalitäten ausgestattet ist der MSDN Finder eine konsequente Weiterentwicklung aus dem vielen Softwareentwicklern bereits altbekannten MSDN Webcastfinder, dem MSDN Solve Finder und der MSDN Mediathek und wartet darauf das Arbeiten mit Multimediainhalten und technischen Ressourcen auf MSDN Online noch effizienter zu gestalten. Über Feedback und Fragen zum neuen Finder freuen sich meine Kollegen sehr (ernsthaft!). Nix wie hin und Wissen aufsaugen, schließlich steht das Wochenende vor der Türe und  da ist dann genug Zeit auch alles umzusetzen: MSDN Finder

NEU auf MSDN: Der allesfindende MSDN Finder ist da!

03.04.2009 17:39:40 | Kay Giza

Ich suche…“ - „Ja, haben wir! - Mit dem neuen MSDN Finder ist jetzt Schluss mit Suchen.
Durchstöbern und erkunden Sie jetzt die derzeit nahezu 3.500 Inhalte der MSDN Webcast-, MSDN Solve- und MSDN Mediathek-Rubriken von einem einzigen Ort aus und benutzen Sie die umfangreichen Sortier- und Filtermöglichkeiten um genau die Ergebnisse zu erhalten, die für Sie relevant sind. Mit zusätzlichen Funktionalitäten ausgestattet ist der
MSDN Finder eine konsequente Weiterentwicklung aus dem Ihnen altbekannten MSDN Webcast-Finder, dem MSDN Solve-Finder und der MSDN Mediathek und wartet darauf Ihr Arbeiten mit Multimediainhalten und technischen Ressourcen auf MSDN Online noch effizienter zu gestalten.


Über Feedback und Fragen zum neuen Finder freuen wir uns sehr.
Danke an alle MSDN Online-Besucher die uns in den letzten Monaten dazu Feedback gesendet haben!
Danke an das MSDN Online-Team für die Realisierung.

Mehr Informationen: MSDN Finder

Da von Zeit zu Zeit fragen dazu kommen, habe ich schnell mal folgende Übersicht erstellt, die das "Big Picture" mal aufzeigen soll:
MSDN Deutschland - Multimedia in a Nutshell:

[Bitte klicken Sie auf das Bild für eine vergrößerte Ansicht]



This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

„Ich suche…“ - „Ja, haben wir!“ – Der allesfindende MSDN Finder ist da!

03.04.2009 16:27:21 | Oliver Scheer

Mit dem neuen MSDN Finder ist jetzt Schluss mit Suchen. Durchstöbern und erkunden Sie jetzt die derzeit nahezu 3.500 Inhalte der MSDN Webcast-, MSDN Solve- und MSDN Mediathek-Rubriken von einem einzigen Ort aus und benutzen Sie die umfangreichen Sortier- und Filtermöglichkeiten um genau die Ergebnisse zu erhalten, die für Sie relevant sind. Mit zusätzlichen Funktionalitäten ausgestattet ist der MSDN Finder eine konsequente Weiterentwicklung aus dem Ihnen altbekannten MSDN Webcastfinder, dem MSDN Solve Finder und der MSDN Mediathek und wartet darauf Ihr Arbeiten mit Multimediainhalten und technischen Ressourcen auf MSDN Online noch effizienter zu gestalten. Über Feedback und Fragen zum neuen Finder freuen wir uns sehr!
Mehr Informationen: MSDN Finder

Congratulations, You have received the Infragistics MVP Award

03.04.2009 15:03:34 | Andre Kraemer

Dienstag Abend fand ich folgende E-Mail in meinem Postfach:

Dear Andre,
Congratulations! We are pleased to present you with the 2008 Infragistics MVP Award! Your actions in the community have not only promoted the spirit of community but have also helped other professionals in the industry to be more successful each and every day. This award is our way of thanking you for your contributions.

[...]

Thank you again,
Tony Lombardo
Anthony Lombardo
Lead Technical Evangelist
Infragistics, Inc.
Worldwide Evangelism Group

Bis zu diesem Augenblick wusste ich noch nicht einmal, dass Infragistics MVPs auszeichnet. Des Rätsels Lösung: Die Auszeichnung gibt es - laut Tonys Blog - erst seit letztem Dienstag. Demnach bin ich einer der ersten Infragistics MVPs.

Die Auszeichnung kam sehr überraschen für mich und selbstverständlich habe ich mich sehr gefreut und bin extrem stolz. Sie ist in meinen Augen ein toller Weg, um Community Engagement zu wertschätzen.

Mein Dank gilt neben dem Infragistics Team vor allem Nic Goetz!

IgMvpLogoRotatedReflected_43836EBF



blog.codemurai.de © André Krämer |Impressum | Abonieren

TDD QuickStart by Thomas Schissler

03.04.2009 11:45:54 | Christian Binder

Thomas hat auf seinem Blog eine QuickStart Demo zum Thema TDD, er nutzt hierbei Contract First Design und implementiert dann via TDD.
Also Contract definieren(Interface) > Test implementieren > Rot > Funktion implementieren > Grün > Refactor
Dabei nutzt Thomas die Möglichkeit in VS2008 von einem Interface aus einen Unit Test zu erstellen.
 
Los geht’s hier inkl. Demo Solution.

Viel Spass

Chris

HowTo: Daten vom View zum Controller übermitteln / Modelbinders in ASP.NET MVC

02.04.2009 23:15:36 | Robert Mühsig

imageMit ASP.NET MVC ist der Entwickler völlig in Kontrolle über das HTML Markup und wohin die Daten gesendet werden. Die Daten werden über eine HTML Form an den Server gesendet - aber wie kann der Controller Daten entgegen nehmen? Das Framework bringt einige Möglichkeiten mit, um nicht immer über Request.Forms[…] an seine Daten ranzukommen.

(more…)

ShareThis

ATE – Ask The Expert für ASP.NET, TechDays 09

02.04.2009 21:24:00 | Peter Bucher

Auch dieses Jahr finden wieder die TechDays in der Schweiz statt.
An dieser Veranstaltung kann sicherlich vieles über ASP.NET 4.0 / .NET Framework 4.0 und alle neuen Technologien die noch kommen werden, in Erfahrung gebracht werden.

Ich freue mich jetzt schon darauf und hoffe auch den einen oder anderen dort zu treffen!

Mir ist es eine Ehre auch dieses Jahr wieder als ATE zur Verfügung zu stehen, sodass ihr mit mir vor Ort persönlich über alle neuen Themen diskutieren könnt.

Auf neue Bekanntschaften und gute Gespräche!

Letzter Aufruf zur XTOPIA [kompakt] (Start am Dienstag 7.4.09)

02.04.2009 13:32:48 | Steffen Ritter

Am Dienstag geht es los. XTOPIA [kompakt] startet in München! Eine kurze Erinnerung was auf der kostenlosen Roadshow geboten wird bringt dieses Video [klick, klick, klick…]. Wer es lieber ausführlich mag kann auch gleich zu den Text-Infos hüpfen:   

image

Der erste Termin ist technisch gesehen ausgebucht aber natürlich schicken wir keinen Weg solange Platz auf der Warteliste ist, schließlich ist die Zahl derer die sich zwar anmelden aber dann nicht erscheinen bei kostenlosen Veranstaltungen immer etwas größer. Also trotzdem noch schnell anmelden!  

Silverlight 2 – Deep Zooms automatisch generieren

02.04.2009 12:40:07 | Oliver Scheer

Der Deep Zoom Composer ist ein extrem cooles Werkzeug, wenn es darum geht hochauflösende und viele Bilder leicht und schnell darzustellen. Er erzeugt direkt eine fertige Silverlight-Anwendung inklusive Visual Studio Projekt.

Allerdings ist er nicht dazu geeignet Bilder automatisiert für Deep Zoom vorzubereiten. Aber selbst dafür liefert der Deep Zoom Composer die Lösung direkt mit. Und zwar befindet sich die gesamte Logik für die Deep Zoom Bilder Erstellung in der dll DeepZoomTools.dll. Diese wird mit dem Deep Zoom Composer automatisch mit ausgeliefert.

image

Bindet man diese DLL in sein Visual Studio Projekt ein, kann man die gesamte Automatisierung selber schreiben.

image

Um nun Bilder aus einem Verzeichnis inklusive Unterverzeichnisse automatisch in ein Deep Zoom Verzeichnis zu konvertieren sind nur wenige Zeilen Code notwendig.

using System.Collections.Generic;
using System.IO;
using Microsoft.DeepZoomTools;
 
namespace DeepZoomLogic
{
    public class DeepZoomHelper
    {
        public DeepZoomHelper(string sourceFolder, string destinationFolder)
        {
            _sourceFolder = sourceFolder;
            _destinationFolder = destinationFolder + "\\";
        }
 
        private string _sourceFolder;
        private string _destinationFolder;
 
        public void Start()
        {
            List<string> images = GetImagesInDirectory(_sourceFolder);
            List<string> data = new List<string>();
 
            foreach (var image in images)
            {
                ImageCreator ic = new ImageCreator();
 
                ic.TileSize = 256;
                ic.TileFormat = ImageFormat.Jpg;
                ic.ImageQuality = 0.95;
                ic.TileOverlap = 0;
 
                string target = _destinationFolder + "\\output_images\\" + Path.GetFileNameWithoutExtension(image);
 
                ic.Create(image, target);
                data.Add(Path.ChangeExtension(target, ".xml"));
            }
 
            CollectionCreator cc = new CollectionCreator();
 
            cc.TileSize = 256;
            cc.TileFormat = ImageFormat.Jpg;
            cc.MaxLevel = 8;
            cc.ImageQuality = 0.95;
 
            cc.Create(data, _destinationFolder + "\\output");
        }
 
        private static List<string> GetImagesInDirectory(string path)
        {
            return GetImagesInDirectory(new DirectoryInfo(path));
        }
 
        private static List<string> GetImagesInDirectory(DirectoryInfo di)
        {
            List<string> images = new List<string>();
 
            foreach (var fi in di.GetFiles("*.jpg"))
            {
                images.Add(fi.FullName);
            }
 
            foreach (var sub in di.GetDirectories())
            {
                images.AddRange(GetImagesInDirectory(sub));
            }
 
            return images;
        }
 
    }
}
 
 

Verbindet man das ganze noch mit einer kleinen Upload-Vorrichtung, hat man sein eigenes Fotoportal schon fast fertig.

Das ganze habe ich als kleine Sample-Anwendung zum Download bereit gestellt. Link siehe unten.

Schritt 1: Bilder hochladen

image

Schritt 2: Erstellen des Deep Zooms mittels der oben genannten Klasse

Schritt 3: Tada …

image

Download des Projektes

„Empower Your Site Awards 2009“: Microsoft prämiert Add-Ons für den Internet Explorer 8

02.04.2009 09:50:04 | Oliver Scheer

Pünktlich zur Einführung des Web-Browsers „Internet Explorer 8“ hat Microsoft Deutschland unter dem Motto „Empower Your Site“ einen Wettbewerb für Webmaster und Web-Programmierer gestartet. Aufgabe dabei ist es, innovative Lösungen für die neuen Browser-Funktionen „Schnellinfo“ und „Web Slices“ zu kreieren, die im Internet Explorer 8 Premiere feiern. Microsoft macht die attraktivsten Wettbewerbsbeiträge auf seinen Websites einer breiten Öffentlichkeit zugänglich; die besten Einsendungen werden darüber hinaus mit dem „Empower Your Site Award“ (EYSA) ausgezeichnet. Zu gewinnen gibt es u.a. Notebooks, Xbox360-Konsolen inkl. Spiele und Desktop-Sets. Einsendeschluss ist der 5. Oktober 2009. Infos zur Teilnahme und Tipps für die perfekte Realisierung von Schnellinfos und Webslices für den Internet Explorer 8 liefert die Website www.eysa.de.

IE8 fuer Entwickler – powered by MSDN Online Deutschland – V1

02.04.2009 08:19:47 | Kay Giza

Die Freude im Internet Explorer Developer Center auf MSDN war groß: Internet Explorer 8 ist fertig und steht seit einigen Tagen in der finalen Version zum Download bereit. Der neue Browser ist nicht nur schneller, sondern bietet vor allem verbesserte Sicherheit, einfachere und übersichtlichere Navigation und diverse nützliche Produktivitätshelfer sowie Suchhilfen. Die Unterstützung aktueller und zukünftiger Standards, neue Programmiertools sowie Schnellinfos und Web Slices für die eigenen Online-Dienste sind die Highlights für Entwickler. Nun – was fehlte – zurecht? Eine Version speziell für Entwickler :) Wir haben nun eine spezielle angepasste Version des Internet Explorer 8 (IE8) für Entwickler erstellt... [... mehr in diesem Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:   MSDN Aktuell
© Copyright 2006-2009 Kay Giza. All rights reserved. Legal

Flash vs. Silverlight

02.04.2009 01:48:01 | Jürgen Gutsch

(via Thomas Schissler: artiso Blog - Flash oder Silverligh – was ist besser?

Eine interessante Gegenüberstellung (die eigentlich gar keine Gegenüberstellung ist, sondern – wenn überhaupt – eher ein Vergleich) der Technologien Flash und Silverlight ist in dieser Galerie zu finden: Flash vs Silverlight Gallery. Dabei ist es wirklich erstaunlich zu sehen, wie man mit beiden Technologien zum selben Ergebnis kommen kann. Für alle Beispiele werden die Sourcen als Download zur Verfügung gestellt.

Nebenbei: für Flasher und Silverlightler ist sicher auch das zugehörige Blog interessant: http://www.shinedraw.com/

ASP.NET MVC goes Open Source

02.04.2009 01:26:04 | Jürgen Gutsch

Na, so ein Zufall aber auch ;-)

Zwei Tage nach der Ankündigung, dass das ASP.NET MVC Projekt der Website des .NET-Stammtisch Konstanz-Kreuzlingen als Open Source zur Verfügung steht, ließt man bei Scott Hanselman, dass das ASP.NET MVC selber unter der MS-PL (Microsoft Public License) als Open Source veröffentlicht wurde (Microsoft ASP.NET MVC 1.0 is now Open Source MS-PL).

Desweiteren schreiben natürlich auch Scott Guthrie (ASP.NET MVC 1.0) und Phil Haack (Open Source License For System.Web.Mvc) über diese Neuigkeit.

Glückwunsch zum Microsoft MVP 2009!

01.04.2009 22:54:33 | Lars Keller

Sehr geehrte(r) Lars Keller,
herzlichen Glückwunsch! Wir freuen uns, Ihnen den Microsoft® MVP Award 2009 verleihen zu können! Diese Auszeichnung wird an herausragende, führende Mitglieder der technischen Communities verliehen, die ihre wertvollen praktischen Erfahrungen mit anderen Menschen teilen.

Wir bei Microsoft glauben, dass technische Communities das Leben der Menschen und die Ergebnisse der Branche verbessern, da unabhängige Experten wie Sie durch die freie und objektive Weitergabe ihres Wissens anderen helfen, Produkte und Technologien besser zu nutzen. Als Microsoft MVP sind Sie nun Mitglied einer ausgewählten Gruppe der besten und kenntnisreichsten Experten der Branche, die ihren Communities tief verpflichtet sind und bereit sind, anderen zu helfen.

Tja, was soll ich sagen, ich fühle mich geehrt und freue mich sehr darüber! Mein Dank geht an alle, die mich immer wieder inspirieren und unterstützen. Besonders möchte ich mich bei meinen Kollegen/Freunden Timo Runge und Karim El Jed bedanken. 

Ach ja… Ich bin übrigens in dem Themengebiet VSTO ausgezeichnet worden! :-)

MVP VSTO

Link:



This weblog is sponsored by netcreate OHG.

Glückwunsch zum Microsoft MVP 2009!

01.04.2009 21:54:33 | Lars Keller

Sehr geehrte(r) Lars Keller,
herzlichen Glückwunsch! Wir freuen uns, Ihnen den Microsoft® MVP Award 2009 verleihen zu können! Diese Auszeichnung wird an herausragende, führende Mitglieder der technischen Communities verliehen, die ihre wertvollen praktischen Erfahrungen mit anderen Menschen teilen.

Wir bei Microsoft glauben, dass technische Communities das Leben der Menschen und die Ergebnisse der Branche verbessern, da unabhängige Experten wie Sie durch die freie und objektive Weitergabe ihres Wissens anderen helfen, Produkte und Technologien besser zu nutzen. Als Microsoft MVP sind Sie nun Mitglied einer ausgewählten Gruppe der besten und kenntnisreichsten Experten der Branche, die ihren Communities tief verpflichtet sind und bereit sind, anderen zu helfen.

Tja, was soll ich sagen, ich fühle mich geehrt und freue mich sehr darüber! Mein Dank geht an alle, die mich immer wieder inspirieren und unterstützen. Besonders möchte ich mich bei meinen Kollegen/Freunden Timo Runge und Karim El Jed bedanken. 

Ach ja… Ich bin übrigens in dem Themengebiet VSTO ausgezeichnet worden! :-)

MVP VSTO

Link:

“Die Wolken der Neuzeit” und andere Themen bei “Technologie im Gruppengespräch”

01.04.2009 16:53:47 | Steffen Ritter

Ob die Kollegen einfach nur zu viel freie Zeit haben oder ob Evangelisten vielleicht doch die besseren Marketingprofis sind möchte ich nicht anhand dieses Webcasts entscheiden müssen, aber lehrreich, informativ und unterhaltsam (…und auch ein wenig hintertückisch…) sind sie allemal.

Link zum Webcast

Der MSDN-Webcast „Technologie im Gruppengespräch“ befasst sich mit wichtigen aktuellen IT-Themen wie den Wolken der Neuzeit, brennenden Füchsen, gesunder Haut, Freizeit & Fußball, Visual Studio Team System und mehr. Schnell hin, bevor der Webcast eventuell wieder von den Downloadseiten verschwindet: http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032410282

Carousel-Control in Silverlight 2

01.04.2009 15:45:00 | Oliver Scheer

Nichts leichter als das.

image

Da ich inzwischen einige Controls erstellt habe, arbeite ich ganz gerne mit Vererbung und meine Basisklasse für das Carousel ist der BaseContainer:

   1: using System.Windows.Controls;
   2: using System.Windows;
   3:  
   4: namespace Oliver.Controls
   5: {
   6:     public partial class BaseContainer : Panel
   7:     {
   8:         #region ItemWidth
   9:  
  10:         public double ItemWidth
  11:         {
  12:             get { return (double)GetValue(ItemWidthProperty); }
  13:             set { SetValue(ItemWidthProperty, value); }
  14:         }
  15:  
  16:         public static readonly DependencyProperty ItemWidthProperty =
  17:             DependencyProperty.Register("ItemWidth", typeof(double), typeof(BaseContainer), 
  18:             new PropertyMetadata(100.0, OnItemWidthChanged));
  19:  
  20:         private static void OnItemWidthChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  21:         {
  22:             BaseContainer baseContainer = d as BaseContainer;
  23:             baseContainer.InvalidateArrange();
  24:         }
  25:  
  26:         #endregion 
  27:  
  28:         #region ItemHeight
  29:  
  30:         public double ItemHeight
  31:         {
  32:             get { return (double)GetValue(ItemHeightProperty); }
  33:             set { SetValue(ItemHeightProperty, value); }
  34:         }
  35:  
  36:         public static readonly DependencyProperty ItemHeightProperty =
  37:             DependencyProperty.Register("ItemHeight", typeof(double), typeof(BaseContainer),
  38:             new PropertyMetadata(100.0, OnItemHeightChanged));
  39:  
  40:         private static void OnItemHeightChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  41:         {
  42:             BaseContainer baseContainer = d as BaseContainer;
  43:             baseContainer.InvalidateArrange();
  44:         }
  45:  
  46:         #endregion
  47:  
  48:         
  49:     }
  50: }

Die Datei BaseContainer.cs

Sie enthält zwei Eigenschaften “ItemWidth” und “ItemHeight” die ich in allen Container-Controls immer wieder benötigte, daher kommen diese in die “Masterklasse”.

In Wirklichkeit ist dies eine WPF-Klasse die ich in meinen Silverlight-Controls ebenfalls verwende und als Referenz einbinde. Für gewisse Effekte benötige ich dann auch noch immer wieder gerne die aktuelle Framerate des Plug-Ins. Diese Funktion kann allerdings WPF nicht auf meine gewünschte Art und Weise. Deshalb erweitere ich die BaseContainer-Klasse mittels Partial Class um ein Feature:

   1: using System;
   2: using System.Windows;
   3: using System.Windows.Controls;
   4:  
   5: namespace Oliver.Controls
   6: {
   7:     public partial class BaseContainer : Panel
   8:     {
   9:         public TimeSpan FrameRate
  10:         {
  11:             get 
  12:             {
  13:                 return GetFrameRate();
  14:             }
  15:         }
  16:  
  17:         public static int FramesPerSecond
  18:         {
  19:             get { return 1000 / Application.Current.Host.Settings.MaxFrameRate; }
  20:         }
  21:  
  22:         public static TimeSpan GetFrameRate()
  23:         {
  24:             int ms = FramesPerSecond;
  25:             return TimeSpan.FromMilliseconds(ms); 
  26:         }
  27:     }
  28: }

Die Datei BaseContainer.Silverlight.cs

Das eigentliche Logik für das Carousel kommt in die Carousel.cs-Datei.

Dabei sind zwei Methoden besonders wichtig: MeasureOverride und ArrangeOverride

MeasureOverride –> Diese sagt jedem Element im Panel, das sich die “Kinder” des Elements an die neue Größe anzupassen haben …

   1: protected override Size MeasureOverride(Size availableSize)
   2: {
   3:     foreach (UIElement element in Children)
   4:     {
   5:         element.Measure(new Size(ItemWidth, ItemHeight));
   6:     }
   7:     return availableSize;
   8: }

ArrangeOverride –> Ordnet die Elemente im Panel neu an. In unserem Fall, wird der Winkel der Elemente berechnet, an dem die einzelnen Elemente stehen.

   1: protected override Size ArrangeOverride(System.Windows.Size finalSize)
   2: {
   3:     for (int i = 0; i < Children.Count; i++)
   4:     {
   5:         // Calculate and set angle of all children
   6:         double angle = i * (Math.PI * 2) / Children.Count;
   7:         Children[i].SetValue(CarouselPanel.AngleProperty, angle);
   8:     }
   9:     DoArrange();
  10:  
  11:     return base.ArrangeOverride(finalSize);
  12: }

Die Methode DoArrange() sorgt dafür das sich das ganze auch noch drehen kann.

   1: void DoArrange()
   2: {
   3:     double height = this.DesiredSize.Height;
   4:     double width = this.DesiredSize.Width;
   5:  
   6:     Point center = new Point((width - ItemWidth) / 2, (height - ItemHeight) / 2);
   7:     double radiusX = center.X;
   8:     double radiusY = center.Y; 
   9:     double scale = ScalePerspective; 
  10:  
  11:     for (int i = 0; i < Children.Count; i++)
  12:     {
  13:         UIElement item = Children[i];
  14:  
  15:         double current = (double)item.GetValue(CarouselPanel.AngleProperty);
  16:         double angle = current + (_internalSpeed * (3 / 360.0) * (2 * Math.PI));
  17:         item.SetValue(CarouselPanel.AngleProperty, angle);
  18:         double radians = angle;
  19:  
  20:         Point p = new Point(
  21:             (Math.Cos(radians) * radiusX) + center.X,
  22:             (Math.Sin(radians) * radiusY) + center.Y);
  23:     
  24:         if (item.RenderTransform == null || 
  25:             (!(item.RenderTransform is ScaleTransform)))
  26:         {
  27:             item.RenderTransform = new ScaleTransform();
  28:         }
  29:         
  30:         ScaleTransform sc = item.RenderTransform as ScaleTransform;
  31:  
  32:         double scaleMinusRounding  = p.Y / (center.Y + radiusY); 
  33:         sc.ScaleX = sc.ScaleY =  Math.Min(scaleMinusRounding + scale, 1.0) ; 
  34:  
  35:         int zIndex = (int) ((p.Y / this.Height) * 50);                   
  36:         item.SetValue(Canvas.ZIndexProperty, zIndex);
  37:  
  38:         Rect r = new Rect(p.X, p.Y, ItemWidth, ItemHeight);
  39:         item.Arrange(r);
  40:         item.InvalidateArrange();
  41:      }
  42: }

Den vollständigen Code kann man unter www.the-oliver.com herunterladen.

Das Ergebnis sieht wie folgt aus:

Get Microsoft Silverlight

Eines Programmierers Traum gefunden: Der Null Bazar in Bombay

01.04.2009 14:52:59 | Jan Schenk

Kartenbild

 

Da soll nochmal einer sagen, Programmierer wären nicht kreativ. In Bombay ging das Ganze offensichtlich so weit, dass Entwickler einen eigenen Basar für NULLs ins Leben gerufen haben. Im Herzen der Metropole gibt es einen Marktplatz für Null-Werte. War da eigentlich schon mal jemand?

Gefunden habe ich dieses Schmuckstück, weil ich gerade dabei bin, mein eigenes Plug-In zum Einsetzen einer Virtual Earth Karte in Live Writer bin. Und beim Übergeben eines Parameters an eine JavaScript-Funktion habe ich die vermeintliche Typsicherheit von JavaScript unterschätzt, und Virtual Earth tat, wie es im aufgetragen, und suchte nach dem offenbar einzigen Ort der Welt mit dem separaten Wort “Null” im Namen: Dem Null Bazar.

Leider spielt das Plug-In immer noch nicht so, wie ich es gerne hätte, daher verwende ich weiterhin das mitgelieferte Karten-Plug-In.

Sobald es etwas Neues gibt, informiere ich euch natürlich. Auch, wenn ich den Double Market, den Pi Mall oder den lim Shop finden sollte.

So long,
jan

Glückwunsch zum Microsoft MVP 2009!

01.04.2009 12:54:03 | Lars Keller

Sehr geehrte(r) Lars Keller,
herzlichen Glückwunsch! Wir freuen uns, Ihnen den Microsoft® MVP Award 2009 verleihen zu können! Diese Auszeichnung wird an herausragende, führende Mitglieder der technischen Communities verliehen, die ihre wertvollen praktischen Erfahrungen mit anderen Menschen teilen.

Wir bei Microsoft glauben, dass technische Communities das Leben der Menschen und die Ergebnisse der Branche verbessern, da unabhängige Experten wie Sie durch die freie und objektive Weitergabe ihres Wissens anderen helfen, Produkte und Technologien besser zu nutzen. Als Microsoft MVP sind Sie nun Mitglied einer ausgewählten Gruppe der besten und kenntnisreichsten Experten der Branche, die ihren Communities tief verpflichtet sind und bereit sind, anderen zu helfen.

Tja, was soll ich sagen, ich fühle mich geehrt und freue mich sehr darüber! Mein Dank geht an alle, die mich immer wieder inspirieren und unterstützen. Besonders möchte ich mich bei meinen Kollegen/Freunden Timo Runge und Karim El Jed bedanken. 

Ach ja… Ich bin übrigens in dem Themengebiet VSTO ausgezeichnet worden! :-)

MVP VSTO

Link:

MSDN Puppenkiste feiert Premiere – Neue MRD-Technologie für Webcasts

01.04.2009 10:33:38 | Jan Schenk

Seit heute ist ein Webcast auf MyMSDN verfügbar. Auf Basis der sogenannten MRD-Technologie (Multilayer-Recording and Displaying) wurde auf eindrucksvolle Art und Weise eine neue Lernmethode umgesetzt. Mehrere Retro-3D-Avatare sorgen für eine effiziente Vermittlung von Inhalten, leider sind in diesem Pre-Release noch einige Pannen enthalten, die in zukünftigen Webcasts ausgemerzt sein sollten.

Als Themen des Pre-Releases wurden Silverlight, Windows Azure und die Beta von Windows 7 gewählt. Dieses Potpourri an Themen beweist eindrucksvoll, wie effizient und unterhaltsam “Lernen vor dem Bildschirm” sein kann.

http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032410282

Viel Spass beim Ansehen,
jan

Das TFS-Experiment (1 Mission, 29 Devs, 4 Tage, 1 TFS)

01.04.2009 10:28:10 | Christian Binder

Mein Kollege Tom startet das TFS-Experiment !!!!

Setup

Einsame Ski-Hütte

- Das Team: 29 Entwickler (kein TFS Know How)

- Die Mission: Ein Online-Spiel Ant entwickeln. Auftraggeber ist AntMe Ltd.

- 4 Tage Zeit

Gestern habe ich mit Tom das Setup durchgesprochen, zum Einsatz wird mit hoher Wahrscheinlichkeit der TFS 2008 aus den VSTS Informationdays kommen.
Wenn alles läuft wie geplant, wird es richtiges Productgroup Feeling geben, last Euch überraschen.

Im Fokus steht natürlich die Frage, wie Ihr mit dem Tooling und dem Scrum Process zurechtkommt.
Eine echte Herausforderung :-)

Alle Details gibt’s hier auf Tom’s blog

Natürlich werden wir berichten wie es gelaufen ist…..

Viel Spass
Chris

VSTS 2008 Database Edition GDR Demo auf Channel9

01.04.2009 09:54:00 | Christian Binder

Frank Maar stellt in dieser Demo kompakt die VSTS 2008 Database Edition General Distribution Releases (kurz GDR) vor. Das Demo ist Teil eines Webcasts, den ich mit Frank zusammen gemacht habe, wobei im Cast noch mehr Informationen zu Features wie dem Database Schema Provider model (DSP) zu sehen sind. Wer sich die ganze Story ansehen möchte, kann sich den Webcast hier runter laden.

Get Microsoft Silverlight

 

Mehr Formate gibt's direkt bei hier 

Viel Spass
Chris

Interfaces vs abstrakte Klassen

01.04.2009 09:37:00 | Peter Bucher

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt, jeweils zum ersten eines jeden Monats einen Kommentar zu einem vorab gemeinsam gewählten Thema verfassen zu wollen. Bisher sind in dieser Reihe folgende Kommentare erschienen:

Heute, am 1. April 2009, ist es nun wieder so weit, und unser Thema für diesen Monat lautet:

Interfaces vs abstrakte Klassen

So wohl Golo wie auch ich haben uns unabhängig voneinander im Vorfeld unsere Gedanken gemacht, wie wir diesem Thema gegenüberstehen. Golos Kommentar findet sich zeitgleich in seinem Blog, folgend nun mein Kommentar zu diesem Thema:

Interface vs Schnittstelle

Wenn ich im folgenden Text von einem “Interface” spreche, spreche ich vom C# Schlüsselwort “interface”.
Mit “Schnittstelle” hingegen könnten eine Reihe von öffentlichen Methoden / Eigenschaften / Events einer API beschrieben werden,
die man benutzen kann, ohne die Implementation – also die Logik dahinter – zu kennen.

Eine normale Klasse die öffentliche Members (Mitglieder) hat, kann mit diesen also auch als Schnittstelle angesehen werden.

Beide, die Interfaces und die abstrakten Klassen können Schnittstellen abbilden, die von anderen Klassen
implementiert bzw. geerbt werden kann.

Ein paar Eigenschaften um die zwei Kontrahenten zu unterscheiden:

Interfaces

  • Alle Members müssen implementiert werden (Interface Members sind standardmässig abstract).
  • Enthalten nur öffentliche Members.
  • Eine Klasse kann mehrere Interfaces implementieren (Polymorphie über verschiedene Klassen (Hierarchien).
  • Beschreiben einen Vertrag / Abmachung.
  • Ein Interface ist nicht veränderbar, bei einer Veränderung bricht der ganze Clientcode, da dieser komplett angepasst werden müsste [Versioning Issues With Abstract Base Classes and Interfaces].
  • Beschreibt eine has-a (hat ein) Beziehung.
  • Kann nicht instanziiert werden (Nur Benutzung des Types selber).

Abstrakte Klassen

  • Kann schon Implementation enthalten.
  • Zwang zur Implementation für die erbende Klasse per abstract-Schlüsselwort möglich.
  • Optionale Implementation für die erbende Klasse per virtual-Schlüsselwort möglich.
  • Nur Einfachvererbung möglich.
  • Beschreiben einen Vertrag / Abmachung.
  • Die abstrakte Klasse ist veränderbar, jedoch nur zu einem gewissen Grad und auch umständlich [Abstract Base Classes Have Versioning Problems Too].
  • Beschreibt eine is-a (ist ein) Beziehung.
  • Kann nicht instanziiert werden (Nur Benutzung des Types selber).

Wann jetzt also was verwenden?

Stellen wir uns mal vor, dass wir ein Content Management System entwickeln, dort gibt es folgende Klassen:

Content
|-> Article
|-> BlogPost
|-> Download

Wir haben eine Basisklasse “Content”. Jetzt ist zuerst mal die Frage ob diese Klasse abstrakt sein soll, oder nicht.

Da wir die Klasse “Content” nicht direkt in unserer Logik als eine logische Einheit benutzen, also nie eine Instanz davon erzeugen möchte weil es keinen Sinn macht, sollten wir eine abstrakte Klasse verwenden.
Das heisst, in unserem öffentlichen System gibt es Artikel, Blogposts und Downloads, jedoch nirgendwo “Contents”.

Die Klasse “Content” wird dann benutzt um polymorphes Verhalten bei den Unterklassen zu benutzen.

Content
            .Publish()
|-> Article
|-> BlogPost
|-> Download

Die Basisklasse “Content” hat jetzt eine Methode / ein Verhalten “Publish”.
Wenn dieses Verhalten bei allen Unterklassen gleich aussehen sollte, kann man das Verhalten einmal in der Basisklasse definieren und wiederverwenden, das spricht für die abstrakte Klasse, da sie Implementationen enthalten kann.

Wenn die Verhalten für die Methode “Publish” in den Unterklassen verschieden sind, bzw. nicht mal alle Unterklassen dieses Verhalten haben müssen, ist ein Interface zu empfehlen.

Ganz pragmatisch…
..betrachtet sollte in den meisten Fällen einer abstrakten Klasse den Vorzug gegeben werden.
Die Entscheidungskette kann also so aussehen:

Eine Basis für ein Set von ähnlichen Klassen.
Wird die Basis auch als logische Einheit verwendet (Selber instanziiert)?

–> normale Klasse

-> Ansonsten abstrakte Klasse.

Gibt es Verhaltenszüge, die nur einzelnen Mitgliedern dieses Sets vorenthalten werden sollen, bzw. über mehrere verschiedene Sets gleich aussehen und polymorph genutzt werden soll?

-> Interface

Wieso nicht beides? => Interface _und_ eine abstrakte Klasse?

Kann Sinn machen, jedoch nicht in vielen Fällen.
Wenn beides besteht, welcher Typ soll dann überall verwendet werden?

Die abstrakte Klasse oder das Interface?

Wenn der Typ der abstrakten Klasse überall angegeben wird (Methoden erwarten bspw. diesen Typ), hat das Interface keinen Nutzen mehr.
Wird jedoch der Typ des Interfaces angegeben, was für einen Sinn macht dann die abstrakte Basisklasse?

Eine abstrakte Basisklasse macht insofern Sinn, dass sie eine mögliche Standard-Vorimplementierung enthält, die man direkt nutzen kann.
Man halt als Entwickler also die Möglichkeit entweder das Interface zu implementieren oder die schon vorhandene Implementation in der Basisklasse zu nutzen indem man davon erbt.

In beiden Fällen ist der Typ dann mit den Interface kompatibel und die Geschichte ergibt auch einen Sinn.

Links / Quellen:

Regeln | Impressum