Proxy
Un proxy applicativo è un componente che espone due interfacce, una verso i [[sil|SIL (Sistemi Informativi Locali)]] e l’altra verso la Porta di Dominio.
All’interno del [[dominio|Dominio]] del soggetto fruitore tipicamente esistono più applicazioni che hanno la necessità di utilizzare un servizio erogato da altro Soggetto.
Quando usarlo
- quando più applicazioni di un Soggetto Fruitore utilizzano lo stesso servizio. Il proxy applicativo ha il compito di astrarre la logica dell’erogazione del servizio in virtù della capacità del Soggetto Fruitore. In questo modo il Proxy Applicativo può realizzare la logica a comune di tutte le chiamate al servizio (come ad esempio inserire il codice identificativo del l’ente fruitore, definire una scelta comune sulle modalità di utilizzo dei servizi, …).
- quando la porta di dominio non fornisce tutte le funzionalità necessarie a garantire la corretta fruizione di un servizio. E’ possibile implementare nuove funzionalità per il Soggetto Erogatore componendo servizi esistenti o modificare i paradigmi di interazione con il servizio.
- per implementare un Dominio Applicativo. Ad esempio è possibile verificare la corretta applicazione di regole definite o effettuare validazioni di natura semantica.
Funzioni dei proxy
Un proxy può implementare le seguenti funzioni:
- semplificazione delle interfacce esposte dai servizi del Soggetto Erogatore
- disaccoppiamento e asincronizzazione con i servizi esposti dal Soggetto Erogatore
- aggiunta di nuove operazioni non definite nei servizi del Soggetto Erogatore
- possibilità di effettuare validazioni sintattiche e semantiche delle richieste
- integrazione con sistemi di monitoraggio dei servizi esistenti e complessi
- logging dell’esito delle operazioni effettuate e dello stato dei servizi
Vantaggi uso dei proxy
Nel caso in cui un servizio sia di natura one-way il proxy applicativo potrebbe disaccoppiare il SIL fruitore dell’erogazione del servizio. Il proxy applicativo può avere due moduli uno per l’input e l’altro per l’output. I due moduli sono disaccoppiati. Tale disaccoppiamento consente ad esempio di implementare logiche di annullamento della richiesta nel modulo di Input e logica di gestione dello Stato della richiesta nel modulo di Output. E’ quindi possibile arricchire, attraverso il proxy, le funzionalità iniziali del servizio. Inoltre il modulo di Input potrebbe implementare logiche di validazione semantica proprie del Domino mentre il modulo di Output potrebbe implementare policy di ritrasmissione in caso di fallimento nella comunicazione con l’erogatore del servizio.
Implementazione dei proxy
Un proxy può essere realizzato tramite Web Service (ad esempio le librerie JAX-WS) oppure sviluppando componenti che vengono installati su un Enterprise Service Bus (ad esempio Fuse ESB 4).
Utilizzando un ESB è possibile disaccoppiare l’erogatore dal fruitore sui servizi di natura one-way, infatti potrebbero essere realizzati i seguenti componenti:
- Interfaccia web service del Dominio Applicativo mediante l’utilizzo della componente Apache CXF fornita da Fuse ESB 4.
- Route per la gestione delle operazioni esposte verso il Dominio Fruitore, utilizzando la componente Apache Camel.
- Route temporizzata per l’invio delle richieste verso il Dominio Erogatore, utilizzando la componente Apache Camel.
Il vantaggio di usare un ESB è quello di poter realizzare dei componenti generici che, inseriti in una route Camel, consentono di definire e gestire una logica del [[dominio|Dominio]]. Ad esempio è possibile definire dei componenti che in modo del tutto naturale integrano il Proxy applicativo con sistemi di monitoraggio e di auto-diagnosi già realizzati e generici (es. [[pmc|PMC]]) o integrarsi con altri Proxy.
Distribuzione dei proxy
Per loro natura i proxy sono componenti software la cui logica è comune a molti enti. E’ dunque necessario una loro distibuzione nei diversi sistemi degli enti che potrebbero essere di natura eterogenea. Per permettere un’agevole distribuzione di tale componente potrebbe essere strategico disporre di un hardware su cui viene installato tutto il software comune che viene installato presso i singoli enti.