Is this design for layering/tiers any good?
===

Here is my design and thinking for a client/server application - will be grateful for comments and constructive criticism.

**Assemblies:**

Framework

•	Framework.dll
•	Domain.dll
•	WPFFramework.dll/WebFramework.dll

Application

•	Bootstrapper.dll
•	Application.dll
•	WPF.dll/Web.dll etc



**Thinking behind physical separation (i.e. assemblies):**

•Minimise Physical layers for performance reasons – so have as few assemblies as possible

•Want to separate out framework code from application code, so can reuse, so have two sets of assemblies – one framework and other for specific applications

•Want to be able to substitute different Views, so have separate application assemblies for these (e.g. applicationwpf.dll, applicationweb.dll)

•Want to be able to deploy client/server, so place WCF proxies in framework.dll (deploy this dll on client and server)

•Domain likely to change more frequently than rest of framework, so place in separate assembly - if Domain changes, but interface remains the same, then only need to recompile Domain, not Framework or Application (not sure how important this is - otherwise can place domain within framework.dll)

•Need separate bootstrapper exe to avoid circular dependency between application layer dll and view dll

**Thinking behind logical separation (achieved by placing in separate folders):**

Framework.dll

•	Extension methods
•	Interfaces (Domain and infrastructure)
•	AOP code
•	Container code
•	Repository code
•	Types (attributes, enums, delegates)
•	Utilities (Copying, DateTime, Reflection etc)
•	Validation
•	View (common View utilities such as a module manager)
•	ViewModel (base classes)
•	Network (Proxies)


Domain.dll

•	Types/Services

WPFFramework.dll/WebFramework.dll

•	Converters/Dictionaries/Base user controls etc


Bootstrapper.dll

•	Code to instantiate container and application.run etc 

Application.dll

•	Application Layer (use case controllers)
•	ViewModels


WPF.dll/Web.dll etc

•	Windows and user controls etc

