Background:
In an n-tier application, the data-centric tier is a dll running inside of MTS. This dll has many classes that are considered the other half of the ui-centric business objects. So in the ui-centric tier, we may have a business object called customer while the data-tier counterpart is called customerpersist. The latter provides methods for customer retrieval and update and so on. Everything works great!
The issue:
Now, we're at the point where we need to provide reports. Regardless of the reporting package (Crystal Reports, Active Reports, etc.) we need to standardize our reporting process within the n-tier model.
The options (please add to this list):
1) Add more methods to existing business objects to retrieve all the data needed for reports. For example, we may have a data-tier business object that has methods such as Fetch, Save, GetDataForReport1, GetDataForReport2, etc. For some reason, I feel that this option would dilute the effectiveness of the original design. Meaning that we would be creating bigger and bigger objects that do too many things.
2) Create new objects that are designed specifically for desired reports. I feel that this is more inline with good component design. For example, we can create a separate dll that has business objects that are designed for reporting. Now, if we have users (say management) that look at data without ever updating it, all we would need is the dll for reporting.
Any thoughts, opinions, advise is highly welcomed.
Tarek
The more I learn, the more I need to learn!