HowTo: IIS7 als Development-Server im Visual Studio 2008 einrichten

image Die Webentwicklung ist mit Visual Studio eigentlich recht einfach – man startet ein neues Webprojekt und kann es über F5 direkt testen und seine Anwendung debuggen. Dabei nutzt VS im Standardfall den ASP.NET Development Server "Cassini". Da dieser allerdings nicht immer genau das Verhalten zeigt wie ein richtiger IIS (und auch noch dazu recht langsam ist), gibt es eine einfache Einstellung das zu ändern.

Weiterlesen »

Application Platforms – Was macht es eine gute Plattform aus? Gute und Schlechte Beispiele

In letzter Zeit gibt es immer mehr Nachrichten, dass das Web Windows (oder besser gesagt den Desktop) als "Plattform" ersetzt und bei vielen Sachen kann ich dem auch nur Zustimmen.
Mit dem iPhone und dem AppStore sowie Googles Andoid und dem Applikationsmarktplatz kommen neue Gerätschaften hinzu die auch interessante Plattformen sind. Die Liste an solchen Plattformen "auf die man was basteln kann" ist recht lang:

  • Spieleentwickung auf der Xbox 360 mit XNA
  • Facebook Applikationen
  • Google Gadgets
  • Vista Sidebar Gadets
  • Firefox Plugins
  • SharePoint Solutions (um mal eine Buisnessplattform zu nennen)
  • Betriebssystem jeglicher Art

Doch was macht eine gute Plattform aus? Was sollte man unbedingt bedenken wenn man selber etwas ähnliches plant?

Weiterlesen »

Enttäuschende erste Infos zum IE 8 Beta 1

Winfuture.de hat einen recht großen Artikel rund um den neuen IE8 bereitgestellt, der auf die Neuerungen eingeht. Winfuture ist wie gewohnt sehr Microsoft freundlich. Schauen wir mal:

Positives:

  • Sollte endlich nach Standard rendern (schauen wir mal, ob der Fehler im Detail liegt)
  • Webdesigner Werkzeuge – Veränderung der DOM & JS Debugger
  • Sicherheitszeugs – will ich eher weniger drauf eingehen

Negativ / Seltsam / Weiß ich noch nicht recht einzuordnen:

  • WebSlices” & “Activities” als Feature, dass Webseitenbetreiber einbauen können und der IE8 entsprechend anzeigt.
    • Kurze Erläuterung (soweit ichs verstanden hab) – Activities: Bietet ein Kontextmenü – wenn man einen Namen anklickt, kann der Webseitenbetreiber Services dazu bieten
    • WebSlices: Webseitenbetreiber können bestimmte Bereiche einer Webseite “zum Ausschneiden” zur Verfügung stellen, welche dann ähnlich wie die Vista Gadgets auf der Browser Oberfläche sind.

So richtig “toll” find ich die beiden letzten Sachen momentan noch nicht – wozu Kontextmenüs so kompliziert anbieten? Wenn der Webseitenbetreiber sowas bieten will, geht das auch mit Standard-HTML oder anderen Darstellungsformen.

Und die “WebSlices” sind meiner Meinung nach ein Zwitter zwischen richtigem Gadget und einem Webpart – beides Sachen die ich nicht mag, weil es von Microsoft etwas verlassene Technologien sind – insbesondere die Gadgets finde ich mehr als schwach in der Ausführung (auch wenn die Idee gut ist – zwar nicht neu, aber gut). Wozu dann noch Vista Gadgets wenn man sowas in den IE integriert?

Würde Microsoft eine gescheite Plugin Architektur implementieren in dem z.B. .NET Addins (WPF etc.) laufen würden, hätte ich gejubelt. Durch solche Plugins ist Firefox so beliebt geworden und man bräuchte solche Späße wie “Activities” & “WebSlices” nicht direkt mit in den IE integrieren, sondern als Plugin selber entwickeln – wenn man die Standardmittel nicht mag.

Alle anderen Features (”tollere” Favoritenliste etc.) sind schon lange nichts neues mehr.

Fazit: So freue ich mich eigentlich nur, dass der IE 8 hoffentlich genauso gut rendert wie der Firefox – damit ich nur noch mit dem Firefox arbeiten kann. Produkte nett miteinander verzahnen kenn ich von Microsoft eigentlich besser: Warum nicht .NET Addins/Apps für den Mediaplayer, Vista Sidebar & IE?

Hier gibts noch ein paar mehr Infos.

HowTo: Windows Presentation Foundation (Einstieg, Infos, Programme, Überblick)

Da ich mich auch langsam der WPF Programmierung zuwende, möchte ich einfach mal einen Einstiegs-HowTo schreiben. Inhalte sollen hier das grobe Konzept hinter WPF sein, was man dafür braucht, welche Programme man nimmt und was man sich mal anschauen kann.

WPF? .NET 3.0? Um was gehts?

Die Windows Presentation Foundation ist Teil des .NET 3.0 Frameworks und wurde auch unter .NET 3.5 weiterentwickelt – was konkret, schauen wir uns dann später mal an. .NET 3.0 kam ungefähr mit Vista auf und ist für XP, Windows Server 2003 und Vista entwickelt wurden.

Um es mal grob zu sagen, was man mit WPF machen kann: Endlich schicke Windows Applikationen! Windows.Forms sind leider in Bezug auf Design recht zickig – mit WPF will man endlich “sexy” Applikationen auch im Unternehmensumfeld kultivieren. Das hat Teilweise schon zu Erfolgen geführt.

Silverlight nutzt als Basis auch WPF – allerdings momentan noch sehr begrenzt, aber das Konzept bleibt gleich.

Was ist denn das Konzept?

Stellen wir uns eine perfekte Welt vor, wo der Designer mit den entsprechenden Tools arbeitet und das Ergebnis direkt an den Entwickler übergeben kann und dieser ohne große Konvertierung oder Neuimplementierung das Design mit Funktionen befüllen kann. Wie gesagt, wir gehen von einer perfekten Welt aus ;)

Genau hier setzt WPF an. WPF ist die “Oberflächensprache”, welche direkt in .NET verwendet werden kann. Von den Designtools wird normalerweise eine XAML Datei für ein Layout erstellt – das gesamte Design wird also in XML gegossen.
XAML selbst wird in eine .NET Objekt Hierarchie serialisiert – daher kann der Entwickler in seiner gewohnten Umgebung direkt drauf zugreifen.

Ein nettes Whitepaper gibts auch hier zum Runterladen.

Mhh… klingt schon mal nach einer netten Idee – was gibts denn für Tools?

Bei Tools möchte ich mal eine Trennung zwischen “ist für Designer geeignet” und “ist eher für Entwickler geeignet”. Der Unterschied liegt daran, dass die Entwickler Anwendungen meist nur die “Handeingabe” ermöglichen – das gefällt natürlich keinem Designer ;)

  • Designer:
  • Entwickler:
    • XAMLPad: Das Ursprungstool von Microsoft. Dieses ist enthalten im Windows SDK.
    • XAMLPadX V3: Eine Erweiterung welche ich auf diesem Blog gefunden habe. Es unterstützt auch Plugins. Leider ohne IntelliSense momentan.
    • Visual Studio: VS 2008 bietet große Unterstützung – für Visual Studio 2005 gibt es ein AddIn, welches allerdings auch mehr schlecht als recht ist.
    • Kaxaml 1.0: Ein Geheimtipp wie ich finde. Sehr schick umgesetzt und sogar mit IntelliSense – daher aus meiner Sicht momentan besser als XAMLPad oder XAMLPADX V3.

Scheint doch eine nette Auswahl zu sein, gibt es sonst irgendwelche Probleme mit WPF?

WPF hat einen (meiner Meinung nach) großen Nachteil gegenüber einer klassischen Windows.Forms Applikation – leider fehlen viele Controls welche man gewohnt war. Andere Kritikpunkte, welche sicherlich erst bei einem näheren Blick auffallen, sind hier gut beschrieben. Performance ist durch die Komplexität insbesondere im 3D Bereich auch nicht so ganz leicht – hier einige Informationen über die Performance von WPF.

Microsoft arbeitet daran und hat auch wie hier ein offenes Ohr für Kritik.

Was gibt es für Demoapplikationen, Referenzen und sonstige Infos?

Microsoft selbst hat einige Demoapplikationen zum Downloaden angeboten: WPF Samples
Insbesondere möchte ich dieses PDF empfehlen – hier wird die Outlook 2003 Oberfläche mit WPF nachgebaut und man sieht Schritt für Schritt wie etwas gemacht wird.

Auch seit kurzem zum Download verfügbar: Das Syndicated Client Expericences Starter Kit Beta + MSDN Reader. Hierbei handelt es sich im Allgemeinen um einen schicken RSS Feedreader mit WPF.

Microsoft bietet auch einige Hands-on Labs an, welche lesenswert sind, sowie Expression Blend Tutorials und Videos.

Wer nach Tutorials sucht, wird ebenfalls auf vielen Seiten fündig – z.B. hier.

Aus der Blogszene kommt auch einige interessante Infos, z.B. aus dem deutschen Blogumfeld von Norbert Eder:

Es gibt noch viele weitere interessante Posts (unter anderem einige bei Norbert), z.B. ein WPF ICQ Client oder Vista Glass Effekt in WPF – ansonsten auch die anderen Blogs welche in diesem Post waren.

Lohnt sich WPF?

Diese Frage kann man so sehr schlecht beantworten – in der Windows Client Entwicklung ist WPF ein sehr großer Schritt nach vorn – auch wenn es momentan noch Schönheitsfehler hat. Mit Silverlight erobert WPF auch das Web, daher kann es nie verkehrt sein, sich mit dieser Technologie auseinander zu setzen. Microsoft setzt z.B. interen WPF für die Expression Produkte ein, aber auch für die Zune Software. Auch gibt es Komponenten in Vista mit WPF – in Windows “7″ wird gemunkelt, dass wohl mehrere Applikationen (Wordpad, Paint, Calc) mit WPF “neu” gemacht werden.

Ein Blick schadet also auf die WPF Entwicklung sicherlich nicht – daher auch dieser Post der als Einstieg dienen soll.

HowTo: WPF Windows mit dem Vista Glass Effekt ausstatten

Eine optische Verbesserung (jedenfalls für mich) stellt in Vista der so genannte Glass Effekt dar. Wer nun mit WPF arbeitet, wird vielleicht denken, dass solch ein Effekt direkt mit geliefert wird (immerhin ist .NET 3.0 in Vista fest integriert) – jedoch geht dies nicht so einfach.

Im Internet bin ich auf diesen Blogpost gestoßen – da das nicht schwierig aussah und auch schick war, ich aber nach einem simplen Beispiel suchte, habe ich mir schnell selber etwas zusammengetippt.

Hier das Ergebnis mal als Screenshot:

Ein Standard WPF Window:

image

Das Aero Window:

image

Was muss man dafür machen:

Wie in dem Blogartikel oben erwähnt, legt man folgende Klasse mit dem Source Code an:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Media;
using System.Windows;
using System.Windows.Interop;

namespace WPFAero
{
    public class GlassHelper
    {
        public static bool ExtendGlassFrame(Window window, Thickness margin)
        {
            if (!DwmIsCompositionEnabled())
                return false;

            IntPtr hwnd = new WindowInteropHelper(window).Handle;
            if (hwnd == IntPtr.Zero)
                throw new InvalidOperationException("The Window must be shown before extending glass.");

            // Set the background to transparent from both the WPF and Win32 perspectives
            window.Background = Brushes.Transparent;
            HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.Transparent;

            MARGINS margins = new MARGINS(margin);
            DwmExtendFrameIntoClientArea(hwnd, ref margins);
            return true;
        }

        [DllImport("dwmapi.dll", PreserveSig = false)]
        static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins);

        [DllImport("dwmapi.dll", PreserveSig = false)]
        static extern bool DwmIsCompositionEnabled();
    }

struct MARGINS
{
  public MARGINS(Thickness t)
  {
    Left = (int)t.Left;
    Right = (int)t.Right;
    Top = (int)t.Top;
    Bottom = (int)t.Bottom;
  }
  public int Left;
  public int Right;
  public int Top;
  public int Bottom;
}

}

Aero wird über die “dwmapi.dll” gebildet – am Ende ruft man eine einzelne statische Methode auf, welche man das Window übergibt.
Auf Codeproject habe ich dann noch eine andere Erweiterung dafür gefunden: Glass Effekt als Attached Property (Adding Glass Effect to WPF using Attached Properties)

Somit wäre es möglich, einem Window im Xaml direkt den Glass Effekt zuzuweisen:

<Window x:Class="GlassEffectDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace: GlassEffectDemo"
    src:GlassEffect.IsEnabled="True"
    Title="GlassEffect demo" Height="300" Width="300">
    <Grid>
    </Grid>
</Window>  

Wichtiger Hinweis: Aero gibt es nur auf Vistabasis und auch nur bei aktivierem Aero (sollte klar sein)

Wäre interessant zu erfahren, ob es bei diesem aktivieren Aero zu irgendwelchen WPF Schwierigkeiten kommen kann – getestet habe ich es noch nicht ;)

Das Demoprojekt könnt ihr wie immer Downloaden – Visual Studio 2008 & Vista ist aber Voraussetzung.

[ Download Democode ]

Windows Vista Gadgets und einige Sicherheitsbedenken

Windows Vista Gadgets sind zwar teilweise nützlich und schön anzuschauen, trotzdem wundere ich mich, wie Microsoft mit dem Thema Sicherheit umgeht.

Die Vista Gadgets (.gadgets) sind eigentlich nur gezippte Datein:

  • HTML
  • Javascript
  • CSS

Als ich am Anfang davon hörte, war ich nicht gerade angetan, zwar konnte man auf bestimmte Systemeigenschaften zugreifen (Prozessorauslastung etc.), aber das bringt einen .NET Entwickler nicht gerade ins schwärmen und ich hab das Gadgetsthema erstmal zur Seite gelegt, bis ich irgendwann bei Coding4Fun auf den Blogpost gestoßen bin: Building a Windows Vista Email Gadget using the .NET Framework

.NET Framework und Gadgets? Wie passt das zusammen?

Die Gadgets erlauben nicht nur auf bestimmte Systemressourcen zuzugreifen, sondern es können auch ActiveX Komponenten eingebunden werden – oder halt das .NET Framework. Die Integration ist zwar mehr als Bescheiden (was mich darin bestärkt, dass die Gadgets nur ein schnelles Machwerk waren um den Trend mit abzufassen), aber es funktioniert.

Wie das obere Beispiel zeigt, kann man prima Outlook integrieren. Selbst das Microsoft Office Team baut ein Gadget um seine zuletzt angesehenen Dokumente anzeigen zu lassen.

Gadgets und die Möglichkeiten

Ich find Gadgets generell eine schöne Sache und bin eigentlich ein Fan solcher kleinen Minianwendungen, wie sie z.B. hier zum Runterladen angeboten werden, da sie wohl doch mehr Möglichkeiten bieten als mit Javascript möglich ist.
Zwar finde ich nie wirklich Platz für die Sidebar, aber das Konzept ist im Prinzip ganz gut.

Meine Sicherheitsbedenken

Doch genau diese Möglichkeiten haben mich stutzig gemacht – niemand erwartet doch von einem “Gadget” oder einer “Minianwendung”, dass sie auf alles zugreifen kann – jedenfalls war mein Verständnis bislang so, dass die Gadgets in einer Art Sandbox laufen, aber durch die Möglichkeit ActiveX anzusprechen und somit z.B. auch auf das .NET Framework zuzugreifen eröffnen sich einige gefährliche Sicherheitslöcher.

Ein kleines Szenario, welches ich mit Oli mal ausgemalt hatte:

Angenommen ein böser Hacker baut ein mehr oder weniger praktisches Gadget und schafft es, dass der Nutzer die Sicherheitswarnung (da kein Zertifiakt oder ähnliches vorhanden war) einfach ignoriert, dann hätte man prinzipell den vollen Zugriff auf das System. Jetzt könnten wir Anfangen aus Outlook alle Kontakte zu sammeln um fleissige Spam-Netze zu füttern oder wir durchsuchen die Mails (Outlook API olé ) nach “Passwort” oder “Kennwort” und schicken dies einfach an den bösen Hacker Server bzw. verschicken das Gadget weiter an alle Kontakte die wir gesammelt haben.
Das Gadget kann ja irgendeinen sinnvollen Zweck erfüllen – aber was im Hintergrund passiert weiß doch keiner direkt ;)

Wichtig: Dieses Szenario ist natürlich prinzipell bei jeder Anwendung so, aber da bei dem Wort “Gadget” oder “Minianwendung” kaum die Sicherheitsglocken läuten und die Installation per Klick geschieht ist die Hemmschwelle wesentlich niedriger!

Microsoft selbst weiß natürlich von diesen Sicherheitssachen und rät nur dazu, einige Dinge beim Entwickeln zu beachten.
Leider ist das Thema Gadgets wohl doch nicht mehr so aktuell bei Microsoft, den selbst der Blog ist seit Ende Juli verlassen.

Fazit

Gadgets sind interessant – aber gleichzeitig auch gefährlich, weil es eben nur “Gadgets” oder “Minianwendungen” sind und daher im Sicherheitsverständnis nicht auftauchen. Das Microsoft das Prinzip nicht weiter ausbaut, ist mir ein Rätsel.
Eine Hostanwendung, welche WPF & WCF Programme (generelle .NET Programme) leicht hosten kann und in einer gewissen Sandbox laufen würden wahrscheinlich mehr bringen.

HowTo: Oracle 10g und die Oracle Developer Tools unter Vista

Nach dem ich länger für die Installation der “Oracle Developer Tools for Visual Studio .NET” auf meinem Vista System brauchte als mir lieb war, habe ich ein kleines HowTo verfasst.

HowTo: Oracle 10g und die Oracle Developer Tools unter Vista

Viel Spass

HowTo: Oracle 10g und die Oracle Developer Tools unter Vista

Einleitung

Um eine Verbindung zu einer Oracle Datenbank aufzubauen gibt es viele Wege. Der wohl einfachste für .NET ist die „Oracle Developer Tools for Visual Studio .NET“ zu nutzen. Diese integrieren eine ganze Reihe an Tools und den Oracle Namespace in das Visual Studio. Nach erfolgreicher Installation gelingt das Ansprechen der Datenbank mit wenigen Zeilen Code, zusätzlich liefert Oracle viele nützliche Codebeispiele gleich mit. Die Installation dieser Tools unter Vista ist allerdings etwas umständlicher.
Anleitung
Das benötigen Sie:
1. Visual Studio 2005
2. Oracle 10g Client 10.2.0.3.0 for Vista
http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10203vista.html
Bei der Installation sollte man möglichst diese Reihenfolge beachten:
(Oracles Installationsanleitung)

Schritt 1:
Installieren Sie das Visual Studio 2005.

Schritt 2:
1. Installieren Sie den „Oracle 10g Client 10.2.0.3.0 for Vista“ und wählen Sie die Installationsart „Administrator“ aus.

Schritt 3:
Wenn Sie Office 2007 installiert haben:
1. Wechseln Sie in der Windows Komandozeile in das Verzeichnis „\OUI\Bin“
2. Führen Sie „setup.exe use_prereq_checker=false“ aus
3. Wichtig: Geben Sie als Installationsverzeichnis das Verzeichnis an, in das Sie den Oracle 10g Client in Schritt 2 installiert haben.

Wenn Sie kein Office 2007 installiert haben:
1. Wechseln Sie in der Windows Kommandozeile in das Verzeichnis „\OUI\Bin“
2. Wichtig: Geben Sie als Installationsverzeichnis das Verzeichnis an, in das Sie den Oracle 10g Client in Schritt 2 installiert haben.

Als nächstes benötigten Sie die “product.xml”, dazu müssen Sie das folgende Setups runterladen:
ODAC1020221.exe or ODTwithODAC1020221.exe
Wenn man diesen entpackt findet man die “product.xml”.

Dazu dann später noch das dazugehörige Setup starten und die Orcale Components installieren und den TNS Name soweit anpassen.

Viel Spass!

Artikel

Amazon Web Service:
HowTo: Produktsuche mit den Amazon Web Services

eBay API:
HowTo: eBay API (Grundvoraussetzungen)
HowTo: eBay API (Suchen mit eBay…)
HowTo: eBay API (Aktuelle Suchbegriffe…)

Google Maps API:
HowTo: Google Maps API (Grundvoraussetzungen)

HTML / Javascript:
HowTo: Webanwendung debuggen (Javascript & HTML debuggen mit den entsprechenden Tools)
HowTo: Mauseingaben & Javascript (Wie bastelt man ein Paint mit Javascript?)
HowTo: Xml mit Javascript Parsen (Zugriff auf Nodes & Attribute)
HowTo: Objektorientierte Programmierung / OOP in Javascript (Eine einfache Klasse erstellen)
HowTo: Javascript Event “onscroll” nutzen
HowTo: Javascript Mouse Over – Mousepositionen für Details

Microsoft ASP.NET:
HowTo: Microsoft ASP.NET AJAX (Grundlagen)
HowTo: Microsoft ASP.NET AJAX (Praktischer Anfang)
HowTo: Microsoft ASP.NET AJAX (Clientseitiger Aufruf von Webmethoden)
HowTo: Microsoft ASP.NET AJAX (PageMethods – Webmethoden aufrufen ohne ASMX Datein)
HowTo: Json-Services erstellen (…oder wie erstell ich dynamisch Javascript?…oder Web 2.0 ohne AJAX?)
HowTo: Dynamische vCards als Link zum Importieren anbieten
HowTo: Microsoft AJAX Client API nutzen

Microsoft .NET:
HowTo: Datein per FTP über mit .NET runterladen und speichern
HowTo: Interfaces/Schnittstellen verstehen – mal auf simple Art und Weise
HowTo: XML erstellen mit XmlAttributes
HowTo: PDF’s erstellen unter .NET mit NFop

Microsoft Silverlight:
HowTo: Microsoft Silverlight 1.0 (Grundlagen)
HowTo: Microsoft Silverlight 1.0 (Praktischer Anfang)
HowTo: Microsoft Silverlight 1.0 (Spiegeleffekte erzeugen)
HowTo: Microsoft Silverlight 1.0 (dynamische Spiegeleffekte)
HowTo: Microsoft Silverlight 1.0 (Bilder “kippen” samt Spiegeleffekt)
HowTo: Microsoft Silverlight 1.0 (Webanwendungen mit dynamischen SilverlightHosts verschönern)
HowTo: Erstellen eines Silverlight 1.0 Videoplayers mal auf einfache Weise
HowTo: Silverlight mit dem “object” Tag als embedded HTML anbieten

Microsoft Patterns&Practices Software Factories:
HowTo: Microsoft Patterns&Practices Software Factories verstehen
HowTo: Microsoft Patterns&Practices – Web Service Factory / Service Factory (Teil 1: Grundlagen & ASMX Variante)
HowTo: Microsoft Patterns&Practices – Web Service Factory / Service Factory (Teil 2: WCF Variante)
HowTo: Microsoft Patterns&Parctices – Web Service Factory / Service Factory (Teil 3: Praktisches “Hello World”)

Microsoft Office SharePoint 2007:
HowTo: Automatisierte Backups mit dem Microsoft Office SharePoint 2007

Microsoft Visual Studio:
HowTo: Visual Studio 2005 für .NET 3.0 (WPF, WCF, WF) rüsten

AJAX:
HowTo: AJAX
HowTo: AJAX und ASP.NET Webservices (und die Sache mit dem GET)

Windows Live ID:
HowTo: Windows Live ID Web Authenticaton (Grundlage & Installation)

Microsoft Virtual Earth:
HowTo: Microsoft Virtual Earth (Praktischer Einstieg)

XML:
Guide: XML (Einführung)
Guide: XML (Basiswissen)
Guide: XML (DocumentType Definitions DTDs)
Guide: XML (XML Schema – Teil 1)
Guide: XML (XML Schema – Teil 2)
Guide: XML (XML Schema – Teil 3)

.NET & Datenbankverbindungen:
HowTo: Datenbankverbindungen – .NET & MS SQL 2005
HowTo: Datenbankverbindungen – .NET & MySQL

Oracle:
HowTo: Oracle 10g und die Oracle Developer Tools unter Vista