Chiamate a procedure remote in Delphi Community

di il
12 risposte

Chiamate a procedure remote in Delphi Community

Buongiorno a tutti,

sono un nuovo iscritto (devo presentarmi in un altro thread?) ed anche un “nuovo” utente Delphi.

Ho utilizzato la Community  v10 e ora probabilmente potrei scaricare la v11 (mi è scaduto l'anno e non ho più provato a scaricare nulla), ma vorrei sapere una cosa da chi è esperto di Delphi: è possibile fare con la Community Edition delle chiamate remote a procedure create appositamente per esporsi sulla rete da un altro programma sempre scritto in Delphi con la Community?

Non REST, proprio chiamare delle procedure (con l'invio e la ricezione di un JSON o non so con che altro tipo di comunicazione) e gestire interamente a mano quel che viene fatto da chi chiama e da chi riceve.

Magari con un sistema di richieste sicure, criptate, via https, non so… anche in questo chiedo a voi che ne sapete di più.

Grazie mille!

12 Risposte

  • Re: Chiamate a procedure remote in Delphi Community

    Se non con un web service, cosa intendi?

  • Re: Chiamate a procedure remote in Delphi Community

    ‘remote procedure call’ NON E' una singola tecnologia, ma un termine generico che identifica una MIRIADE di tecnologie. Quelle che mi vengono in mente ora:

    1. REST
    2. SOAP
    3. XMLRPC
    4. DCOM (Windows)
    5. RMI (Java)
    6. Corba
    7. gRPC

    .

    Ne esistono altre N-mila.

    Comunque l'invio e la ricezione di JSON 

    E'

    caratteristica dei servizi REST.

    Quindi tu NON VUOI utilizzare ESATTAMENTE la tecnologia che VA USATA per soddisfare le TUE richieste ;-)

  • Re: Chiamate a procedure remote in Delphi Community

    15/11/2023 - scuotilance8583 ha scritto:


    è possibile fare con la Community Edition delle chiamate remote a procedure create appositamente per esporsi sulla rete da un altro programma sempre scritto in Delphi con la Community?

    A prescindere che con Delphi Community fai quel che vuoi, non si capisce però cosa vuoi fare. :)

  • Re: Chiamate a procedure remote in Delphi Community

    Grazie intanto per le risposte.

    Per chiarire meglio, e citando dalle risposte qui sopra, direi un “XMLRPC” (ma col JSON).

    “Se non con un web service, cosa intendi?” => un webserver, certo, ma con Delphi Community non trovo componenti per poterlo fare. Esistono librerie o framework semplici (ho visto Delphi MVC Framework ma… c'è troppo dentro, come sparare a una mosca con un cannone) che mettano a disposizione solo, tipo, l'ascolto?

    Tipo, faccio per dire, dal lato “diciamo server”:

    function/procedure cheNeSo ("/rispondoSuChennesoio")
      begin
        faccio qualcosa, estraggo il JSON e in base al contenuto agisco oppure la funzione/procedura stessa sa cosa fare
        return qualchealtracosa (a seconda se devo ritornare qualcosa o no farò procedure o funzioni, anche se forse dovrò sempre ritornare qualcosa, quantomeno uno stato dell'operazione svolta o non svolta)
      end

    Scusate se non mi spiego meglio, chiedete pure e cercherò mi dettagliare ulteriormente.

    [AGG] ripensandoci aggiungo una cosa: dicevo non REST all'inizio perché non vorrei esporre le risorse come si fa col REST, ma solo delle funzioni/procedure (se poi là dietro c'è una risorsa da restituire o da aggiornare su db lo sa la mia procedura).

  • Re: Chiamate a procedure remote in Delphi Community

    15/11/2023 - scuotilance8583 ha scritto:


    un webserver, certo, ma con Delphi Community non trovo componenti per poterlo fare. Esistono librerie o framework semplici (ho visto Delphi MVC Framework ma… c'è troppo dentro, come sparare a una mosca con un cannone

    Non vedo quale sia il problema del “c'è troppo dentro”: ti basta usare solo quello che ti serve specificatamente, ad esempio la parte di JSON-RPC, e ignorare tutto il resto.

  • Re: Chiamate a procedure remote in Delphi Community

    Beh, il problema penso sia la curva di apprendimento: dove c'è tanto, c'è tanto anche da imparare prima di poter usare il prodotto.

    L'idea di MVC è quella che mi interessa, infatti sul sito di Embarcadero si legge:

    Perché JSON-RPC se ho REST?

    RPC e REST sono approcci diversi con pro e contro ed entrambi sono utili a seconda del contesto. Il contesto è la chiave.
    Non esistono soluzioni universali, bisogna sempre pensare all'interno di un contesto e bisogna essere pragmatici nella scelta di una soluzione.

    REST Vs JSON-RPC:

    REST è orientato alle risorse, mentre RPC è orientato alle azioni.
    REST è fortemente legato al protocollo di trasporto, mentre RPC no.
    Le API basate su REST sono ideali per le operazioni basate su CRUD (risorse ed entità). REST non è solo CRUD, ma le cose vengono fatte principalmente attraverso operazioni basate su CRUD.
    RPC può funzionare con socket, http/https, ftp, file system, ecc. In realtà non è legato a nessun protocollo, è solo un modo per descrivere un'azione con i suoi parametri.
    Le API basate su RPC sono ideali per le operazioni basate su azioni (funzioni e procedure)

    Ecco, è appunto quello che cerco di spiegare: nel mio contesto mi serve di restare "orientato alle azioni e non alle risorse" perciò la soluzione è JSON-RPC, però... Delphi MVC Framework è tanta, ma tanta, ma proprio tanta (??) roba!

    Comunque l'idea è quella, perché vedo nel codice che:

    FMVC.PublishObject(
        function: TObject
        begin
          Result := TMyObject.Create;
        end, '/jsonrpc');
    
      FMVC.PublishObject(
        function: TObject
        begin
          Result := TdmMain.Create(nil);
        end, '/rpcdatamodule');
    

    Ecco, ora io dico, non c'è qualcosa (sempre da installare nella Community Ed.) che sia un pochino più "contenuto", semplice, che si occupi solo di:
    1) esporre le routine e ricevere il JSON;
    2) criptare, incapsulare e inviare la response in JSON anche magari via https (opzionalmente, quando mi serve fare in quel modo).
    ?

  • Re: Chiamate a procedure remote in Delphi Community

    15/11/2023 - scuotilance8583 ha scritto:


    Beh, il problema penso sia la curva di apprendimento: dove c'è tanto, c'è tanto anche da imparare prima di poter usare il prodotto.

    Puoi imparare anche solo quello che serve. Dove c'è tanto, le cose che comunque non ti interessano, le puoi ignorare.

    E' come dire che per sviluppare un'applicazione in .NET e C# con Windows Forms io debba conoscere WPF, ASP.NET e tutto il resto: il framework è “tanta roba”, ma poi se ne utilizza la parte che serve e - sebbene sia bello e consigliato dare un'occhiata anche al resto - non è un obbligo.

    15/11/2023 - scuotilance8583 ha scritto:


    Ecco, è appunto quello che cerco di spiegare: nel mio contesto mi serve di restare "orientato alle azioni e non alle risorse" perciò la soluzione è JSON-RPC, però... Delphi MVC Framework è tanta, ma tanta, ma proprio tanta (??) roba!

    Ebbasta con questa storia del “tanta roba”… scusa, ma non troverai mai un linguaggio che dispone di una singola libreria entrambi orientati a creare un server RPC: i linguaggi sono general purpose salvo casi particolari, le librerie sono tante, molte librerie fanno diverse cose, poi si usa ciò che occorre.

    E' come pretendere di voler generare un PDF con dentro una immagine ma non prendere in considerazione la libreria iText perché fa “tanta roba”, cioè inserisce paragrafi, forme, pagine, allegati oltre alle immagini. Cosa importa? Studi solo la parte che gestisce documenti e immagini, e ignori il resto.

    Continuo a non capire il problema, direi perché è un falso problema.

    15/11/2023 - scuotilance8583 ha scritto:


    Ecco, ora io dico, non c'è qualcosa (sempre da installare nella Community Ed.) che sia un pochino più "contenuto", semplice, che si occupi solo di:
    1) esporre le routine e ricevere il JSON;
    2) criptare, incapsulare e inviare la response in JSON anche magari via https (opzionalmente, quando mi serve fare in quel modo).
    ?

    Di librerie ce ne sono diverse, ma nessuna fa solo quello che chiedi.

    Ad esempio, Horse ha un approccio più minimalista, perché basato su plugin, ma questo non cambia la natura delle cose: DelphiMVCFramework usato per i tuoi scopi è come Horse senza plugin.

    Delphi non include negli eseguibili quello che non viene utilizzato, quindi la soluzione più omnicomprensiva e semplice è quella più indicata: lascia perdere le “fissazioni” inutili e usa lo strumento più solido per la tua API.

  • Re: Chiamate a procedure remote in Delphi Community

    15/11/2023 - Alka ha scritto:


    Delphi non include negli eseguibili quello che non viene utilizzato, quindi la soluzione più omnicomprensiva e semplice è quella più indicata: lascia perdere le “fissazioni” inutili e usa lo strumento più solido per la tua API.

    Quindi mi consiglieresti comunque MVC Framework aldilà di tutto?

    E, se sì, sai se esiste una documentazione gratuita (italiana, inglese, quello che è) diversa da quella a pagamento di Teti?

  • Re: Chiamate a procedure remote in Delphi Community

    16/11/2023 - scuotilance8583 ha scritto:


    Quindi mi consiglieresti comunque MVC Framework aldilà di tutto?

    Sì.

    16/11/2023 - scuotilance8583 ha scritto:


    E, se sì, sai se esiste una documentazione gratuita (italiana, inglese, quello che è) diversa da quella a pagamento di Teti?

    Nella cartella del sorgente, ci sono decine di esempi, e se cerchi nel Web o su YouTube, trovi parecchi tutorial.

  • Re: Chiamate a procedure remote in Delphi Community

    16/11/2023 - Alka ha scritto:


    Nella cartella del sorgente, ci sono decine di esempi, e se cerchi nel Web o su YouTube, trovi parecchi tutorial.

    Ottimo, grazie mille. Allora procedo da zero a scaricare la nuova Community (se riesco coi vecchi dati d'accesso) e poi MVC.

    Se avessi qualche domanda (specie nella fase iniziale) posso sempre rivolgermi a voi?

  • Re: Chiamate a procedure remote in Delphi Community

    16/11/2023 - scuotilance8583 ha scritto:


    Se avessi qualche domanda (specie nella fase iniziale) posso sempre rivolgermi a voi?

    Il forum è fatto apposta. :)

    Prima si cerca nel Web, poi se si rimane bloccati si chiede, specificando tutti i dettagli per capire il problema, il codice se necessario.

  • Re: Chiamate a procedure remote in Delphi Community

    Mille grazie @Alka

    Intanto ho ritrovato le credenziali per il mio account su Embarcadero.com e sto scaricando “Delphi Community Edition 11.3 Alexandria installer”.

    Vi terrò informati.

Devi accedere o registrarti per scrivere nel forum
12 risposte