Non posso negare il vantaggio in termini di prestazioni di una chiamata asincrona duplex, ma alcune cose mi fanno sentire diffidente.Best practice per client Duplex WCF
La mia preoccupazione è che dato un oggetto client istanziato, WCF sarà in grado di dire quale particolare istanza del servizio client riceverà l'argomento di callback?
Qualcuno può dirmi se questa è una buona idea? Se no, perché no?
new DuplexChannelFactory<IServerWithCallback>(
new ClientService(),
new NetTcpBinding(),
new EndpointAddress("net.tcp://localhost:1234/"+Guid.NewGuid()))
Se il percorso virtuale di cui sopra è riservato come può essere scartata. Voglio che la durata del servizio clienti sia piuttosto breve. IE fare una richiesta e ricevere una risposta e quando fatto ricevere, ucciderlo. Quanto è pessima la penalizzazione delle prestazioni nel rendere breve il servizio al cliente, piuttosto che metterlo in comune e mantenerlo in vita più a lungo.
L'idea è di evitare il problema del timeout. Al termine, ricevere, inviare, smaltire il più presto possibile. Per convenzione, non è possibile trasferire i servizi client in giro. Se hai bisogno di informazioni, creane una nuova, semplice - proprio come EF/L2S ecc.
Dall'interno del servizio WCF stesso, come posso interrompere la sessione con il client. vale a dire. Non voglio che il client finisca la sessione - so che posso decorare la mia operazione di conseguenza, ma voglio che il servizio si interrompa automaticamente quando vengono soddisfatte determinate condizioni.
Posso attaccare la porta e inoltrare di conseguenza per risolvere qualsiasi problema del firewall, ma ciò di cui sono preoccupato è se il client si sieda dietro un load balancer. Come fa il servizio a sapere quale particolare server chiamare?
Questa risposta è vera per NetTcpBinding o semplicemente per il collegamento Http doppia? – Yaniv