ASP.NET MVC 4 Web API och EF 4.3 Database Migration

Epsilon stod värd för dagens dragning om nyheterna i ASP.NET MVC 4 och kringliggande tekniker. Talare var Fredrik Normén. Nog för att det var mycket kod som var på en nivå bortom min, typ iQueriable etc, så fastnade åtminstone en del av koncepten som är på ingång.

Webbprestanda direkt med bundling och minification

Något likt ASP.NET 2.0’s temahantering innehåller MVC 4 ett enkelt sätt att hantera stilmallar och javascript, fast det nyutvecklade är att man utan större problem kan få alla CSS-filer och Javascript-filer ihopklumpade. Då blir det precis som många prestandaivrare färre och mindre filer. Anledningen är att man helst vill minska antalet förfrågningar till servern då det för varje fil uppstår en viss väntetid, något som särskilt drabbar de med seg uppkoppling.

Detta är onekligen ett steg i rätt riktning och jag hoppas att utvecklarna förstår att rensa katalogerna med CSS och Javascript så man inte får varenda fil de har i sin utvecklingsmiljö oavsett om den används eller inte.

Själv har jag kört med ett så kallat byggskript sedan länge för att göra samma sak men detta är värt att testa. Fördelen med byggskriptet är att jag manuellt väljer vilka filer som ska inkluderas, vilket också är nackdelen då jag förstått att vissa tycker det är bökigt vid förändringar.

Något som oroar mig lite är hur cache-hanteringen kommer fungera. Microsoft trummade för att det är en bra grej att exempelvis CSS-filen får en ny adress (genom en hash-kod via query string vid anropet) och således skulle uppdateras om innehållet i någon av de ihopklumpade CSS-filerna skulle ändras. Dock är jag inte så säker på det då man med stor sannolikhet måste sätta kort expiration date på själva HTML-filen.
Serveras HTML-filen från webbläsarens cache för att den nyligen hämtats så kommer inte webbläsaren se att det finns en ny CSS- eller Javascript-fil. Eller har jag missat något?

ASP.NET MVC 4 Web API

Microsoft har insett att praktiskt taget varenda webbapplikation av idag använder någon form av webbservice, att utvecklarna inte är stormförtjusta i WCF (Windows Communication Foundation) och att moderna mobilappar ofta pratar JSON med befintliga webbplatser. Nu har de försökt återuppfinna webbservices, ditchat SOAP och låter alla REST-fanatiker ha något att jobba med.

En sak Fredrik Normén visade som jag ännu inte brytt mig om är att använda Fiddler för att ansluta till webbservicen. Känner till Fiddler sedan tidigare men inte sett storheten då det på ytan för något år sedan såg ut att göra samma sak som Firebug till Firefox. Dock var det snyggt med HTTP-koder, JSON-bläddrare och att man kunde ställa in HTTP-frågan direkt för att exempelvis ändra frågan från JSON till XML. Om man nu inte gillar JSON eller XML kan man bygga egna så kallade formaters och helt ha kontroll över hur resultatet presenteras – det kan säkert vara värdefullt för att lura gamla system att samarbeta 🙂

Inbyggt fanns möjligheten att ha dessa API:er körandes i en console applikation, vilket är kanon för utvecklare som inte vill köra en webbserver på utvecklingsmaskinen eller kanske vill få lite loggning i konsollen. Sen om detta är stabilt nog eller tillräckligt snabbt för att kunna köras istället för en Windows-service fick jag inget riktigt svar på. Det kanske kan vara vettigt om man vill erbjuda ett tillfälligt API men inte är sugen på någon av de vanliga alternativen.

WebSockets, SignalR och mobila ting

I väntan på fulla versionen av kommande Windows 8 Servers möjlighet med WebSockets har alternativet SignalR släppts öppet på GitHub. Det är alltså ett asynkront signalsystem som ger ett spännande samspel mellan server och klient. Klienten, webbläsaren alltså, kan med detta leka hub och ett av exemplen Microsoft haft för detta är att från en webbläsare fjärrstyra vad andra ser i sina webbläsare. Det ska tydligen skala fantastiskt bra, upp till några tusen klienter per server.
Kanske blir en intressant realtidsinteraktion på någon modig organisations sociala intranät 😛

Ett annat alternativ för .NET-utvecklare som är nyfikna på realtidsfunktion är XSockets.

Jesper Lind från Nodestar slängde ihop något liknande som Kreativ stugas “One more thing” under Travelhack – Tjötvagnen – som använder liknande teknik.

Dragningen drog ut på tiden så man fick knappt syn på de mobila delarna. Dock kan det sägas att MVC 4 har mobilanpassade mallar och att det går att sätta olika vyer beroende på vad för typ av enhet som används. Kanske är vettigt för att komma undan några av prestandanackdelarna som man får vid valet responsive design med onödigt högupplösta bilder och extra uppmärkningskod.

Ladda ner ASP.NET MVC 4 beta