14 messaggi dal 29 maggio 2011
Supponiamo di avere due nodi che forniscono entrambi il medesimo servizio (un servizio analogo a questo: http://msdn.microsoft.com/en-us/library/ms731064.aspx) utilizzando il binding NetTcpBinding. Supponiamo inoltre che ci siano anche due metodi Connect e Disconnect: il primo permette di iniziare una nuova sessione per utilizzare il servizio, mentre il secondo serve per chiudere la sessione.
[OperationContract(IsInitiating = true, IsTerminating = false)]
void Connect();
...
[OperationContract(IsInitiating = false, IsTerminating = true)]
void Disconnect();
Vorrei che i due nodi utilizzino lo stesso servizio l'un l'altro: il primo nodo utilizza il servizio del secondo (e riceve le risposte da quest'ultimo tramite callback), e analogamente il secondo nodo utilizza il servizio fornito dal primo nodo... Instaurando questa doppia comunicazione, entrambi i nodi sono client e server allo stesso tempo.
Purtroppo, però, vengono create instaurate 2 connessioni TCP...

Esiste un modo per avere un unica sessione (e quindi un'unica connessione TCP) tra i due nodi e permettere di usare il servizio in entrambi i sensi?

Grazie per eventuali consigli!
Modificato da enzom83 il 24 novembre 2011 22.27 -
Non ha molto senso quello che chiedi, perché un endpoint rappresenta appunta una specifica connessione. Se vuoi che il canale sia sempre lo stesso per WCF allora usa un solo endpoint e lavora a livello TCP con qualcosa che instradi le connessioni

Ciao

Il mio blog
Homepage
14 messaggi dal 29 maggio 2011
Per esempio, se il servizio da implementare è una chat peer-to-peer, essenzialmente il servizio potrebbe essere caratterizzato da:
- un metodo SendMessage per inviare un messaggio ad un nodo;
- un metodo ReceiveMessage nella callback per ricevere la risposta.
Pertanto, il nodo A può chiamare il metodo SendMessage sul nodo B e quest'ultimo risponderà chiamando la callback ReceiveMessage. Trattandosi comunque di una comunicazione peer-to-peer, anche il nodo B deve poter chiamare il metodo SendMessage sul nodo A...

Unica nota aggiuntiva: devo implementarlo su Windows Phone 7.
Non capisco comunque perché avere due endpoint di ascolto. Quello che chiedi è un servizio fullduplex dove chi resta in ascolto sono entrambi: il client e il server, come in questo esempio
http://www.winfxitalia.com/articoli/communication-foundation/costruire-chat-wcf.aspx
Ad ogni modo, se ti serve su Windows Phone, il netTcpBinding non è supportato. In alternativa per silverlight c'è PollingDuplexHttpBinding che fa richieste http in continuazione per vedere se c'è qualcosa si nuovo, ma anche questo non è supportato.
Devi andare a manina e gestirti il Socket di comunicazione se vuoi fare qualcosa realtime bidirezionale

Ciao

Il mio blog
Homepage
14 messaggi dal 29 maggio 2011
Ricciolo ha scritto:
Non capisco comunque perché avere due endpoint di ascolto. Quello che chiedi è un servizio fullduplex dove chi resta in ascolto sono entrambi: il client e il server, come in questo esempio
http://www.winfxitalia.com/articoli/communication-foundation/costruire-chat-wcf.aspx
Un endpoint servirebbe per le richieste da A verso B, mentre l'altro endpoint verrebbe usato per inviare richieste in senso opposto da B verso A... Detto in altre parole, A vede il servizio di B e può inviargli richieste, ma allo stesso modo B vede il servizio di A e può inviargli richieste.

Ricciolo ha scritto:
Ad ogni modo, se ti serve su Windows Phone, il netTcpBinding non è supportato. In alternativa per silverlight c'è PollingDuplexHttpBinding che fa richieste http in continuazione per vedere se c'è qualcosa si nuovo, ma anche questo non è supportato.
Altrimenti dovrei usare il BasicHttpBinding?

Ricciolo ha scritto:
Devi andare a manina e gestirti il Socket di comunicazione se vuoi fare qualcosa realtime bidirezionale
In questo caso, dovrei, per esempio, implementare un binding personalizzato?

Grazie ancora per i suggerimenti!
Modificato da enzom83 il 01 dicembre 2011 14.38 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC