2010-11-30 3 views
5

Ich habe einige Computer in einem Netzwerk, das Netzwerk ist irgendwie seriell, ich meine Computer sind miteinander über Funksender verbunden und in einer Linie, wenn ein Funksender abgeht oder einige Gesicht Probleme mit anderen Computern sind nicht möglich. die Architektur so etwas wie dieses wäre:
RT = Funksender
Computer#1<-RT#1->Computer#2<-RT#2->Computer#3<-RT#3->....<-RT#(N-1)->Computer#NLow-Speed-Netzwerk mit hohem Risiko der Trennung

Entfernungen zwischen Computern sind etwa 20 bis 30 Kilometer und Netzwerkgeschwindigkeit variiert zwischen 0 und 10kbps. Computer laufen Windows XP und ein sehr hoch geladenes Programm (2 GB RAM, 90% CPU-Auslastung) läuft immer auf ihnen, alle Computer IP-Adressen sind bekannt und statisch.

Ich werde ein Programm schreiben, das auf jedem Computer ausgeführt wird und Befehle oder Pakete zum Ausführen oder Installieren und Aktualisieren auf diesem Computer erhält. wegen der niedrigen Geschwindigkeit Netzwerk und hohes Risiko der Verbindungstrennung sollte Daten zwischen Computern sollte Lebenslauf Fähigkeit haben. Die Frage ist, wie soll ich das umsetzen? Verwenden Sie .NET Remoting oder verwenden Sie einfache Netzwerk-Sockets und TCP? welches ist besser? Fühlen Sie sich frei, Ihren Vorschlag zu erklären oder nähert sich Ihrer Meinung nach dieser Lösung.

+0

die Maschinen in einer Domäne sind? Server, Arbeitsstationen? – dotnetnate

Antwort

1

Wie wäre es mit dem Hinzufügen eines neuen Systems, das sich wie ein Server verhält. Dieses System hostet einen Dienst (und möglicherweise eine Datenbank), der alle Vorgänge im Netzwerk steuert. Da alle IP-Adressen statisch sind, können sie im Falle von Verbindungsabbrüchen leicht verfolgt und nachverfolgt werden.

Für große Übertragungen können Sie Pakete komprimieren und teilen und sie separat senden. Im Falle eines Fehlers startet die Übertragung von dem defekten Paket neu. Mit einem separaten Server können alle diese Statistiken leicht gepflegt werden und der Verkehr kann entsprechend gesteuert werden.

Die Clients können den Server bei niedriger CPU-Last sogar anstehende Befehle/Aktualisierungen anpingen.

Mit WCF ist es möglich, Bidirektional-/Duplex-Übertragungen durchzuführen.

What You Need To Know About One-Way Calls, Callbacks, And Events

WCF Duplex Messaging

+0

großartige Idee! Tnx –

5

Haben Sie eine Nachschlagen auf UUCP, historisch die Lösung für dieses Problem und Konfiguration.

+0

Wenn ich so etwas wie UUCP verwenden möchte, werde ich .NET Remoting verwenden! –

+0

@HPT Ich sage nicht, ist eine erstaunliche Technologie, aber es ist sicherlich eine bewährte Technologie. –

1

Ich habe mich auf eine schreckliche Verbindung entwickelt.

Ich hatte Pakete später buchstäblich Stunden (3-6 Stunden IIRC) zurück. Güte

Dank dieser Vertrag ist vorbei :)

Viel Spaß! Ich fühle deinen Schmerz.

0

Sie könnten einen Rahmen wie NServiceBus verwenden, die auf Messaging basiert, und dann abstrakt Ihre Programme aus den Verbindungen selbst.

Das System kann Messaging mit einem Puffer irgendwo entlang der Linie "Wiederholung bis zum Erfolg" ermöglichen, und Sie müssen sich nicht über zu viel Low-Level-Zeug sorgen.

http://www.nservicebus.com/

Ich bin mir nicht sicher, ob es große Datenübertragung ermöglicht, aber es Besuche für die Befehle

Verwandte Themen