Domanda

Sfondo:

http://www.hanselman.com/blog/HanselminutesPodcast188ASPNETMVC2BetaWithPhilHaack.aspx

Inizia da 27:. 15, RenderAction è stato discusso in 28:43 che RenderAction non sarà parte di Asynchronocity come metodo d'azione asincrona chiamato

(Diciamo che il vostro portale home azione indice chiamando 1.GetNews 2.GetWeather 3.GetStock asynchronously.You avere avere un RenderAction visualizzazione dei post recenti utente sullo stesso punto di vista. (GetUserRecentPosts))

Domande

Che cosa succede se RenderActions stessi sono asincroni?

Sarebbe GetUserRecentPosts essere chiamato solo dopo indice di casa ha completato la sua azione anche se?

Nel caso RenderActions essere resi in modo asincrono su una visione di default?

È stato utile?

Soluzione

Non credo che si può fare questo con successo. Il punto in cui si potrebbe beneficiare di elaborazione asincrono è già passato, quando le vostre opinioni iniziano rendering. La pipeline MVC che imposta l'inizio / fine metodi ha già completato e la vista non ha modo di tornare in esso sulla stessa richiesta. Sembra che si può essere bloccato con l'elaborazione sincrona o applicare un modo per recuperare tutti i dati su fronte e memorizzare nella cache in TempData o qualcosa per il rendering.

Altri suggerimenti

quadro di sollevamento a Scala è probabilmente l'unico che io sono a conoscenza di che ha azioni parziali paralleli che non bloccherà il rendering del contenuto principale, ma utilizzeranno Comet-push per fornire contenuti visione parziale per quei blocchi che possono assumere un mentre per ottenere i dati.

di usarlo, basta avvolgere un blocco nella vista all'interno di un nodo parallelo

<lift:parallel>
     //this is where Html.RenderAction("GottaFetchNetworkDataFromSomewhereView");
    //this is where Html.RenderAction("GottaFetchNetworkDataFromSomewhereView2");
  // would go
</lift:parallel>

Ascensore si prenderà cura anche di fame collegamento della pagina per gestire le richieste HTTP in modo appropriato in modo che le spinte del browser non sono "in attesa 'round".

Purtroppo, ASP.NET MVC ha scarso supporto Comet. Non c'è molto di fuori dei controller asincroni, che è un miglioramento, ma non elegante come, ad esempio, nell'ambito di Akka sospendere () metodo per-polling lungo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top