2009-05-22 4 views
2

Hier ist eine interessante Kombination, ich muss Daten zwischen einer "Appliance" mit Windows XP Home und einem Remote-Linux-Server im Internet übertragen. Lassen Sie mich aufführen, was passieren muss:Vorschläge für Software-Architektur-Stil zwischen Java und Windows zu verwenden

  1. Das "xp home" -System muss Daten oder Dateien alle 30 Minuten oder so übertragen. (sftp?)
  2. Der Linux-Server muss das "XP Home" -System kontaktieren, um Daten anzufordern.

Scheint einfach genug eh? Ich dachte über die Verwendung von Webdiensten auf der Linux-Seite nach und dachte, dass es schön wäre, dasselbe auf dem XP Home-System zu machen. Aber einige meiner Untersuchungen sagen, dass XP Home nicht funktioniert, um eingehende Web-Service-Anrufe zu beantworten. Vielleicht ist das falsch? Was ist mit RESTful-Diensten, die den Trick machen?

BTW: Da dies eine neue Anwendung ist, kann ich die Entwicklung auf beiden Seiten tun. C# auf der Windows-Seite und Java auf der Linux-Seite.

Ideen werden geschätzt!

+0

Ich möchte Ihnen allen für Ihre Antworten zu dieser Frage danken. Einige sehr einzigartige Wege zur Lösung des Problems, die ich nicht einmal in Betracht gezogen habe und die alle für eine Umsetzung geeignet erscheinen. – Rick

Antwort

1

Installieren Sie Cygwin auf dem Windows-Server, installieren Sie einen SSH-Server und vergewissern Sie sich, dass rsync installiert ist. Auf der Linux-Seite rufen Sie rsync über einen Cron-Job auf. Keine Programmierung/Design erforderlich.

+0

Ich habe rsync in anderen Anwendungen verwendet und es funktioniert gut und ich mag Ihre Idee für ihre Einfachheit. Ich muss jedoch darüber nachdenken, wie man die Echtzeitdaten auf Abruf zurückbekommt (dh vom Besuch einer Webseite und dem Klicken auf einen Link). Ich mag es - sehr einfach. – Rick

1

warum nicht auch Java auf der Windows-Seite verwenden? Tomcat sollte auf jedem XP laufen .... das wird sich auch um deine andere Frage kümmern.

+0

Ich mag es. "Iron Demon", wie "Iron Chef", nein? –

+0

Dämon von Eisenmenschen - gespielt zu viel Battletech in den 90ern ... –

0

Okay, so das Protokoll über all

  1. Linux-System in Kontakt mit dem Windows-System Daten verlangen
  2. Windows-System mit Daten antwortet.

Wie viele Daten und welcher Typ?

Es scheint, zuerst gedacht, dass Sie nur einen Webserver auf der Windows-Box ausführen und mit Daten reagieren. Ich habe keinen gebaut, aber es gibt viele Webserver, die Windows unterstützen.

+0

Zuerst die Daten zu übertragen alle 30 Minuten oder so könnte 2 meg oder so sein. Aber wenn das Linux-System eine Anfrage für die Daten macht, ist es klein wie 2K oder weniger. – Rick

+0

Hoppla, habe deine Frage nicht beantwortet - Typ ist Binärdaten. – Rick

+0

Okay, wirklich, schauen Sie sich einen Webserver an. Vorausgesetzt, Sie haben irgendeine anständige Kommunikation, werden sogar 2 MB nicht lange dauern. Sie erhalten automatisch Threading, Sie können automatisch eine Verschlüsselung haben, und die Anfrage kann in Java mit HTTPURLConnection von der Stange erledigt werden. http://java.sun.com/j2se/1.5.0/docs/api/java/net/HttpURLConnection.html –

1

XP Home enthält nicht IIS, aber Sie können einen anderen Webserver installieren und auf der Windows-Seite verwenden. Eine andere Möglichkeit wäre, einige einfache Sockets auf beiden Seiten zu programmieren, um die Anfragen von der Linux-Box an die XP-Box zu erleichtern. Dieser Ansatz ist nicht gut skalierbar, aber wenn Sie etwas schnell zusammenstellen möchten, würde es funktionieren.

+0

Ja, ich habe versucht, einen einfachen TCP-Client/Server für beide Enden zu tun, dann dachte ich über offen Ports, und muss es entwickeln, um gegen Hacker zu schützen ..... naja, ich kann so anfangen und wenn ich die Firma in ein paar Jahren verlasse, übergebe es an den nächsten Typ! :) Ich mache nur Spaß. – Rick

2

Da die Anwendung neu ist und Sie eine starke Echtzeit-Datenfreigabe benötigen, könnte ich Ihnen empfehlen, die gemeinsame Datenbank zu verwenden. Sie können auf einem dieser Hosts installieren.

Jede Art von Web-Services-Lösung ist zu komplex. Verwenden Sie dieselbe Technologie auf beiden Computern, und Sie können die sprachspezifischen Funktionen der von Ihnen gewählten Sprache verwenden.

0

Eine andere Lösung wäre die Verwendung von etwas Nachricht basiert, wie JMS oder XMPP. Da es über das Internet ist, könnte XMPP besser passen.

XMPP Chat-Nachrichten können für Handshaking verwendet werden und es hat Filesharing-Erweiterungen für die Binärübertragungen.

Sie können auch die Sprache Ihrer Wahl verwenden, um beide Enden zu implementieren, da Bibliotheken in allen gängigen Sprachen verfügbar sind.

Edit: Angeblich Tivo verwendet es jetzt, um senden Updates an die Tivo-Boxen von ihren Servern senden.

1

Wenn Sie nicht wirklich Echtzeit benötigen.

Eine Low-Tech-Lösung kann sein, die Windows-Appliance in regelmäßigen Abständen die Linux-Box abzufragen. Es könnte Daten senden und die Linux-Box fragen, wenn es etwas braucht.

Dies würde verhindern, dass eingehende Ports auf der Windows-Seite geöffnet werden müssen (was nicht wünschenswert oder möglich ist).

0

Eine andere Lösung wäre, die XP-Seite einfach mit einem Java-Servlet verbinden zu lassen und die Daten als JSON zu übergeben. Es ist wahrscheinlich der einfachste Ansatz, da Sie nur die Java-Seite sichern müssen und JSON sehr einfach zu parsen ist, und in meinen Tests war es schneller für meine Bedürfnisse als mit einem Webservice.

Wenn Sie die Java-Side-Anforderung haben müssen, dann hören Sie einfach auf einen Port, nur um informiert zu werden, dass Daten gesendet werden müssen, und senden Sie dann die Daten an das Servlet. Es wäre ein einfacher Server auf der XP-Seite, da es keine Daten überträgt, sondern nur eine winzige Nachricht erhält ("senden").

Verwandte Themen