giovedì 6 agosto 2009 #

La Reflection su un WebService?

Buongiorno a tutti,

oggi propongo una domanda tecnica che scaturisce dalla mia attuale attività, in merito alla quale ho già scritto. Nota: la domanda si trova al fondo dopo la descrizione del contesto.

Se vogliamo fare un WebService generico, ma così generico da gestire tutta la domanda verso la base dati - qualunque - con un solo metodo, possiamo passare in ingresso un XML con le informazioni necessarie ad invocare una StoredProcedure e restituire una bella stringa - a scelta XML o separata da pipe a seconda dell'autolesionismo. Poi ci mettiamo su un algoritmo di crypting e quant'altro - così il proxy ha il suo da fare.

Bene: tale sorgente dati ha il difetto di non essere molto adatta al databind e di non poter beneficiare degli automatismi di sorting e filtering in memoria concessi invece alle datatable. Se per questi non c'è molto da fare, se non derivare un apposito datasource istruito a modo sul particolare protocollo; per il databinding qualcosa forse si piò fare.

Di base, gli oggetti Bindable creano un "campo" per ciascuna proprietà pubblica individuata. Tralasciando l'opzione di implementare la relativa interfaccia su una ipotetica classe che deserializza dal risultato del Web Service, non sarebbe più comodo se il servizio restituisse una collezione, quale che sia la forma prediletta, di istanze compatibili con questo modello? Certo.

Se mai è possibile ottenere questo risultato con una sola classe, essa deve essere costruita (emessa) a run-time sulla base del contenuto (nome-campo e valore) del DataReader. Utilizzare la Reflection mi sembra in questo contesto la cosa più in linea con la filosofia non tipizzata dell'architettura, e le esigenze di tipizzazione che vi si oppongono. Sinceramente non ci ho provato, perchè mi frena una cruciale domanda.

Questo impiego di Reflection su un Web Service - con le implicazioni di theading, pooling, garbage collecting etc - non sarà addrittura controproducente? E cioè, non sarà che per andare a riflettere, il piano di lavoro di IIS sul tread pool finisca per risentirne con detrimento di performance e stabilità?

Qualcuno ha idee in proposito?

P.S: se volete esprimere critiche sull'architettura della soluzione, vi ricordo di non esserne l'autore e di propendere personalmente per approcci differenti (di base, ho un'altra filosofia). Del resto non sono a conoscenza della ratio delle decisioni a suo tempo adottate in merito in questa particolare situazione.

posted @ giovedì 6 agosto 2009 13.04 | Feedback (0)

Copyright © Marco Ganio Vecchiolino

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski