.net - update - Silverlight vs Flex




update silverlight mac (15)

La mia azienda sviluppa diversi tipi di applicazioni. Molte delle nostre attività derivano dal fare app di tipo multimediale, in genere eseguite in Flash. Tuttavia, ora quel lato della casa sta iniziando a migrare verso lo sviluppo Flex.

La maggior parte del nostro altro sviluppo è fatto usando .NET. Sto cercando di dare una spinta verso lo sviluppo di Silverlight, dato che sarebbe meglio sfruttare gli sviluppatori .NET sullo staff. Preferisco la piattaforma Silverlight sulla piattaforma Flex per il semplice fatto che Silverlight è tutto il codice .NET. Abbiamo più sviluppatori .NET sullo staff rispetto agli sviluppatori Flash / Flex e la maggior parte dei nostri sviluppatori Flash / Flex sono artisti grafici (non veri programmatori). L'unico motivo per cui spingono verso Flex in questo momento è perché sembra il passo logico di Flash.

Ho fatto uno sviluppo utilizzando entrambi, e onestamente credo che Silverlight sia più facile da lavorare. Ma sto cercando di convincere le persone che sono solo sviluppatori Flash.

Quindi, ecco la mia domanda: se andrò ad un incontro per lodare Silverlight, perché una società vorrebbe andare con Silverlight invece di Flex? Oltre all'ovvio "non tutti hanno Silverlight", quali sono i pro e i contro per ciascuno?


Abbiamo affrontato lo stesso problema e Flex ha vinto le mani. Inizialmente, i nostri sviluppatori .NET erano preoccupati, ma dopo aver lavorato così a lungo nel dolore di Ajax e JavaScript, ora AMANO e si divertono molto a lavorare in Flex.

Ecco un semplice test per te. . . prova a trovare almeno 3 esempi di applicazioni Silverlight reali (che non siano giochi, lettori video o gadget). Quindi fai lo stesso per Flex.


Alla fine della giornata, i tuoi sviluppatori non dovrebbero dettare la tua tecnologia. Questa è assolutamente una decisione sul prodotto che dovrebbe essere basata sui tuoi utenti.

Se si sta distribuendo sull'Internet del consumatore, Flash Player o AJAX sono la soluzione giusta. Se si sta distribuendo su una LAN privata per un'impresa .net, si hanno opzioni.


Ci sono due domande qui: Silverlight vs Flash come piattaforma e Silverlight vs. Flex come framework RIA.

La prima domanda dipende dal tuo lasso di tempo. Flash Player ha una copertura superiore al 95%, Silverlight non è affatto vicino a questo. Tuttavia, Silverlight potrebbe arrivare lì, dopo tutto è supportato da Microsoft. Se miri a lanciare un sito la prossima settimana e desideri un vasto pubblico, Silverlight non è un'opzione. Se miri a lanciare un'applicazione davvero interessante che tutti vorrebbero utilizzare è un po 'diversa, se la tua app è abbastanza buona il tuo pubblico di destinazione può installare Silverlight solo per poterlo eseguire.

Per quanto riguarda la seconda domanda, è questione di quanto sia facile sviluppare applicazioni in Silverlight. Flex non è solo un insieme di widget, è un framework molto grande che fa un sacco di cose che facilitano il lavoro dello sviluppatore. È possibile scrivere le stesse applicazioni utilizzando solo l'API Flash principale, ma sarebbe molto più lavoro. A seconda di ciò che è disponibile in Silverlight, questo dovrebbe essere un fattore importante al momento di decidere. Se riesci a ridurre i tempi di sviluppo, ne valgono due piattaforme?


Come Kibbee ha accennato in precedenza, l'argomento di sfruttare gli sviluppatori .Net esistenti non contiene molta acqua. È impossibile essere esperti in tutti gli aspetti dello sviluppo .Net. La piattaforma è troppo grande. Lo stesso vale per Java. L'unica cosa che Silverlight ha imparato dal punto di vista delle abilità è che puoi codificare il tuo linguaggio .Net preferito. Questo vantaggio è piuttosto piccolo se si sta già facendo uno sviluppo Web significativo che utilizza JavaScript poiché lo script Action è una variante. Quindi, davvero, convertire un programmatore in Flex o Silverlight significa apprendere l'API della piattaforma.


Flash Player è disponibile e supportato ufficialmente in quasi tutte le piattaforme desktop (Windows, Linux, Mac) mentre Silverlight sarà supportato principalmente in Windows.

il seguente article fornisce una comparazione di entrambe le piattaforme.


I programmatori Silverlight non sanno cosa stanno perdendo, quando si tratta di Flex. Silverlight non ha il modello di componente e le capacità di attivazione degli eventi di Flex. Usando XNA e C #, un mio amico deve saltare tutti i tipi di cerchi per far funzionare la sua applicazione Silverlight. Poi, deve essere consegnato a un designer per farlo sembrare a metà strada decente.

Ascolta i podcast di deepfriedbytes.com su Silverlight e sentirai come anche un paio di ragazzi che realmente spingono Silverlight, riconoscono alcuni di questi problemi. (Penso che , se ricordo bene, uno dei ragazzi lavora per Microsoft, ma potrei sbagliarmi - l'ho ascoltato la scorsa settimana). Sono d'accordo sul fatto che Silverlight non è ancora pronto per qualsiasi applicazione enorme, nel suo stato attuale.

Vorrei andare con Flex, per un approccio pulito e diretto, specialmente se hai già familiarità con Flash e ActionScript 3.0. Flex ha molto più senso, secondo me - Silverlight deve ancora maturare.


Il problema con Silverlight è che ci sono ancora molte persone che non lo hanno installato. Inoltre, non sono sicuro di quanto bene i tuoi sviluppatori .Net esistenti saranno in grado di sfruttare le loro competenze esistenti se hanno familiarità con la codifica .Net più tradizionale lato server.

Quali sono le tue ragioni per spingere Silverlight su Flex? Se devi chiedere alla community di SOFlow per motivi, sembra strano che tu sia così disposto a spingerlo.


Non dimenticare:

Flex è molto multipiattaforma, poiché è compilato usando come compilazione Java, il che significa che puoi facilmente utilizzare Mac o Linux quando sviluppi applicazioni Flex. Ho il mio attuale setup di cruisecontrol (che usa Linux) che costruisco le applicazioni Flex di costruzione, ma i ragazzi dello sviluppo usano sia Mac, Linux che Windows.

Nella mia esperienza, gli sviluppatori java si sentono a loro agio con Flex Builder dato che si basa su Eclipse.


Non otterrete mai un voto equo a questa domanda su SO in quanto ha così tanti sviluppatori Microsoft.

Inoltre, probabilmente la gente voterà questa risposta, il che dice tutto davvero.

Dico ai tuoi sviluppatori di provare entrambe le piattaforme e vedere quali preferiscono.

Per rispondere ai commenti qui sotto, ho notato che mentre ci sono molte risposte che raccomandano Flash / Flex, quelle per Silverlight hanno molti più voti positivi. Non è questione di mentire, è solo favorire ciò che ti è familiare, non necessariamente la migliore piattaforma.


Penso che Silverlight e XAML siano preferibili a ActionScript e sebbene non abbia familiarità con gli IDE di ActionScript, ho familiarità con VS2008 ed Expression Web / Blend e sono ambienti di sviluppo molto buoni e sempre migliori. Vorrei andare con Silverlight, e penso che la chiave per convincere gli utenti a installare il plug-in è avere una buona pagina di rilevamento plug-in che spieghi cos'è SL e perché ne hanno bisogno. Per un esempio, vai su http://memorabilia.hardrock.com/ e provalo con il tuo plug-in SL disabilitato.


Penso che dovresti considerare Silverlight come un gioco a lungo termine, proprio come sembra che Microsoft stia facendo. C'è un evidente equilibrio su quando utilizzare Silverlight rispetto a Flash quando sei preoccupato di raggiungere e installare la base, ma qui ci sono alcuni motivi per cui Silverlight è una buona strada da seguire:

  1. Vantaggio del secondo mover - Proprio come Microsoft ha creato un "migliore Java" con .NET, è in grado di vedere come si progetta un plug-in RIA da zero, oggi. Hanno il vantaggio di sapere come la gente usa il web oggi, qualcosa che gli inventori di Flash non avrebbero mai potuto indovinare con precisione. Flash può aggiungere funzionalità, ma non possono realisticamente bloccare la piattaforma e ricominciare da capo.

  2. Familiarità degli sviluppatori - Sebbene Silverlight sia un nuovo modello, non è del tutto sconosciuto agli sviluppatori. "Otterranno" il modo in cui Silverlight funziona molto più rapidamente di quanto capiranno attivando un nuovo ambiente di sviluppo con un nuovo linguaggio di scripting e nuovi paradigmi di eventi.

  3. Liberarsi del modello di timeline in Flash - Flash è stato originariamente creato per animazioni basate su fotogrammi chiave e, sebbene esistano modi per astrarre questo aspetto, è al centro del funzionamento di Flash. Silverlight si scava per un modello centrato sull'applicazione.

  4. ScottGu - ScottGu viene licenziato su Silverlight. Nuff ha detto.

  5. Nuove fantastiche funzionalità - Mentre Silverlight ha ancora qualcosa da fare con Flash su alcune caratteristiche ovvie (come l'integrazione webcam / microfono o l'accelerazione grafica / 3d), ci sono alcune nuove tecnologie avanzate integrate in Silverlight: Deep Zoom ne è un esempio. Sto vedendo più tecnologie "rivoluzionarie" sul lato Silverlight, mentre Flash sembra essere in modalità di manutenzione a questo punto.


Qualcuno ha detto: "Trova 3 applicazioni Silverlight nel mondo reale". Ok, ne conoscevo alcuni in cima alla mia testa, ma ho cercato su Google comunque. La lista:

  • Olimpiadi di Pechino 2008 ( statistiche qui , 250 TB di dati consegnati!)
  • Player su richiesta di Netflix
  • Client di posta elettronica AOL (potrebbe non essere ancora rilasciato)

Oh, non i lettori video? Bene, questo lascia l'applicazione UFC (è un video ibrido / chat / altre cose) e il client di posta elettronica AOL. Silverlight eccelle nel video ed è lì che sta guadagnando terreno ma ciò non significa che non possa fare altre cose. Non vedo alcun motivo per respingerlo solo perché fa bene i video.

Infoworld [link] dichiarato che "Silverlight ha un notevole merito tecnico e prestazioni relativamente buone. È una tecnologia RIA molto capace che è particolarmente utile nelle mani di programmatori con esperienza e progettisti .Net con esperienza XAML." È un buon articolo da leggere per quanto riguarda la tua domanda.

La mia risposta: se hai un team di sviluppatori che si trova a tuo agio con .NET, Silverlight dovrebbe essere il primo della tua lista. Se no, allora è un vero disapprovazione. Ho visto articoli dire che Visual Studio è una piattaforma di sviluppo superiore rispetto a quella che usi con Flex. Ma Flash è dannatamente vicino onnipresente.

Inoltre, tieni presente che Silverlight 2 utilizza quasi nessun Javascript (penso che nessuno, ma non sono positivo). Quindi qualsiasi evitamento di Silverlight a causa di JS è infondato.

Se le prestazioni sono importanti, Silverlight vince lì. Ho visto l'utilizzo della CPU del mio browser andare al 100% molte volte e uccidere qualunque finestra sia in esecuzione Flash si è sempre sbarazzato di esso. È particolarmente evidente in Chrome, dove puoi vedere il processo che sta consumando la tua CPU. Se sei interessato a Silverlight per il potenziale di gioco, cerca QuakeLight, il porto di Silverlight di Quake. Si sta formando davvero bene.

Penso davvero che tutto dipenda da dove si trova il tuo talento di sviluppatore e da quale tipo di applicazione ti verrà offerta. Gioco semplice? Veloce. Linea di app di business? Silverlight. Nel mezzo? Vai con ciò che i tuoi sviluppatori raccomandano.


Se conosci .NET, Silverlight 3.0 è la strada da percorrere. Lo sto usando e lo adoro. Non devo scherzare con AJAX o JS BTW (non ho idea di cosa si riferisse a quel tizio, forse SL 1.0) Per i dati si tratta principalmente di chiamate WCF asincrone (LINQ a SQL dietro WCF) o di file XML o servizi RIA. Ti consente di utilizzare la maggior parte degli shader FX, ha stili, modelli di controllo e gli appunti nativi di accesso a Windows / Mac. Posso eseguire video ad alta definizione e molti processi funzionano molto bene anche con CPU lente. Mi piace anche l'associazione dei dati, l'associazione di controllo e le raccolte osservabili mi fanno risparmiare molto tempo. PIÙ posso usare LINQ, maggiore risparmio di tempo, per non parlare dell'uso di Visual Studio per eseguire il debug.

Sto sviluppando applicazioni .NET aziendali, quindi conosco la mia base di installazione e installeranno il componente aggiuntivo (in genere 30 secondi). Per un sito Web di front-end, potresti perdere alcuni utenti che non desiderano installare Silverlight o che non eseguono Mac o Windows. È possibile avere app con SL al di fuori del browser con 3.0.

Potrei essere un ragazzo di tipo .NET, ma ho sviluppato così rapidamente che devo raccomandarlo.


Stiamo facendo sia silverlight che flex, e qui ci sono i punti di vista degli sviluppatori per entrambi.

Pro di Silverlight:

  1. Potenza di C #, frammenti di codice, riutilizzo di implementazioni di algoritmi C # esistenti
  2. Potere anche di altre lingue, Generics e Linq ecc
  3. Potere dell'esecuzione nativa di CLR invece dell'interpretatore di script Action di Flash
  4. Uno studio di visualizzazione integrato per tutti gli sviluppi
  5. Expression Blend è un editor molto interessante e avanzato, quindi Flex Builder
  6. XAML è Search Engine Friendly
  7. Transizioni di stato abbastanza belle e facili da definire
  8. Threading e attività asincrone
  9. Accessibilità, nessuno sa che Microsoft ha sempre fatto le migliori caratteristiche di accessibilità su tutti i suoi prodotti, ha sempre funzionato bene con le persone disabili, confrontando i browser solo IE supporta l'accessibilità completa e Safari / firefox ecc non sono più vicini.

Contro di Silverlight:

  1. Strettamente piattaforma Microsoft, so che molta gente discuterà, ma con lo scenario attuale, metà dei ragazzi di Intel Mac non può ottenere Silverlight 3.0, tutti i tipi di Mac PPC non possono usare Silverlight 2.0 in poi, e nessun Silverlight per Linux.
  2. C'è il mono, ma non ufficialmente supportato da Microsoft, sarà sempre in ritardo rispetto al reverse engineering .NET e al porting su un'altra piattaforma, non ancora pronto.
  3. La maggior parte dei componenti / controlli sono "sigillati", quindi è difficile estenderli e sostituirli per creare facilmente nuovi componenti.
  4. Cattiva architettura CustomControl / UserControl. Ad esempio, non puoi avere la radice di XAML come ComboBox o qualsiasi altro controllo e lasciargli avere sia il design che il codice, puoi creare un controllo personalizzato ma sono troppo complessi
  5. Binding richiede la denominazione dei componenti e non supporta le espressioni di istanza come flex, anche se il bind a due vie è buono in silverlight ma è necessario scrivere codici lunghi per più associazioni per un'espressione matematica
e.g.
// this is possible in flex..
// but not in silverlight
<mx:TextBox id="firstName"/>
<mx:TextBox id="lastName"/>

// display full name..
<mx:Label text="{firstName.text} {lastName.text}"/>

Pro di Flex:

  1. Veramente indipendente dalla piattaforma, supportato da vari hardware e sistemi operativi e funzionante ovunque funziona alla grande.
  2. Open Source rende davvero facile capire ed estendere la funzionalità.
  3. Ogni controllo / componente può essere esteso e ci sono meno restrizioni che annullano il comportamento predefinito.
  4. Il modo più semplice per creare nuovi componenti, è che si può avere mxml derivare da qualsiasi controllo ed estenderli con un'associazione estesa
  5. Flex contiene molti controlli e non hai bisogno di alcuna libreria di terze parti

Contro di Flex:

  1. Esecuzione lenta per esecuzioni iterative, niente thread !! nessun compito asincrono !!
  2. In base al punto 1, non sono possibili grandi animazioni o grafici
  3. No generici, No altre lingue, No linq ..
  4. La classe numero ha un bug, non può memorizzare un valore completo a 64 bit
  5. Eclipse è male per progettare qualcosa di grande UI

Conclusione

  1. Usiamo flex per le applicazioni dati, quelle sono semplici applicazioni di elaborazione dei moduli
  2. Silverlight per grafica e animazioni estremamente ricche

Uso questa regola empirica: se la tua azienda sta sviluppando software multimediale basato su Internet e ha clienti con tutti i tipi di piattaforme e non stai facendo applicazioni con database intensivo, Flex è la risposta definitiva, se la tua azienda sviluppa sia prodotti basati su Internet che su DVD , meno interattivo ma più intenso (CPU, memoria) e utilizza quantità ridotte di transazioni di database Silverlight ha più senso





silverlight