Yes, the .Net philosophy with regards to proper layered
distributed design does address that dilemma, and I have
dealt with this in the past as well.
Basically this is my recommendation:
1. Application should be divided into at least three
layers: Presentation, Business, and Data
2. The Business and Data layers should be common to all
clients.
3. I'm not sure if you currently have multiple versions
of databases (different data models) for each client
version, but there should only be one data model that
matches your one Data layer. Now usually this creates
some configuration and work to create a data model that
can flexibly support multiple requirements, but you can
usually pull it off.
4. Now for the Presentation layer, without getting into
exactly what you're doing there are two basic choices:
a. (preferred) Create "user groups" or permission groups
for each client that loads a screen list dependent on the
requirements for that client. Some screens may be the
same for all clients. Some screens might have run time
configuration differences. And some screens may only be
accessed by certain clients. Your application menu loads
the screen list based on the user group the user / client
belongs to.
b. If the requirements are drastically different, you may
want to have a separate presentation layer for each
client. Not preferred, but much better than creating a
different version for the entire application for each
client
View the Patterns & Practices section of the Microsoft
website for more guidelines.
Hope that helps, I know its general,
Todd
>-----Original Message-----
>Please, excuse me about my English (I'm from Argentina)
[quoted text clipped - 8 lines]
>
>.
Sebastian Fern?ndez Quezada - 28 Apr 2004 13:27 GMT
Thnks Todd, yours is one of the multiple solutions already evaluated. Now,
the real deal here is:
A) I must have a "mega-Application" with all the funcionality available, and
allow specific funcionality depending on the client?
B) If the client A has a different structure of DataBase than the client
B... How can I solve this? A unique "Mega-data model"? N Data models? (being
N the number of clients with different requirements)
With no doubt, this is one of the most common issues developing applications
by requirements, and nobody can give me yet a definitive answer... PLEASE!!
I THINK THIS IS WORTHY TO WRITE SOME ARTICLE. MICROSOFT PATTERNS &
PRACTICES: PLEASE!! LISTEN TO MY PRAY!!! ;O)
THANKS!!
> Yes, the .Net philosophy with regards to proper layered
> distributed design does address that dilemma, and I have
[quoted text clipped - 51 lines]
> >
> >.
Todd - 28 Apr 2004 16:53 GMT
A) There is a client table and maybe a user table tied to
either a screen permissions table or an application
section permission table. If different screens behave
differently for different clients and/or users, then you
will need a control permissions table. Based on the user
or client, the application loads the correct
functionality for that client and/or user.
B) Why does client A need a different model than client
B? If you give me one or two specific examples, maybe I
can suggest an alternative database design.
I've worked on a product team for three years for an
application with 1000 clients. Many clients have
different requirements and pay us to add these
requirements to the system. Based on a permission scheme
we enable the functionality for the clients that pay for
them. But over all, the application is thought of as one
product. All users may benefit from some product
enhancements, other product enhancements cost extra an
clients have the choice if they want them. As we seek
new clients we are able to offer the potential clients
many functional choices based on their needs.
If you break your application into different data models
for each client, I really think you will be headed down
the road to maintenance nightmare.
Best of luck,
Todd
>-----Original Message-----
>Thnks Todd, yours is one of the multiple solutions already evaluated. Now,
[quoted text clipped - 71 lines]
>
>.
Sebastian Fern?ndez Quezada - 28 Apr 2004 17:10 GMT
Thkns Todd... i'll try to make this work properly!!
> A) There is a client table and maybe a user table tied to
> either a screen permissions table or an application
[quoted text clipped - 124 lines]
> >
> >.
Sebastian Fern?ndez Quezada - 28 Apr 2004 18:52 GMT
PLEASE, if somebody has another recomendation, please... i'll be please to
hear it!!
> A) There is a client table and maybe a user table tied to
> either a screen permissions table or an application
[quoted text clipped - 124 lines]
> >
> >.