2010-06-10 13 views
6

ho sviluppato un gioco utilizzando Silverlight 4 e silversprite (http://silversprite.codeplex.com/)Ottimizzare il caricamento di un file XAP con un sito web asp.net

Questo gioco è pesantemente dipendente contenuti, utilizzando un sacco di audio e immagini. La mia cartella di contenuti è di circa 90 mbs di roba. E per questo motivo, il mio file XAP è di circa 60 MB e impiega 5 minuti per il download dal sito Web prima che qualsiasi utente possa iniziare a giocare.

Utilizzo Visual Web Developer 2010 per creare il mio sito e caricare XAP. C'è un modo in cui posso prelevare contenuti dal mio XAP e inserirli nel mio progetto di sito ASP.net? O forse caricare i miei file di contenuto nella memoria del sito? Ciò renderebbe il mio file XAP molto più veloce da scaricare.

Qualcuno ha suggerimenti? Grazie!

risposta

3

Absolutley è chiamato Application Library Caching. L'ho usato con molto successo e ora è una procedura operativa standard, particolarmente interessante è la sua applicazione con gli assembly di risorse.

dritto da MSDN ...

file di risorse sono in genere qualsiasi file di dati non-eseguibile utilizzato dalla vostra applicazione, come ad esempio i file di immagini, audio e video. Un file di risorse può anche avere significati specifici in determinati contesti. Ad esempio, nel contesto della localizzazione dell'applicazione, i file di risorse fanno riferimento a file .resx, che è possibile distribuire in assembly satellitari localizzati.

Si prosegue con alcune informazioni veramente utili

Con Silverlight, è possibile distribuire file di risorse nei seguenti modi:

• Come singoli file nel pacchetto applicazione.

• Come singoli file è possibile richiamare su richiesta.

• Come file incorporati in un assieme nello pacchetto dell'applicazione.

• Come file incorporati in un assieme in un pacchetto di librerie esterne.

• Come file incorporati in un assembly che si recupera su richiesta .

che è ciò che viene suggerito in altra risposta (s)

+0

Questo non aiuta molto in questo scenario. È utile quando il tuo xap cambia in quanto le zip delle librerie esistenti rimangono statiche e spesso non è necessario scaricare di nuovo. Tuttavia, se vengono fatti uscire dalla cache del browser o al primo accesso di un client, tutte le librerie vengono scaricate prima che l'applicazione venga caricata. Sarebbe bello se Silverlight fosse in grado di determinare quali librerie sono necessarie e quelle che non sono all'avvio, ma non è così. – AnthonyWJones

+1

puoi effettivamente creare le tue librerie (che possono contenere tutto ciò che vuoi) e avere il framework per gestire il caching (non male :)), non c'è altro modo se non vai fuori dal browser o richiedi più spazio dal entrambi gli utenti sono sconvolgenti (e lo sono) –

+0

anche la sintassi è molto più amichevole di come si utilizzerebbe un wrapper di risorse generato per te. –

4

Sì, includere nel vostro XAP il contenuto solo il necessario per la schermata iniziale. Inserisci altri contenuti di cui hai bisogno in altri XAP (se hai bisogno e comprendi l'xml manifest) o farebbe semplicemente un semplice file zip. Forse uno Zip per ogni "Livello" o qualsiasi altra cosa.

È possibile scaricare Zip con WebClient e quindi utilizzare StreamResourceInfo e Application.GetResourceStream per accedere al contenuto nel file zip.

Questo blog anche se l'invecchiamento un po 'ora porta ancora l'idea di base ed è ancora fondamentalmente la tecnica attuale da utilizzare.

+0

Ho esaminato questo metodo E sembra fantastico! Anche se ho una situazione particolare: sto programmando in Silversprite, non Silverlight puro: questo significa che non sto codificando il mio gioco all'interno dei file xaml. Il mio XAP è costituito da un puro file C# .cs. Quindi questo lo rende molto difficile. Ho un progetto di sito web e il mio progetto Silverlight (Silversprite) all'interno della stessa soluzione. Quindi questo è quello che mi sto chiedendo: Opzione 1: ENTRANDO nel mio progetto Silersprite, utilizzo Texture2D.FromFile e carico una texture dal mio sito web esterno. Opzione n. 2: riferimento e carica una trama dal mio progetto WEBSITE. Qualche consiglio? – theoneawaited

+0

@thwoneawaited: Sia che tu stia utilizzando Xaml o principalmente C#, la maggior parte del tuo XAP sarà costituita da risorse come immagini, audio, ecc. Quello che sto suggerendo è che tu collochi queste risorse in file zip separati. È possibile utilizzare metodi come Texture2D.FromFile per caricare da un flusso. Il flusso a sua volta viene acquisito usando 'Application.GetResoureStream'. – AnthonyWJones

Problemi correlati