Una vostra opinione :)

5 views
Skip to first unread message

omissis

unread,
Jun 11, 2011, 8:01:14 AM6/11/11
to res...@googlegroups.com
Ciao ragazzi,
  visto che tra breve mi troverò a dover realizzare un piccolo servizio web rest(o quasi :D), volevo chiedervi un parere, visto che non sono proprio "alle prime armi" ma neanche con esperienza di creazione di servizi quindicennale :)
Allora la situazione è questa: ho una base dati con una serie di informazioni di carattere assicurativo, e la necessità di esporre in xml alcune informazioni tratte da questo database in modo che il fruitore(il cliente) dal lato suo possa interfacciarvisi ed importare i nostri dati sul loro database. Loro hanno ci hanno fornito un file XMLSchema che descrive una certa struttura dati (richiesta cliente). Il mio compito in questo step iniziale quindi è modellare un piccolo webservice che metta loro a disposizione le risorse "richiesta cliente" compatibilmente allo schema che mi hanno fornito.
Partendo dal presupposto che lo strumento utilizzato per sviluppare la cosa sia Symfony2, la mia idea è questa:
- Modellare una Entity con Doctrine2 derivata dall' XMLSchema;
- Gestione dell'adattamento dei dati dal nostro database allo schema;
- Creazione Routing e Controller necessari;
- Serializzazione della Entity in XML come risposta;
- Test case che utilizzi l' XMLSchema per validare l'output della risorsa in questione.

Le domande sono le seguenti:
- esiste in PHP uno strumento, come in Java, che permetta la generazione delle classi del model direttamente dal file xsd?
- non credo, ma nel caso ne consigliate qualcuno? Un'idea che avevo era quella di parsare l'xml e generare la classe di Doctrine2, ma se non ricordo male qualcuno aveva iniziato a lavorare ad un backend di persistenza su xml per D2, devo controllare.
- in generale, avete consigli sui vari punti dell' operazione? sia per le modalità di implementazione  dell'adapter tra base dati e XMLSchema, che per il test, che per qualunque altra cosa vi venga in mente

Grazie ciao! :)

Alessandro Nadalin

unread,
Jun 11, 2011, 8:07:55 AM6/11/11
to res...@googlegroups.com
2011/6/11 omissis <claudi0....@gmail.com>:

rispondo veloce che mo pranzo, poi saro' piu' esauriente: leggo che
devi serializzare un oggetto in XML... ma e' una serializzazione di
tutto l'oggetto o c'e' della logica di servizio per cui in realta' non
stai passando un intero oggetto da te al client?

>
> Grazie ciao! :)
>
>

--
Nadalin Alessandro
www.odino.org
www.twitter.com/_odino_

omissis

unread,
Jun 13, 2011, 3:41:44 AM6/13/11
to res...@googlegroups.com
Ciao, grazie dell'interessamento :)
In poche parole tra me "webservice" e il client il formato di interscambio è necessariamente l'xml descritto dalla struttura dati fornita dal cliente, per cui la comunicazione è fortemente vincolata dalle loro specifiche. La logica da implementare sarà quella che adatta le informazioni della nostra base dati alla struttura dati xml sopra citata.

Alessandro Nadalin

unread,
Jun 13, 2011, 5:58:34 AM6/13/11
to res...@googlegroups.com
2011/6/11 omissis <claudi0....@gmail.com>:

http://www.google.it/search?aq=f&sourceid=chrome&ie=UTF-8&q=xsd+to+object

Mi sembra di non trovare nulla :(

> - non credo, ma nel caso ne consigliate qualcuno? Un'idea che avevo era
> quella di parsare l'xml e generare la classe di Doctrine2, ma se non ricordo
> male qualcuno aveva iniziato a lavorare ad un backend di persistenza su xml
> per D2, devo controllare.

Beh di fatto su Doctrine2, partendo da un XML, puoi generare un POPO,
pero' sicuramente l'XML dovra' avere una struttura che differisce
dalla tua

> - in generale, avete consigli sui vari punti dell' operazione? sia per le
> modalità di implementazione  dell'adapter tra base dati e XMLSchema, che per
> il test, che per qualunque altra cosa vi venga in mente

La "Gestione dell'adattamento dei dati dal nostro database allo
schema" la vedo problematica, se il client non e' troppo intelligente:
tu a cosa avevi pensato?

BTW, in cosa e' scritto il client?

Ciao!

omissis

unread,
Jun 14, 2011, 4:41:48 AM6/14/11
to res...@googlegroups.com
Ciao, per l'adattamento pensavo o di creare dei metodi appositi nelle entity(opzione meno verosimile) oppure di fare delle factory che ritornino degli oggetti adatti al contesto in cui si devono inserire(ovvero con una struttura dati coerente con l'output da fornire).

Il client credò verrà scritto in C#, "dall'altra parte" hanno tutto su ambiente windows(da cui provengono anche i file xsd, che probabilmente usano per il marshalling/unmarshalling lato loro)

Chiaramente i suggerimenti sono benvenuti :)

Alessandro Nadalin

unread,
Jun 14, 2011, 4:44:46 AM6/14/11
to res...@googlegroups.com
2011/6/14 omissis <claudi0....@gmail.com>:

> Ciao, per l'adattamento pensavo o di creare dei metodi appositi nelle
> entity(opzione meno verosimile) oppure di fare delle factory che ritornino
> degli oggetti adatti al contesto in cui si devono inserire(ovvero con una
> struttura dati coerente con l'output da fornire).

+1 per le factory, pensavo la stessa identica cosa

>
> Il client credò verrà scritto in C#, "dall'altra parte" hanno tutto su
> ambiente windows(da cui provengono anche i file xsd, che probabilmente usano
> per il marshalling/unmarshalling lato loro)
>
> Chiaramente i suggerimenti sono benvenuti :)
>

--
Nadalin Alessandro
www.odino.org
www.twitter.com/_odino_

Reply all
Reply to author
Forward
0 new messages