Welcome to MSDN Blogs Sign in | Join | Help

Robert Folkesson

Roses are #FF0000,
Violets are #0000FF,
All my base are
belong to you.
Vad är Smooth Streaming?

iis-smooth Smooth Streaming är en ny teknik som möjliggör både on-demand och live-streaming av media i HD-kvalitet från en vanlig Windows 2008-server med IIS 7 och ett nytt tillägg som heter IIS Media Services.

Man kan säga att tekniken är som ett mellanting mellan ‘traditionell’ streaming och progressiv nedladdning, d.v.s. den bygger inte på något specialanpassat streaming-protokoll utan på HTTP-protokollet där klienten gör helt vanliga GET-anrop mot servern, men där varje anrop endast hämtar någon sekund av filmen.

Det som är riktigt intressant är att en Silverlight-klient i runtime kan byta video-kvalitet baserat på hur mycket bandbredd som finns tillgängligt och hur mycket CPU-resurser som används. Det gör det möjligt att direkt börja spela upp en film i en lägre bitrate när användaren klickat på ‘spela’. När klienten sedan ser att det finns mer tillgänglig bandbredd och systemresurser kan den koppla upp sig mot en högre bitrate vilket ger en succesivt bättre bild.

För användaren innebär detta en användarupplevelse där filmen inte ‘buffrar’ eller hackar och att det går blixtsnabbt att byta och börja spela en ny film. Precis i början är bilden något ‘pixligare’ men blir sedan snabbt skarp förutsatt att du har hyffsad bandbredd. Med den här tekniken kan man faktiskt titta på en längre film med 3G-uppkoppling eftersom du som användare köper att bilden är lite sämre, men inte att den buffrar och hackar.

För medialeverantören innebär detta att de kan dra nytta av den befintliga infrastruktur i form av HTTP cache och proxys som redan finns ute in näten och inte behöver specialiserade servrar för att kunna streama media. Man reducerar problemen med “last mile” begränsningar i näten och behöver inte gissa vilken, eller vilka bit rates som fungerar för alla klienter.

Jag provade att ladda hem och sätta upp Smooth Streaming på en av våra testservrar, hur smidigt som helst med Web Platform Installer, gick på ungefär en halvtimme att få upp en test som finns tillgänglig här. Testa välj ‘Silverlight Player’ - ‘User Experience Simulator’ så kommer du tydligt se hur den anpassar bit rate i takt med att den spelar.

Du kan läsa mer om samt ladda ner och testa Smooth Streaming på IIS-sajten. Missa inte heller Alex Zambellis excellenta djupdykning i teknikdetaljerna.

Live Meeting: Nyheterna i Silveright 3

Idag kl 14.00 kör vi ett sista och avslutande Live Meeting innan sommaren: denna gång handlar det om nyheterna i Silverlight 3 – missa inte det!

Onsdagen den 17:e juni, klockan 14-15 – klicka här för att vara med!
Nyheter i Silverlight 3 – GPU acceleration, Perspective transform 3D, Out-of-browser, bättre styling

Två utmärkta artiklar om nyheter i ASP.NET 4.0

Mikael Söderström har skrivit två mycket bra genomgångar av några av de nyheter som kommer i ASP.NET 4.0; en om hanteringen av klient-id:n; samt en om möjligheten att använda den routing som används av ASP.NET MVC även i Web Forms.

Rekommenderas!

Live Meeting om datahantering i Silverlight

Här finns den senaste Silverlight Live Meeting-presentationen tillgänglig, som alltså förra veckan handlade om datahantering i Silverlight.

Insåg i efterhand att jag svarade på något helt annat när jag fick en fråga om diagram – den diagramkontroll som jag använder i demot kommer från Visifire, som gör snygga datavisualiserings-komponenter för både Silverlight och WPF.

Demos från presentationen kan du ladda hem här (OBS, dessa är skapade eller öppnade + kompilerade med en preview av Silverlight 3 Tools for Visual Studio, så projektet kanske inte kör direkt i en SL 2 miljö. Koden, förutom .NET RIA-services, är inte SL 3-specifik dock). Powerpoint-presentationen finns tillgänglig här.

Nästa Live Meeting som hålls nu på onsdag handlar om alla spännande nyheter i Silverlight 3, missa inte det:

Onsdagen den 17:e juni, klockan 14-15 – klicka här för att vara med!
Nyheter i Silverlight 3 – GPU acceleration, Perspective transform 3D, Out-of-browser, bättre styling

FBTB09 i full gång!

Business to buttons-konferensen är i full gång och jag har kollat på Garr Raynolds presentation om hur man… ehhh…håller presentationer. Men han var verkligen så bra som jag hade föreställt mig, riktigt kul att få se honom live!

En annan sak som var riktigt kul att få se och testa var Ergonomidesign och Connectas nya Surface-applikation som de premiärvisar på konferensen (och på håret den inte skulle komma ner alls , stort tack till Urban Falck, vilken hjälte!)

fbtb09_surface1

fbtb09_surface2

Applikationen är ett både ett musikspel och en musikshop, där användare kan spela en musikquiz genom att slå två Surface-taggade tärningar. Tärningarna väljer genre och applikationen spelar upp musik som sedan ska kopplas ihop med memory-liknande vändbara kort (ja, jag vet, svårt att förklara, men här finns en filmsnutt som visar den).

Det går även att flippa hela spelytan vilket gör den till en musikaffär där du kan köpa låtar och föra över direkt till din bluetooth-enhet.

En sak som verkligen imponerade på mig, förutom själva applikaionen, var de fysiska tärningarna. Inte några träbitar med fastklistrade Surface-taggar - utan helgjutna, rejäla pjäser till tärningar som verkligen kändes gedigna att slå med på bordet. Ett mycket bra exempel på en genomtänkt användarupplevelse där den fysiska världen möter den virtuella på ett helt naturligt sätt.

Vad händer med mina Silverlight 2 och 1.0-applikationer när 3:an släpps?

Inom en inte alltför avlägsen framtid kommer Silverlight 3 att släppas.

Efter att Silverlight 3 släppts kommer alla klientmiljöer att autouppdateras, förutsatt att användaren inte explicit ställt in att den inte ska göra det. Silverlight 3 kommer även att göras tillgänglig via Windows Update för de som uppdaterar klienter via sitt lokala nätverk.

Om du har befintliga Silverlight 2 eller 1.0-applikationer i drift

Dessa kommer att fungera som förut utan att du som utvecklare behöver kompilera om koden och göra en ny driftsättning av din applikation.

Om du vill dra nytta av någon av de nyheter som finns i Silverilght 3 (förutom prestandaoptimeringar) så kräver det naturligtvis att du öppnar ditt projekt i Visual Studio med Silverlight 3 Tools (ditt projekt kommer automatiskt uppgraderas) och lägger till den funktionaliteten.

Om du nu utvecklar applikationer med Silverlight 3 Beta

Det kommer att vara ett antal ‘breaking changes’ mellan Silverlight 3 Beta och den släppta versionen. Du måste uppgradera ditt Beta-projekt och gå igenom din kod för att ändra den enligt dessa förändringar. Naturligtvis kommer det finnas utförlig dokumentation för vad som är förändrat.

Alldeles strax dags för nästa Silverlight-LiveMeeting

Var med live så har du möjligheten att ställa frågor under mötets gång:

Fredag den 5:e juni, klockan 14-15 – klicka här för att vara med!
Datahantering i Silverlight, vilka olika möjligheter finns att anropa webbtjänster, säkerhet och XDomain, hur kan du uttnyttja .NET RIA Services

TechDays 2010

Det är ett tag fram tills dess – men det kan vara bra dra ett sträck i kalendern redan nu – den 23-24 mars nästa år återkommer TechDays. Den här gången kommer konferensen hållas i Örebro.

Datumet när Windows 7 släpps

Om jag hade fått en liten peng alla gånger någon frågat mig när Windows 7 kommer att släppas… :-)

Nu har de gått ut med ett officiellt datum på Window Team-bloggen: Windows 7 will be in stores beginning October 22nd.

Tror inte att vi har gått ut med ett datum när en svensk version kommer finnas tillgänglig dock.

Live Meeting-seminarie om media med Silverlight

I fredags så körde jag den andra i en serie om fyra Live Meeting-baserade seminarier om Silverlight. Denna gång handlade det om mediastödet i Silverlight samt olika sätt att skapa och distribuera mediaupplevelser.

Du kan ta del av en inspelning av seminariet här. Min powerpoint-presentation hittar du här. Exempelkoden för dynamisk textning finns här.

Jag fick också två frågor under seminariet som jag lovade återkomma med svar på:

Kan man använda Expression Encoders objektmodell och SDK:t för att programmatiskt hantera en live-encoding?

Expression Encoder 2 stödjer endast ‘on-demand’-material och inte live-encoding (EDIT förtydligande: i gränssnittet går det alldeles utmärkt ange en live-källa, men inte programmatiskt mha EE 2:s objektmodell). Men den funktionaliteten kommer att finnas med i Expression Encoders 3:s SDK och objektmodell.

Går det att lägga till Script Commands till H264 (MP4)-filer?

Inte på samma sätt som med WMV-filer, där Script Commands kan “brännas” in i filen redan i Expression Encoder. Däremot så går det utmärkt att läsa dem från någon annan källa (metadatafil, databas etc) och lägga på dem på mediaelementets i Silverlight i efterhand med hjälp av TimelineMarkers. Precis som i exemplet för dynamisk textning ovan.

Missa inte nästa nästa seminarie som är nu på fredag 5/6 som handlar om datahantering i Silverlight, då jag bland annat kommer att gå igenom vilka olika möjligheter finns att anropa SOAP- och REST-baserade webbtjänster, säkerhet och XDomain, samt hur kan du uttnyttja .NET RIA Services i dina Silverlight-applikationer.

Fredag den 5:e juni, klockan 14-15 – klicka här för att vara med!

Djupdykning i mediastödet i Silverlight

Imorgon (fredag) kör vi ett LiveMeeting som är en djupdykning i mediastödet i Silverlight, hur du skapar enklare och mer avancerade mediaspelare, hur du kan använda Expression Encoder för encoding och för att skapa mediaupplevelser samt nyheterna i IIS Media Services som Smooth Streaming och Web playlists.

Fredag den 29:e maj, klockan 14-15 – klicka här för att vara med!
Mediastödet i Silverlight. Hur bygger du mediaupplevelser i Silverlight, vilka format stöds, hur fungerar DRM, vad är Smooth Streaming.

jQuery Ribbon-kontroll

Mikael Söderström har skapat en mycket trevlig Ribbon-kontroll med hjälp av jQuery som han har publicerat på Codeplex.

orb_menu_3F0E6BBA

Introduktion till Silverlight

I fredags så körde vi den första i en serie av fyra Live Meetings om Silverlight. Tyvärr så slutade ljudet att fungera efter ett tag så jag har spelat in presentationen igen i efterhand:

Get Microsoft Silverlight

Här är de kommande tillfällena (då ska vi se till att ljudet fungerar!)

Fredag den 29:e maj, klockan 14-15 – klicka här för att vara med!
Mediastödet i Silverlight. Hur bygger du mediaupplevelser i Silverlight, vilka format stöds, hur fungerar DRM, vad är Smooth Streaming.

Fredag den 5:e juni, klockan 14-15 – klicka här för att vara med!
Datahantering i Silverlight, vilka olika möjligheter finns att anropa webbtjänster, säkerhet och XDomain, hur kan du uttnyttja .NET RIA Services

Onsdagen den 17:e juni, klockan 14-15 – klicka här för att vara med!
Nyheter i Silverlight 3 – GPU acceleration, Perspective transform 3D, Out-of-browser, bättre styling

BlogEngine.NET och Web Slices

BlogEngine.NET är en populär open source-bloggmotor som bl.a. vi använder för vår SmartIE8-blogg. Jag tänkte det kunde vara kul testa lägga in Web Slice-funktionalitet i vår egen IE8-blogg, vi talar ju trots allt en hel del om Web Slices forträfflighet ;-) 

Web Slices är ett sätt att låta användare lägga till bokmärken som, istället för att peka direkt på en sida, visar en uppdaterad vy av en del av sidan – en ‘slice’ – utan att du behöver surfa till den sidan. Vanligtvis innehåller den del av sidan som du vill visa i en Web Slice sådan information som kontinuerligt uppdateras – typexemplet är en onlineauktion där du kan se när priset har uppdaterats för en specifik produkt.

För att snabbt komma igång med utveckling i BlogEngine så använde jag det fantastiskt smidiga installationsprogrammet Web Platform Installer. Den hämtade hem och packade upp BlogEngine.NET på någon minut – mycket trivsamt!

I det här fallet ville jag inte visa en del av den befintliga sidan, utan jag ville endast visa rubrikerna från de senaste blogginläggen som klickbara länkar. Web Slices stödjer att du har en anpassad vy som du kan peka mot – så till att börja med skapade jag en helt ny ASPX-sida som jag kallade ‘webslicepreview’, som endast visar artikelrubrikerna:

webslicepreview

Du kan se sidan live här.

Det enda knepiga med den sidan var hur jag skulle läsa upp artiklarna. Men det visade sig vara ganska enkelt, Post-klassen i BlogEngine.Core har en trevlig FindAll-metod på sin Posts-kollektion som tar emot ett predikat:

List<BlogEngine.Core.Post> visiblePosts = BlogEngine.Core.Post.Posts.FindAll(delegate(BlogEngine.Core.Post p) { return p.IsVisible; });

Sedan måste jag hinta IE8 om att det finns en Web Slice i sidan att lägga till. Sättet som du gör det på är genom att lägga till ett antal fördefinierade CSS-klassnamn som IE8 reagerar på.

  • hslice – huvudelementet för Web Slicen
  • entry-title – den titel som visas i favorit-menyn
  • entry-content – vad som ska visas när besökaren väljer Web Slicen i favoritfältet
  • endtime - tid och datum då Web Slicen blir inaktuell
  • ttl - antal minuter innan Web Slicen kan uppdateras igen

    Jag lade in dessa i PostList.ascx - den User Control som hanterar listningen av blogg-poster. De IE8-specifika klassnamnen är i fetstil nedan:

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="PostList.ascx.cs" EnableViewState="false"
        Inherits="User_controls_PostList" %>
    <%@ Import Namespace="BlogEngine.Core" %>
     
    <!-- start definition av Web Slice -->
     
    <meta name="slice" scheme="IE" content="off" />
     
    <div class="hslice" id="postSlice">
        <div class="entry-title" style="visibility: hidden">
            Smart IE8-bloggen
        </div>
        <span class="ttl" style="display: none;">60</span> 
        <a rel="entry-content" href="<%=Utils.AbsoluteWebRoot %>webslicepreview.aspx" />
    </div>
     
    <!-- slut definition av Web Slice -->
     
    <div runat="server" id="posts" class="posts" />
     
    <div id="postPaging">
        <a runat="server" id="hlPrev" style="float: left">&lt;&lt;
            <%=Resources.labels.previousPosts %></a> <a runat="server" id="hlNext" style="float: right">
                <%=Resources.labels.nextPosts %>
                &gt;&gt;</a>
    </div>

    Som synes så kan man alltså peka ut en specifik sida mha <a rel="entry-content" href="…”> som alltså pekar mot min webslicepreview.

    Du kanske undrar vad <meta name="slice" scheme="IE" content="off" /> innebär?

    Vanligtvis så visar IE8 att det finns en Web Slice på en sida genom att visa en grön ram runt Web Slicen samt den speciella Web Slice-ikonen:

    ws3

    I det här fallet ville jag inte stöka till bloggens utseende för mycket, så istället slog jag av den funktionen med <meta name="slice" scheme="IE" content="off" /> och la till en länk i menyn istället:

    addslice

    Länken anropar ett enkelt Javascript som lägger till Web Slicen:

  • function addToFavoritesBar() {
        window.external.addToFavoritesBar("http://www.smartie8.se/#postSlice", "Smart IE8-bloggen", "slice");
    }

    Ett annat sätt att lägga till den är via den Web Slice-ikon som dyker upp i menyfältet när du är på en sida som innehåller en Web Slice:

    addslice2

    Om du vill se min Web Slice in action så kan du gå in på www.smartie8.se

    Elände – Live Meeting bråkade med första Silverlight-seminariet

    Update: en återinspelning av materialet finns tillgänglig här.

    Ber om ursäkt till er som lyssnade in på vårt första i en serie av fyra Silverlight-seminarier via Live Meeting. Tio minuter in så försvann mitt ljud utan att jag själv märkte det. Jag kommer att spela in introduktionen igen och posta den på Channel9 någon gång de närmsta dagarna – så materialet kommer att finnas tillgängligt.

    Återigen, ber om ursäkt för detta. Nästa gång kommer vi sitta två bredvid varandra för att ha bättre koll på att bild/ljud inte krånglar hos den andre.

    More Posts Next page »
    Page view tracker