C # è in realtà un linguaggio multipiattaforma?


20

C # (e la piattaforma .net in generale) sembra che stia diventando una buona opzione per le app multi-targeting:

  • framework MS ufficiale .net: sviluppo di windows a tutto campo, sviluppatore asp.net, sviluppatore Windows Phone, ecc.
  • mono e tutti i suoi derivati: monotouch, monodroid: il resto del mondo. Questi strumenti sono oggi RTM.

  • Significa che C # sta diventando un buon linguaggio per il targeting delle piattaforme più popolari: desktop, web e mobile?

  • È ancora meglio usare il linguaggio "nativo" delle piattaforme target (obiettivo C, Java, ecc.)
  • È solo uno schermo di fumo e solo un linguaggio di marketing?

Tieni presente che in realtà sono consapevole che non sarò in grado di copiare / incollare il codice tra piattaforme. Ma sono sicuro che i livelli inferiori di applicazioni (modelli, business, ecc.) Possano essere riutilizzati, ma so che dovrò adattare i livelli superiori (Gui, ecc.) Alla piattaforma. Il mio obiettivo è più focalizzato sulle competenze richieste rispetto alla condivisione di codice tecnico.

[modifica] Io sono ac # sviluppatore in un'azienda che utilizza massicciamente c #. Ecco perché ho parlato di c # in un piano per espandere la gamma di piattaforme target nella mia azienda.

Risposte:


12

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

Le applicazioni Mac create con .NET non appariranno mai come applicazioni native per Mac OS X, e questo è considerato un problema dalla stragrande maggioranza degli utenti di OS X. Questo potrebbe non essere importante per te strategicamente, a seconda che il tuo modello di business valuti la massimizzazione della saturazione rispetto alla massimizzazione della soddisfazione dell'utente, ma è certamente qualcosa da tenere a mente quando fai una scelta.

I sistemi di interfaccia grafica in Linux e Windows sono in qualche modo più flessibili in termini di applicazioni che sembrano "native" e si adattano bene alla piattaforma. Ma lo biasimo principalmente per la mancanza di chiare linee guida per l'interfaccia e per il fatto che gli sviluppatori di applicazioni sono stati storicamente disposti a ignorare quelli che esistono. Molti utenti Mac preferiscono il Mac proprio per la sua interfaccia utente coerente.

Considerando che dovrai adattare il livello GUI alla piattaforma specifica (e possibilmente riscriverlo in una lingua completamente diversa, come Objective-C), che ti consente di sfruttare la piattaforma .NET solo per il codice della libreria. E poi, secondo me, non c'è una vittoria molto chiara per C # su C ++.

Per un rapido sviluppo delle applicazioni, esistono poche alternative migliori di C # e .NET. E spingere fuori un'app rapidamente e averla 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 del proiettile d'argento.


9
"Le applicazioni Mac create con .NET non appariranno mai come applicazioni native per Mac OS X, ...". Lascia che ti presenti MonoMac: mono-project.com/MonoMac

3
@Dimitris: Diciamo solo che sono scettico, nella migliore delle ipotesi. La gente di Qt ci ha provato e le persone saltano ancora su e giù per averlo raggiunto. Hanno torto: non l'hanno fatto. Le applicazioni Qt non sembrano applicazioni OS X native. Sono solo ... sbagliati. Non vedo alcun screenshot nel link che hai suggerito, ma anche se ottengono l'interfaccia utente perfetta, mancheranno comunque tutti i dettagli di comportamento e implementazione. Grazie per il riferimento, però. È qualcosa di cui essere ottimisti.
Cody Gray,

7
@Cody Grey: MonoMac sembra e agisce in modo nativo perché non è un'API multipiattaforma, ma avvolge invece nativamente l'API Cocoa sottostante. Sembra nativo perché è nativo.

1
@Cody Grey: MonoMac è per Mac come MonoTouch è per iOS. Puoi scrivere app native, basta usare C # invece di Obj-C. Non è "rendere WinForms o Gtk belli su Mac".

2
Volevo solo approfondire la conversazione di cui sopra, dato che sono nel bel mezzo della costruzione di un sistema che si estende su iPad e Windows Phone, ASP.NET MVC3 e NT Services interfaccia con un sistema di controllo della robotica. Mono, MonoDroid, MonoTouch, ecc., Come sottolineato da Cody in precedenza, è un modo per scrivere codice in C # che ti consente di sfruttare la potenza di C # e .NET Framework (incluso Linq) godendo allo stesso tempo di un accesso illimitato al tuo API "native" della piattaforma scelta ... evitando anche i numerosi problemi di gestione della memoria inerenti alla maggior parte del codice nativo C / C ++ / ObjC.
Richard Turner,

6

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

Fondamentalmente, è necessario rivedere quale lingua e funzionalità del framework si desidera sfruttare in un progetto concreto e verificare se sono presenti in implementazioni .NET non ufficiali.

Se ti aspetti una soluzione di compilazione e distribuisci ovunque, ti sbagli: devi fare un case study.


Sono un sacco di TLA !
Tamlyn,

@tamlyn yeah hahahaha
Matías Fidemraizer

Ora che gran parte di .NET è open source, le cose sono cambiate ....
Ian

@Ian Certo .......
Matías Fidemraizer,

2

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


1
Novell ha recentemente rilasciato un'estensione VS 2010 in modo da poter sviluppare il codice Mono in VS.
Morgan Herlocker,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.