Given a (current) project that implements a 2-tier architecture with a well-separated on-tier business layer following the typical generic DAO architecture as pioneered by Bill McCafferty on CodeProject and explained briefly in chapter 10 of NHibernate in Action.
This project must be moved to do CRUD operations and business logic through Microsoft CRM as middle tier using web services. Custom objects and methods are defined in the CRM to mimic the current situation.
I don't think it's a good idea to start moving the POCO's back and forth the same way we used to do. Also, features as lazy loading, caching and concurrency all have to be treated differently. Considering that we have to minimize calls between middle-tier en presentation layer bring around another challenge.
Implementing DTO's seems the right cause of action, but requires a long path (plus a learning path for the team). I've done SOA projects before, but now I'm looking for the path of least resistance. Can we continue to use NHibernate, even if direct DB connection will not be an option? Will we have to rethink the design, or are disconnected entities, introduced in .NET 4.0 perhaps an option? How painless can it become?