Hi,
I'm facing a design issue regarding how to design my DAL. As we all know, in its most basic definition, the DAL means the layer that is responsible for communicating with some data repository (of course I'm not talking about the Repository pattern), usually a database. Now this is where the catch is. Some of our business objects would have to get their data from the database, and some would get their data from other sources, i.e web services. A few of our members on the team suggested that the BO's should be smart enough about knowing whether to call a DAL (that only knows to talk to the database) or call the required web service. Others suggested that this might not be an optimal solution, suggesting that everything should pass through the DAL, where it would contain let's say adapters, or whatever, for each data retrieval method.
How would you architect a system with such data access needs? Is any of the suggested solutions might be good enough for the long run (the 2nd one might take more time to develop) or do we need to take a totally different approach? Perhaps there is a design pattern that suits this kind of issue...
Thanks, Avi Shilon