Silverlight Enterprise Deployment Guidance

image

Microsoft hat ein Whitepaper/Guidance zum Enterprise Deployment von Silverlight veröffentlicht:

Silverlight Enterprise Deployment

Weitere Informationen findet ihr auf dem Blog von Tim Heuer.

Silverlight & 3D: Viewer für Photosynth und andere Spielerein

Das Photosynth Team hat einen Silverlight Viewer (der allerdings noch etwas buggy ist) veröffentlicht, in dem man fast alle Features von Photosynth nutzen kann:

image

Jeder der mit Silverlight bereits rumgespielt hat, wird festgestellt haben, dass 3D nicht direkt (wie in WPF) unterstützt wird. Unter der “About Page” findet sich auch ein netter Abschnitt, der erläutert, wie man in dem Photosynth Viewer trotzdem ein 3D Gefühl bekommt:

Geek Stuff

Silverlight 2 does not support 3D, so in order to achieve the 3D effects used in this viewer we are utilizing a technique called Affine Texture Mapping where the images are drawn from many triangles, and then we are approximating the texture mapping. If you want to see the triangles we are drawing, press the ‘t’ key and navigate around in the viewer. Hit ‘t’ again to turn off the triangles. :-)

Siehe Wiki für ein paar weitere Informationen.
Wenn man “t” drückt, sieht man auch die Dreiecke:

image

Steffen Ritter hat zudem heute über noch ein nettes 3D Rendering Beispiel in Silverlight gebloggt:

We all live in a rendered Submarine… noch ein schniekes 3-D-Beispiel in Silverlight!

image

Fazit des Posts: Silverlight kann 3D Content darstellen, allerdings noch lange nicht so einfach wie in WPF. In Silverlight 3 könnte sich das allerdings bessern.

Ein Quantum Silverlight 3

ScottGu hat ein paar Informationen über die nächste Silverlight Version preis gegeben:

  • Media Verbesserungen (H.264 Unterstützung)
  • 3D + Hardware Beschleunigung
  • Rich-Databind Controls

Insbesondere auf 3D + Hardware Beschleunigung bin ich sehr gespannt :)

PDC08: Windows 7, WPF, Silverlight, Office Online und das Live Framework

Am zweiten Tag der PDC gab es auch wieder einige tolle Sachen zu sehen. Dazu gehört ein erster Blick auf Windows 7 und was man im Zusammenhang mit WPF da alles tolles machen kann. Besonders interessant fand ich die Ribbon Controls für WPF.

Silverlight im Browser und ohne Browser

Besonders interessant war auch, dass Silverlight demnächst nicht nur im Browser sich tummeln kann, sondern auch als selbstständige Applikation. Damit rückt Silverlight näher an Adobes AIR heran. Silverlight Gadgets welche auf XP, Vista und MacOS wären damit gut möglich.

Office Online

Microsoft gesellt sich jetzt auch zu den Online Office Anbietern. Die Präsentation sah schon recht nett aus – das online Office ist eine recht schicke Silverlight Anwendung – mal sehn wann man näheres davon erfährt.

Das Live Framework

Im Zusammenhang mit Windows Azure kommt nun auch das Live Framework. Ich habe bereits vor einige Zeit über “Live Mesh” geschrieben – mit dem SDK kann man nun wohl auch selber “meshfähige” Anwendungen bauen. Das SDK wird es wohl heute Nacht zum Downloaden geben, jedenfalls für diejenigen die sich bei MS Connect angemeldet haben.
Die Dokumentation und Walkthoughs sind aber bereits zum Downloaden bereit – sehr schick :)
Insbesondere durch die “Browserlosen”-Silverlight Applikationen kann man da doch die ein oder andere Idee erstmal spinnen.

Ich hab auch schon eine kleine Idee… ich hoffe ich komm demnächst dazu :)

QuakeLight – Quake mit Silverlight? Silverlight und 3D?

Ein verrückter französischer Entwickler arbeitet gerade an einer Silverlight Variante von Quake:


QuakeLight Preview

In diesem Blogpost beschreibt er sein Vorgehen und wie er das eigentlich macht (und wie cool Silverlight eigentlich ist ;) ) – er nimmt keine bestehende 3D Engine wie Baldar etc., sondern portiert die Quake Engine direkt in C#, Silverlight.

Man kann es leider noch nicht selber anschauen, aber wenn es klappt und Performant läuft… wow :D

Diese Seite ist auch sehr interessant dazu – bei dieser Spieleschmiede arbeitet der Entwickler. Silverlight als Gaming-Plattform ahoi!

Virtual Earth + Silverlight Deepzoom

Im Blog von Chris Pendleton (Virtual Earth Tech Evangelist) bin ich auf ein paar interessante Kombinationen von Silverlight und Virtual Earth gestoßen.

Genauer gesagt, geht es um die “Deepzoom” Funktionalität, hier ein (etwas ruckliges) YouTube Video:

“DeepEarth” ist gehostet auf Codeplex und kann auch hier live angeschaut werden.
Etwas cooler gemacht ist der “Silverlight Map Viewer” von IDV Solutions (allerdings ohne Source Code).

Fazit: Ziemlich cool :)
PS: Im Blog von Chris tauchte auch die Frage auf, warum MS sowas nicht selber anbietet – einfach mal die Kommentare durchlesen.

.NET 3.5 Enhancements Training Kit

Microsoft hat ein neues Training Kit rausgebeben: Download hier

Zum Inhalt gehören:

- ASP.NET MVC
- ASP.NET Dynamic Data
- ASP.NET AJAX
- ASP.NET Silverlight Controls
- ADO.NET Data Services
- ADO.NET Entity Framework

Demos oder viele PPTs sucht man allerdings vergeblich – ein Blick lohnt sich trotzdem.

Zum MVC Part kann ich allerdings schon mal soviel sagen: Das Demoprojekt wurde nur mit der CTP1 gemacht – in aktuellen Version hat sich ein klein wenig was verändert.

Unterschiede zwischen WPF und Silverlight 2

Ich stecke nicht allzu tief in der WPF oder Silverlight 2 Entwicklung, allerdings fand ich diesen Blogpost von Rob Eisenberg sehr interessant.

Wenn man ihm glaubt, sind einige Hauptkonzepte in Silverlight 2 anders gelöst als in WPF:

- Databinding
- Styles
- Trigger
- und noch einige kleinere Sachen

Das mag auf den ersten Blick nicht so tragisch aussehen, allerdings wird man im späteren Verlauf, wenn Microsoft dies nicht ändert, bemerkbar machen – dann kann man für ein Control 2 verschiedene XAMLs machen.

Das ganze wird verglichen mit CSS für Firefox und IE – sowas wollen wir doch nicht schon wieder ;)

Auch ein interessanter Aspekt: Performance. WPF hat (selbst mit Hardwareunterstützung) in Punkto Performance zu kämpfen – Silverlight hat aber keine Hardwareunterstützung. Wenn man sich diese Seite anschaut und in dem rechten Datagrid scroll "hakt" es auch etwas.

Rob entwickelt seit 4 Jahren WPF Applikationen – also seit den ersten Tagen, ist zudem noch in Flash bewandert und beschäftigt sich seit Anfang an mit Silverlight 1.1 / 2.0. Daher denke ich, dass diese Kritikpunkte nicht unglaubwürdig sind.

Ich hoffe Microsoft wird dies noch fixen.

AIR "Apollo" vs. Flash vs. Silverlight "WPF/E" vs. WPF "Avalon" – WTF?

Heute hat Adobe sein AIR veröffentlicht. Um was geht es da eigentlich? Um es kurz auszudrücken: Flashinhalte / Applikationen können über AIR auch direkt als Desktopanwendung laufen.

Der Vorteil: Das Wissen der fleissigen Flasher und Designer kann direkt in AIR Anwendungen verwendet werden.

Der Grund für diesen Post ist der Spiegel Artikel. Hier wird auch kurz auf Silverlight eingegangen – allerdings ist meiner persönliche Meinung dabei: Silverlight mit AIR zu vergleichen, ist wie Äpfel mit Birnen.
Silverlight steht (momentan) zur direkten Konkurrenz zu Flash (also der “Browservariante” von Adobe). Etwas was (momentan) am ehsten mit AIR konkurrieren kann, gibt es (auf der Windows Plattform jedenfalls) bereits länger: Die Windows Presentation Foundation.
Nur halt um einiges mächtiger, schöner und mit einer ordentlichen Programmiersprache ( ;) ) als der Flashkram.

Wie bereits angedeutet, hat WPF natürlich den Haken, dass es nur auf Windows läuft. AIR momentan aber auch “nur” auf Windows und Mac.

Wenn man etwas drüber nachgrübelt, kommt man zu den Gedanken, dass Silverlight-Anwendungen (wenn Cross Plattform gewünscht ist) ohne Browser auskommen können oder das .NET Framework auf die anderen Plattformen portiert wird.

Nebenbei gibt es natürlich noch Java für Cross Plattform – jedenfalls wird die Zukunft wird interessant. Auch wenn ich hoffe, dass der Bastelkram aus dem Web (HTML, CSS, Flash) nun nicht unbedingt den Desktop erobert ;)

VSone – Tag 1 – WPF, Sync Framwork, LINQ to SQL, ASP.NET, Parallel Extensions

Der erste Tag der VSone ist vorbei und ich werde einfach mal ein kurzes Review geben. Vom organisatorischen her, ist es bis jetzt sehr gut verlaufen. Im großen IMAX zu sitzen, kostenlos Popcorn zu bekommen und dabei auf der großen Leinwand eine WPF Entwicklung zu sehen, ist schon sehr cool – auch wenn das für Normalsterbliche sicherlich ein seltsamer Anblick ist ;)

Die Verpflegung ist spitze (und kostenlos) und die Leute sind allesamt recht nett, auch wenn ich teilweise den Altersdurchschnitt etwas senke (wobei Andere ihn wiederrum steigern).

Die Sprecher sind allesamt sehr nett und kann man auch mal leicht etwas über sein Kummer und Leid erzählen.

Nun kurz zu den Themen, die ich heute besucht hatte – es gab pro Track noch mehrere andere Vorträge parallel – interessierte sollten die Blogs von den Sprechern im Auge behalten:

Erstes Vortrag: XAML, WPF & Expression Blend

Ein sehr praktischer Vortrag von Markus Egger – wie frischt man eine einfache “UI” mit WPF auf. Ausführlich wurde dort Expression Blend vorgestellt, was ich zwar schon kannte, allerdings waren mir einige Funktionen noch nicht bekannt. Wie schnell man aus einer langweiligen UI eine schicke Anwendung bastelt (natürlich nur mit dem “Glass Effekt”, hat mich doch etwas angespornt, dort mehr Zeit zu investieren.
Eine andere Sache, die mir dabei ins Auge fiel: In Expression Blend gibt es eine coole “Commandsuche”, man konnte die Menüs ähnlich wie in Vista einfach so durchsuchen und es wurde jeweils das richtige angezeigt – bin mal gespannt, wann das in Office zu finden ist.

Nächster Vortrag: WPF Datenbindung

Ebenfalls sehr praxisbezogen – was versteht man unter Datenbindung, was kann diese und wie sieht das aus. Was spielen “Dependancy Properties” und was sind die “INotification…” Schnittstellen (z.B. INotifyPropertyChanged) – dies waren unter anderem Hauptthemen. Vorgetragen war dies von Christian Nagel. Zusammen mit dem ersten Vortrag, in dem es mehr um das Design ging, hat dieser Vortrag mich besonders als Entwickler begeistert – und wird sicherlich mal den ein oder anderen Blogpost Wert sein.

Nächster Vortrag: Microsoft Sync Framework

Das Microsoft Sync Framework ist noch nicht allzu alt, jedoch bereits in VS 2008 zu finden. In dem Vortrag von Alexander Duggleby ging es nur um dieses Thema. Mich persönlich hat dieses Thema doch recht interessiert und war auch gut vorgetragen. An praktischen Anwendungsfällen fehlt es mir momentan noch, vor allem da mir es noch nicht 100% klar war, wie man die einzelnen Provider (es gibt von MS einige wenige vorgefertige Provider, z.B. einen Fileprovider, um Files zu synchronisieren) einsetzt – aber man stelle sich folgendes vor: Ich lege Bilder in meinen “Eigene Bilder” Ordner und es wird auf mein Flickr, MySpace etc. Profil geladen – und wenn ich mich auf einen anderen Rechner einlogge, kann dies ebenfalls wieder syncronisiert werden. Theoretisch sollte dies gehen. Das wäre mal ein nettes Projekt ;)

Nächster Vortrag: Parallele Programmierung

Zum Anfang war ich hier recht skeptisch, weil viel Zeit mit “nicht .NET Themen” verging – jedoch ergab es hinterher ein sehr rundes Bild, vorgetragen von Bernd Marquardt. Es standen 3 Hauptthemen an – “OpenMP“, was für C++ oder Fortran gedacht ist, “SIMD“, welches ein anderes Modell fährt als “OpenMP” und “LINQ Parallel“, was direkt für C#/.NET momentan als CTP verfügbar ist.

Grundgedanke von “OpenMP”: Leicht mehrere Prozessoren nutzen. Bei einer Schleife von “0-999″ macht Prozessor 1 “0-499″ und Prozessor 2 “500-999″. Dies wurde recht anschaulich demonstriert und vor allen ist der gebrauch recht einfach.
Als zweites kam “SIMD”, was mehr auf die Hardware geht und Prozessoreigenschaften nutzt. Es werden Daten in einem Array in einem Schritt bearbeitet – anstatt einzeln. Das ist zwar auch schick, weil Threads nicht eingesetzt werden, ist aber noch mehr an die Prozessoren gebunden (und der Aufruf ist hässlich)  das geht beides nur in C++ (oder OpenMP in managed C++).
“Parallel LINQ” geht einen ähnlichen Weg wie “OpenMP”, allerdings zum Teil mit einem eigenen Syntax. Primär werden hier anonyme Methoden genutzt und wer Lamda Expressions verstanden hat, der kann hier einiges an Performance rausholen. Allerdings momentan alles alpha, aber das ist sicherlich in nächster Zeit ein sehr wichtiges Thema.

Nächster Vortrag: Was kommt nach ASP.NET?

Ein sehr humorvoller Vortrag von Hannes Preishuber. Auch wenn er versprochen hat, dass man nichts davon mitnimmt, hab ich doch die ein oder andere Sache aufgeschnappt. Mir waren die ASP.NET Futures, Silverlight, ASP.NET 3.5 Extensions usw. zwar schon ein begriff, allerdings hatte ich nie das Media Control ausprobiert oder Dynamic Data Pages ausprobiert (was sehr cool ist) und auch LINQ to SQL nutzt.

Letzter Vortrag für heute: LINQ to SQL

Christoph Wille stellt LINQ to SQL vor. Zwar hatte ich selber damit schon rumgespielt, allerdings war es interessant zu wissen, wo bestimmte Sachen “schwierig” umzusetzen sind oder schlicht und einfach langsam. Als generellen Tipp habe ich mitgenommen, den SQL Server Profiler laufen zu lassen, damit man sieht, was LINQ eigentlich am SQL Server veranstaltet. Den Blog von Scott Guthrie und Mike Toulty sollte man zudem ebenfalls besuchen. Morgen (oder heute wenn sie diesen Post lesen werden), wird das ADO.NET Entity Framework vorgestellt – und die Unterschiede zu LINQ to SQL ebenfalls dargestellt.
Einige Stichpunkte noch kurz am Rande erwähnt: Die Integration von Stored Procedures (gibt auf dem Blog von Scott und Mike noch wesentlich mehr Informationen), “CompiledQuerys” für performance Gewinn, das nachträgliche Laden von Kindelementen und die damit verbundenen Probleme (DataLoad Options erlaubt nur die nächste Ebene – man kann wohl keine 2 Ebenen übergehen – wenn man danach sucht, findet man was ich meine ;) ).

Zwischenfazit

Sehr schicke Veranstaltung.Ich werde in den nächsten Tagen/Wochen die Themen zum großen Teil aufgreifen.

Den Tag zwei werde ich sicherlich auch noch niederschreiben :)

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.

Meine .NET / Coding Top Blogs 2007

Da 2007 demnächst zuende geht, möchte ich einfach mal meine Blog-Favoriten für 2007 näher erwähnen.

Die Top-Quelle für Microsofts Technologien rund um den IIS, das .NET Framework, Silverlight, ASP.NET und co. ist eindeutig der Blog von Scott Guthrie.
Scott Guthrie ist seines Zeichens General Manager in der Microsoft Developer Devision und schreibt in seinem Blog regelmäßig über die Neuerungen im und um das .NET Framework.

Der zweite Blog den ich uneingeschränkt empfehlen kann, ist der Blog von Scott Hanselman. Scott ist relativ neu im ASP.NET Team und kümmert sich momentan wohl intensivst um das ASP.NET MVC Modell. Besonders interessant finde ich diesen Blog, weil er kein “Microsoft-Marketing” Blog ist, sondern er selber auch über den Tellerrand blickt. Das ASP.NET MVC Modell beispielsweise ist angelehnt an Ruby on Rails – einige MS Entwickler sind auch Fans von Ruby.Jedenfalls ist dies ein sehr aktueller und regelmäßig gepflegter Blog.

Als dritten Blog möchte ich einen eher “plattformneutralen” Blog erwähnen: Coding Horror ist der Blog von Jeff Atwood und er schreibt dort über allerlei Probleme oder Gedanken die in der Software-Branche vorhanden sind. Manchmal ist es mehr technisch, manchmal mehr allgemein gehalten, allerdings ist es ein sehr interessanter Blog auch für nicht .Nettis.

Als einen der wenigen deutschen Blogs, die ich in meinem Feedreader hab, möchte ich den Blog von Kay Giza noch erwähnen. Der Blog ist eher weniger technisch und auch etwas “marketing”-stärker ausgerichtet als die anderen 3 Blogs. Allerdings informiert er in regelmäßigen Abständen was in der Microsoft Community so passiert.

Diese 4 Blogs sind mir besonders positiv aufgefallen, da sie regelmäßig und mit sehr interessanten Posts auf sich aufmerksam machten – ich habe noch ca. 60 andere Blogs in meinem Feedreader, ein paar interessante werde ich am Ende noch erwähnen.

Um einen groben Überblick zu bekommen, was in der .NET Community los ist, empfehle ich DotNetKicks.com. Dort werden Blogposts nach dem Digg Prinzip verlinkt, sodass man die interessantesten (englischsprachigen) Blogposts nicht verpasst.

Für die deutsche .NET Entwicklerszene empfehle ich DotNetGerman Bloggers auf dotnetgerman.com. Jeder .NET Entwickler oder Interessierte Blogger kann dort seinen Blog registrieren. Momentan sind ca. 65 Blogs (darunter auch der Code-Inside Blog) dort als RSS Feed verfügbar – diesen einen RSS Feed im Feedreader und man hat auch interessante deutsche .NET Blogs im Auge und man ist ideal für das Jahr 2008 gerüstet :)

 Hier nochmal eine winzige Auswahl an weiteren interessanten .NET Blogs:

  • Rob Conerys Blog - vor kurzem von Microsoft ins ASP.NET Team geholt und arbeitet momentan am ASP.NET MVC Modell. Er hat das SubSonic Projekt begonnen (ein Open Source .NET O/R Mapper) und beschäftigt sich z.B. auch mit Silverlight oder Ruby
  • Brad Abrams Blog - Ebenfalls ein Microsofti und er arbeitet am .NET Framework und im Silverlight Team mit.
  • “Project Astoria Team Blog” – Kein Blog von einer einzelnen Person, sondern der Team Blog von der Projektgruppe rund um die ADO.NET Data Services, welche mit bei den ASP.NET 3.5 Extensions dabei sind. Dies ist einer der vielen “Teamblogs” die Microsoft veröffentlicht hat.
  • Phil Haack Blog – Phil Haack ist ebenfalls Microsofti und arbeitet mit im ASP.NET Team und beschäftigt sich zurzeit mit ASP.NET MVC und schreibt auch sonst, was so entwicklungstechnisch bei Microsoft passiert.

Es gibt noch viele weitere interessante Blogs, eine Auswahl an Blogs die ich auch lese, findet ihr wenn ihr bis nach ganz unten scrollt (es ist nur immer eine Auswahl von 15 Blogs dort zu finden, insgesamt hab ich ca. 50 Blogs in der Blogroll).

Wenn jemand dies von Microsoft liesst, möchte ich mich für das Informationsmanagement von Microsoft bedanken – die Microsoft Blogwelt finde ich wirklich sehr interessant und selbst neuste Entwicklungen wie Surface haben ihren eigenen Blog in dem die Entwickler sich zu Wort melden. Bitte behaltet dieses Blogverhalten bei und baut dies stärker aus (auch die deutschen MSler) ;)   

Microsoft Press verschenkt LINQ, ASP.NET AJAX und Silverlight 1.0 e-Books

Zur Weihnachtszeit gibts was sehr interessantes von Microsoft Press: 3 EBooks gratis (Voraussetzung ist nur eine Windows Live ID)

Downloaden könnt ihr das ganze auf der Microsoft Learning Website (dort ist ein Link “Download Free e-book offer…” – da drauf klicken und Windows Live ID und noch wenige andere Angaben machen) – Topaktuelle Bücher kostenlos ist doch immer schön.

Gefunden habe ich dies auf einem Schweizer MSDN Blog.

In dem Zusammenhang möchte ich nochmal die laufende Aktion von Entwickler-Press erwähnen – bis zum 24. ist es zwar nicht mehr lang, aber ein paar Bücher kann man sich noch runterladen.

HowTo: Silverlight mit dem "object" Tag als embedded HTML anbieten

Erstmal eine Warnung zum Anfang: Ich bin mir nicht sicher, ob diese Variante welche ich gleich vorstelle überhaupt von Microsoft so vorgesehen war und ob dies in der Praxis so umsetzbar ist – in meinem Test ging es mehr oder weniger gut – im IE7 (mit Einschränkungen) und FF2.

Folgende Situation: YouTube und co. welche auf Flash setzen haben meistens am Ende des Videos noch eine Option, dass Flash-Filmchen als embedded HTML in seinen eigenen Blog etc. einzubauen. Das ist natürlich eine feine Sache, da somit eine leichte Verbreitung möglich ist.

Bei Silverlight sieht die Sache etwas anders aus – eine Embedded-Option, welches direkt das Silverlight mit “object” anbietet, gibt es erstmal nicht und im Silverlight Forum findet man auch nur spärliche Informationen darüber, dass es eigentlich nicht so geht.

Als Alternative gibt es noch die Möglichkeit das über ein IFrame einzubinden – zwar nicht so ideal, aber es geht noch. Leider verbieten einige Plattformen (MySpace und co.) den Einsatz von IFrames.

Grund für die Problematik:

Silverlight agiert zusammen mit Javascript – egal ob in 1.0 oder 1.1/2.0 – die Hostseite muss erstmal das Silverlight Plugin erstellen. Am schönsten wäre es daher, wenn man Silverlight Sachen direkt über den “object” Tag wie bei Flash einfügen könnte – das ist schicker und auch XHTML Valide :)

Die Lösung:

Wir binden einfach unsere komplette Silverlight Applikation (z.B. den Videoplayer) als Object ein:

<object data="http://silverlight.net/fox/" type="text/html" id="SilverlightControl" height="200px" width="250px">
    </object>

Über data verweisen wir auf unsere komplette Applikation und geben als type “text/html” an, somit haben wir quasi die IFrame Funktionalität mit einem object.


Ergebnis im Firefox:

image

Ergebnis im IE 7:

Im IE7 ist das so allerdings nicht ganz so möglich. Durch die Sicherheitseinstellung holt sich der IE nicht die Daten von unserer Quelle.

Um zu sehen das es trotzdem geht, muss die Seite in den “Vertrauenswürdigen Seiten” aufgenommen werden und dort die Sicherheitseinstellung auf “Sehr niedrig” gesetzt werden.

Das ist hat aber nichts mit Silverlight zu tun, sondern ist ein generelles “Sicherheitsproblem” im IE7 – ich denke aber, dass es bestimmt dafür eine Lösung gibt – wer kennt eine?

Unter anderem Browsern hab ich es noch nicht direkt ausprobieren können, Opera zeigt mir aber den “Bitte Silverlight installieren” Button an – also scheint es zu funktionieren.

Fazit:

Wenn man nun noch den IE so überlisten könnte, dass er über das Object Tag die Seite lädt ohne in den Sicherheitseinstellungen was zu verändern, braucht man keine hässliche IFrame Lösung mehr und es ist ähnlich wie bei Flash.

[ Demopage + Source Code ]

HowTo: Erstellen eines Silverlight 1.0 Videoplayers mal auf einfache Weise

Silverlight ist Microsofts Antwort auf Flash und wurde direkt für den Einsatz als Videoplayer entwickelt, doch wie genau funktioniert das? Wie bindet man ein Video ein und ist das kompliziert?

Die Antwort: Nein, es ist sehr leicht einen simplen Videoplayer zu erstellen – genau das will ich heute zeigen.

Alternativen zu meiner Lösung:

Mein Beispiel soll nur die Grundlagen zeigen und auf simple Art und Weise das zeigen, was z.B. mit dem Expression Encoder oder Popfly möglich ist.

Schritt 1: MS AJAX Enabled Website erstellen und Silverlight.js hinzufügen

Wir erstellen einfach (aus Gewohnheit) ein ASP.NET AJAX enabled Website und fügen die Silverlight.js aus dem SDK hinzu (und fügen diese Javascript Datei noch der Default.aspx hinzu) :

image

Schritt 2: Videoplayer XAML erstellen

Als nächstes erstellen wir das XAML für den Videoplayer. In unserem Fall werden wir uns auf das wesentliche beschränken und werden über normale HTML Buttons das Video steuern.

Hier erstmal das XAML:

<Canvas
   xmlns="http://schemas.microsoft.com/client/2007"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Width="399" Height="360"
   OpacityMask="#FF000000"
   RenderTransformOrigin="0.5,0.5"
   >
   <MediaElement
   x:Name="Player"
   Source="http://www.code-inside.de/files/democode/silverlightvideoplayer/Lake.wmv"
   AutoPlay="True"
   Stretch="Fill"/>
</Canvas>

In unserm Canvas Element, welches das Root Element ist, fügen wir das MediaElement ein, welches unser Video einbindet.

Wichtig beim MediaElement: Damit wir es über Javascript ansprechen müssen, müssen wir einen “x:Name” vergeben – in unserem Fall “Player” und noch eine “Source” setzen.
Interessanter Hinweis noch dazu:

Das Video wird bei mir auf code-inside.de gehostet – die Anwendung selbst läuft auf code-developer.de:

image

Schritt 3: SilverlightHost einfügen und ein paar Buttons

Sobald unsere Seite aufgebaut ist, wird das Silverlight in dem “SilverlightVideoHost-Div” erstellt und darüber sind 3 schnöde Buttons mit den jeweiligen Javascript Funktionen:

  • Play
  • Stop
  • Pause
<body onload="createSilverlight()">
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <button onclick="play()">Play</button>
            <button onclick="stop()">Stop</button>
            <button onclick="pause()">Pause</button>
        </div>
        <div id="SilverlightVideoHost">
        </div>
    </form>
</body>

Schritt 4: SilverlightHost erstellen und Funktionalität implementieren

Als finalen Schritt rufen wir jetzt die Silverlight.js auf und erstellen unseren Videoplayer:

    function createSilverlight()
    {
    Silverlight.createObjectEx({
      source: "Videoplayer.xaml",
      parentElement: document.getElementById("SilverlightVideoHost"),
      id: "SilverlightControl",
      properties: {
         width: "100%",
         height: "100%",
         version: "1.0"
      },
      events: {
         onError: null,
         onLoad: null
      }

   });
   }

Wichtig hier ist die “source” – unser “Videoplayer.xaml” – sowie das übergeben unseres “SilverlightVideoHost” als “parentElement” und vergeben noch eine “id” “SilverlightControl“.

Jetzt statten wir noch die 3 Buttons mit einer Funktion aus:

   function play()
   {
   var control = document.getElementById("SilverlightControl");
   control.Content.FindName("Player").play();
   }

   function stop()
   {
   var control = document.getElementById("SilverlightControl");
   control.Content.FindName("Player").stop();
   }

   function pause()
   {
   var control = document.getElementById("SilverlightControl");
   control.Content.FindName("Player").pause();
   }

Wir greifen hier direkt über Javascript auf das Silverlight zu. Um auf das Silverlight Plugin zuzugreifen bekommt man es über document.getElementById(SILVERLIGHT_ID) – nicht zu verwechseln mit der SilverlightHostID:

  • SilverlightControl = Ist ID des generierten “objects” und erlaubt es auf die Silverlight DOM zuzugreifen (siehe hier für weitere Infos)
  • SilverlightVideoHost = Ist ID des Hosts des Silverlight Plugins

Über das Silverlight Plugin haben wir nun die Möglichkeit die jeweiligen Methoden des MediaElements aufzurufen:

Als Ergebniss haben wir dann unseren simplen Videoplayer:

image

 

[ Demoanwendung | Source Code Downloaden ]