Le guerre telefoniche di oggi sono essenzialmente un altro sapore delle vecchie guerre dei browser, o la vecchia decisione di "Windows vs Web" ... quale tecnologia utilizzare.
La tua domanda e il tuo profilo mi dicono che hai più familiarità con lo stack Microsoft, quindi terrò la mia risposta diretta in questo modo. Sono sicuro che i non-microsoft avranno i loro pezzi di saggezza che potranno aggiungere.
Per le app telefoniche, l'esperienza utente è la chiave. Tuttavia, usando la filosofia di scrivere una volta, correre ovunque, potresti finire nei guai. Una tecnologia di sviluppo che utilizzi può sembrare / funzionare alla grande su una piattaforma, può essere inesistente per un'altra (lo hai colpito sopra per quanto riguarda Silverlight per telefoni non Windows e flash per iPhone)
Ecco alcune opzioni di piattaforma diverse:
Android: per coloro che nel mondo .NET vogliono svilupparsi per Android, Mono sembra essere il modo migliore per andare se vuoi che venga eseguito specificamente per Android.
iPhone - MonoTouch è la strada da percorrere per iPhone a questo punto. Entrambi sono attualmente di proprietà di Novel, ma sono licenze diverse. La differenza principale è che le app MonoTouch sono compilate in base al codice macchina scelto per iPhone.
Windows Phone - La tua migliore esperienza utente qui sarebbe, come hai detto, Silverlight.
Blackberry - anche Blackberry è uscito con alcuni strumenti di sviluppo diretti allo sviluppatore .NET. Ancora una volta, funzionerebbero al meglio con Blackberry, ma anche qui le opzioni cross platform sono minime.
Conclusione: secondo me, hai due modi per andare qui:
In primo luogo, puoi creare un'architettura in cui hai i tuoi livelli intermedi e il back-end comune usando gli oggetti POCO, ospitando questo nel cloud. È quindi possibile indirizzare l'utente a un'interfaccia utente diversa quando si rileva la piattaforma che sta colpendo il sito. Ciò presenterebbe l'esperienza ottimale per l'utente a seconda della piattaforma che sta utilizzando. La cosa brutta è che creerai più interfacce utente diverse. Utilizzando alcuni schemi standard, è possibile farlo, ma renderà più difficile il debug e la manutenzione. Questo è il tipo di architettura che Miguel de Icaza stava immaginando quando architetta Mono.
Il secondo è andare con il percorso HTML 5 / Javascript. HTML 5 è ancora un po 'confuso riguardo le specifiche (anche se era HTML 4), ma sembra essere il minimo comune denominatore per quanto riguarda ciò che verrà eseguito su ciascun telefono. Ci vorrà un po 'più di lavoro e imparerai a ottenere i "pezzi" necessari per costruire un'applicazione avvincente di HTML 5 se non l'hai già fatto prima, ma lo sforzo potrebbe valerne la pena. Per i tuoi requriements, tuttavia, questo potrebbe non essere adatto alle tue esigenze.