We are in design phase of a project whose goal is replatforming an ASP classic application to ASP.Net 4.0. The system needs to be entirely web based. There are several new requirements for the new system that make this a challenging project:
The system needs to be database independent. It must, at version 1.0, support MS SQL Server, Oracle, MySQL, Postgres and DB2.
The system must be able to allow easy reporting from the database by third party reporting packages.
The system must allow an administrative end user to create their own tables in the database through the web based interface.
The system must allow an administrative end user to design/configure a user interface (web based) where they can select tables and fields in the system (either our system's core tables or their own custom tables created in #3)
The system must allow an administrative end user to create and maintain relationships between these custom created tables, and also between these tables and our system's core tables.
The system must allow an administrative end user to create business rules that will enforce validation, show/hide UI elements, block certain actions based on the identity of specific users, specific user groups or privileges.
Essentially it's a system that has some core ticket tracking functionality, but allows the end user to extend the interface, business rules and the database. Is this possible to build in a .Net, Web based environment? If so, what do you think the level of effort would be to get this done? We are currently a 6 person shop, with 2.5 full time developers.
One thing to question is who has created these requirements? Most experienced developers will have attenmpted a generic do-everything system in the past, most often without success. This is because it is a tricky thing to get right and there are a lot of pitfalls. Does the requirement for users to create their own tables at the database level come from an experienced programmer who understands security implications and design principles or is it from a project manager who has "done a bit of programming"? Get your real world requirements sorted out first.
Instead of
The system must allow an administrative end user to create their own tables in the database through the web based interface.
Perhaps you should have the requirement
The system must allow an administrative end user to define and store their own data through the web based interface.
This will stop you from narrowing your options. Brainstorm different implementations, create some prototypes and proff of concept designs and be prepared to throw these away.
My approach would be to completely abstract the database access to the point where you might not really be creating new Client-defined tables in the datbase itself but rather virtual tables in your data access layer. This will help make the system database agnostic.
For validation, check out FluentValidation. It is a very easy-to use and flexible validation framework that works nicely with JQuery validation on the client side
Give yourselves about a year, and then maybe add 50% for good measure. Really, estimating this kind of project is very difficult, but we have achieved a similar scale project with a similar team in a year using best practice agile methodolgy. I am assuming that your developers are competent. This is a very challenging project as you have rightly identified.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With