|
Hello. I posted this on CodeProject because the formatting they provide allows me to explain my issue in a straightforward manner.
I currently have run into a snag in an application that I am developing. I am creating a MealScheduler that has a UI that needs to link into (currently) 2 discrete Projects. The logical flow of the projects are defined similar to the following
RecipeManager
RecipeList->Recipe->clsDatabase->ADO.NET->...->MealManager.mdb
IngredientManager
IngredientList->Ingredient->clsDatabase->ADO.NET->...->MealManager.mdb
Now that both of these projects are being used in the same application, my app's logical flow looks like this:
UI->App Logic |>RecipeList->Recipe->clsDatabase->ADO.NET->...->MealMgr.mdb
|
|>IngrdntList->Ingrdnt->clsDatabase->ADO.NET->...->MealMgr.mdb
Which (if I understand fully) is BAD, bad, bad, bad, bad. The thinking I use to come to this conclusion is a hypothetical situation where a company would want to aggregate 20 or 30 different modules under the control of one "Business Logic" layer which, using this current flow would lead to 20 or 30 different paths to the database and potentially 30 different connections open at one time to perform a singular task.
The flow that I desire is
UI->|App Logic |>RecipeList ->Recipe ->|
| |->clsDatabase->ADO.NET->...->DB
|>IngrdntList->Ingrdnt->|
I'm pretty sure that this logical flow falls under an n-tiered design pattern (haven't dealt with one in a while...so please forgive me if I'm wrong)
The major issue I'm having right now is pulling clsDatabase outside of each of the individual projects while still exposing them exclusively to the appropriate projects(i.e. I still want RecipeMgr & IngredientMgr to be able to communicate with the database, but nothing else)
I know that I'm overcomplicating the architecture of a simple application, but I'm deliberately using a simplistic application primarily to investigate development using a more complicated architecture. Right now I have no database server or application server to allow me to accomplish this. I was hoping to complete my application in a desktop testbed (n in 'n-tiered' = 1) before dispersing individual components across a network. I've built an n-tiered application before, but it has been over a year and it was one specific application where we were given very specific tasks to accomplish to turn our app into an 'n-tiered' app. I thought that I had learned enough about the concepts to be able to duplicate the methodology, but apparently not. I'm wanting to go back over the concepts and build an app from the ground up with the requirement that it be n-tiered.
-- modified at 12:50 Thursday 5th October, 2006
|
|
|
|