.net update - Silverlight vs Flex




mac plug-in (19)

Un altro vantaggio dello sviluppo di Flex è che è possibile passare allo sviluppo di applicazioni desktop (Adobe AIR) con lo stesso codice sorgente (e lo stesso IDE) e distribuirle dal Web. Puoi controllare questo per il futuro della piattaforma Flash.
Aggiornamento Q3 / 2011: Flash 11 supporta l'accelerazione 3D a basso livello, e ci sono già molti framework e motori principali (Unreal Engine 3, Unity) che lo supportano. Il punto di forza del futuro, tuttavia, è che l'applicazione AIR funzionerà su piattaforme Windows, Mac, Android, Playbook e iOS (il supporto per Linux è stato abbandonato). Con un minimo assoluto di problemi tra il porting tra quelli (almeno quando hai Adobe CS5.5 +).

Aggiornamento Q2 / 2015: Silverlight è ufficialmente morto. Adobe AIR è vivo, ma non prospero, potrebbe essere utile in base alle tue competenze e alla tua catena di strumenti. Sia Microsoft che Adobe ammettono che HTML5 è la strada da percorrere (sia con AIR che con Apache Cordova o Visual Studio).

Aggiornamento Q3 / 2017: Haha wow, che usa persino Flash più.

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?


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


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.


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 dovresti seriamente usare QUALSIASI di queste tecnologie ActiveX2.0. Né Silverlight né Flex ...

Prima di tutto, entrambi non sono altro che "framework di winforms distribuiti con supporto per essere eseguiti nel browser", in secondo luogo non si adattano bene ad altri dispositivi (specialmente per Silverlight), in terzo luogo non funzionano bene con altre parti della tua pagina. Non funzionano bene per le persone disabili, ecc. Ecc. Ecc. L'elenco continua all'infinito ...

Adobe e Microsoft cercano entrambi di nascondere questo fatto in modo molto duro, ma alla fine della giornata Silverlight e Flex non sono altro che ActiveX in un nuovo involucro ...

Certo, corrono in sandbox, sono gestiti linguaggi e tutto il resto. Ma è ancora un grande pezzo di BLOB che viene scaricato per essere eseguito localmente nel tuo browser, AKA ActiveX ...


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.


Penso che Silverlight sia più vantaggioso per le aziende che hanno sviluppatori .NET ma nessuno con esperienza di progettazione.

I set di abilità saranno più facili da trovare fino a trovare sviluppatori C # o VB o trovare guru di ActionScript. Tuttavia c'è il trade off:

L'esperienza progettuale è un investimento non solo per i progettisti con abilità artistiche, ma anche per le conoscenze e gli strumenti forniti da Adobe. Puoi quasi garantire che un designer professionista utilizza un Mac e ha esperienza con gli strumenti Adobe.

In questo momento gli strumenti di progettazione Silverlight sono mezzi cotti e possono essere un mal di testa. Per esempio gli errori di Blend quando si tenta di eseguire il rendering di qualsiasi xaml contenente un IValueConverter, questo è problematico. Non ho idea di quale sia l'esperienza dello sviluppatore Adobe, sono sicuro che sia altrettanto peloso.

Quindi in questa fase del gioco si tratta di risorse umane:

Se hai esperienza .NET e hai investito poco in competenze di progettazione, vai a Silverlight. Capacità / strumenti di programmazione saranno trasferibili. Se hai esperienza di progettazione e set di competenze vai con Flex. Le abilità / strumenti del designer saranno trasferibili.

In entrambi i casi, entrambe le piattaforme client richiedono la comunicazione con i servizi per ottenere i dati, quindi sfrutterai sempre le tue competenze di programmazione esistenti sul back-end.

Parafrasato opinione da un altro punto di vista:

Penso che dovresti considerare Flex come un gioco a lungo termine, proprio come sembra che Adobe stia facendo. C'è un evidente equilibrio su quando utilizzare Silverlight vs Flex quando sei preoccupato per la copertura e l'installazione della base, ma qui ci sono più motivi per cui Flex è una buona strada da percorrere:

  1. Vantaggio del secondo mover - Proprio come Adobe ha creato una "migliore applet Java" con Flash, sono in grado di vedere come si progetta un runtime da zero, oggi. Hanno il vantaggio di sapere come le persone usano il web oggi, qualcosa che gli inventori delle piattaforme client esistenti non avrebbero mai potuto indovinare con precisione. .NET può aggiungere funzionalità, ma non possono realisticamente bloccare la piattaforma e ricominciare da capo.

  2. Familiarità di designer - Mentre Flex / AIR è un nuovo modello di programmazione, non è del tutto sconosciuto ai progettisti. Loro "otterranno" il modo in cui Flex lavora molto più rapidamente di quanto capiranno attivando un nuovo ambiente di progettazione con nuovi strumenti poveri di funzionalità e nuovi paradigmi di animazione.

  3. Essere liberato del modello di colore RGB in Silverlight-.NET è stato originariamente creato per Windows ed è al centro di come funziona. Flex abbandonato da molto tempo per un modello incentrato sul design.

  4. Tutti i tuoi strumenti funzionano sul tuo Mac. Nuff ha detto.

  5. Funzionalità interessanti - Silverlight ha ancora qualcosa da fare con Flash su alcune caratteristiche ovvie (come l'integrazione webcam / microfono o l'accelerazione grafica / 3d).


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.


Il mio team era solito scrivere funzionalità Web complete in Flex e ora le scrive in Silverlight.

Le nostre ragioni per questo passaggio:

  • FlexBuilder è costruito su Eclipse. Eclipse è terribile! Gratuito, ma bug cavalcato, glitch riempito e lento.
  • FlexBuilder è il doppio del prezzo di Expression Blend, che otteniamo gratuitamente con MSDN.
  • Flex è un controllo fonte di dolore, non gli piace essere fatto per mettere i file in un posto e non gioca con le altre parti della soluzione (abbiamo provato con SourceGear Vault e SVN).
  • La versione di ActionScript di Flex non apprezza la maggior parte delle implementazioni SOAP, in particolare ha tutti i tipi di problemi con quelli di .Net WebMethod.
  • Nonostante usiamo periodicamente componenti Flex licenziati, decidiamo che non abbiamo quella versione e aggiungiamo filigrane di solo demo. L'unico modo per rimuoverlo è di portare il progetto a pezzi, reinstallare Flex, reinstallare le licenze e ricostruirlo.
  • A FlexBuilder non piace affatto Vista.
  • L'accettazione di Silverlight è in crescita, una volta al livello in cui potremmo aggiungerla come requisito per le funzionalità rilevanti che abbiamo cambiato. Se lavorassimo per un pubblico web (piuttosto che aziendale) non sono sicuro che potremmo avere.

Il resto del nostro progetto è .Net e C #, potresti trovare tutti questi problemi meno significativi in ​​un negozio Java.


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.


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 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.


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.


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

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 designer grafico, ho usato Flash (acceso e spento) negli ultimi anni, e Silverlight (e suo fratello maggiore WPF) negli ultimi 1,5 anni. Sulla base di ciò che ho sentito dal mio team (tutti sviluppatori o ex sviluppatori, se i tuoi sviluppatori .Net faranno tutta la programmazione, vai con Silverlight. Adoro Flash, ma anche con la revisione OOP di ActionScript 3 in Flash 9 e versioni successive, è ancora un linguaggio un po 'bizzarro, e andare avanti e indietro tra AS3 e C # probabilmente farà impazzire gli sviluppatori :-).

Per i tuoi designer, fai quanto segue:

  • Ottieni loro una copia di Expression Blend, lo strumento di sviluppo GUI per Silverlight / WPF.

  • Blend ha una curva di apprendimento iniziale piuttosto ripida e l'interfaccia genera una tonnellata di variabili / opzioni, quindi investi in un certo allenamento e dai ai tuoi progettisti il ​​tempo di aggiornarsi con l'interfaccia utente.

  • A proposito di formazione, ottenere un abbonamento alla videoteca Lynda.com, esp. il corso di formazione Lee Brimelow Expression Blend.

  • Caveat emptor: Blend e WPF cambiano rapidamente, quindi a volte si incontrano bug in Blend che vengono risolti nella prossima beta / CTP di Blend. Esiste un bug in Blend 2 che impedisce ai miei storyboard (animazioni) di lavorare in un progetto recente. Ho aggiornato a Blend 2.5CTP e ha funzionato.

  • I contenuti di Silverlight non sembrano sempre funzionare con l'ultima versione beta del plug-in Silverlight, solo qualcosa da tenere a mente se stai testando alcune nuove funzionalità disponibili solo nell'ultimo plug-in Silverlight.

  • Investire in un sistema potente (Quad Core, 4Gig di RAM, ecc.) La miscela consuma molte risorse, esp. quando hai tonnellate di strati. Ad esempio, sto lavorando a un'app con oltre 100 livelli (!) Nell'app di base (e altri 100 in alcuni controlli utente) e a circa 40-50 storyboard. Ogni pochi minuti, devo riavviare Blend, perché l'interfaccia utente smette di rispondere (ma non si blocca). O quello, o sposta tutto ciò che puoi nei controlli utente.


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.


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.


Un'implementazione ingenua

public IEnumerable<string> SplitX (string text, string[] delimiters)
{
    var split = text.Split (delimiters, StringSplitOptions.None);

    foreach (string part in split) {
        yield return part;
        text = text.Substring (part.Length);

        string delim = delimiters.FirstOrDefault (x => text.StartsWith (x));
        if (delim != null) {
            yield return delim;
            text = text.Substring (delim.Length);
        }
    }
}






.net flex flash silverlight