PDA

View Full Version : Help Me Choose a Web Framework


AsLan^
2008-03-15, 01:38
I'm trying to write a web application that seems pretty straightforward but I'm slightly gun shy after trying to do it in ASP.NET and found that it really fell short when I had to make some modifications. Fell short as in, every little change required finding and changing an attribute in multiple places. I'm quite sure my overall design is at fault but I'm not sure how I can fix it using Visual Web Developer Express and ASP.NET. So, the application has not actually been deployed yet, I've only shown the users a demo, so there is still time to switch horses and create an easily maintainable web application (that's important because the odds are very great that I won't be the one maintaining it. In its current state though, even I don't want to maintain it!).

Here's what I need to do...

Store training records for around 300 people or so and generate reports from those records. There are approximately 50 different training records that need to be tracked and each consists of a couple of data points: a label, a date, a boolean indicating completeness, and possibly a comment.

Here's (I think) the tricky part, the records are maintained by approximately 5 different offices and the users have requested that only their offices have access to the records they maintain. Although, somebody in a supervisory role needs access to all the records for the employees they supervise. So, an office can see all the records they are responsible for across all users, and a supervisor can see all the records from every office but only for the people they are responsible for.

I ran into trouble when I demo'd the application and the Office chiefs wanted to change who was responsible for some of the records, and additionally create another office that hadn't been originally thought of. The way I unintentionally set it up, changing just one field from one office to another required moving the entry from at least two forms to another two forms, finding and removing the columns from some SQL statements, and inserting the column into others. A lot of work for just one field, and what if they changed their minds again!

I decided to control access to records by grouping them into different tables, and giving permissions to those tables to the groups I mentioned above. Seemed simple enough but as I explained, when it came time to change a column it was really quite a lot of work.

This application seems fairly trivial as a single user application (and I would love to do it with Core Data as it's a perfect fit) but as a multi-user web application it seems more difficult. Here's what I see as my options:

Find an appropriate web application framework and redo the application. The drawback here is that I can't seem to choose a framework.

Create a custom application that gets its data from a custom server (using Java or C#). The drawback here is that it's not web based.

There is also the question of whether or not to use a database server to store and query the records.

If I don't use a database then I could serialize each object and store them in flat data files which would be parsed when the application starts and written back periodically. The drawback here is the possible loss of data if something were to go wrong (two people try to write at same time, server crashes, etc), and also the loss of performance if some of the files were to become quite large. The bonus here though is that I can control all access and queries without using SQL and changes to the data structures should be fairly trivial (provided I do my classes right, how hard could that be :P).

If I do use a database then I can worry a lot less about potential data loss and performance issues because most database servers are quite good at that sort of thing. However, the object serialization and modifications to any structures becomes quite messy (it seems). For example, I have 50 training records that need tracking, each with four attributes, which means 200 columns in the table, changing the record object (for example adding an additional date or comment field) then requires an additional 50 columns to be added.

My head hurts.

AsLan^
2008-03-15, 21:17
If nobody's got any suggestions I think I'll just write it as a non web based application and use flat files for persistence (that's easiest to me).

I estimate that there will be no more than 3 users using the application simultaneously so there shouldn't be any serious problems.