2012-02-08 8 views
45

Stiamo cercando di sviluppare un'applicazione intensiva di dati per dispositivi mobili. Il nostro problema centrale èphone gap vs monotouch per l'applicazione intensiva di dati

  1. Dovremo memorizzare un bel po 'di dati sul client
  2. Il cliente vuole l'applicazione di lavorare offline
  3. Il nostro set di abilità è molto sviluppo web C# ASP.Net. Sicuramente non Objective C

Abbiamo pensato a tre possibilità per dev

  1. applicazione Web utilizzando HTML5 storage locale sfruttando la cache dell'applicazione offline. Siamo su un limite di 5 MB per la memorizzazione locale, ma potrebbe essere fino a 2,5 MB per alcuni browser

  2. Applicazione Web tramite PhoneGap per creare un'app nativa. Il grande vantaggio qui è che possiamo usare il file system per l'archiviazione. Il lato negativo è che dovrà passare attraverso App Store (per iOS in particolare) - 30% chuck di entrate per un'app in abbonamento a Apple

  3. Costruiamo l'app utilizzando MonoTouch per Android e iOS. Buono - C# e. Net possiamo farlo. Bad - nessun Blackberry

Domanda

sto lottando per vedere i vantaggi genuini di usare MonoTouch su PhoneGap in questo caso. Quali sono? Ce ne sono?

Come esempio in questo caso sarebbe molto utile salvare i dati nel file system, ma credo che il divario telefonico possa farlo attraverso lo File object. Ovviamente monoTouch farebbe leva su System.IO.

Esistono casi in cui esiste una funzionalità aggiuntiva definita in MonoTouch, in particolare funzioni utili per i dispositivi mobili ad es. Funzioni di geolocalizzazione o tipo di telecamera ?. Oppure il divario telefonico ha praticamente tutti questi coperti.

Cheeky Domande aggiuntive

C'è tutte le altre opzioni che ho perso o altri vantaggi importanti/svantaggi per i tre approcci che ho descritto che ho dimenticato?

Grazie per la competenza di tutti

+2

Si potrebbe dare un'occhiata a AdobeFlex (https://www.adobe.com/de/products/flex.html). Che sostiene anche di essere in grado di compilare i file binari nativi di iOS. – basti

+0

@chiffre. Grazie - ma qual è la lingua utilizzata. Sembra ActionScript quindi è come una variante Flash. È giusto? –

+0

È ActionScript e MXML. Finché utilizzi solo i controlli pre-guidati, tutto è piuttosto semplice. C'è una prova di 60 giorni di FlashBuilder, quindi puoi fare un tentativo.Mi sono bloccato un po 'cercando di creare propri usercontrols/componenti. – basti

risposta

40

Abbiamo appena terminato un'app molto intensa di dati scritta in MonoTouch. L'app accede ai dati SAP, attraverso un livello intermedio, e li espone sull'app. Consente inoltre aggiornamenti diretti dall'app a SAP, sempre attraverso lo stesso livello intermedio.

Siamo in procinto di portarlo su Windows Phone e Android utilizzando MonoDroid.

Mi c'è voluto un po 'per convincere il capo che MonoTouch è stato il modo in avanti, e abbiamo provato un paio di diversi prodotti in anticipo tra cui jQuery Mobile, ExtJS e Obj C.

Il tempo stavo cercando di convincerlo era il tempo dell'acquisizione di Attachmate e sembrava, a volte, come se MonoTouch fosse condannato. Fortunatamente per noi (io), Xamarin si è alzato come la proverbiale Phoenix dalle fiamme, e hanno continuato a sviluppare Mono * per quello che è oggi.

Come sviluppatore C# (e appassionato Mono) la vittoria principale su Obj C o su HTML/JavaScript era il fatto che potevo usare C# per portare a termine il lavoro. La documentazione era molto buona, e quando la doco non lo ha tagliato (recentemente aggiornato) la comunità lo ha fatto.

Il canale IRC è molto attivo, con dipendenti Xamarin e evangelisti della comunità sempre disponibili ad aiutare o fornire informazioni su un problema. Come sono le mailing list.

Un altro vantaggio sono gli Eco-sistemi che stanno crescendo intorno a MT. MT.Dialog rende lo sviluppo di un'interfaccia utente basata su tabella una brezza assoluta rispetto all'equivalente XCode. Accoppiato con questo .Net BCL che è, certamente un sottoinsieme basato su Silverlight, ma ha tutto dalla serializzazione, dall'e-mail alla crittografia ecc ... Se .Net non lo copre, o non c'è un progetto Mono specifico * , puoi ancora utilizzare i plugin ObjC con il tuo codice MT.

Non sono d'accordo sul fatto che MT debba "ancora dimostrarsi" come piattaforma comprovata. Lo stiamo usando e, sebbene siamo un'azienda relativamente piccola, ci sono anche molte grandi aziende che la utilizzano. Alcune delle app presentate da Apple negli annunci TV qui in Aus sono, come riferito, scritte in MT.

Per rimanere obiettivi, i 2 "contro" di MonoTouch per me sono stati che devi ancora essere in grado di leggere ObjC (anche se, tbh, non lo vedo come un ... Come Sviluppatore 'C#' Devo essere in grado di leggere e scrivere una pletora di lingue comunque e il fatto che, storicamente, MonoDevelop è stato un po 'buggato. I principali bug sembrano essere stati schiacciati e, essendo un progetto open source, puoi sempre risolverli e aiutare il resto di noi!

Per rispondere alle vostre preoccupazioni:

  1. Dovremo memorizzare un bel po 'di dati sul client

utilizzare le classi System.IO di Net in C#. Se non siete sicuri di questi, MSDN ha una gran quantità di esempi (MT nasconde l'attuazione iOS di archiviazione di file)

  1. il cliente vuole l'applicazione per lavorare offline

tutti possono fare questo, ma un L'app nativa si sentirà sempre meglio secondo me.

  1. Il nostro set di competenze è lo sviluppo Web C# ASP.Net. Assolutamente no Obiettivo C

MonoTouch è C# - gioca ai tuoi punti di forza e avere un'app in settimane, non mesi!

I miei 2 centesimi! Non esiterei a scegliere di nuovo la stessa strada, ancora e ancora.

+0

Bella risposta. Una domanda per te, quando fai il porting su MonoDroid, suppongo tu debba ricominciare con il codice UI? Ma puoi condividere la logica del business? – ColinE

+0

Se si progetta la soluzione con sufficiente lungimiranza, sarà possibile riutilizzare tutta la logica aziendale tra le proprie app. Tra MonoDroid e MonoTouch ci sono alcuni progetti open source denominati rispettivamente MD.Dialog e MT.Dialog - vi è un considerevole riutilizzo tra queste due librerie in modo che tu possa essere in grado di riutilizzare alcune parti dell'interfaccia utente - non tutte, ma con M * .Dialog puoi scrivere i tuoi elementi in questo caso. – Darbio

+0

@JD Questa è un'ottima risposta. Grazie per questo è davvero utile collegarsi all'esperienza del mondo reale di qualcuno. Con l'esempio di File System e System.IO - non il gap telefonico ti dà lo stesso con l'oggetto File. Esistono notevoli lacune funzionali nello spazio telefonico rispetto a monoTouch? Quelli che farebbero una differenza pratica? O è davvero il vantaggio che stai usando C# piuttosto che JavaScript per dev che sarebbe più facile (almeno per noi). E naturalmente hai una vera app nativa piuttosto che un'app web in un wrapper –

14

Ho usato PhoneGap per un po 'di tempo (su WP7) non utilizzate MonoTouch, però io sono un esperto sviluppatore C#/Silverlight.

Alcuni vantaggi di MonoTouch:

  • i risultati di codice in un'interfaccia utente nativa, dando la migliore esperienza su tutte le piattaforme
  • C# è un 'intraprendente resistenza' linguaggio di programmazione.È adatto allo sviluppo di applicazioni ad alta intensità di dati
  • I tuoi attuali set di competenze ti saranno utili qui
  • Ci sono numerous applications written with MonoTouch disponibili tramite l'app store.

Alcuni svantaggi di MonoTouch:

  • Si scrive codice C# di nuovo le API di iPhone, quindi porta per Android, sarà necessario avere uno strato di interfaccia utente separato per MonoDroid.

Vantaggi di PhoneGap:

  • sta cominciando ad assomigliare ad un quadro abbastanza maturo, con numerous applications written using PhoneGap tutta la gamma di sistemi operativi supportati.
  • C'è un buon supporto di comunità per PhoneGap
  • Utilizza HTML5, che molti vedono come la tecnologia del futuro. Questa è un'affermazione piuttosto ampia, tuttavia, la maggior parte dei grandi giocatori (Microsoft, Adobe, ...) lo stanno appoggiando.

svantaggi di PhoneGap:

  • Esso utilizza JavaScript, probabilmente il most misunderstood language in widespread use!
  • L'interfaccia utente è scritta in HTML. Nonostante i migliori sforzi di framework come jQuery Mobile non si sentirà mai nativo.
  • Poiché dispone di codice "shim" specifico della piattaforma per fornire un'API coerente, troverete problemi specifici della piattaforma. Tuttavia, ho trovato che il team di PhoneGap risolve questi problemi abbastanza rapidamente.

In sintesi, una scelta difficile!

Personalmente andrei PhoneGap, ma non cercare di emulare l'aspetto grafico di qualsiasi sistema operativo specifico, piuttosto, creare la propria interfaccia utente che funziona bene per la vostra applicazione e l'uso che su tutte le piattaforme.

+0

Grazie per la risposta. Molto informativo. Sto chiedendo di MonoTouch http://xamarin.com/monotouch non monCross - intendi MonoTouch - è solo un refuso? –

+0

Sì - MonoTouch :-) – ColinE

+0

@ColinE: hai mai visto un'applicazione intensiva di dati con PhoneGap? Sarei anche interessato all'argomento, ma tutto quello che posso trovare sono app piuttosto "facili". – basti

2

C'è una nuova versione di MonoTouch che è uscita ieri (8 febbraio 2012) - 5.2. Un sacco di nuove funzionalità per rendere lo sviluppo di app iOS più facile e veloce. È possibile accedere a dettagli a questo indirizzo: http://blog.xamarin.com/

Una cosa che rende MonoTouch una tecnologia particolarmente interessante è la possibilità di sviluppare app maledettamente sofisticate che possono essere eseguite senza la connettività Internet. Questo può essere un grosso problema.

Problemi correlati