C # è in realtà un linguaggio multipiattaforma?

20

C # (e la piattaforma .net in generale) sembra che stia diventando un'opzione valida per le app con targeting multiplo:

  • framework MS .net ufficiale: sviluppo di finestre complete, asp.net dev, Windows phone Dev, ecc.
  • mono e tutto il suo derivato: monotouch, monodroid: il resto del mondo. Questi strumenti sono oggi RTM.

  • Significa che C # sta diventando una buona lingua per il targeting delle piattaforme più popolari: desktop, web e mobile?

  • È ancora meglio usare la lingua "nativa" delle piattaforme di destinazione (obiettivo C, Java, ecc.)
  • È solo uno schermo di fumo e solo un linguaggio di marketing?

Nota che sono consapevole che non potrò copiare / incollare il codice tra le piattaforme. Ma sono sicuro che gli strati inferiori di applicazioni (modelli, business, ecc.) Possono essere riutilizzati, ma so che dovrò adattare gli strati superiori (Gui, ecc.) Alla piattaforma. Il mio obiettivo è più focalizzato sulle competenze richieste rispetto alla condivisione tecnica del codice.

[modifica] I am uno sviluppatore c # in un'azienda che utilizza in modo massivo c #. Ecco perché ho parlato di c # in un piano per espandere la gamma di piattaforme di destinazione nella mia azienda.

    
posta Steve B 09.05.2011 - 11:57
fonte

3 risposte

12

Sì, in generale, .NET Framework è ottimo per le app destinate a una vasta gamma di dispositivi. Ma questo non è unico per .NET; Java lo stava facendo da molto tempo. La cosa da tenere a mente è che non esiste un'alternativa reale agli strumenti nativi per una determinata piattaforma.

Le applicazioni Mac che crei con .NET avranno mai come applicazioni native Mac OS X e questo è considerato un problema dalla maggioranza di utenti OS X. Ciò potrebbe non essere importante per te in modo strategico, a seconda che i valori del tuo modello aziendale massimizzino la saturazione per massimizzare la soddisfazione degli utenti, ma è certamente qualcosa da tenere presente quando si effettua una scelta.

I sistemi GUI in Linux e Windows sono un po 'più flessibili in termini di applicazioni che sembrano "native" e si adattano bene alla piattaforma. Ma do la colpa soprattutto alla mancanza di chiare linee guida per l'interfaccia e al fatto che gli sviluppatori di applicazioni sono stati storicamente disposti a ignorare quelli che esistono. Molti utenti Mac preferiscono il Mac con precisione perché della sua interfaccia utente coerente.

Considerando che dovrai adattare il livello della GUI alla piattaforma specifica (e possibilmente riscriverlo interamente in una lingua diversa, come Objective-C), questo ti lascerà sfruttare la piattaforma .NET solo per il codice della libreria. E poi non c'è una vittoria molto chiara per C # rispetto a C ++, a mio parere.

Per lo sviluppo rapido di applicazioni, esistono poche alternative migliori di C # e .NET. E spingere rapidamente un'app verso l'esterno e averlo immediatamente disponibile su una varietà di piattaforme è sicuramente un vantaggio commerciale. Ma per le vere applicazioni multipiattaforma che mirano a soddisfare veramente l'utente, non è necessariamente la soluzione pallottola d'argento.

    
risposta data 09.05.2011 - 12:09
fonte
6

Microsoft .NET è l'implementazione CLR, DLR, BCL, CLI e CLS ufficiale. Altre società, gruppi, comunità o gruppi di lavoro non sono associati a Microsoft in modo che questi possano avere un'implementazione 1: 1 dell'ultima versione di framework e lingua.

Fondamentalmente, è necessario rivedere le funzionalità linguistiche e di framework che si desidera sfruttare in un progetto concreto e verificare se queste sono presenti in implementazioni .NET non ufficiali.

Se ti aspetti una soluzione compilabile, una volta distribuita ovunque, ti sbagli: devi creare un case study.

    
risposta data 09.05.2011 - 12:10
fonte
2

Uso C # su giochi in esecuzione su macchine XBOX e Windows, lo uso in app Compact Framework per soluzioni di robotica, utilizzo lo sviluppo di MonoTouch per iPad, ho alcune app Web in esecuzione su Linux e poche altre soluzioni. Di solito c'è un modo come fare la tua cosa su una determinata piattaforma. Lo strato principale è pressappoco lo stesso per la maggior parte di essi (in effetti, lo studio del caso aveva bisogno). Il problema - e lo considero una serie - è l'ambiente di sviluppo. Sono abituato a Visual Studio e alle sue funzionalità. Ma MonoDevelop, ad esempio, mi fa impazzire.

    
risposta data 12.05.2011 - 14:55
fonte

Leggi altre domande sui tag