2011-01-31 22 views
8

Stiamo pianificando un'applicazione che verrà sviluppata in Silverlight e WPF.Compatibilità Silverlight e WPF

Volevo sapere se, poiché verrà implementata l'interfaccia in XAML, sarà compatibile in entrambe le tecnologie?

Che tipo di problemi dovremmo aspettarci durante il porting da una tecnologia all'altra?

+2

duplicati di http://stackoverflow.com/questions/3626936/silverlight-4-and-wpf-compatibility e http://stackoverflow.com/questions/598703/definitive-sources-per-the-difference-between-silverlight-and-wpf –

+1

anche dup di http://stackoverflow.com/questions/944608/ – SergioL

risposta

0

definitiva Silverlight era/è solo un sottoinsieme del soggetto WPF, quindi si tende a trovare alcuni degli elementi disponibili in WPF assente quando il porting di Silverlight, queste cose includono:

  • mancanza di alcuni vincolante supporto in Silverlight.
  • Modi migliori per ottimizzare le proprietà di dipendenza disponibili in WPF non presenti in Silverlight.
  • Gli storyboard vengono attivati ​​nel codice utilizzando Silverlight anziché lo Triggers di WPF.
  • WPF e Silverlight utilizzano diverse librerie di base, il che può significare l'impossibilità di condividere le librerie tra le applicazioni WPF/Silverlight.
  • Ci sono meno controlli incorporati disponibili in Silverlight rispetto a WPF.

E così via.

Direi che quello che si finisce per avere più problemi sarà il porting dei controlli personalizzati, che, come molti altri codici, saranno in gran parte trasferibili ma avranno un sacco di avvertenze tra sia il mark-up che il codice dietro. Probabilmente dovrai modificare la maggior parte dei controlli WPF per compilare in Silverlight, alterando i valori TargetType per i modelli, le risorse eccetera e sostituendo un controllo con un altro (o talvolta dovendo creare il tuo per raggiungere un obiettivo, un esempio di questo è il UniformGrid che manca in Silverlight)).

Vorrei postare link ma gli altri ragazzi sembrano aver esposto tutto ciò che è necessario sapere dalle reti. Divertiti.

+0

Gli storyboard possono essere avviati attraverso le transizioni di stato visuale in entrambi quadri. Non sarebbe il modo di farlo se stai prendendo di mira wpf e silverlight? – Justice

+0

Probabilmente hai ragione; Sto solo ripensando alle esperienze passate di ciò che mi è venuto in mente, dovendo chiamare manualmente "Storyboard.Begin" - non ho trovato l'alternativa che suggerisci. –

2

Ho creato un'applicazione silverlight/wpf con doppia destinazione. Non è semplice come effettuare il porting l'uno con l'altro ...

I tuoi primi passi dovrebbero essere di guardare la documentazione su dove wpf e silverlight differiscono per capire un po 'meglio il tuo problema XAML Processing Differences Between Silverlight and WPF. Non fermarti qui. Comprendi i modelli di progettazione che entrano in gioco in base ai diversi ambienti applicativi. Ora stai iniziando a farti un'idea di cosa hai a che fare.

Durante la creazione di interfacce utente per wpf e silverlight, è necessario prestare molta attenzione ai controlli e agli spazi dei nomi in uso. La condivisione del codice dell'interfaccia utente può essere estremamente noiosa, spesso è più semplice creare due livelli dell'interfaccia utente separati che utilizzano modelli condivisi in cui è applicabile. Gran parte della funzionalità dell'interfaccia utente presente in un'applicazione rich client è diversa dalla funzionalità dell'applicazione Silverlight. Probabilmente offrirai più intense visualizzazioni di dati nella tua app wpf invece che visualizzazioni più concise nella tua app silverlight. Alla fine, probabilmente sarai in grado di raggiungere gli stessi obiettivi, ma sarà più difficile del solo retarget e deployment.

Se si sta creando un'applicazione da zero, si consiglia di creare contemporaneamente l'applicazione wpf e l'applicazione silverlight.In questo modo, avrai l'opportunità di astrarre i livelli di servizio e le strategie di accesso ai dati utilizzate nei diversi ambienti. Silverlight avrà probabilmente bisogno di accedere ai dati tramite i servizi web, mentre la tua app wpf potrebbe parlare con un'istanza di database locale. Questo può essere realizzato abbastanza facilmente. Utilizzare un contenitore IoC o qualcosa per iniettare le opportune implementazioni del servizio. Questa area offre l'opportunità per il maggior numero di riutilizzo del codice. È possibile creare tutta la logica di visualizzazione e la logica di servizio da condividere tra le due interfacce utente. È inoltre possibile creare logica aziendale condivisa e logica di accesso ai dati.

Se non si dispone di un archivio dati locale nell'app rich client, quindi dimenticare il paragrafo successivo.

Se si prevede di avere un client non in linea connesso occasionalmente (wpf app), sarà probabilmente necessario elaborare una strategia e un'architettura di sincronizzazione. A seconda di quanto siano complicate le strutture dati, questo può essere piuttosto difficile. La costruzione in logica di sincronizzazione complessa con i framework disponibili è un P.I.T.A. Potrebbe essere necessario crearne di propri o vivere con le restrizioni di un altro.

Una dichiarazione di consigli: iniziare con i test e terminare con i test