Tips DuoCode
Ta C# till webben, jag älskar Javascript för vyprogrammering, ett dynamiskt språk löser så många problem för ramverk som Knockout eller Angular där du i ett statiskt typat språk måste använda reflection för att komma runt vissa problem med att pussla ihop vyn med modellen. Dock är det många problem med dynamiska språk för domänmodeller som tex VyModellen i Knockout. Även kontraktet Server > Klient kan bli problematiskt, man kan tex lösa det som jag gjorde här http://andersmalmgren.com/2014/02/05/typed-javascript-contrac....
Verktyg för att kompilera från ett språk till Javacript har ju funnits länge, tex Coffescript eller det statiskt typade TypeScript. Jag stötte just på ett relativt nytt sådant ramverkt, DuoCode http://duoco.de/ som kompilerar C# kod till javascript
Det är baserat på Microsoft Roslyn och verkar mycket kompetent, tex testade jag snabbt att skriva en Type mapping till Knockout och på några minuter hade jag en fungerade Vymodell
using Knockout;
namespace ViewModels
{
public class FooViewModel
{
private readonly Observable<string> bar;
private readonly Observable<string> computed;
public FooViewModel()
{
bar = Global.Observable("HelloWorld"); //Translates to ko.observable("HelloWorld") on client
computed = Global.Computed(() => bar.Get() + "COMPUTED");
}
public Observable<string> Bar { get { return bar; } }
public Observable<string> Computed { get { return computed; } }
}
}
Enligt utvecklarna har de fullt Runtime-stöd vilket verkar stämma då jag testade lite reflection, i teorin betyder detta att man kan ta en light weight IoC som tex Ninject och kompilera den i DuoCode, vilket då ger dig en riktig IoC att använda i ditt Knockout eller Angular projekt, ska testa detta lite mer men borde fungera.
Det ballaste är ju att du kan återanvända kod mellan server och klient så mitt exempel ovan från min blogg med typade kontrakt mellan klient server blir ju en barnlek.