Michells Mesterværk

Visual Studio LightSwitch

by Administrator 2. September 2010 13:14

Jeg har fundet ud af at Microsoft har udgivet et nyt tool som hedder LightSwitch, godt nok i en beta, men du kan downloade det. Det var faktisk min kollage René Løhde der gjorde mig opmærksom på det, da han en morgen spurgte mig om jeg havde erfaring med det nye tool. Det undrede mig, at han var så ivrig efter at finde ud af det, men så tænkte jeg på, at René det seneste års tid har kæmpet med en applikation skrevet i MVC, og som han ikke heeelt har kunnet få til at makke ret, og hver gang vi nu udgiver et nyt tool håber han at det er hans redning. Jeg har nu forsikret ham om at LightSwitch er sagen og nu har han har lukket sig inde for at blive færdig med sin app.

Marketing afdelingen i Microsoft ville sige dette om toolet

Microsoft Visual Studio LightSwitch giver dig en enklere og hurtigere måde at udvikle professionel og kvalitative forretnings applikationer til desktop, web og cloud.

Find ud af om du også synes det er sagen ved at se introduktionen til toolet her.

Get Microsoft Silverlight

Her kan du downloade LightSwitch, se videor og læse mere om hvad der er muligt.

Tags:

Jeg skal tale om Azure løsninger i CNUG d. 16/9, kom forbi.

by Administrator 1. September 2010 09:47

Jeg har været så heldig at få lov til at tale lidt om hvordan dele af Windows Azure løsninger fungere, og hvad man skal være opmærksom på når man udvikler i Microsofts cloud miljø.

Jeg tager en løsning med som jeg har bygget og vil som en del af præsentation gå igennem den og forklare hvordan jeg gjorde, hvad der var nemt og hvad der gav mig hovedpine.

image

Talken er på level 200-300 og kendskab til C#, .NET er nødvendigt, hvorimod simple cloud computing begreber er godt men ikke en nødvendighed.

Du tilmelder dig på http://aroundazure.eventbrite.com/

Tags:

Composite C1 igennem WebMatrix og WebPI

by Administrator 23. August 2010 10:23

For det første er det fedt at se at Composite har bygget et CMS der ser så lækkert og brugervenligt ud, for det andet er det fedt at se, at Composite har nydt godt af både WebMatrix og Web Platform Installer’en for at opnå en hurtig og gnindningsfri installation. Her viser Marcus fra Composite hvordan du installerer deres CMS på under 2 minutter.

Mon Composite har flere overraskelser til os ? Følg med på deres site for udviklere http://docs.composite.net/C1.aspx

Tags:

TechTalk på Onsdag d. 28/8

by Administrator 22. August 2010 17:36

Jeg har neto modtaget et abstrakt fra Martin som skal afholde SQL Server 2008 TechTalk på Onsdag, i Hellerup. Martin Schmidt arbejder til dagligt for Miracle A/S i Ballerup er og hvad man kalder en hard-ass-core DBA. Hvis du vil lære noget om SQL Server 2008 så er det her du tropper op :)

Martin Schimdt

images

Abstract til TechTalk

SQL Server 2008 R2 kommer med en masse nye funktioner / features.

Mange af disse har rigtig meget at gøre med BI stakken. Buzzwords som Power Pivot, StreamInsight og Master Data Services er emner som jeg kort vil komme ind på - men som på ingen måde vil fylde meget af denne session.

Af ikke BI features, som er kommet med R2 udgaven vil jeg snakke om Universal Control Point (UCP) og Unicode compression. Især UCP er genialt hvis du sidder som DBA i en multi server/instance virksomhed.

For at det hele ikke skal ende med at bliver en DBA 101 session, vil jeg til sidst snakke om en af de meget oversete features, Change Data Capture (CDC), som godt nok kom med 2008 versionen, men som kan adde en masse value.

Praktisk

Onsdag d. 28/8

Hos Microsoft Danmark i Hellerup (Tuborg Boulevard 12).

Kl. 9:30 – 11: 30

Morgenmad og frokost er også inviteret :)

Tilmelding

Tags:

Kick-Ass video omkring ASP.NET MVC 3 preview 1

by Administrator 28. July 2010 12:18

Som i måske allerede ved så er ASP.NET MVC 3 ude i en preview 1. Du kan se den her mega sjove video med The Haack og ScottHa omkring nyhederne og the-in-betweens.

Nyd det!

Get Microsoft Silverlight

Tags:

En dedikeret Umbraco server til 499kr om måneden!

by Administrator 22. July 2010 15:13

Vil du have en dedikeret server med en open source applikation pre-installeret, så er der er en glimrende mulighed for det nu. Microsoft har bla. lavet en aftale med ActiveWebs hosting, som har sit eget hosting center, om at udbyde 4 forskellige open source .NET applikationer. En af dem er Umbraco CMS som nok er mest kendt for at være det der ligger bagved http://asp.net sitet.

De andre applikationer er BlogEngine.NET, mojoPortal og ScrewTurn Wiki.

Selve serveren du får adgang til (remote desktop) ser således ud:

Den virtuelle server er baseret på Microsofts virtualiseringsplatform Hyper-V, og kører på maskiner med kraftige Quad Core Intel Xeon processorer og RAID.
Pakkeløsningen ser således ud:

  • Virtuel server m/1024MB RAM & 60GB harddisk
  • Windows Server 2008 Web Edition (64bit R2)
  • 25GB trafik pr. måned
  • Preinstalleret med et af følgende systemer (efter eget valg):
    • Umbraco
    • mojoPortal
    • BlogEngine.NET
    • ScrewTurn Wiki
  • Oprettelse: 0,-
    Pr. måned: 499,-

Du læser mere om tilbudet hos ActiveWebs her: http://www.activewebs.dk/applikationsserver/

Tags:

Prisen på Azure er underordnet, for du kender ikke prisen på det du allerede har!

by Administrator 21. July 2010 12:53

Jeg er lige returneret fra endnu et Azure møde ude i byen, det går som varmt brød i disse dage, og folk er generelt rigtig ivrige efter at komme igang. Dog er der en ting der slår mig hver gang jeg snakker med kunder eller potentielle kunder om Windows Azure, nemlig prisen. De vil rigtig gerne høre om prisen, vide en masse om hvad det koster og hvordan Microsoft beregner prisen. Det er i virkligheden ret enkelt, der er nemlig en pris for “compute hours”, “data storage” og “traffic”. Det er basalt set det, det kommer ned til.

Problemet er ikke prisen i Windows Azure, problemet er at danne sig et overblik over hvad man bruger. Der er ikke én af de personer jeg har talt med det sidste år der har kunnet fortælle mig hvad de bruger af trafik på deres servere, hvad de giver pr. GB i trafik og hvor meget det koster dem i administrative omkostninger. Jeg forstår dem godt, for det er super kedeligt at beskæftige sig med de tal og når alt kommer til alt så skal applikationen skal jo bare køre :)

Windows Azure er ikke ovre det punkt endnu hvor folk tænker “det her skal jeg jo bare bruge”. Det er ligsom el hjemme i huset, det kan man ikke undvære og det er fuldstændig ligegyldigt hvor det kommer fra, bare det er der. Det er bare en “commodity” vare, nemt, sikkert sikkert nok, hurtig og du behøver ikke administrerer hvad og hvorfor. Men på et tidspunkt kommer vi altså over det punkt!

Så inden du spørger mig om prisen på hvad det koster at hoste noget i Windows Azure, så spørg dig selv først, hvad det koster for dig lige nu ?

Tags:

Hvad er Odata ?

by Administrator 21. July 2010 09:07

Igår faldt jeg over denne video med Scott Hanselman, hvor han snakker meget bredt omkring Odata, webservices, REST og WCF. Det er rigtig god video især fordi den er præget af enorm meget humor.

Tags:

PDC10 er annonceret, men det bliver anderledes end det plejer!

by Administrator 15. July 2010 14:22

Jeg kan hermed fortælle en rigtig god nyhed til dem som er glade for cloud computing og i særdeleshed Azure. PDC10 er netop blevet annonceret men det bliver holdt på Microsoft campus og temaet for konferencen bliver cloud computing med Windows Azure.

heroGraphic

Jeg skal nok holde jer opdateret omkring eventet, men jeg kan sige så meget at der ikke er ligeså mange pladser som der plejer at være til PDC også kan jeg også sige at det bliver d. 28+29 oktober – og det er altså i Redmond!

Skynd at registrer dig til PDC10.

Tags:

Sådan arbejder du med databasen i WebMatrix/ASP.NET Web Pages

by Administrator 15. July 2010 10:39

Husk at læse min intro til WebMatrix :)

Jeg er faldet for det nye WebMatrix værktøj Microsoft har udgivet. Det er så nemt at bruge (det er helt klart faretruende) at man helt glemmer tid og sted.

Jeg vil lige vise jer størstedelen af data API’et der følger med ASP.NET Web Pages. Det er super enkelt og bør bestemt appelerer til de agile :0)

@{

var database = Database.OpenFile("database.sdf");

int userId = 1;

var user = database.QuerySingle("SELECT name, email FROM users WHERE (ID = @0)", userId);
database.Execute("UPDATE users SET name = 'Daniel Frost' WHERE (ID = @0)", userId);
var count = database.QueryValue("SELECT COUNT(*) AS cnt FROM users");
var result = database.Query("SELECT name, email FROM users ORDER BY id DESC");

foreach(var r in result) {
    @r.Name
}

@count

@user.Name

database.Execute("INSERT INTO users (name, email) VALUES ('Dit navn', 'din@email.dk')");
@database.GetLastInsertId();

database.Close();
database.Dispose();

}

Det er dejlig nemt :)

Tags:

Kenny elsker også VS2010

by Administrator 14. July 2010 11:44

Tags:

Respjæt til Benjamin Ma for den her video

by Administrator 14. July 2010 11:25

Tags:

Props til Aske Olesen for den her video

by Administrator 14. July 2010 09:11

Tags:

Introduktion til Microsoft WebMatrix.

by Administrator 13. July 2010 10:36

[koden til posten finder du her]

Siden ASP.NET udkom i starten af det nye årtusinde, har det stået en anelse sløjt til med adoptionen af ASP.NET overfor de udviklere der dengang, i slutningen af 90erne, havde deres daglige gang i ASP (bedre kendt nu som ASP classic). Dengang var der kun ét web framework fra Microsoft og det var netop ASP, og eftersom der ikke var meget andet af vælge imellem som MS fan-boy så var valgt ret nemt.

Det er klart at det altid har været i Microsofts planer, at virksomheden ikke ønskede, overhovedet, at tabe nogle udviklere på gulvet med deres nye framework, værktøj og paradigmer. Men over de sidste mange år har virkligheden vist sig at være en lidt anden. Det er jo ikke fordi ASP.NET ikke er udbredt, for det er det bestemt, men der er en form for teknisk arv hos mange udviklere som Microsoft gerne så de slap for at slæbe rundt på.

Udover den her tekniske arv som jeg personligt kalder den, så er der en helt anden dimension også, nemlig det, at rigtig mange udviklere gerne bare vil skrive noget kode og nødvendigvis ikke har tid eller lyst til at bekymre sig alt for meget om hvordan tingene er skruet sammen nedenunder. En anden ting er hele det tekniske skift fra at være vant til procedural kode til nu at skulle tænke i objekter, type stærkt sprog, en compiler osv. Det kan meget vel være en showstopper for rigtig mange mennesker, ikke fordi det er svært at lære nyt, men fordi det ikke går ligeså stærkt som i ”gamle dage”.

Det handler altså om for de fleste at få noget at op at flyve i en fart, og til det behøver man altså ikke købe en dyr licens til et udviklingsværktøj hvor man kun bruger 20% af funktionaliteten og samtidig ikke føler sig helt tryg ved teknologien. Det er klart at man så vælger at holde sig til det man kender.

Microsoft har nu, langt om længe, frigivet et par rigtig gode værktøjer der hjælper med flere ting i den simple udviklers liv. Det er for mig super rart at se og opleve, at Microsoft har lært at der findes en meget stor målgruppe til disse værktøjer og at virksomheden aldrig igen må glemme de små udviklere også.

Microsoft WebMatrix er det nyeste skud på stammen når man nævner web udvikling på en Microsoft platform. Lad mig lige starte med at remse op hvilke andre web frameworks Microsoft har at byde på og hvor du kan finde mere information om dem henne.

ASP.NET WebForms

WebForms bruger man hvis man vil bygge en kontrol baseret, event drevet og hurtig applikation til internettet. Teknologien er ikke specielt venlig over udviklere der ikke har arbejdet med .NET før.

Du kan læse mere om WebForms her (http://www.asp.net/web-forms) , se channel9 videoer omkring teknologien her (http://channel9.msdn.com/tags/ASP.NET/) , og på codeplex kan du følge med i udviklingen og finde tilføjelser og andre fede features (http://aspnet.codeplex.com/).

ASP.NET MVC

MVC frameworket er et noget lettere og mere agilt web framework der i rimlig stor modsætning til WebForms ”omfavner” webbet som en platform. Du har fuld kontrol over alt hvad du laver, du skriver alt din kode selv og det er både meget lettere at teste og lære MVC at kende. Hvis du har været vant til et scripting sprog såsom ASP eller PHP så er MVC nok den letteste vej ind i hele .NET frameworket. Ihvertfald hvis du skal lave web applikationer og tjene penge på det.

Du kan læse mere omkring MVC ved at downloade den korte men præcise ebog omkring MVC (http://msdncommunity.dk/media/120070/mvcebogen.pdf) , du kan også lære de mere fundementale ting ved at kigge her (http://www.asp.net/mvc) og sidst men ikke mindst er der en masse materiale omkring MVC på Channel9 også (http://channel9.msdn.com/tags/ASP.NET+MVC/).

ASP.NET Web Pages

I sidste uge kom så det værktøj der støtter op omkring netop ASP.NET Web Pages. Værktøjet hedder som sagt WebMatrix og åbner op for en ny verden af muligheder når man udvikler web applikationer til en Microsoft platform. Sådan her ser værktøjet ud når man starter det første gang. Du downloadet forøvrigt WebMatrix her (http://www.microsoft.com/web/webmatrix/download/), og det er nok en god idé at have det installeret når vi går igang med at kode lidt med det :)

clip_image002

Du kan vælge udfra den simple menu i værktøjet, hvad det er du gerne vil gøre. Mulighederne er altså enten at tilgå ”My Sites” som er de applikationer du selv har bygget, eller du kan vælge noget så sejt som en template eller endnu bedre en reel applikation fra Microsoft web app gallery (http://www.microsoft.com/web/gallery/) som forøvrigt hænger rigtig tæt sammen med Microsoft web platform installer, også kaldet WebPI (findes her: http://www.microsoft.com/web/downloads/platform.aspx). Den sidste mulighed er at oprette et site fra en folder på den computer.

clip_image004

Jeg har oprettet et site allerede, det hedder Guestbook. En gæstebog er altid en god applikation at starte med at udvikle når man skal lære en ny teknologi at kende, ihvertfald hvis du spørger mig.

Det er en stor fornøjelse at arbejde med WebMatrix, man ser kun det som er absolut mest nødvendigt når du skal udvikle en applikation. Du ser hvor du kan browse app’en, hvor den mapper til på disken og du har bla. også mulighed for at tilgå en database manager og en request manager.

clip_image006

I bunden af skærmen har du adgang til dine filer og et andet punkt som kaldes Reports. Reports kan du bruge til bla. at lave SEO optimering hvor WebMatrix cralwer dit site og tjekker for mangler og evt. fejl i koden.

clip_image007

Man føler først for alvor at det er en kode editor når man sidder i Files vinduet og kan se sin løsnings filstruktur og de kode filer man har oprettet.

clip_image008

Strukturen for sit site bestemmer man i store træk selv, men der er nogle ting man skal være klar over når man udvikler med WebMatrix og ASP.NET web pages.

Det er .NET, men føles nødvendigvis ikke sådan.

ASP.NET Web Pages er bygget ovenpå .NET platformen men man mærker faktisk ikke den kobling ret meget når man går igang med at udvikle. Man oplever naturligvis et spil imellem det som man kan lave i ASP.NET Web Pages og VB eller C#. Der er en kobling men man bestemmer selv om man vil benytte sig af den og i hvilken udstrækning.

.cshtml

ASP.NET Web Pages er et nyt framework og det er et bestemt API man benytter når man udvikler i teknolgien. .cshtml er filendelsen på ASP.NET Web Pages filerne og her er nogle af de mest markante træk i disse filer.

En kodeblok i sådan en fil kan se således ud:

<!-- Inline expression -->

<p>værdien på din konto er: @total </p>

<!-- Single statement block. -->

@{ var myMessage = "Hej Verden"; }

<p>Værdien af myMessages er : @myMessage</p>

<!-- Multi-statement block. -->

@{

var greeting = "Velkommen til vores site!"; 

var weekDay = DateTime.Now.DayOfWeek; 

var greetingMessage = greeting + " Idag er det : " + weekDay; 

}

<p>Velkomst hilsen: @greetingMessage</p>}

1. Man bruger @{...} til at åbne og lukke kode med
2. Du lukker hver kode linie med et semikolon ;
3. Du bruger variabler til at gemme data i, dem specificere du enten med ”var” eller den eksplicite type du ønsker at bruger (string, int, datetime etc.)
4. kode er case-senitivt (ikke hvis du koder VB)

Vi kommer til at kigge på meget mere kode om lidt, men du skal nok lige igennem denne simple og meget overskuelige side før vi fortsætte. Den fortæller en masse omkring syntaxen og de mest gængse programmeringsrutiner man bør kunne (http://www.asp.net/webmatrix/tutorials/2-introduction-to-asp-net-web-programming-using-the-razor-syntax)

C#, VB vs ASP.NET Web pages

Der er meget stor forskel på at udvikle udelukkende med det simple ASP.NET Web Pages API og managed .NET kode; C# eller VB. Det er helt klart at fortrække at man misker de 2 ting lidt efter behov. Det fede er at muligheden er der og, at man kan oprette både klasser og refererer til .NET spefikke typer. .NET er enormt ”powerful” og man kan få enormt meget ud af at benytte sig af det værktøjer og muligheder der ligger i og omkring platformen. Derfor er det bla. også muligt at editere i sin WebMatrix løsning i Visual Studio, hvor du bla. har Intellisense (mega produktivitets boost) og debugging med breakpoints. Begge noget som ikke er med i WebMatrix men giver en enorm værdi når man skal udvikle web applikationer af lidt størrer størrelse.

Shared, App_Data, App_Code og Bin.

ASP.NET Web Pages deler ligsom de andre Microsoft web frameworks den samme overordnede applikationstruktur. Du skal f.eks gemme din applikations specifikke kode i App_Code folderen i dit site, databaser i App_Data etc. Bin folderen er til DLL filer og Shared kan du bruger til layout sider eller ”include” filer.

Koden til gæstebogen.

Jeg har som sagt bygget en simpel gæstebog. Den er baseret på både ASP.NET Web Pages og en lille del C# kode.

Vi vil gerne have vores brugere til at gemme en besked i vores gæstebog og til det skal vi naturligvis bruger nogle form felter. Navn, email, en titel og en besked.

Vores HTML til de form felter ser således ud.

<h1>Skriv besked</h1>
<form method="post" action="default.cshtml">
    <table class="form_fields">
        <tr>
            <td>Navn</td>
            <td class="error"><input type="text" name="name" value="@name" /> @errorStrings["name"]</td>
        </tr>
        <tr>
            <td>Email</td>
            <td class="error"><input type="text" name="email" value="@email" /> @errorStrings["email"]</td>
        </tr>
        <tr>
            <td>Title</td>
            <td class="error"><input type="text" name="title" value="@title" /> @errorStrings["title"]</td>
        </tr>
        <tr>
            <td>Message</td>
            <td class="error"><textarea name="message" cols="40" rows="5">@message</textarea> @errorStrings["message"]</td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" name="save" value="gem" /></td>
        </tr>
    </table>
</form>

En af de fedeste ting ved syntaxen som du ser her er, at man skrive kode direkte i HTML’en, men skal blot lige huske at markere med @ først. Ikke noget med <%= eller <?, blot @. Det er en lille men smuk detalje.

Når en bruger trykker på gem knappen skal vi have noget kode der ligsom håndtere det og til det. Koden her er i samme fil som HTML koden.

@{
    PageData["PageTitle"] = "Daniels Gæstebog";
    LayoutPage = "/Shared/_Layout.cshtml";  
}

@{
    //Variabler
    var name = String.Empty;
    var email = String.Empty;
    var title = String.Empty;
    var message = String.Empty;
    
    //Instansiering af fejl dictonary
    var errorStrings = new Dictionary<string, string>();  
    errorStrings.Add("name", "");
    errorStrings.Add("email", "");
    errorStrings.Add("title", "");
    errorStrings.Add("message", "");
    
    Entry entry = new Entry();
    
    //Hent alle beskeder
    List<Entry> entries = entry.Get();
   
    if(IsPost) {
        //Værider fra post
        name = Request.Form["name"];
        email = Request.Form["email"];
        title = Request.Form["title"];
        message = Request.Form["message"];
        
        //Fejl håndtering
        var errors = false;
        
        if(name.IsEmpty()){
            errors = true;
            errorStrings["name"] = "Du skal skrive dit navn.";
        }

        if(email.IsEmpty()){
            errors = true;
            errorStrings["email"] = "Du skal skrive din email.";
        }
        
        if(title.IsEmpty()){
            errors = true;
            errorStrings["title"] = "Du skal skrive en titel.";
        }
        
        if(message.IsEmpty()){
            errors = true;
            errorStrings["message"] = "Du skal skrive en besked.";
        }
       
        //Hvis der ingen fejl er så opretter vi beskeden
        if(errors == false){
            entry.Name = name;
            entry.Email = email;
            entry.Title = title;
            entry.Message = message;
       
            entry.Save();
            
            Response.Redirect("default.cshtml");
        }
    }
}

Vi kan teste på om der er sket et HTTP POST ved at kalde ”IsPost” metoden som er bygget ind i Web Pages API’et og hvis det er et POST så kan vi agere udfra det.

Vi samler data ind og gemmer dem i variabler og kalde Save metoden på et Entry objekt som er bygget i C#. Det entry objekt sørger for at gemme vores data i en XML fil på disken og så bliver vi ellers redirected til forsiden igen.

Læg også mærke til at vi tjekker for fejl og opretter et Dictionary til at håndtere disse.

Hver gang en bruger besøger siden vil han lave et kald til vores Entry objekt og kalde Get på objektet. Get returnere alle beskeder fra gæstebogen og det er ligeledes skrevet i C#. Lad os se på hvordan det er lavet.

using System;
using System.Collections.Generic;
using System.Web;

using System.Linq;
using System.Xml.Linq;
using System.IO;

/// <summary>
/// Summary description for ClassName
/// </summary>
public class Entry
{
    public string Name { get; set; }
    public string Email { get; set; }
    public string Title { get; set; }
    public string Message { get; set; }

    private string entriesDir = HttpContext.Current.Server.MapPath("/Entries/");

    public Entry(){}
    
    public Entry(string _name, string _email, string _title, string _message)
    {
        this.Email = _email;
        this.Message = _message;
        this.Name = _name;
        this.Title = _title;
    }

    public void Save()
    {
        XDocument document = new XDocument();
        document.Add(new XElement("entry"));

        var element = document.Element("entry");

        element.Add(new XElement("name", this.Name));
        element.Add(new XElement("email", this.Email));
        element.Add(new XElement("title", this.Title));
        element.Add(new XElement("message", this.Message));

        try
        {
            document.Save(entriesDir + Guid.NewGuid().ToString() + ".xml");
        }
        catch (Exception)
        {
            throw;
        }
        
    }

    private XElement entryElement;
    public List<Entry> Get()
    {
        DirectoryInfo dirInfo = new DirectoryInfo(entriesDir);

        XDocument document;
        Entry entry;
        List<Entry> entries = new List<Entry>();
        foreach (var file in dirInfo.GetFiles())
        {
            document = XDocument.Load(entriesDir + file.Name);
            entryElement = document.Element("entry");

            entry = new Entry(GetValueFromElement("name"), 
                GetValueFromElement("email"), 
                GetValueFromElement("title"), 
                GetValueFromElement("message"));
            
            entries.Add(entry);
        }

        return entries;
    }

    private string GetValueFromElement(string key)
    {
        return entryElement.Element(key).Value;
    }
}

Der er 2 public metoder, Get og Save. Den ene tager sig af at hente beskederne, den anden gemmer dem. Jeg har brugt XML til det for at vise hvor nemt det er at arbejde med fra .NET. Man kunne også sagtens have brugt en SQL Express database som er gratis og det understøtter Web Pages API’et naturligvis også.

Når vi skal have vist beskederne er det også på vores første side, den kode har vi allerede kigget på. Vi kan skrive beskederne ud sådan her.

@if(entries != null){
    <h1>Alle beskeder</h1>
        
    <table class="list">
        @foreach(var e in entries){
            <tr>
                <td><a href="mailto:@e.Email">@e.Name</a> skrev <b>@e.Title</b></td>
            </tr>
            <tr>
                <td>@e.Message</td>
            </tr>
            <tr>
                <td><hr /></td>
            </tr>
        }
    </table>
}

Det sidste jeg vil vise lige nu er hvordan sitet er strikket sammen ift. det design der er lavet.

I Shared mappen ligger der 3 filer, _footer, _header og _Layout. Når man markere en fil med en underscore kan man ikke browse den direkte.

I _Layout.cshtml kalder jeg RenderPage og RenderBody som begge er indbygget i API’et. Den første renderer en side den anden renderer noget content.

 @RenderPage("/Shared/_header.cshtml") 
      @PageData["name"]
      <div id="main">
        @RenderBody()
      </div>
@RenderPage("/Shared/_footer.cshtml") 

Dette var en kort introduktion til WebMatrix værktøjet og ASP.NET Web Pages. Der kunne siges meget mere og jeg har tænkt mig at skrive ihvertfald et par posts mere i løbet af de næste par måneder.

Hvis du vil lære mere om WebMatrix og ASP.NET Web pages skal du hoppe ind på

1. http://www.asp.net/webmatrix

2. http://www.microsoft.com/web/webmatrix/features/

3. http://weblogs.asp.net/scottgu/archive/2010/07/06/introducing-webmatrix.aspx

4. http://www.hanselman.com/blog/MicrosoftWebMatrixInContextAndDeployingYourFirstSite.aspx

5. http://blogs.microsoft.co.il/blogs/bursteg/archive/2010/07/07/how-to-create-a-cshtml-and-webmatrix-tweetmeme-helper.aspx

6. http://channel9.msdn.com/posts/Dan/Simon-Calvert--Scott-Hunter-WebMatrix-and-the-new-Razor-Syntax/

Nu skulle du være klar til at gå igang!

Tags:

Jeg har været i skabet - igen

by Administrator 8. July 2010 13:49

image

Hvem har et diskette drev ? … og en licens til Windows 95.

Tags:

Lad mig introducere FileSky – mit nye projekt.

by Administrator 6. July 2010 15:20

Jeg har længe gerne ville lave nogle genbrugelige services ovenpå Windows Azure, og for et par måneder siden tænkte jeg, at nu havde jeg brugt tid nok på at at lege med platformen til at kunne lave noget mere seriøst.

En af grundende til at jeg har lavet FileSky er bla. for at vise hvor nemt og dejligt det er at arbejde med en dele af Windows Azure. Jeg har snakket om Azure en del efterhånden, og det er også blevet til en del blogposts omkring diverse emner indenfor området, men jeg synes alligevel ikke der har været nok fokus på hvor let det i vikrligheden er at udnytte de muligheder der ligger i Azure.

En af de muligheder der er Windows Azure er at abstrahere dele af sit filsystem ud i skyen, og det er præcis det jeg har gjort med FileSky. FileSky gør muligt at gemme filer og få fat i dem igen, alt sammen igennem web services. Det er der sådan set ikke noget nyt i, bortset fra at dine filer gemmes i skyen og ikke på dine egne diske. Du kan bruge FileSky i din egen software, overfor dine kunder eller hvad du nu ellers passer dig. Det bedste af det hele er vel nok at jeg har lavet koden open source så du kan tilpasse den til dit eget behov.

Fordelen ved at bruge FileSky er netop at det spare dig for nogle penge i det lange løb, du behøver ikke tænke på at skifte en disk i din filserver eller holde styr på hverken server licenser, oppetid, trafik flaskehalse eller dyre GB priser.

Der står pt. et par aktive Azure servere med FileSky services kørende (udelukkende til demo!) og du får herunder en lille forsmag på hvordan kan komme igang med at bruge det.

Hvis du selv vil arbejde med FileSky skal du gå på codeplex og downloade koden til projektet: http://filesky.codeplex.com/

Hvis du har lyst til at prøve FileSky med det samme skal du åbne Visual Studio, fyre op i en ny console app’ og tilføje to service referencer til:

http://filesky.cloudapp.net/fileskyservice.svc
http://filesky.cloudapp.net/fileskyuserservice.svc

image

Når du skal lave din klient konfiguration skal du bla. være opmærksom på nogle forskellige indstillinger ift. timeouts osv.

Min app.config ser således ud men du bestemmer selv hvordan du vil bygge din.

Nu er du faktisk klar til at uploade en fil igennem FileSky, så lad os se på hvordan du kan gøre det.

1. Opret en ny bruger

Før du kan gemme filer igennem FileSky skal du oprette en bruger, men det er nu ret smertfrit.

FileSkyUserServiceClient client = new FileSkyUserServiceClient();
string userToken = client.CreateUser("danielmf@microsoft.com");

Det du får ud af denne metode er et usertoken som du skal gemme

2. Gem en fil

Du skal finde en fil du gerne vil uploade og (på vores demo serverer må den ikke være over 10mb, men du kan gemme meget store filer igennem FileSky ellers).

FileStream file = File.OpenRead(@"C:\Users\danielmf\Documents\visual studio 2010
\Projects\TestFileSkyConsole\TestFileSkyConsole\image.jpg"
); FileSkyServiceClient client = new FileSkyServiceClient(); //existing container //string containerName = client.GetContainer(userToken, "bsivtisjsjydhophjxfo"); //new container string containerName = client.GetContainer(userToken, string.Empty); string fileSkyUrl = client.SaveFile(ConvertStreamToBytes(file), containerName,
file.Name, ".zip", userToken); Console.WriteLine(fileSkyUrl); Console.ReadLine();

Du får en aktiv URL tilbage som er et link til den fil du netop har uploadet og den URL skal du selv gemme.

Lig mærke til at vi også opretter en “container” som du også selv skal holde styr på og gemme. Du skal ikke oprette en container for hvert request!

Du kan gemme disse typer af filer igennem denne demo: jpg, wmv, pptx, rar, zip, gif, png, mpeg og docx.

3. Get og Delete alle filer i vores container

Nu har vi altså uploadet en fil og nu vil vi gerne have at vide hvilke filer der er gemt i vores container.

Console.WriteLine("get all images from container");

string[] fileUris = client.GetFiles(userToken, containerName);
foreach (var item in fileUris)
{
    Console.WriteLine(item);
}
            
Console.ReadLine();

Console.WriteLine("delete all files from container");

bool[] deleted = client.DeleteFiles(fileUris, userToken);

foreach (var item in deleted)
{
    Console.WriteLine(item);
}

Console.ReadLine();

Vi kan også slette filer kan du se.

4. Det koster det at hoste FileSky på Azure

FileSky er skræddersyet til Azure og det koster mig pt. 397 kroner om måneden at hoste, både for service hosting og storage. Det er en fast pris der gælder hvis jeg altså ikke går over den plan jeg har valgt at holde mig på.

5. Hvis du er mere interesseret så book mig eller en kollega til en Azure præsentation eller demo

Du kan fange mig på danielmf@microsoft.com og skriv gerne hvad du er interesseret i at høre mere om.

Tags:

Mads Torgersen om PFX på Onsdag i KBH!

by Administrator 5. July 2010 10:50

Hvis du ikke allerede har set det så er det på tide du vågner op!

Mads Torgersen er i Danmark, på ferie, men vi har overtalt ham til at stille op til et eftermiddags event på ITU på Onsdag hvor han vil give et laid-back pitch omkring PFX (parallels).

Det er gratis, det bliver sjovt og sikker også lidt lærerigt.

Hvis du vælger at dukke op så er det et absolut must at du skal have en pakke gajoler med til Mads! Ellers kommer du ikke ind :)

Du tilmelder dig her.

Mads Torgersen om parallelism i C# 4.0

Tags:

Frosts Podcast Show – IronSprog og DLR med Kristian Kristensen

by Administrator 4. July 2010 21:48

Tags:

Jeg fandt et bånd i vores skab!

by Administrator 30. June 2010 12:41

IMAG0383

Bare synd at jeg hverken har en walkman eller båndafspiller i bilen!

Tags:

Azure Diagnostics Manager

by Administrator 28. June 2010 09:49

Hvis du arbejder med Azure kan det være en stor fordel t have adgang til et godt diagnostiseringsværktøj. Sådan et har Cerebrata lavet i form af en WPF klient. Du får bla. en event viewer, performance counters, trace logs og meget andet med værktøjet.

Det er helt klart et “go” værd.

http://www.cerebrata.com/Products/AzureDiagnosticsManager/Default.aspx

Tags:

Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen

Om Mr. Frost

Developer Evangelist i Microsoft Danmark.