Nel pomeriggio ho seguito la sessione fiume di Andrea Saltarello. Come al solito da Andrea non ci si può aspettare altro che il reale succo delle questioni, spiegato in modo molto efficace. Nonostante si trattasse anche in questo caso di concetti che per la gran parte avevo già abbastanza chiari, qualcosa da imparare c'è sempre. In particolare un accenno di Andrea alla sua sessione di Venerdì mattina mi ha fatto intuire che alcune cose che recentemente ho considerato tra me e me ma che ancora non ho palesato, non sono del tutto infondate. Mi riferisco al fatto che Object Oriented Programming e Service Oriented Architecture fanno un po' a pugni. Provate a pensare ad esempio ad un oggetto di tipo Order, con una proprietà Details di tipo IList<OrderDetail>.  In un domino OOP puro, gestito con un mapper relazionale come ad esempio NHibernate la proprietà Details dovrebbe godere dell'uso di un pattern LazyLoad per fare in modo che i dettagli dell'ordine vengano caricati solo alla bisogna. Questo vale però solo esclusivamente quando rimaniamo all'interno di un AppDomain che possa in qualche modo persistere la sessione, perchè non appena usciamo dall'AppDomain, come avviene ad esempio se l'oggetto viene erogato da un WebService, il lazy load non può più esistere, o meglio, non possiamo fare affidamento su NHibernate per questo, ma dobbiamo arrangiarci a mano. Per quanto mi riguarda, per ora ho trovato la soluzione più agevole nello esplicitare i metodi del WebService ed esporre negli oggetti del dominio gli ID che collegano le entità. Così nel caso di esempio avremo un oggetto Order che porta semplicemente le proprietà semplice, di quanlunque tipo esse siano e poi ci saranno rispettivamente i metodi

public Order GetOrder(int id);

public IList<OrderDetail> GetOrderDetails(Order order);

Naturalmente si tratta di una semplificazione, al solo scopo di chiarire il mio pensiero, ma credo che sia abbastanza aderente alla realtà. Al momento, pur avendo altre idee per la testa che coinvolgono l'uso di  partial classes e cose del genere, trovo ancora più pulito ed essenziale questo approccio. Sentiremo Venerdì se sarò confermato o smentito.


Aggiungi Commento