The solution I describe was implemented in a financial services organization and
is used in several applications.
This development concept is meant to create solid code and save on development by half in componentizing and reusing code.
For each iteration features are moved up the source three and retested.
Good software practices are highly recommended to manage this process
... you should know the fluff (versioning, testing, ....)!!
To start we create a new namespace called ENTsystem, which will be the first level or enterprise-wide root.
Then we do another one as APPSystem, which is the application level.
In the ENTSystem, we extend the Webcontrols as empty classes first, by prefixing each level with ENT
e.g. ENTSystem.ENTWeb.ENTUI.ENTWebControls.ENTDatagrid
We do the same for the APPSystem namespace, this time by deriving from the
ENTSystem classes.
e.g. APPSystem.APPWeb.APPUI.APPWebControls.APPDatagrid
The ENTSystem will be the enterprise root, will the APPSystem will be the
Application-level root -co-maintained by all dev groups - and the APPSystem WebControls are the lucky ones, which will be imported in Visual Studio.NET.
Another important class to be extended is the Page class. This can be specialized into IntraPage and ExtraPage to be able to use them in both Intranet and Internet scenarios with different security models within.
At this point features can be added.
One item we did was:
e.g. Setting the CSSClass to the ID in all controls so that we could create a nice style sheet with classes named after the controls and making the controls pretty ;)
I would recommend getting a first application ready before distributing the root DLL, so that some basic features get into the ENTSystem root classes and the developers get comfortable with the development process.
Obviously, this component-structured development can be applied to any namespace in your organization.
After 2 years of using it my organization has surely been able to maximise developer productivity and avoid reinventing the wheel over and over.
That is all for the first part. It's a very simple overview and the implemention is simple too., really.
Next time I will write some stuff about the security model we used out Intranet scenario.
posts about code reuse:
http://weblogs.asp.net/jkey/archive/2003/07/13/10030.aspx
http://weblogs.asp.net/bgold/archive/2003/09/08/49811.aspx
http://weblogs.asp.net/lhunt/archive/2003/12/17/44124.aspx
http://weblogs.asp.net/mscilipoti/archive/2003/02/13/2363.aspx
http://www.reusability.org/blogs/brian/
http://blogs.msdn.com/ricom/archive/2004/01/08/48796.aspx