lördag 4 april 2009

Från web 1.0 till web 2.0 automatiskt i .Net

Ben Livshits, Microsoft Research, presenterade deras omtalade projekt Volta. Tyvärr har det uppstått en namnstrid (dammsugarna?) så de fick ta bort projektet från webben. Googla på "volta microsoft" och kolla den cache:ade kopian.

Målet med Volta är att replikera webbappen på serversidan och mha jämförelse kontrollera att klienten funkar som den ska.

Decomposition
Volta tar valfri webbapplikation i .Net och delar upp den i en rik klientdel och en serverdel mha så kallad decomposition. Det innebär en automatisk övergång från servertunga web 1.0 till rika klienter och web 2.0. Volta skapar också en replika av klientdelen som körs på servern. Replikan kör klientkoden i C# istället för JavaScript vilket gör den relativt snabb och minnesnål (strax över en 1 Mb ram per replika).

Hos klienten skickas alla användarhändelser via en webbläsarplugin eller JavaScript-interpretatorn till replikan som körs på servern. Händelser som musklick eller inmatning på klienten kräver bara ca 2-3 bytes data över linan och kan skickas i batchar.

Innan request accepteras och körs så jämförs replikans tillstånd med requestet från klienten. Om någon har injicerat skript eller gjort en CSRF med färdigifyllda formulärfält så kommer jämförelsen inte stämma och attacken stoppas.


Frågor
Distribuerade webbapplikationer och mashups gör förstås den här tekniken svårare att använda. Därtill ger nätets nyckfullhet ytterligare problem eftersom ordningen på request från klienten och klienthändelser till replikan kan skilja sig.

En annan mer grundläggande fråga gällde faran i att låta ett ramverk som Volta dela upp din applikation. Volta har i sig ingen aning om vilken information som är hemlig och vilken som är OK att skicka till klienten. T ex rabattkuponger som ska kollas på servern men som vid en automatisk splitt kan råka hamna på klienten där de avslöjas. Microsofts lösning på det problemet är att granska applikationen antingen manuellt eller med verktyg.

Inga kommentarer: