2012-06-07 10 views
6

Ho costruito una serie di strumenti che uso nel mio lavoro quotidiano e vorrei farli apparire un po 'più "professionali" per venderli alle istituzioni finanziarie.Costruire un'applicazione professionale in Perl?

Al momento questi strumenti sono scritti in Perl e vengono eseguiti da una riga di comando DOS, è estremamente efficiente ma non sembra molto interessante.
Quindi, vorrei aggiungere un'interfaccia utente ad esso, ma io non so davvero cosa usare per la lingua knowning che:

    interfaccia
  • Un Perl CGI ospitate sul web non è un'opzione poiché le informazioni essere dato come input è abbastanza sensibile.
  • Sarebbe ideale venderlo come pacchetto/eseguibile.
  • Non mi piace l'interfaccia Perl/Tk.
  • Sto bene con la riscrittura dell'applicazione in un'altra lingua, ma preferirei riutilizzare i moduli principali in Perl poiché è molto potente con espressioni regolari e liste/array.

Cosa mi consiglieresti di fare? Grazie, Lory

+2

"il web non è un'opzione poiché l'informazione è abbastanza sensibile". Ci sono Intranet, o anche localhost. – Thilo

+0

Davvero ci ho pensato. Forse è uno stupido, ma è un uso comune vendere un'applicazione che richiede l'installazione di un server Apache, Perl, ecc.? – loeyck

+2

Sì. Si consiglia di impacchettare bene, però. Ad esempio come dispositivo virtuale (per VMWare o VirtualBox). – Thilo

risposta

8

Se si desidera una GUI non web-based, e non mi piace Tk, c'è anche Wx, che è un wrapper per il toolkit wxWidgets GUI.

Tuttavia, al giorno d'oggi le applicazioni Web possono essere veramente facili da creare (utilizzando un framework moderno). Prendiamo l'applicazione Mojolicious, ad esempio: Mojolicious non ha dipendenze diverse da Perl 5.12.x e fornisce il proprio server Web (Hypnotoad). È possibile iniziare generando una "Lite :: App", che è una semplice applicazione a file singolo autosufficiente, per poi farla crescere più tardi in seguito alla necessità. Include persino strumenti per convertire la tua applicazione in una distribuzione opportunamente confezionata che può essere installata facilmente come qualsiasi modulo CPAN.

Quindi questo lascia il problema della sicurezza. Autenticazione utente, whitelist IP, solo rete locale ... ci sono molti modi per rendere un'applicazione web "solo per uso interno" se è quello che ti serve.

Si potrebbe semplicemente mettere insieme un prototipo di applicazione Web e, una volta determinato l'interesse del cliente per il prodotto, investire il tempo sostanziale per scriverlo come un'applicazione GUI di Windows.

+1

È molto più facile mettere insieme una GUI di Windows utilizzando un toolkit RAD e poi impantanarsi nell'assemblaggio web con HTTP, HTML, CSS, Javascript, apolidia, patch come Cookies. Soprattutto se sei un principiante. Ho fatto web dev per molti anni, ma lo stack web è orribilmente complicato e di basso livello una volta confrontato con il mondo RAD dello sviluppo brillante del desktop. A proposito, Mojolicious (che ho anche usato) non risolve il problema dell'interfaccia utente. E un altro, Mojolicious non è ben testato su Windows (come molti script) e Hypnotoad non lo fa affatto. – Lumi

2

La mia ipotesi è che il sistema di destinazione sarà Windows. Utilizzare una piattaforma RAD (Rapid Application Development) per sviluppare una GUI. Esempi per tale piattaforma sono Delphi o .NET con C# o VB. Per raggruppare la parte Perl, prendere in considerazione l'uso di uno strumento chiamato perl2exe.

Non sembra che gli script debbano richiedere un server Web. Inoltre, considera i problemi di installazione. Solo supposizioni dato che non stai dando molte informazioni su ciò che stanno facendo i tuoi script.

+0

Infatti non richiede realmente un server web, tranne forse per un'interfaccia finale ma non per la funzionalità stessa. Diciamo che scelgo l'opzione di un'interfaccia VB.NET per eseguire uno script perl in bundle con perl2exe, sarei quindi in grado di fornire argomenti e recuperare l'output nella parte VB.NET? – loeyck

+0

@ user1441405 (btw, considera la possibilità di cambiare il tuo numero in un nome) - Sì, puoi usare I/O e aprire pipe al tuo programma e inviare comandi e leggere l'output. Fai un po 'di [googling] (https://www.google.com/search?q=vb.net+external+program+read+stdout), che dovrebbe darti idee. Oppure date un'occhiata alla [sezione "Controllo degli I/O di processo" qui] (http://www.devx.com/dotnet/Article/7914/1954). – Lumi

+0

Ok grazie mille per il tuo aiuto (nota che ho appena cambiato il mio nome utente. In realtà ho creato rapidamente un account questa mattina per fare questa domanda :-)). Solo per informazioni non sono un vero sviluppatore, solo un ragazzo che costruisce uno strumento sporco per aiutare il mio lavoro quotidiano, ecco perché a volte le domande possono sembrare stupide :-) – loeyck

3

Continuando dalla risposta di DavidO, perché l'attuale microfotografia Web per Perl (preferisco Dancer per il suo suggerimento di Mojolicious, ma entrambi sono buoni e in gran parte equivalenti) contengono i propri mini-server Web in dotazione, consentono anche l'app facilmente eseguito interamente sulla macchina locale.

Poiché questi mini-server hanno come impostazione predefinita una porta non standard (di solito 3000 o 5000) per impostazione predefinita e possono essere facilmente impostati su una porta diversa, possono essere isolati dai firewall in modo relativamente semplice, assicurando che nessuno possa connettersi a li lontanamente.Puoi anche, naturalmente, includere e verificare l'indirizzo IP nell'app e rifiutare eventuali richieste che non provengono da localhost.

+1

Se si tratta di un server HTTP :: Server :: Semplice, può solo associare a localhost in modo che non sia accessibile al mondo esterno (senza un tunnel) – singingfish

0

Sto usando il per distribuire i miei strumenti scritti in Perl. È anche possibile generare un eseguibile di installazione con solo alcuni clic del mouse. Funziona piuttosto bene con strawberry Perl e wxPerl su Windows.