GZipStream gebruiken voor Client/Server Async communicatie

Ik heb een Client/Server-systeem (via Socket) met meerdere clients en een enkele server, die elke seconde xml-gegevens verzendt naar alle clients.

De XML-gegevens hebben altijd een verschillende grootte tussen 1 - 18.000 tekens en de server moet deze XML-gegevens tegelijkertijd naar alle clients verzenden.

Nu wil ik weten hoe de communicatie tussen de server en clients sneller kan worden gemaakt.

Misschien zal ik meer dan één vraag stellen, maar op dit moment zit ik echt vast en kan ik niet meer verder.

  • Moet ik elke XML-gegevens comprimeren vóór verzending?
  • Moet ik de XML-gegevens serialiseren ? (misschien wordt de xml-gegevensgrootte verkleind)
  • Moet ik elke XML-datas converteren naar byte [] array (voor buffer), omdat de communicatie tegelijkertijd voor alle clients moet plaatsvinden.

Dank je!

1

3 antwoord

Ervan uitgaande dat u op een intranet werkt, zou ik u aanraden om uw XML-gegevens te multicast . Op die manier stuurt uw server elke seconde een enkele kopie van xml-gegevens (in plaats van N-kopieën van gegevens te verzenden voor N-client)

0
toegevoegd
Het hangt af van uw ISP, waarschijnlijk niet.
toegevoegd de auteur L.B, de bron
Wat als ik niet op intranet werk? Is er een andere manier om de xml-gegevens multicast te maken?
toegevoegd de auteur Racooon, de bron

Als u WCF gebruikt, kunt u eenvoudig GZip-compressie integreren.

check here: WCF Compression over HTTP sample

0
toegevoegd
Sorry vergeten te zeggen, dit is een applicatie die socket gebruikt (tcp)
toegevoegd de auteur Racooon, de bron
Ik zal het testen, dank u
toegevoegd de auteur Racooon, de bron
toegevoegd de auteur Davide Piras, de bron

U kunt een tussenlaag met ingebouwde pub-sub-topologie gebruiken als u momenteel bezig bent met itereren via uw verbonden clients. 0MQ heeft de mogelijkheid voor een enkele uitgever om zeer efficiënt naar n abonnees te verzenden en heeft een C# -binding. U kunt de berichten ook comprimeren voordat ze worden verzonden zoals u heeft voorgesteld.

0
toegevoegd
Bestaat er een benchmarklijst voor 0MQ-compressie? Ik ben erg vreemd voor 0QM. Kan ik het voor mijn systeem gebruiken?
toegevoegd de auteur Racooon, de bron
Van de documenten: "Het zijn sockets op steroïden". Het is een middleware die in staat is om veel van de moeilijkheid uit netwerkcommunicatie te halen. "ØMQ (ZeroMQ, 0MQ, zmq) ziet eruit als een in te voegen netwerkbibliotheek, maar gedraagt ​​zich als een gelijktijdigheidskader. Het geeft u sockets die hele berichten over verschillende transporten dragen, zoals in-process, inter-process, TCP en multicast. sockets N-naar-N met patronen zoals fanout, pub-sub, taakverdeling en request-reply, het is snel genoeg om de stof te zijn voor geclusterde producten. " Het kan veel voor u betekenen en uw leven gemakkelijker maken.
toegevoegd de auteur robowahoo, de bron