Blog Stats
  • Posts - 28
  • Articles - 1
  • Comments - 261
  • Trackbacks - 39

 

Cruccio con NHibernate

Voglio iniziare ad usare NHibernate come O/R nel progetto che sto facendo, ma ci sono un mucchio di cose che mi disturbano architetturalmente. in primis, per ragioni di scalabilità e robustezza la mia business logic è costruita in EnterpriseServices, e con un po' di sforzo sono riuscito a disaccopiare tutti i miei componenti in modo che esistono solo delle interfacce condivise ed il resto è gestito da un framework che inietta in ogni serviced component le "dipendenze di servizio". Ora il primo problema è: NHibernate ha un session factory, che dovrebbe per ragioni di efficienza essere singolo all'interno di una applicazione. L'altro problema è: come condivido tra tutti i serviced component il session factory ? La prima soluzione che mi viene in mente è: sfruttare Shared Property Manager per mantenere una reference condivisa visibile a tutti i componenti. Ammesso che questo funzioni, poi ho le classi di mapping. Visto che i componenti sono molto disaccopiati, e che ciascuno necessita di zone ben individuabili di database, vorrei che fosse il componente a tenere traccia dei template di mapping, con le relative classi, e questo cozza con la sessione unica, che mi costringe in fase di creazione del session factory a specificare tutti gli hbm. Insomma c'è qualcosa che non mi quadra, mi sembra che mettere su nhibernate mi faccia buttare alle ortiche tutto il lavoro di disaccopiamento tra componenti che ero riuscito ad ottenere.


Feedback

# re: Cruccio con NHibernate

Gravatar Spero che tu abbia valutato bene gli EnterpriseServices che per robustezza e distribuzione dei tuoi componenti possono andare bene, a scapito delle performance. Gli Ent. Services usano intensivamente l'interop ed ad ogni chiamata c'è un'overhead doppio.
Personalmente non li avrei usati, a meno se non dovessi distribuire la mia BL su più server o ci fosse bisogno di transazioni distribuite.
30/03/2006 01:08 | Marco Trova

# re: Cruccio con NHibernate

Gravatar beh, diciamo che lo strato interop costa poco rispetto al fatto che le chiamate sono Out-Of Process, però il vantaggio è appunto che hai il BL in un processo separato, il che è a mio parere meglio che avere uno strato di componenti anche complesso che gira in process con IIS. Le transazioni distribuite sono un evento piuttosto raro se parli di server diversi, ma molto comune se parli di transazioni che "abbracciano" l'attività di più componenti. Sul mio <a href="www.felicepollano.com">blog</a> trovi, nella sessione dei libri in fase di lettura, un interessante libro di Nagel sull'argomento. Personalmente per qualsiasi architettura un po' più che per uso personale, io uso enterprise services, in attesa di indigo ( che peraltro dovrebbe avere dei tool per migrare i servicedcomponent attuali in un ambiente che finalmente non richiedera com interop.) 30/03/2006 11:53 | Felice Pollano

# re: Cruccio con NHibernate

Gravatar Era il nostro cruccio anche tre/quattro anni fa. Avevamo in produzione un framework con componenti installati tutti sotto Component Services.
Componenti aggiuntivi venivano installati sotto sempre per non sbagliare, anche se non c'era un valido motivo per essere lì, se non per il deploy distribuito.
Con l'arrivo di .NET, l'aggravamento delle chiamate e il nuovo e più snello processo di deploy ha reso inutile, per la maggior parte dei casi, l'utilizzo degli Ent. Services.
Rendere semplice l'architettura è sempre la cosa giusta. 30/03/2006 12:15 | Marco Trova

# Cruccio NHibernate, risolto....

Gravatar 30/03/2006 13:33 | felix

# Cruccio NHibernate, risolto....

Gravatar 30/03/2006 13:33 | felix

# re: Cruccio con NHibernate

Gravatar You'll have the ability to find a great deal designs for the cat house plans from the web sites that will also supply you detailed directions and recommendations on ways to construct the best 1. House Plans
23/07/2015 10:46 | House Plans

Comments have been closed on this topic.
 

 

Copyright © Felice Pollano