Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Struktur Frage (https://www.delphipraxis.net/174116-struktur-frage.html)

franktron 4. Apr 2013 16:50

Struktur Frage
 
Ich will eine Art FTP Proxy machen.

Also ich habe x Clients die per XML Anfragen an eine Server schicken und jetzt soll der Server die Anfragen abarbeiten, aber wie.

1. Idee Jeder Client bekommt eine Extra Instanz (Problem es kann immer nur eine Client auf den Selben FTP zugreifen)
2. Eine Queue (Problem Clients müssen Warten bis die anfragen der Clients vorher abgearbeitet sind)

Was ist die beste Methode, oder gibts noch eine Möglichkeiten.

Sir Rufo 4. Apr 2013 18:54

AW: Struktur Frage
 
Alle Anfragen in eine Queue schicken und diese Queue von mehreren Download-Threads abarbeiten lassen

franktron 5. Apr 2013 08:07

AW: Struktur Frage
 
Zitat:

Zitat von Sir Rufo (Beitrag 1210031)
Alle Anfragen in eine Queue schicken und diese Queue von mehreren Download-Threads abarbeiten lassen

Aber wie kriegt man das hin das nur eine Verbindung zum FTP Server steht. (Also das nicht 2 Threads eine Verbindung gleichzeitig aufbauen)

Klaus01 5. Apr 2013 10:23

AW: Struktur Frage
 
Hallo,

wieviel FTP Server sollen denn bedient werden?

Mein Vorschlag:
Pro FTP Server einen FTP Client Thread.
Jeder FTP Client Thread hat eine Auftragsqueue (Aufnahmekapazität: begrenzt/unbegrenzt).

Die Applikation befüllt je nach Ziel-FTP-Server die jeweilige Auftragequeue des entsprechenden Client-Threads.

Grüße
Klaus

franktron 5. Apr 2013 10:32

AW: Struktur Frage
 
Zitat:

Zitat von Klaus01 (Beitrag 1210064)
Hallo,

wieviel FTP Server sollen denn bedient werden?

Mein Vorschlag:
Pro FTP Server einen FTP Client Thread.
Jeder FTP Client Thread hat eine Auftragsqueue (Aufnahmekapazität: begrenzt/unbegrenzt).

Die Applikation befüllt je nach Ziel-FTP-Server die jeweilige Auftragequeue des entsprechenden Client-Threads.

Grüße
Klaus

Das ist keine gute Idee da eine Anzahl von X möglich ist, bei uns ist x ca. 50

sx2008 5. Apr 2013 10:56

AW: Struktur Frage
 
Muss es unbedingt FTP sein oder geht es nur darum Dateien irgendwie übers Internet/Intranet zu schieben?

Sir Rufo 5. Apr 2013 11:34

AW: Struktur Frage
 
Dann schmeiß die Aufträge in eine Liste und suche dir aus dieser Liste, den nächsten möglichen Auftrag heraus (wenn die maximalen Verbindungen noch nicht erreicht sind).

Dazu hast du z.B. die gerade aktiven FTP-Server in einer Liste (z.B. TStringList) und prüfst bei jedem Auftrag, ob der FTP-Server schon in der Liste ist.

Wenn nicht, dann den FTp-Server in diese Liste rein und den Auftrag abarbeiten lassen (Thread).
Ist der Download abgeschlossen, dann den FTp-Server wieder aus der Liste und weiter zum nächsten Auftrag.

franktron 5. Apr 2013 11:47

AW: Struktur Frage
 
Zitat:

Zitat von sx2008 (Beitrag 1210069)
Muss es unbedingt FTP sein oder geht es nur darum Dateien irgendwie übers Internet/Intranet zu schieben?

Ja muss es

Zu der Problemstellung, meine Chefs wollen das ich die Komplette Internetverbindung von den Client PC unterbinde
also nur noch Surfen über Proxy und Mail über den Internen Mail Server.

Bleib momentan nur noch der FTP wenn unsere Leute eine FTP Verbindung zum Kunden aufbauen müssen.

Sir Rufo 5. Apr 2013 11:49

AW: Struktur Frage
 
Zitat:

Zitat von franktron (Beitrag 1210076)
Zitat:

Zitat von sx2008 (Beitrag 1210069)
Muss es unbedingt FTP sein oder geht es nur darum Dateien irgendwie übers Internet/Intranet zu schieben?

Ja muss es

Zu der Problemstellung, meine Chefs wollen das ich die Komplette Internetverbindung von den Client PC unterbinde
also nur noch Surfen über Proxy und Mail über den Internen Mail Server.

Bleib momentan nur noch der FTP wenn unsere Leute eine FTP Verbindung zum Kunden aufbauen müssen.

Gibt es dafür einen Grund?
- z.B. die Internet-Leitung ist dauernd überlastet und deine Chefs können nicht vernünftig surfen?

franktron 5. Apr 2013 11:54

AW: Struktur Frage
 
Ja es gibt einen Grund, den ich aber nicht sagen darf.

Klaus01 5. Apr 2013 12:04

AW: Struktur Frage
 
Zitat:

Zitat von Sir Rufo (Beitrag 1210073)
Dazu hast du z.B. die gerade aktiven FTP-Server in einer Liste (z.B. TStringList) und prüfst bei jedem Auftrag, ob der FTP-Server schon in der Liste ist.

..dies hat meiner Meinung nach den Nachteil, dass es unter Umständen recht lange dauert
bis Aufträge die an nicht aktive FTP-Server gerichtet sind abgearbeitet werden.

Da ein Verbindungsabbau und -aufbau auch nicht sehr lange dauern würde ich die Liste (Stack)
von oben Position 0 nach unten abarbeiten.
Neue Aufträge sollten dann von hinten an die Liste angehangen werden.

Ein Auftrag könnte dann z.B: aus FTP-Server, Zugangsdaten, Dateipfad, Dateiname bestehen.

Grüße
Klaus

Sir Rufo 5. Apr 2013 12:10

AW: Struktur Frage
 
Zitat:

Zitat von Klaus01 (Beitrag 1210082)
Zitat:

Zitat von Sir Rufo (Beitrag 1210073)
Dazu hast du z.B. die gerade aktiven FTP-Server in einer Liste (z.B. TStringList) und prüfst bei jedem Auftrag, ob der FTP-Server schon in der Liste ist.

..dies hat meiner Meinung nach den Nachteil, dass es unter Umständen recht lange dauert
bis Aufträge die an nicht aktive FTP-Server gerichtet sind abgearbeitet werden.

Da ein Verbindungsabbau und -aufbau auch nicht sehr lange dauern würde ich die Liste (Stack)
von oben Position 0 nach unten abarbeiten.
Neue Aufträge sollten dann von hinten an die Liste angehangen werden.

Ein Auftrag könnte dann z.B: aus FTP-Server, Zugangsdaten, Dateipfad, Dateiname bestehen.

Grüße
Klaus

Das sehe ich etwas anders ... :)

Also pro FTP-Server darf immer nur ein Download stattfinden.
Worst-Case
49 Anfragen gehen an ftp1 und 1 Anfrage geht an ftp2
Jetzt muss der Download für ftp2 so lange warten, bis alle 49 Aufträge vorher abgearbeitet wurden, obwohl dieser Auftrag parallel hätte abgearbeitet werden können.

Meine Variante arbeitet die Liste nach dem Eintragszeitpunkt und zur Verfügung stehender Verbindung zu dem ftp-Server ab (ist der Server schon in Verwendung, dann den Auftrag liegen lassen)

jfheins 5. Apr 2013 12:29

AW: Struktur Frage
 
Zitat:

Zitat von franktron (Beitrag 1210027)
1. Idee Jeder Client bekommt eine Extra Instanz (Problem es kann immer nur eine Client auf den Selben FTP zugreifen)

Warum eigentlich diese Einschränkung? FTP-Server kommen doch problemlos mit mehreren Client-Instanzen zurecht. Habe ich gerade Ausprobiert, zwei FTP-Clients benutzt, zum gleichen Server verbunden. Klappte eigentlich gut.

franktron 5. Apr 2013 12:46

AW: Struktur Frage
 
Zitat:

Zitat von jfheins (Beitrag 1210085)
Zitat:

Zitat von franktron (Beitrag 1210027)
1. Idee Jeder Client bekommt eine Extra Instanz (Problem es kann immer nur eine Client auf den Selben FTP zugreifen)

Warum eigentlich diese Einschränkung? FTP-Server kommen doch problemlos mit mehreren Client-Instanzen zurecht. Habe ich gerade Ausprobiert, zwei FTP-Clients benutzt, zum gleichen Server verbunden. Klappte eigentlich gut.

Das liegt an unseren Kunden die nur 1 Verbindung zulässt und bei zufielen gleichzeitigen Verbindung (andere Kunde) ein Block auslöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz