2009-10-30 5 views
1

J'ai une application à 3 niveaux: 1ère couche: SQL DB. 2ème couche: App Sever (dotnet) 3ème couche: client smart wpf.mélange NHibernate avec 3 niveaux de développement

J'utilise NHibarnate (courant) comme source de données pour la couche de serveur d'applications (App Serveur- parle 2ème couche à DB en utilisant NH)

parle de la couche d'application au client en utilisant WCF. Ai-je avantage à utiliser NH - comme WCF ne supporte pas le chargement différé de NH (du moins ça ne ressemble pas à ça) et - si j'utilise un objet de session statique - je dois rendre le serveur unique Concurrence unique - sinon les choses se gâtent à l'intérieur de NH lorsque plus d'un appel arrive en même temps. Si j'ouvre un objet session (NH) pour chaque appel et le ferme à la fin de l'appel - je perds le NHibarante 1er niveau de cache ...

Donc - La question est - suis-je en train d'implémenter NH mal? ou n'est-ce pas supposé être efficace dans mon genre de projet?

Répondre

3

Vous pouvez consulter le uNhAddIns WCF project. Il utilise session-per-call, car c'est la méthode recommandée pour aller avec WCF.

Vous avez raison de dire qu'il n'y a pas de charge paresseuse via WCF. Vous devez remplir le graphique de l'objet au niveau dont vous avez besoin, puis l'envoyer sur son chemin. Si votre couche de service n'est pas orientée objet dans le comportement, NHibernate peut être surdimensionné. C'est un appel difficile sans beaucoup plus de contexte.

+0

Je pense qu'il y a quelque chose qui a résolu ça dans wcf 4.0 (dot net 4.0) mais je n'ai pas le temps de le vérifier. – Dani

Questions connexes