简体   繁体   中英

Migrating a Classic ASP application to ASP.NET

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:

  1. The system needs to be database independent. It must, at version 1.0, support MS SQL Server, Oracle, MySQL, Postgres and DB2.

  2. The system must be able to allow easy reporting from the database by third party reporting packages.

  3. The system must allow an administrative end user to create their own tables in the database through the web based interface.

  4. 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)

  5. 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.

  6. 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.

It depends on the skill of the people doing the assignment. Give the requirements to the developers and try to get an estimate from them.

PS. please eleborate the question in the title of the question 'Can it be done' is a bit generic ;)

Yes, but for numbers like 3 and 5 why not use available software? Sun query tools, Ms sql management studuio, etc..

You provided 6 questions/requirements and below is just my honest opinion.

  1. Developing a system that has the ability to use a variety of DB backends is definitely possible and a nice approach.
  2. Allowing read access into one of the DB backens for Reporting capabilities by Third party tools is a common scenario and possible.
  3. Allowing System administrators to modify DB structure (ie, add/edit/delete tables/colums) this is a questionable practice. Why recreate the wheel. Each of the Database Backends that you mentioned have administration tools built to manage the modification of database structures. More so if you plan to deploy this on the public internet then you open up the possiblility for disaster. If they are system administrators, why not just use the tools already created? Its safer, easier to develop, and in the end easier to support.
  4. Allowing a enduser to configure an admin to configure the user interface by changing label names, hiding fields, requiring a field. This is not a problems on core tables but as for user defined tables see my comments on #3.
  5. Allowing admin to create and maintian relationships (ie foreign keys, primary keys, unique keys) from the web is just as dangerous and a pain in the butt as #3. Why recreate the wheel?
  6. Your last question/requirement states alot. All I can say is start with allowing the user to customize the User Interface a little bit (hide/show fields, making a field required in a form). As for the rules engine, there are frameworks out there that handle rules/workfow. Perhaps some research on one of these frameworks would be helpful to you. Microsoft has Windows Workflow Foundation

Overall your not the first to come up with a these types of ideas. But the overall development and maintainability of an applicaiton like this could be a nightmare.

First off, yes all that can be done, but they aren't really requirements so much as implementation details. When you say an end use should be able to "create a new table," what you should say is "an end use should be able to define a new entity type." It doesn't necessarily have to have it's own table.

Anyways, if you only have 2.5 developers (and I assume you are one of those), and you don't have enough experience to look at all the requirements and the current system and estimate the feasibility, then I don't think the project would be a success.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM