J
John
I'm migrating a medium sized ecommerce platform to .NET. I've had pretty
good success with a series of small windows forms and console apps. This
aspx migration is being done more or less piecemeal - all new dev is aspx,
some old stuff is re-written as needed.
I'm trying to figure out:
1: what's the best way to layout a large project in ASP.NET - without having
everything compiled into 1 dll, without having your data access code in the
website tree
2: what's the best way to keep separate dll's for the aspx pages and share
some code for the UI w.out having to copy a shared.dll to N places (default
answer: use the GAC - but this project doesn't seem "GAC Worthy" <s>)
Right now we have one big solution with 4 layers - UI, Facade, DataAccess
and Framework. Programmers working on various aspx projects have been
dumping everything there. This is NOT the way to go because we end up with
one big Facade.dll and then it's hard for multiple people to work on the
project. So - I layed out below a few things I've been tooling around with.
Some newsgroup posters say "never do file references - always use one big
solution with multiple projects" - that's more or less what we had in our
old COM+ component world. Any thoughts?
I mention 4 units of work here in these examples - these are just the tip of
the iceburg: Employee, Checkout, Customer1, Customer2 - I need to set
this up so that I can extend this to maybe 20 units of work.
Project
| ComponentServices
| | Employee
| | Checkout
| | Customer1
| | Customer2
Project
| ComponentServices
| | EmployeeFacade
| | EmployeeDataAccess
| | EmployeeFramework
| | CheckoutFacade
| | CheckoutDataAccess
| | CheckoutFramework
| | Customer1Facade
| | Customer1DataAccess
| | Customer1Framework
| | Customer2Facade
| | Customer2DataAccess
| | Customer2Framework
references here (project references are better)
Project
| ComponentServices
| | Facade
| | | Employee
| | | Checkout
| | | Customer1
| | | Customer2
| | DataAcces
| | | Employee
| | | Checkout
| | | Customer1
| | | Customer2
| | Framework
| | | Employee
| | | Checkout
| | | Customer1
| | | Customer2
avoid manually copying CommonUI.dll to 3 places
SiteRoot
| ECommerce
| | EmployeeUI
| | | Bin
| | | CommonUIBin - junction to - CommonUI\Bin
| | CheckoutUI
| | | Bin
| | | CommonUIBin - junction to - CommonUI\Bin
| | Customer1UI
| | | Bin
| | | CommonUIBin - junction to - CommonUI\Bin
| | Customer2UI
| | | Bin
| | | CommonUIBin - junction to - CommonUI\Bin
| | CommonUI
| | | Bin
SiteRoot
| ECommerce
| | EmployeeUI
| | EmployeeFacade
| | EmployeeDataAccess
| | EmployeeFramework
| | CheckoutUI
| | CheckoutFacade
| | CheckoutDataAccess
| | CheckoutFramework
| | Customer1UI
| | Customer1Facade
| | Customer1DataAccess
| | Customer1Framework
| | Customer2UI
| | Customer2Facade
| | Customer2DataAccess
| | Customer2Framework
| | CommonUI
good success with a series of small windows forms and console apps. This
aspx migration is being done more or less piecemeal - all new dev is aspx,
some old stuff is re-written as needed.
I'm trying to figure out:
1: what's the best way to layout a large project in ASP.NET - without having
everything compiled into 1 dll, without having your data access code in the
website tree
2: what's the best way to keep separate dll's for the aspx pages and share
some code for the UI w.out having to copy a shared.dll to N places (default
answer: use the GAC - but this project doesn't seem "GAC Worthy" <s>)
Right now we have one big solution with 4 layers - UI, Facade, DataAccess
and Framework. Programmers working on various aspx projects have been
dumping everything there. This is NOT the way to go because we end up with
one big Facade.dll and then it's hard for multiple people to work on the
project. So - I layed out below a few things I've been tooling around with.
Some newsgroup posters say "never do file references - always use one big
solution with multiple projects" - that's more or less what we had in our
old COM+ component world. Any thoughts?
I mention 4 units of work here in these examples - these are just the tip of
the iceburg: Employee, Checkout, Customer1, Customer2 - I need to set
this up so that I can extend this to maybe 20 units of work.
Project
| ComponentServices
| | Employee
| | Checkout
| | Customer1
| | Customer2
Project
| ComponentServices
| | EmployeeFacade
| | EmployeeDataAccess
| | EmployeeFramework
| | CheckoutFacade
| | CheckoutDataAccess
| | CheckoutFramework
| | Customer1Facade
| | Customer1DataAccess
| | Customer1Framework
| | Customer2Facade
| | Customer2DataAccess
| | Customer2Framework
references here (project references are better)
Project
| ComponentServices
| | Facade
| | | Employee
| | | Checkout
| | | Customer1
| | | Customer2
| | DataAcces
| | | Employee
| | | Checkout
| | | Customer1
| | | Customer2
| | Framework
| | | Employee
| | | Checkout
| | | Customer1
| | | Customer2
avoid manually copying CommonUI.dll to 3 places
SiteRoot
| ECommerce
| | EmployeeUI
| | | Bin
| | | CommonUIBin - junction to - CommonUI\Bin
| | CheckoutUI
| | | Bin
| | | CommonUIBin - junction to - CommonUI\Bin
| | Customer1UI
| | | Bin
| | | CommonUIBin - junction to - CommonUI\Bin
| | Customer2UI
| | | Bin
| | | CommonUIBin - junction to - CommonUI\Bin
| | CommonUI
| | | Bin
SiteRoot
| ECommerce
| | EmployeeUI
| | EmployeeFacade
| | EmployeeDataAccess
| | EmployeeFramework
| | CheckoutUI
| | CheckoutFacade
| | CheckoutDataAccess
| | CheckoutFramework
| | Customer1UI
| | Customer1Facade
| | Customer1DataAccess
| | Customer1Framework
| | Customer2UI
| | Customer2Facade
| | Customer2DataAccess
| | Customer2Framework
| | CommonUI