API Web per la comunicazione del servizio Windows tramite ZeroMQ

3

Possiedo un servizio Web API 2 Web ASP.NET. Questa è l'interfaccia che i clienti utilizzeranno per inviare i dati.

Ho un servizio Windows in esecuzione su un server interno. Invierò i dati POST del cliente a questo servizio aggiungendo un ID univoco al messaggio.

Esiste un altro servizio in esecuzione su un altro server interno che verrà comunicato tramite pura programmazione asincrona del socket tramite TCPClient. Con questo intendo quando invio una richiesta non riceverò una risposta subito. Avrò un listener TCPClient che riceverà le risposte dopo un po 'di tempo (entro pochi secondi) e voglio pubblicare la risposta via ZeroMQ anche con l'API Web.

Per ogni richiesta API Web, stavo pensando di utilizzare il pattern Fire and Forget di ZeroMQ per inviare i dati con l'ID univoco (serializzato come stringa JSON) al servizio Windows. Creerò quindi un Sottocriterio ZeroMQ alla ricerca dell'ID univoco.

Il servizio Windows all'avvio legherà un socket ZeroMQ per il fuoco e dimenticherà i messaggi e collegherà un socket per i messaggi sub / pub.

Questa è una soluzione ottimizzata? C'è un modo migliore per gestire la comunicazione tra web api e servizio web?

Grazie.

    
posta CodeWzrd 22.06.2016 - 17:38
fonte

1 risposta

1

Le richieste di Api WEB sono stateless e amp; Sincrono. ciò significa che non mantengono uno stato / connessione aperta e scadono dopo un po 'di tempo.

Quando la tua API invia un messaggio al servizio Windows e poi si abbona agli eventi che ritornano, sarà soggetto al tempo in cui la connessione HTTP verrà mantenuta aperta dal client API.

Posso pensare ad alcune soluzioni migliori qui:

1- Tirare (funziona bene per qualsiasi client): consente ai client di recuperare gli aggiornamenti restituendo immediatamente un ID di richiesta univoco al client API e un altro endpoint API per chiedere l'avanzamento di tali richieste.

2- Webhooks (funziona bene con client / siti Web basati su Web): un client può impostare un URL per ricevere gli aggiornamenti di stato per le loro richieste, quindi il servizio Windows può chiamare quegli URL con gli aggiornamenti di stato una volta che Socket restituisce i dati .

    
risposta data 01.07.2016 - 04:26
fonte

Leggi altre domande sui tag