Some questions that have me stymied

Aug 8, 2007 at 8:27 PM
Edited Aug 8, 2007 at 8:32 PM
The ability to grasp the whole picture is eluding me, so I thought I'd ask about a few things that I don't really get yet. My context is a full-scale enterprise application that I'm trying to redesign from a mess into something that has a viable architecture.
  1. Should a business module only talk to a foundational module through a controller? When and when not?
  2. Should all module communication be done through global services?
  3. If you layer a module into separate projects should each of those projects be actual modules themselves?
  4. Should data access typically be done as a service?
  5. Is the only practical use of a module service to override a global service?
  6. Is the Shell module a foundation module, or a business module? (It gets registered with the root folder of the website, so a login page in the root folder would get a presenter in the Shell module, for instance.)
Also, what would be the suggested reading/resources for someone to start from the beginning and be able to understand the architectural guidance offered by WCSF? The actual WCSF documentation seems to make a lot of assumptions about prior knowledge, or ability to fill in the gaps. Another way to look at this is, what are some specific subjects I would need to make sure to cover to put together training for other developers to teach them WCSF?

Aug 9, 2007 at 12:04 AM
Edited Aug 9, 2007 at 12:05 AM
I answered my #6 above with this sentence from the How to: Create a Web Client Solution in the documentation:

"You will have a Web client solution you can use as starting point for building and testing your Web client application. The Web client solution includes a Web site with a business module named Shell. This module is associated with the root folder of the Web site. This means that all pages in the root Web site folder belong to the Shell module."

Of note, however, is the fact that the Create Solution recipe doesn't give this business module a controller class, like the Create Business Module recipe does for any other business module you later add to your solution.