Qual è il modo più semplice per trasmettere dati dall'applicazione ad altre applicazioni in .Net

1

Voglio inviare informazioni da un'applicazione .Net a più altre applicazioni .Net. Voglio che le applicazioni siano accoppiate liberamente. Il numero di applicazioni che ricevono le informazioni potrebbe cambiare in fase di esecuzione. Qual è il modo più semplice per farlo?

Ho pensato di usare MSMQ, ma da quello che posso dire, lì l'applicazione di trasmissione deve sapere quanti ricevitori ci sono o ogni messaggio viene elaborato solo da una delle applicazioni riceventi. Nessuna delle due opzioni è accettabile.

    
posta epotter 29.10.2014 - 14:21
fonte

6 risposte

5

Una soluzione sarebbe pubblicare le informazioni tramite UDP. Apri una porta specifica per la trasmissione, invia i tuoi dati. Non c'è nient'altro da fare sul lato provider / server.

Sul lato client, apri la stessa porta per la ricezione.

L'unico svantaggio di cui sono a conoscenza con questo metodo è che se ti manca il messaggio trasmesso, non lo vedrai mai più. Non esiste una consegna garantita.

Un lato positivo è che puoi avere clienti illimitati senza sovraccarico aggiuntivo per il server.

Microsoft ha un esempio funzionante utilizzando il UDPClient classe .

Se hai bisogno di consegna garantita, puoi usare (tra le altre opzioni) classe TCPListener per il tuo server. Dovrai utilizzare la classe TCPClient per il cliente. Questa tecnica (più o meno) ricrea un server web e client. Scrivere un'interfaccia RESTful sarebbe più facile.

Uno svantaggio è che ogni client apre una connessione (più overhead) al tuo server.

    
risposta data 29.10.2014 - 15:46
fonte
6

Potrebbe essere meglio servire lasciando che le app tirino le informazioni piuttosto che spingendole fuori - questo è un modello molto più semplice, in quanto tutto ciò che devi fare è esporre un'API. La scelta predefinita nel 2014 è probabilmente un web API ASP.NET RESTful, ma ci sono tonnellate di opzioni a seconda di quello che stai facendo.

Come per il modello push, MSMQ è uno strumento piuttosto grezzo ma utilizzabile. Potresti voler dare un'occhiata a qualcosa come il coniglio MQ che è un po 'più completo di funzionalità e ha un modello pub / sub piuttosto pratico.

La linea di fondo è che ci sono molti modi per risolvere questo problema - il modo migliore in realtà dipende da requisiti specifici qui.

    
risposta data 29.10.2014 - 14:35
fonte
4

SignalR potrebbe essere un buon candidato se non hai bisogno di consegna garantita, e stai semplicemente cercando di inviare periodicamente quantità relativamente piccole di dati da / verso client e server N * (ad es. dashboard in tempo reale, messaggistica istantanea, gioco multiplayer, ecc ...). Può anche scalare abbastanza bene utilizzando backplane (attualmente supporta Redis, Azure Service Bus, SQL Server, o scrivi il tuo).

Mentre SignalR è focalizzato sullo sviluppo di ASP.NET (astrae l'implementazione di WebSockets ), puoi anche usarlo in applicazioni non web (cioè WinForms, WPF, servizi Windows, ecc ...).

Inoltre, SignalR opera su porte HTTP / S standard (80, 443), quindi in genere non è necessario creare eccezioni del firewall per far funzionare le cose correttamente.

Un altro vantaggio è che puoi avere una comunicazione bidirezionale tra client e / o server.

Ecco alcuni link che potresti trovare utili:

risposta data 29.10.2014 - 19:58
fonte
1

Ho utilizzato Rebus che rende molto semplice la trasmissione di messaggi tra le applicazioni. È una libreria .NET che si trova come un livello sopra un livello di trasporto sottostante, che potrebbe essere MSMQ, RabbitMq o qualcos'altro.

Supporta la pubblicazione / iscrizione. Nel caso di MSMQ, viene semplicemente implementato che Rebus gestisce la pubblicazione del messaggio su più code. Rebus ha solo bisogno di un posto dove può memorizzare una configurazione su cui gli iscritti si sono iscritti a quali tipi di messaggi.

Se vuoi intensificare, puoi usare NServiceBus, che è un prodotto a pagamento. Ma non ho esperienza con questo. Ma dovrebbe essere facile migrare un'app da Rebus a NServiceBus.

    
risposta data 29.10.2014 - 16:03
fonte
0

Il fatto che sia applicabile al tuo scenario specifico è una domanda completamente diversa, ma scrivere in un file di testo e leggerlo dalle altre applicazioni è probabilmente il modo più semplice per trasferire i dati.

    
risposta data 29.10.2014 - 14:24
fonte
-2

Per windows .net i processi per il pipe dei dati tra di loro possono farlo in diversi modi usando WCF usando i layer di trasporto come http o named pipe.

Buon tutorial per questo: link

Un'altra domanda che potresti trovare utile: link

    
risposta data 29.10.2014 - 15:55
fonte

Leggi altre domande sui tag