I think most of the "examples" you will find on the web, including Gemini and Cuyahoga will seem a bit complex, but in actuality there are fairly simple, especially older versions of Cuyahoga (like 0.9).
Basically, imho, you will want a Facade that is a Singleton that wraps the ISessionFactory interface. You can see a fine example of this in Cuyahoga. Then you can go the "Facade-wraps-Services" model for implementing business logic that needs access to the NHibernate session, or the "DAO" model for implementing basic CRUD operations. In my app, I use both DAOs and Services since some of my business logic needs to wrap a transaction around changes to many distinct entities.
Web services with NH has seemed to be somewhat of an issue based on the posts I've read. I personally, haven't used Web Services yet, but you will run into a stumbling block in the fact that NH uses proxies for everything lazy loaded. Search this message board for "Web Service" and see what you find.
-devon
|