PerSalmi.NET

Swedish .Net software developer...
# Wednesday den 13 April 2011

Det finns hur mycket nytt som helst att labba med den närmaste tiden…

Silverlight 5 Beta släpptes idag, plocka ner verktyg och SDK här:

Silverlight 5 Tools Beta
Tillägg för Visual Studio 2010 Service Pack 1 för utveckling av Silverlight 5 Beta och Microsoft WCF RIA Services V1.0 SP2 Preview (April 2011) applikationer.

Microsoft® Silverlight™ 5 Software Development Kit Beta
Microsoft® Silverlight 5 SDK Beta filer och verktyg för utveckling.

Massor av andra nya nerladdningar finns också att hämta, mest nyheter om asynkron programmering men även en del ASP.NET relaterat och nytt training kit för Windows Azure.

Task-based Asynchronous Pattern
Djupgående dokumentation om nya Task-based Asynchronous Pattern (TAP) för .NET Framework.

TPL Dataflow CTP
Förhandsversion av System.Threading.Tasks.Dataflow.dll.

TPL Dataflow
Introduktion till .NET bibliotek för parallella applikationer.

Visual Studio Async CTP
Visual Studio Async CTP (SP1 Refresh) tillägg till Visual Studio 2010, ny förenklat stöd för utveckling av asynkrona applikationer.

C# Language Specification for Asynchronous Functions
Specifikationer för C# asynkrona funktioner.

ASP.NET Web Pages with Razor Syntax
ASP.NET Razor Syntax ramverk och en del av nya verktyget WebMatrix för utveckling av webbsajter.

Windows Azure Platform Training Kit
Windows Azure Platform Training Kit utbildningspaket för Windows Azure, SQL Azure och Windows Azure AppFabric.

Wednesday, 13 April 2011 22:37:16 (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]
.Net | ASP.NET | C# | Silverlight | Visual Studio
# Tuesday den 16 March 2010

Min tidigare postning om kodkontrakt tänkte jag föja upp med en länk till Roy Dictus blogg. Han har ett snyggt exempel på hur man kan lägga upp sin användning av kontrakt tillsammans med testdriven utveckling där man baserar sin kod på en basklass som utrustats med kontrakt. Kolla in Roys artikel på Code Contracts By Example.

image

Man kan väl kanske ha åsikter om hur stiligt det är att ha en klass med namn som börjar med “I” som annars brukar vara reserverat för interface i C#, men jag tycker trots detta att det är ett snyggt sätt att uttrycka krav i form av kodkontrakt.

Tuesday, 16 March 2010 22:59:38 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]
.Net | C# | Visual Studio
# Saturday den 20 February 2010

Kodkontrakt är en ny teknik som kommer i samband med Visual Studio 2010. Vad är då detta med konkontrakt? Lite förenklat kan man väl säga att det är ett sätt att kunna skriva kod som kontrollerar att inkommande och utgående parametrar och resultat är rimliga och håller sig inom förväntade gränser. Kan alltså vara riktigt bra för att se till att den som använder dina klassbibliotek inte skickar in dåliga parametervärden och ställler till det för sig.

Kodkontrakt har varit i fokus och diskuterats i min närhet vid flera tillfällen de senaste månaderna, dels vid ett frukostseminarie  i december och senare när jag själv presenterade nyheter kring .NET 4 på en konferens i Sälen för några veckor sedan. Först var vi lite besvikna eftersom det verkade som kodkontrakten inte skulle fungera ihop med Visual Studio 2010, de fanns inte med i installationen. Vi hörde rykten om att teamet på Microsoft Research inte hade levererat till Visual Studios byggteam, så kontrakten kom att saknas i betaversion 2.

imageEn del extra efterforskningar efter frukostseminariet visade dock att kontraktstödet faktiskt finns och fungerar, det kräver bara en liten extra nerladding och en separat installation. Både vi som lyssnade och killen som höll frukostföredraget var alltså besvikna i onödan. Det visade sig dessutom fungera bra med Visual Studio 2010 Beta 2 samt nu med den nya RC-versionen.

Det man behöver är antingen Code Contracts Standard eller Premium som finns att ladda ner från Code Contracts på Microsoft DevLabs. Teamet bakom kodkontrakten har mer material i form av publicerade forskningsrapporter och användarhandledning i PDF-form på sin sajt hos Microsoft Research, läs dem här: Contracts - Microsoft Research. Om man vill delta i diskussioner eller ställa frågor finns även ett forum specifikt om kodkontrakt på: Code Contracts MSDN Forum

Ok, det var lite allmän info. Hur kommer man då igång att använda kontrakt i sin dagliga kodning?

Efter att man installerat kontraktstödet så får man en ny panel i projektegenskaperna, Code Contracts:

image

Ovan ser man att jag aktiverat både runtime-kontroller och statiska kontroller som körs vid kompilering. På min labbmaskin har jag installerat premiumvarianten av kontraktstödet, därav har jag både runtime och statisk kontroll. Det är alltså denna projektinställning som behövs för att kontrakt som skrivits in i koden ska vara aktiva och kontrolleras antingen vid körning eller kompilering.

För att visa hur kontrakt för före- och eftervillkor fungerar har jag en mycket enkel metod i mitt C# projekt:

public int PositiveAdd(int a, int b) 
{
    Contract.Requires(a >= 0);
    Contract.Requires(b >= 0);
    Contract.Requires((a + b) > 0);
    Contract.Ensures(Contract.Result<int>() == (a + b));
    return (a + b);
}

Villkoren ovan är avsedda att kontrollera att båda inparametrarna är större än noll och att de tillsammans också ska vara större än noll. Kontrollen av slutresultatet verifierar att returvärdet är ett heltal som är summan av inparametrarna. Detta är ju som ni ser extremt förenklat bara för att visa just själva kontrakten. Requires-raderna ger alltså de “före”-villkor vi vill ha medan Ensures ger oss “efter”-kontroller.

Om man kör kod som utrustats med kontrakt för före- och eftervillkor i sin debugger kan man tydligt se att Contract.Requires(…) och Contract.Ensures(…) inte är kodrader som exekveras som vanligt. I denna sekvens av bilder från en debugger session visar det sig hur kontrakten kontrolleras vid exekvering av metoden.

Vi börjar med att först köra alla sk pre-conditions för att kontrollera utgångsläget när metodens kod påbörjas:

CropperCapture[4]

CropperCapture[5]

CropperCapture[6]

Nästa steg är mer överraskande, det är här man verkligen ser att Contract raderna inte är en vanlig del av metoden, debuggern visar nu att metodens kod kommer att exekvera från början av metodens kodblock:

CropperCapture[7]

Här fortsätter sedan körningen med att utföra det verkliga jobbet i vår metod:

CropperCapture[8]

Den funktionella delen av metoden är nu klar, i normala fall är vi nu färdiga att returnera resultatet till den anropande kodsekvensen:

CropperCapture[9]

Men eftersom kontrakten är aktiverade så är det istället dags att gå igenom och verifiera alla “efter”-villkor:

CropperCapture[10]

Som sammanfattning är alltså Contract-raderna inte en del av metoden som körs procedurellt!

Detta var kontroller för enkla före- och eftervillkor, kontraktstödet innehåller fler varianter av kontroller, men de får vi ta upp en annan gång.

Saturday, 20 February 2010 00:14:08 (W. Europe Standard Time, UTC+01:00)  #    Comments [1]
.Net | C# | Visual Studio
# Thursday den 16 April 2009

imageHar du lättare att lära dig med hjälp av bilder? Daniel Solis har skrivit en bok som lär ut grunderna i C# på ett lite annorlunda sätt än de vanligaste böckerna om programspråk. Hans bok heter Illustrated C# 2008 och går igenom kärnan i C#, fokus ligger på att förklara koncept som typer, minne, variabler, klasser och språkkonstruktioner i objektorienterad programmering samt moderna C# delar som t ex extension methods.

Daniel går vidare med kapitel om delegater, event. Boken avslutas med ett kapitel om generics som grundläggerl en introduktion till LINQ och till sist ett kapitel om grunderna i flertrådad/asynkron programmering.

Den som är intresserad kan faktiskt läsa boken gratis, Red Gate har gjort det möjligt att ta del av boken i PDF form helt gratis, ladda ner e-boken från: Red Gate - Illustrated C# 2008

Uppdaterat 2009-12-28: Tyvärr finns inte e-boken tillgänglig längre. Man kan dock hitta bästa pris här.

Thursday, 16 April 2009 12:38:35 (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]
C# | Kompetensutveckling | Läsning
# Saturday den 14 March 2009

image Gänget bakom MSDN Managed Newsgroup Support har startat upp ett projekt för att bygga upp en Visual Studio Solution med kodexempel för C#, VB och C++. Nu är det ju inte unikt att det publiceras exempelkod, men att ha en enda källa som tar ett samlat grepp på ett antal grundläggande teknikområden och låter de ingående exempelprojekten samspela och kombineras i alla tänkbara varianter känns fräscht. Det är ofta man hittar exempel som går i en riktning tex interop från C# klient till C++ server medan det man egentligen letar efter är det omvända. Här vrider man och vänder på de flesta kombinationer!

Anledningen att jag fastnade för projektet direkt jag såg det är att vi under ganska lång tid jobbat med ett brownfield (C++) system där olika delar bytts ut och strukturerats om och därmed har nya delar gjorts i managedkod (C#), jag tror knappt det är någon variant av interop som inte varit inblandad i det hela. Hade detta funnits och våra google-master-skills hade låtit oss hitta det förra sommaren så hade det varit perfekt.

I dagsläget finns följande tekniker med i projektet:

  • COM & ActiveX
  • Dataaccess
  • Office-anpassning
  • Klassbibliotek
  • RPC & IPC

Kolla in All-In-One Code Framework på CodePlex. Förhoppningsvis kommer det att växa med massor av exempel, tekniker och kombinationer ganska snart. Förresten, det vore inte dumt att blanda in Windows Mobile i leken också för att öka på antalet möjliga kombinationer i de fall det är teknik som är tillämpbar på telefoner och handenheter.

Saturday, 14 March 2009 00:57:07 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]
.Net | C# | C++ | VB | Visual Studio
# Tuesday den 19 February 2008

Just nu sitter vi och kör vår C#/.NET grundkurs ute hos en kund och har diskuterat C# XML dokumentation i kodkommentarer. För att få ut bästa möjliga resultat av den dokumenterade koden så kan det vara intressant att titta på verktygen Sandcastle och Visual Studio tillägget DocProject. Alternativt finns verktyget doc-o-matic men då blir det en del licenskostnader.

image

Ett verktyg som kan vara bra i samband med denna dokumentation är ett tillägg för stavningskontroll i Visual Studio. Mer information och nerladdning finns här... Om ni använder 64-bitars Vista som plattform så behöver ni titta på tipsen längst ner i artikeln alldeles innan kommentarerna börjar för att registerera DLL-filen manuellt.

Tuesday, 19 February 2008 12:55:35 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]
.Net | C# | Visual Studio
Blog & Contact
Per Salmi
Per Salmi
Min LinkedIn Profil

Jag arbetar på Combitech AB i Linköping med konsultuppdrag och utbildning inom Microsoft .NET området. Kontakta mig gärna om ni har frågor, behov av konsulttjänster eller är intresserade av utbildning inom .NET.

Copyright © 2017 Per Salmi

Bloggmotor: newtelligence dasBlog 2.3.12105.0

Sign In
Statistics
Total Posts: 219
This Year: 0
This Month: 0
This Week: 0
Comments: 40

Datorer
All Content Copyright © 2017, Per Salmi