WCF è propriamente una piattaforma di comunicazione asincrona?

2

Da quando ho dovuto eseguire tutte le comunicazioni / programmazione di rete, il campo è esploso con gli acronimi. In effetti, il networking sembra quasi come descritto da un nuovo linguaggio.

Il nome stesso "Windows Communication Foundation" suggerisce che dovrebbe essere tutto per tutti ... ma devo essere sicuro di poter programmare alcune comunicazioni sincrone in tempo reale su una rete Gigabit Ethernet dedicata. Qualcuno può confermare che WCF non è un antipasto per questo compito ... o se lo è, quale dei molti acronimi confusi con cui dovrei familiarizzare?

* In tempo reale, voglio dire che ho bisogno di ridurre le latenze a un livello accettabilmente basso. Per la nostra applicazione, che prevede la trasmissione di risultati di video e amp; l'audio analizza continuamente ogni pochi millisecondi, ho bisogno di assicurarmi che il 99% o meglio di quelle analisi siano presentate nell'interfaccia utente entro (idealmente) 0,5 secondi in modo che l'utente abbia il tempo di rispondere prima che il nodo di rete di origine cancelli i dati dal suo buffer per fare modo per analisi successive.

    
posta omatai 16.07.2014 - 09:39
fonte

2 risposte

2

Per le esigenze di programmazione in tempo reale, la soluzione Microsoft è SignalR. Altre opzioni potrebbero essere l'utilizzo di socket web che sono nuovi in HTML 5 o nella vecchia programmazione socket . Sembra che tu abbia bisogno di fare streaming video / audio, nel qual caso ci sono altre librerie dedicate a ciò che potrebbe essere più utile. WCF è XML / JSON su HTTP che ha un costo generale se si prevede di inviare molti dati continui, sarebbe meglio utilizzare una tecnologia che funzioni a un livello inferiore per ridurre l'overhead.

    
risposta data 12.01.2015 - 21:04
fonte
0

Fondamentalmente, WCF è inteso per le comunicazioni asincrone e non mi sorprenderà sapere che ad un certo livello, tutto fa in modo asincrono.

Detto questo, puoi fare operazioni di blocco con WCF, quindi sì, le comunicazioni sincrone in tempo reale possono usare WCF sotto il cofano, dato che WCF ti offre alcuni aspetti interessanti come il fatto che può garantire che i messaggi siano consegnati e saranno nell'ordine in cui sono stati inviati.

La possibilità di utilizzare le operazioni di blocco include anche le prese Web della WCF.

Perché dovresti bloccare il thread finché non ricevi una risposta da una macchina distante? un soggetto diverso. Pensaci due volte, perché probabilmente non vuoi bloccare definitivamente l'intera applicazione se la rete si ferma.

Uno degli usi che ho trovato per le operazioni di blocco è avere un classe proxy che comunica tramite WCF sotto il cofano. In questo caso, quando accedi a someObject.Products , non devi sapere che i prodotti vengono caricati tramite WCF. È un'astrazione potente, ma anche una perdita: se la macchina remota scende durante l'operazione, devi certamente sapere cosa succede quando chiami la proprietà Products .

    
risposta data 16.07.2014 - 09:51
fonte

Leggi altre domande sui tag