White Paper

Transcript

White Paper
White Paper:
Integrare PHP con System i
utilizzando i Web Service
Autoe: Sam Pinkhasov,
Zend Technologies
Settembre 2007
© 2007 Zend Technologies, Ltd. All rights reserved.
White Paper | Integrare PHP con System i utilizzando i Web Service
Come accade nella maggior parte dei team di sviluppo che si occupano della gestione di
applicazioni legacy, molte aziende System i continuano a gestire dati preziosi intrappolati
all’interno di applicazioni esistenti, che per lo più non possono essere facilmente integrate con
applicazioni o servizi esterni. Fortunatamente, gli sviluppatori System i dispongono oggi di un
nuovo strumento in grado di aiutarli a rilasciare tali dati. Questo strumento si chiama PHP e
fornisce tutto ciò di cui gli sviluppatori System i hanno bisogno per esporre facilmente dati e
servizi ad applicazioni esterne tramite Web Service. Utilizzando PHP con i prodotti di sviluppo
firmati Zend, è possibile scrivere facilmente un Web Service da utilizzare come wrapper
praticamente per qualsiasi programma esistente.
Zend offre un insieme completo di prodotti per supportare l’integrazione System i, dallo
sviluppo fino alla produzione. Le soluzioni Zend includono supporto di database System i
nativo e accesso a oggetti System i (per es., programmi RPG/COBOL/CL, comandi CL, voci di file
di spooling, aree dati e molto altro). In questo articolo vedremo insieme come sia semplice e
veloce creare un Web Service da utilizzare come wrapper per un programma RPG esistente.
Web Service
Ma cosa è esattamente un Web Service? Su Wikipedia si legge:
Secondo la definizione data dal W3C un Web Service (servizio web) è un sistema software progettato
per supportare l’interoperabilità tra diversi computer su una medesima rete informatica. Spesso i
Web Service sono semplici API (Application Programming Interface) cui si accede tramite una rete,
quale per esempio Internet, e che vengono eseguite su un sistema remoto che ospita i servizi
richiesti.
Una definizione più pertinente alla nostra discussione è tuttavia la seguente:
Un Web Service è una unità di logica applicativa che fornisce dati e/o servizi ad altre applicazioni.
Traducendo il gergo tecnico, un Web Service consente ad una applicazione di esporre ciò che
fa o ciò che sa in modo da consentirne l’utilizzo da parte di altre applicazioni.
Un esempio in proposito potrebbe essere quello di un’azienda che utilizza un’applicazione CRM
che espone le proprie funzionalità core sotto forma di API. L’applicazione CRM diventa così un
Web Service che espone quanto fa ad altre applicazioni. Il processo del sito web dell’azienda
per raccogliere contatti potrà ora utilizzare tale Web Service per inserire nuovi potenziali clienti
direttamente nel sistema CRM non appena questi saranno disponibili. Essendo i Web Service
dei wrapper che avvolgono la logica di business di base dell’applicazione CRM, sarà possibile
utilizzare questi nuovi potenziali clienti esattamente come se fossero stati inseriti
manualmente.
In breve, i Web Service adempiono finalmente alla promessa dell’interoperabilità dei processi,
fatta da così tante tecnologie prima d’ora. Grazie ai Web Service l’architettura SOA (Service
Oriented Architecture) è più facilmente a portata di mano. E PHP agevola l’utilizzo dei Web
Service su System i.
Attualmente esistono molti Web Service disponibili su Internet. Ciascuno di loro può essere
utilizzato per estendere applicazioni esistenti e per fornire nuove funzionalità agli utenti. Il sito
web www. programmableweb.com tiene traccia delle API disponibili pubblicamente, ci sono
oltre 350 API che vanno dal mapping alla correzione di indirizzi fino al salvataggio dei dati.
Alcuni Web Service prevedono il pagamento di una quota o restrizioni all’accesso, pertanto è
importante leggere la documentazione appropriata prima di implementarli per essere sicuri
che una volta distribuiti non si incontrino brutte sorprese. L’elenco dei modi in cui è possibile
estendere applicazioni esistenti tramite Web Service cresce di giorno in giorno e non conosce
limiti. I Web Service aprono la porta ad applicazioni software scritte in linguaggi diversi per
poter scambiare dati e servizi.
2 | Zend Technolgies, Ltd.
White Paper | Integrare PHP con System i utilizzando i Web Service
Fino a poco tempo fa, creare un nuovo Web Service non era cosa da poco. Ancora oggi richiede
conoscenze di OOP, XML e SOAP, tuttavia grazie ai prodotti Zend gli sviluppatori non devono
più occuparsi di gran parte dei dettagli più complessi. Anche creare Web Service su System i
risulta molto più semplice, pertanto gli sviluppatori non devono più sprecare tempo con i
dettagli e possono dedicare le proprie energie alla soluzione del problema di business effettivo.
Già questa sarebbe un’ottima ragione per dare un’occhiata a cosa significa creare un Web
Service utilizzando gli strumenti Zend in modo da avvolgere in un wrapper un programma RPG
esistente.
Creazione di un Web Service
Di seguito è riportato un esempio di come sia facile creare un Web Service molto essenziale che
funge da wrapper per un programma RPG esistente contenente due parametri: un numero di
codice e un nome descrittivo. Il Web Service riceve un numero di codice come parametro di
input e restituisce un nome descrittivo come parametro di output.
Zend Studio for i5/OS include una serie di modelli pensati per aiutare gli utenti a realizzare
rapidamente applicazioni PHP. I modelli sono disponibili tramite il menu a comparsa Code
Completion.
1. Avviare Zend Studio (in Microsoft Windows fare clic sul pulsante Start, quindi scegliere
Programmi, Zend Studio for i5/OS e infine Zend Development Environment.
2. Nell’editor di Studio immettere le seguenti righe:
<?php
i5P
Non appena si inizierà a digitare il testo (oppure premendo Ctrl + Barra spaziatrice) verrà
visualizzata una finestra popup contenente un elenco di modelli/funzioni.
3. Selezionare i5ProgramServices.
Questo modello, uno dei molti disponibili con Zend Studio for i5/ OS, include tutto il codice
necessario per creare un Web Service wrapper per un programma RPG.
Zend Technolgies Ltd.
3
White Paper | Integrare PHP con System i utilizzando i Web Service
L’editor di Zend Studio utilizza la finestra popup Code Completion per visualizzare
modelli/funzioni che iniziano, in questo esempio, con i caratteri “i5”. Una volta selezionato
il modello i5ProgramService Web Service, l’editor inserisce nel modello il codice
precedentemente digitato, come illustrato nella figura seguente:
4. Utilizzare il tasto TAB per scorrere le variabili del programma e modificarle, se necessario.
Nell’esempio in questione è necessario arrestare il tasto TAB sulle variabili <user name> e
<password> in modo da poterle modificare in base al profilo utente i5/OS e alla relativa
password.
5. Specificare quindi il nome del programma RPG e della libreria che si desidera richiamare per
questo servizio. Utilizzando il tasto TAB passare alle variabili <library_name> e <program_
name> e specificare i relativi nomi. A questo punto la fase di editing è terminata, in quanto il
modello dispone già di due parametri del programma RPG definiti.
Per richiamare un programma RPG contenente ulteriori parametri è sufficiente rimuovere
dal commento il numero desiderato di parametri di programma commentati (inclusi nel
modello) oppure digitare i parametri richiesti.
6. Successivamente, salvare il codice scegliendo Salva dal menu File.
A questo punto è necessario creare un file WSDL. I file WSDL sono file in formato XML
utilizzati per descrivere servizi di rete sotto forma di insieme di endpoint che operano su
messaggi contenenti informazioni orientate ai documenti o alle procedure.
4 | Zend Technolgies, Ltd.
White Paper | Integrare PHP con System i utilizzando i Web Service
Zend Studio per i5/OS fornisce un generatore di WSDL (Tools | WSDL Generator) che consente
di generare file WSDL:
• Definendo I file e le classi che si desidera estrarre,
• Fornendo l’URL di ciascuna classe (associato a una porta) e
•
Configurando l’impostazione globale per i file WSDL (convenzione dei nomi opzioni di
binding e stile di codifica)
Immettere le informazioni richieste e fare clic su Finish. Verrà creato un file WSDL che verrà
aperto in Zend Studio’s Editor. Le figure riportate di seguito mostrano le finestre di dialogo
della procedura guidata WSDL:
Figura 1: Creazione di WSDL
Figura 2: Esportazione di funzioni in WSDL
Ecco il file WSDL generato da WSDL Generation Wizard.
Figura 3: File WSDL
Zend Technolgies Ltd.
5
White Paper | Integrare PHP con System i utilizzando i Web Service
A questo punto è necessario creare un programma client per richiamare il Web Service. Il
codice riportato di seguito definisce il file WSDL per il servizio.
<?php
ini_set(‘soap.wsdl_cache_enabled’, ‘0’);
$my_client = new SoapClient(‘zend.wsdl’);
?>
Il gioco è fatto!
Con Zend Studio for i5/OS è possibile creare un Web Service in pochi passaggi, in modo da
consentire allo sviluppatore di concentrarsi sulla logica di business necessaria per esporre dati
o servizi all’esterno.
Deployment
Per quanto riguarda il deployment, è sufficiente spostare il file WSDL e il programma client in
un posto dove il Web Service possa accedervi. A questo punto sarà possibile effettuare una
chiamata che eseguirà il programma RPG da qualsiasi parte del mondo.
Vantaggi dei Web Service
Una volta affrontato il “come” dei Web Service passiamo al “perché”. Perché usare i Web
Service?
La prima ragione è anche la più semplice da misurare. Utilizzare i Web Service abbrevia il ciclo
di sviluppo delle applicazioni e ne riduce i costi. Si tratta di una metrica diretta e facilmente
misurabile. Essendo indipendenti dal linguaggio, non è più necessario reimplementare i
concetti ogni volta che la tecnologia cambia o si inizia a utilizzare un nuovo linguaggio. Ogni
linguaggio in grado di accedere al web potrà ora accedere ai vostri Web Service. Come
menzionato all’inizio dell’articolo, questo significa che è finalmente possibile riutilizzare,
anziché reinventare, la logica di business esistente intrappolata in sistemi legacy. Altre
tecnologie in passato hanno promesso la riutilizzabilità del codice, ma ancora una volta solo i
Web Service stanno tenendo fede a questa promessa in maniera reale e misurabile.
Strettamente legata al concetto di riutilizzabilità è l’idea che ogni Web Service incapsuli un
singolo concetto. La maggior parte dei Web Service sono scritti per eseguire un’operazione
atomica, questo significa che Web Service progettati correttamente diventeranno i mattoni di
applicazioni più complesse. Molte routine di business possono ora essere sostituite con un Web
Service e riutilizzate nelle varie applicazioni aziendali, un vantaggio che si traduce in costi di
gestione e manutenzione ridotti in quanto è necessario gestire una unica entità di codice, ossia
il Web Service stesso.
In quanto riutilizzabili e atomici, i Web Service vengono utilizzati anche come elementi base
dell’architettura SOA (Service Oriented Architecture), nella quale ogni servizio è progettato
come elemento autonomo di funzionalità di business altamente interoperabile e collegato in
modo molto allentato. Esempi in proposito giungono da servizi in grado di:
• Verificare un numero di conto
• Convalidare pagamenti di clienti
•
•
•
Inviare posta elettronica
Sincronizzare/trasferire dati tra sistemi
e così via
6 | Zend Technolgies, Ltd.
White Paper | Integrare PHP con System i utilizzando i Web Service
Essendo riutilizzabile, ogni Web Service può essere applicato ad applicazioni composite. Ora è
infatti possibile creare nuove applicazioni utilizzando un set di Web Service per accedere a dati
ed applicazioni legacy, aggiungendo nuove regole di business per fornire una nuova
soluzione.
Conclusioni
I Web Service significano cose diverse per sviluppatori diversi. In molti casi, sono
semplicemente un modo per arricchire con qualche trovata tecnologica una pagina web
esistente tramite AJAX. Tuttavia, per gli sviluppatori System i, i Web Service mantengono la
promessa di consentire il riutilizzo e l’estensione di applicazioni legacy con il minimo sforzo.
Oltre al semplice mash-up che consente di visualizzare i propri clienti su una mappa globale, i
Web Service possono aiutare a raggiungerli in modi nuovi e sempre diversi.
Cos’altro è possibile con i5/OS e Zend?
•
Migliorare le prestazioni di PHP e accrescere il controllo sugli ambienti di sviluppo, testing
e produzione con Zend Platform for i5/OS, il server applicativo PHP che rende disponibili
informazioni approfondite nelle applicazioni PHP. Per ulteriori informazioni, visitare:
http://www.zend.com/products/core/for-i5os
• Facilitare l’installazione del software con Zend Core for i5/OS, la versione avanzata e
completamente testata di PHP open-source Zend Core è l’unica versione di PHP for i5/OS
certificata e supportata da Zend. http://www.zend.com/products/core/for-i5os
Velocizzare i cicli di sviluppo e semplificare progetti complessi con Zend Studio for i5/OS,
l’ambiente di sviluppo integrato (IDE) PHP leader del settore, progettato per sviluppatori
professionisti, che include tutti i componenti di sviluppo necessari durante tutto il ciclo di vita
di un’applicazione PHP. Gratuito per gli utenti System i.
Zend Technolgies Ltd.
7
Informazioni su Zend Technologies
Zend Technologies Inc., the PHP Company, è il provider principale di prodotti e servizi per lo
sviluppo, il deploying e la gestione di applicazioni PHP business-critical. PHP è utilizzato da
oltre 22 milioni di siti web ed è rapidamente divenuto il linguaggio più popolare per la
creazione di applicazioni web dinamiche. www.zend.com
ZEND: Un approccio olistico a PHP
•
•
•
•
•
•
•
•
Gestione e disponibilità di applicazioni con Zend Platform™
Sviluppo di applicazioni PHP con Zend Studio™, il principale ambiente di sviluppo per
PHP
Installazioni PHP certificate e ufficialmente supportate con Zend Core™
Accesso ai principali esperti PHP con Zend Professional Services™
Una migliore conoscenza di PHP tramite Zend Training™ offre
Protezione della proprietà intellettuale e del codice sorgente e amministrazione di
modelli di licensing con Zend Guard™
Raccolta di componenti e librerie PHP certificata e supportata dal produttore, Zend
Framework™
Supporto 24/7 di assoluta qualità tramite Zend Network™
Sede: Zend Technologies, Inc. 19200 Stevens Creek Blvd. Cupertino, CA 95014, USA · Tel 1-888-PHP-ZEND, 1-888-747-9363
L'Italia Zend Technologies S.r.l., Largo Richini 6, 20122 Milano, Italy · Tel +39-02-5821-5832 · Fax +39-02-5821-5400
Europa Centrale: (La Germania, L'Austria, La Svizzera)
Zend Technologies GmbH Bayerstrasse 83, 80335 Munich, Germany · Tel +49-89-516199-0 · Fax +49-89-516199-20
Internazionale: Zend Technologies Ltd. 12 Abba Hillel Street, Ramat Gan, Israel 52506 · Tel +972-3-753-9500 · Fax +972-3-613-9671
La Francia: Zend Technologies SARL, 5 Rue de Rome, ZAC de Nanteuil, 93110 Rosny-sous-Bois, France · Tel +33-1-4855-0200
Gran Bretagna: Zend Technologies, 9 Burroughs Gardens, Hendon, London NW4 4AU, UK · Tel +44-20-8359-1215 · Fax +44-20-8203-6456
© 2007 Zend Corporation. Zend is a registered trademark of Zend Technologies Ltd.
All other trademarks are the property of their respective owners. WWW.ZEND.COM
0120-M-TWP-0208-R1-IT