Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [DELPHI] : Trasferire File - FTP vs HTTP

    Salve a tutti,
    ho creato un programma in Delphi che invia dei file ad un server via FTP tramite accesso autenticato.
    Per fare ciò ho utilizzato i componenti Indy.

    Ora mi è stato detto che si può utilizzare anche il protocollo HTTP per trasferire file e che non solo non da problemi di configurazione in caso di presenza di router ma che è anche più veloce (circa 10%)!

    Ma è possibile che inviare i file in HTTP(HiperText Transfer Protocol) sia meglio che con il protocollo FTP (File Transport Protocol) appositamente studiato per inviare i file?!?

    Vorrei quindi sapere come si possono inviare i files con il protocollo HTTP tramite autenticazione del client, con una diversa cartella di destionazione a seconda del client che si collega e soprattutto quali sono i vantaggi/svantaggi di usare l'HTTP per trasferire rispetto all'FTP.

    Tutto ovviamente rapportato al linguaggio che utilizzo cioè il Delphi.

    Grazie!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  2. #2
    Vabbhe che su internet ho trovato pochissimi riferimenti in merito, ma nessuno sa? Dov'è il mitico Alka?! che fosse andato in ferie!!!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  3. #3

    Re: [DELPHI] : Trasferire File - FTP vs HTTP

    Originariamente inviato da Whitecrowsrain
    Salve a tutti,
    ho creato un programma in Delphi che invia dei file ad un server via FTP tramite accesso autenticato.
    Per fare ciò ho utilizzato i componenti Indy.

    Ora mi è stato detto che si può utilizzare anche il protocollo HTTP per trasferire file e che non solo non da problemi di configurazione in caso di presenza di router ma che è anche più veloce (circa 10%)!

    Ma è possibile che inviare i file in HTTP(HiperText Transfer Protocol) sia meglio che con il protocollo FTP (File Transport Protocol) appositamente studiato per inviare i file?!?

    Vorrei quindi sapere come si possono inviare i files con il protocollo HTTP tramite autenticazione del client, con una diversa cartella di destionazione a seconda del client che si collega e soprattutto quali sono i vantaggi/svantaggi di usare l'HTTP per trasferire rispetto all'FTP.

    Tutto ovviamente rapportato al linguaggio che utilizzo cioè il Delphi.

    Grazie!
    FTP può dare problemi di configurazione solo se non opportunamente configurato.
    Se lato client utilizzi modalità passiva (come andrebbe fatto) e lato server hai aperto un determinato range di porte tali problemi ovviamente non sussistono.

    Non capisco, poi, che significa "HTTP è più veloce di FTP del 10 %".
    La velocità di trasferimento non c'entra niente col protocollo.

    FTP è certamente più "verboso" di HTTP nel senso che in una sessione FTP "classica" client e server si scambiano qualche comando prima che il trasferimento abbia inizio (user, pass, listing dei file) ma oltre a quello il trasferimento del file vero e proprio avviene nel medesimo modo e alla medesima velocità, come in un qualunque altro protocollo.

    Ma è possibile che inviare i file in HTTP(HiperText Transfer Protocol) sia meglio che con il protocollo FTP (File Transport Protocol) appositamente studiato per inviare i file?!?
    Posta cosi la tua domanda non ha molto senso.
    Meglio rispetto a cosa?
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  4. #4
    La cosa è semplice da fare. Con il componente IdHTTPClient invii uno stream che rappresenta il file di cui fare l'upload. Nel tuo caso però, avendo già fatto la cosa usando la modalità ftp non modificherei il programma per passare all'http. La velocità dell'upload è la stessa.

  5. #5
    Originariamente inviato da billiejoex
    FTP può dare problemi di configurazione solo se non opportunamente configurato.
    Se lato client utilizzi modalità passiva (come andrebbe fatto) e lato server hai aperto un determinato range di porte tali problemi ovviamente non sussistono.
    Infatti il problema è che un software che è utilizzato da molte persone e qualcuno ha avuto non solo problemini legati all'apertura delle porte sul router ma anche con il proprio provider (immaginatevi quale provider ha dato problemi...)

    Originariamente inviato da billiejoex
    Non capisco, poi, che significa "HTTP è più veloce di FTP del 10 %".
    La velocità di trasferimento non c'entra niente col protocollo.
    A quanto pare non è così, almeno per quello che mi è stato detto!
    Sembra che a parità di velocità di trasmissione l'FTP risulti leggermente più lento per il fatto che fa dei controlli sui pacchetti inviati che il protocollo HTTP non fa.
    Qui chiedevo se questa cosa fosse vera o se fosse una legenda metropolitana!

    Originariamente inviato da billiejoex
    Posta cosi la tua domanda non ha molto senso.
    Meglio rispetto a cosa?
    Come no!!! ho chiesto se, secondo la vostra esperienza, inviare file con il protocollo HTTP è meglio che con il protocollo FTP.. cosa c'è che non ha senso in questa domanda?

    Originariamente inviato da denis76
    La cosa è semplice da fare. Con il componente IdHTTPClient invii uno stream che rappresenta il file di cui fare l'upload. Nel tuo caso però, avendo già fatto la cosa usando la modalità ftp non modificherei il programma per passare all'http. La velocità dell'upload è la stessa.
    Ecco quello che chiedevo io era magari sapere come si potesse utilizzare il protocollo HTTP per inviare file con l'autenticazione dell'utente prima dell'invio, che quindi l'upload del file deve avvenire in cartelle diverse a seconda del cliente connesso (ovvero quello che accade con il protocollo FTP).
    Ed in più volevo sapere se dalla parte server deve esserci un applicativo PHP per far si che il file venga inviato correttamente (Come avviene per l'FTP che dall'altra parte deve esserci un server FTP in ascolto!)

    Insomma ci sono dei riferimenti, delle giude in merito?
    Vale la pena passare dall'FTP all'HTTP?

    P.S.
    Voi vi chiederete per quale motivo io sto facendo questo genere di domande, ebbene vi chiedo questo,oltre al motivo sopra elencato, perchè delle aziende che han fatto software concorrente con il mio utilizzano l'HTTP come protocollo per inviare il file.
    Ora siccome queste aziende sono molto più grandi e probabilmente più esperte in questo settore volevo capire come mai loro avessero pensato di adottare proprio l'http per inviare file.
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Whitecrowsrain
    A quanto pare non è così, almeno per quello che mi è stato detto!
    Chiedi a chi ti ha dato l'informazione in che modo e su quali basi afferma ciò che dice: se non ce ne sono, allora significa che ha dato una spiegazione basata su una semplice sensazione o comunque non verificata dal punto di vista tecnico.

    Originariamente inviato da Whitecrowsrain
    Come no!!! ho chiesto se, secondo la vostra esperienza, inviare file con il protocollo HTTP è meglio che con il protocollo FTP.. cosa c'è che non ha senso in questa domanda?
    Non ha senso dire "meglio", perché va definito cosa si intende per "meglio", o su quale aspetto si vuole comparare un protocollo con un altro, perché altrimenti se fosse possibile stabilire un protocollo "migliore", non avrebbe senso l'esistenza o il continuo utilizzo dell'altro ancora al giorno d'oggi, ma tutti - e dico TUTTI - userebbero solo il presunto "migliore".

    Originariamente inviato da Whitecrowsrain
    Ecco quello che chiedevo io era magari sapere come si potesse utilizzare il protocollo HTTP per inviare file con l'autenticazione dell'utente prima dell'invio, che quindi l'upload del file deve avvenire in cartelle diverse a seconda del cliente connesso (ovvero quello che accade con il protocollo FTP).
    Presumo sia possibile farlo.

    Originariamente inviato da Whitecrowsrain
    Ed in più volevo sapere se dalla parte server deve esserci un applicativo PHP per far si che il file venga inviato correttamente (Come avviene per l'FTP che dall'altra parte deve esserci un server FTP in ascolto!)
    Ci deve essere un server HTTP in ascolto, poi il software (PHP, ASP.NET, Delphi, ...) dipende dalla modalità con cui si effettua il trasferimento: se si usa il comando PUT di HTTP, allora non credo sia necessario un "intermediario" (il server è già in grado di gestire la richiesta); se invece si presuppone un'operazione logica qualsiasi in ricezione del file, allora serve un'applicazione lato server che la svolga.

    Originariamente inviato da Whitecrowsrain
    Insomma ci sono dei riferimenti, delle giude in merito?
    La questione è troppo generica.

    Originariamente inviato da Whitecrowsrain
    Vale la pena passare dall'FTP all'HTTP?
    Dipende da cosa devi fare. Se il tuo obiettivo è realizzare quanto hai descritto sopra, credo che usare il protocollo HTTP e ricevere quindi il file in upload in una tua applicazione, dove puoi fare ciò che vuoi, sia la scelta più libera, poiché nel caso dell'FTP le possibilità sono ristrette ai comandi del protocollo.

    Originariamente inviato da Whitecrowsrain
    P.S.
    Voi vi chiederete per quale motivo io sto facendo questo genere di domande, ebbene vi chiedo questo,oltre al motivo sopra elencato, perchè delle aziende che han fatto software concorrente con il mio utilizzano l'HTTP come protocollo per inviare il file.
    Ora siccome queste aziende sono molto più grandi e probabilmente più esperte in questo settore volevo capire come mai loro avessero pensato di adottare proprio l'http per inviare file.
    Le scelte architetturali possono essere dettate da varie condizioni, quindi "usare qualcosa perché lo usa un altro" non è in generale un assunto produttivo, o almeno non senza aver prima indagato sui motivi.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Originariamente inviato da alka
    Chiedi a chi ti ha dato l'informazione in che modo e su quali basi afferma ciò che dice: se non ce ne sono, allora significa che ha dato una spiegazione basata su una semplice sensazione o comunque non verificata dal punto di vista tecnico.
    Quello che posso dirti per ora (stiamo tutti in ferie e ora mi è difficile farmi dare una spiegazione tecnica) e che a parità di banda e con gli stessi file il protocollo HTTP sembra avere una marcia in più per il trasferimento file in termini di velocità. Il mio collega, non so da quali fonti e quando torno glie lo chiederò, mi ha detto che riesce ad avere una velocità del 10% superiore all'FTP.
    Sto cercando in rete ma non ho ancora trovato le risposte che cerco e quindi chiedo qui per sapere se qualcuno ha già affrontato questo problema.

    Originariamente inviato da alka
    Non ha senso dire "meglio", perché va definito cosa si intende per "meglio", o su quale aspetto si vuole comparare un protocollo con un altro, perché altrimenti se fosse possibile stabilire un protocollo "migliore", non avrebbe senso l'esistenza o il continuo utilizzo dell'altro ancora al giorno d'oggi, ma tutti - e dico TUTTI - userebbero solo il presunto "migliore".
    Infatti nel mio caso alcune aziende sono migrate verso l'utilizzo di quel protocollo per inviare file e volevo capire il perchè e i giovamenti che hanno ricevuto da questa scelta.
    Originariamente inviato da alka
    Ci deve essere un server HTTP in ascolto, poi il software (PHP, ASP.NET, Delphi, ...) dipende dalla modalità con cui si effettua il trasferimento: se si usa il comando PUT di HTTP, allora non credo sia necessario un "intermediario" (il server è già in grado di gestire la richiesta); se invece si presuppone un'operazione logica qualsiasi in ricezione del file, allora serve un'applicazione lato server che la svolga.
    Si questo lo immaginavo, quello che non riesco ancora a focalizzare è come si possa costruire un'architettura per inviare file usando il protocollo HTTP con i vantaggi dell 'FTP (autenticazione dell'utente, diversa cartella di upload per utente). E' per questo che cercavo qualche tutorial, guida, manuale o esempio in merito per chiarirmi le idee.

    Originariamente inviato da alka
    Le scelte architetturali possono essere dettate da varie condizioni, quindi "usare qualcosa perché lo usa un altro" non è in generale un assunto produttivo, o almeno non senza aver prima indagato sui motivi.
    Infatti è quello che sto cercando di fare, capire se effettivamente ne trarrei giovamenti!
    Tutto questo perchè è il cliente che mi ha chiesto di utilizzare questo protocollo perchè utilizzando gli altri prodotti non ha problemi di configurazione e/o velocità di trasferimento.

    Io prima di dargli retta o bocciargli la proposta vorrei documentarmi per bene!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  8. #8
    Se lato server puoi mettere un tuo eseguibile puoi usare il componete IdHTTPServer che supporta autenticazione quant'altro.
    Mi pare di capire però che lato server hai apache + php e quindi devi arrangiarti con quello. Se vuoi lato client puoi usare una cosa del genere:

    codice:
    function PostHTTP(Server, funzione, UserID, Password: String; Socket: Integer; TestoXmlOut, TestoXmlIn: TStream; LogProcedure: TLogProcedure): boolean;
    var
      IdHTTP: TIdHTTP;
    begin
      funzione:= 'http://'+ Server+ ':'+ IntToStr(Socket)+ '/'+ funzione;
      PostHTTP:= false;
      IdHTTP:= TIdHTTP.Create(nil);
      try
        try
          IdHTTP.AllowCookies:= True;
          IdHTTP.ProtocolVersion:= pv1_0;
          IdHTTP.ProxyParams.BasicAuthentication:= False;
          IdHTTP.ProxyParams.ProxyPort:= 0;
          IdHTTP.Request.ContentLength:= -1;
          IdHTTP.Request.Accept:= 'text/html, */*';
          IdHTTP.Request.BasicAuthentication:= False;
          IdHTTP.Request.UserAgent:= 'Mozilla/3.0 (compatible; Indy Library)';
          IdHTTP.Request.BasicAuthentication:= true;
          IdHTTP.Request.Username:= UserID;
          IdHTTP.Request.Password:= Password;
          IdHTTP.HTTPOptions:= [hoKeepOrigProtocol,hoForceEncodeParams];
          IdHTTP.Post(funzione, TestoXmlOut, TestoXmlIn);
          if IdHTTP.ResponseCode= 200 then PostHTTP:= true else if Assigned(LogProcedure) then LogProcedure(' Errore di autenticazione! ResponseCode: '+ IntToStr(IdHTTP.ResponseCode));
          except on e: Exception do begin
            if Assigned(LogProcedure) then LogProcedure('ThTrasferisciTimbrature.PostHTTP() '+ e.Message);
          end;
        end;
      finally
        IdHTTP.Free();
      end;
    end;
    che è una funzioncina che uso io. Accetta uno stream da spedire e scrive in un altro stream ciò che torna.
    Ora, non vorrei dire una cazzata, di solito http non si usa per caricare file di grosse dimensioni, ad esempio quando carico qualcosa nel mio sito presso Aruba mi obbligano ad usare ftp per i file di grosse dimensioni.
    Non vorrei infatti che il server http si tenga l'intero file in ram fintantoché non lo ha ricevuto tutto (e quindi se hai un file grosso...) mentre l'ftp lo scrive subito nel disco...


    Ma non è che hanno configurato male in server ftp?

  9. #9
    Infatti il problema è che un software che è utilizzato da molte persone e qualcuno ha avuto non solo problemini legati all'apertura delle porte sul router ma anche con il proprio provider (immaginatevi quale provider ha dato problemi...)
    Un provider che nega il traffico FTP? No, non riesco a immaginarlo.

    A quanto pare non è così, almeno per quello che mi è stato detto!
    Sembra che a parità di velocità di trasmissione l'FTP risulti leggermente più lento per il fatto che fa dei controlli sui pacchetti inviati che il protocollo HTTP non fa.
    Qui chiedevo se questa cosa fosse vera o se fosse una legenda metropolitana!
    Non è neanche una leggenda metropolitana.
    E' una semplice ca**ata.

    Come no!!! ho chiesto se, secondo la vostra esperienza, inviare file con il protocollo HTTP è meglio che con il protocollo FTP.. cosa c'è che non ha senso in questa domanda?
    Te l'ho spiegato sopra con la domanda: "meglio rispetto a cosa?" a cui tu hai risposto riproponendo la domanda iniziale che era "è meglio FTP o HTTP?" che probabilmente riproporrai per la terza volta e a cui per la terza volta ti verrà risposto "meglio rispetto a cosa?".

    Ecco quello che chiedevo io era magari sapere come si potesse utilizzare il protocollo HTTP per inviare file con l'autenticazione dell'utente prima dell'invio, che quindi l'upload del file deve avvenire in cartelle diverse a seconda del cliente connesso (ovvero quello che accade con il protocollo FTP).
    Il protocollo HTTP non prevede autenticazione.
    Se vuoi fare quanto da te descritto (trasferire un file su HTTP previa autenticazione) devi utilizzare/sviluppare un'applicazione web apposita.

    Ed in più volevo sapere se dalla parte server deve esserci un applicativo PHP per far si che il file venga inviato correttamente (Come avviene per l'FTP che dall'altra parte deve esserci un server FTP in ascolto!)
    Per fare quanto da te descritto ci vuole sicuramente un applicativo lato server. Che sia scritto in PHP, ASP o cirillico è un altro discorso.

    Insomma ci sono dei riferimenti, delle giude in merito?
    Guide per fare che?

    Vale la pena passare dall'FTP all'HTTP?
    =)

    Voi vi chiederete per quale motivo io sto facendo questo genere di domande, ebbene vi chiedo questo,oltre al motivo sopra elencato, perchè delle aziende che han fatto software concorrente con il mio utilizzano l'HTTP come protocollo per inviare il file.
    Ora siccome queste aziende sono molto più grandi e probabilmente più esperte in questo settore volevo capire come mai loro avessero pensato di adottare proprio l'http per inviare file.
    Perchè non lo chiedi direttamente a loro?

    Quello che posso dirti per ora (stiamo tutti in ferie e ora mi è difficile farmi dare una spiegazione tecnica) e che a parità di banda e con gli stessi file il protocollo HTTP sembra avere una marcia in più per il trasferimento file in termini di velocità. Il mio collega, non so da quali fonti e quando torno glie lo chiederò, mi ha detto che riesce ad avere una velocità del 10% superiore all'FTP.
    Sto cercando in rete ma non ho ancora trovato le risposte che cerco e quindi chiedo qui per sapere se qualcuno ha già affrontato questo problema.
    Continua pure a cercare ma non troverai nulla a sostegno di questa sua (tua?) strampalata ipotesi senza capo nè coda.

    Infatti nel mio caso alcune aziende sono migrate verso l'utilizzo di quel protocollo per inviare file e volevo capire il perchè e i giovamenti che hanno ricevuto da questa scelta.
    Avranno avuto i loro motivi tra cui non rientra certamente la velocità di trasferimento.

    Infatti è quello che sto cercando di fare, capire se effettivamente ne trarrei giovamenti!
    Altro quesito senza risposta visto che non descrivi un contesto, i "problemi di configurazione" denunciati dal cliente, e tante altre cose che dovrebbero fare da contorno ad un tipo di problema che andrebbe analizzato e discusso da un punto di vista tecnico, cosa che tu non stai facendo.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  10. #10
    Il protocollo http se si vuole implementa già alcuni tipi di autenticazione. Secondo me comunque il modo più efficiente di fare la cosa è l'uso dell'ftp.
    Detto questo, se il cliente paga faglielo, vendiglela come "doppia tecnologia di trasferimento dati".

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.