Nel mio post sulle Local Connections di Silverlight3 concludevo scrivendo: “nella mia installazione, non sono supportate più istanze dello stesso receiver”.
Dopo uno scambio di opinioni con qualche Insider e col team di Silverlight la risposta è stata: “Non è un bug: semplicemente non è possibile avere più istanze dello stesso receiver mentre sono supportate più istanze dello stesso sender.”
La limitazione dipende dalla modalità di implementazione delle local connections (named pipes) però questo significa che se avete una pagina con due plug-in che comunicano tra loro via local connections e aprite due istanze della stessa pagina, anche in browser diversi, nella seconda il plug-in receiver va in eccezione.
Questo ovviamente vale anche se la comunicazione avviene tra un applicazione Silverlight ospitata nel browser e una Out-of-Browser application in virtù del fatto che è possibile avere più istanze della stessa applicazione OOB.
Personalmente non ho trovato nessuna traccia di questo dettaglio nella documentazione, sta di fatto che questo ridimensiona parecchio le local connections di Silverlight3.
Nel tentativo di trovare una possibile soluzione ho provato a cambiare dinamicamente l’ID del receiver non appena instaurata la comunicazione tra plug-in, sfruttano il fatto che il Receiver può comunicare col Sender ed effettiamente funziona a patto che i due plug-in siano stati correttamente istanziati e ospitati nella pagina e, questo, vista la non prevedibilità della sequenza esclude a priori un meccanismo di handshake automatico al caricamento della pagina (non ho ovviamente preso in considerazione soluzioni con timers e ammenicoli vari…)
Programmatore avvisato…