views:

58

answers:

3

I'm working on a simple mark management system for a school department (let's assume it's the Maths department). They want a simple system for users to enter marks for each student as they progress, entering marks for each term, getting yearly averages, sorting by teacher, etc.

Speaking to the person in-charge of the department, he said maybe 12 to 15 persons at a maximum will have access to the database over wired and wireless connections. I had initially felt Access should suffice, however after some research, it seems that it probably isn't the ideal choice (15 users getting close to pushing it, plus wireless connections not ideal).

As such, I've decided to go with an Sqlite-based solution. The reason I chose Sqlite is to mitigate issues such as restarting the database software each time the server restarts and what not. Have the Sqlite reside in a central location and have the software communicate with it over a LAN connection. Hopefully it should work fine.

I'm looking for a bit of insight as to what I should use to create the actual front-end. I'm leaning towards a C# WPF application. Whilst I've used the Professional (or is it Ultimate?) edition via DreamSpark for uni, this project isn't covered by the license so I'm going to have to make use of the Express edition.

I was wondering what features are missing that may hinder me. The database side isn't really an issue - whilst linq or the EF are preferable, I don't Sqlite works with Linq and am not sure if the EF is in the Express edition. With that said, I don't really mind doing all the DB stuff myself if I need to, however. All I really need is a way to interface with the DB. What would be the best way to do this using VS 2010 Express? Are there free solutions I can use to make this easier?

With WPF, what's missing? Are all (most?) of the controls available?

Basically I'm just trying to get an idea of what restrictions will be placed upon me and what might give me trouble down the line.

If you have any other suggestions, I'm more than happy to hear them. Also, I recall hearing that Microsoft had some program that gave beginning developers cheap or free access to the tools for a few years or something. Any idea what it was called - had no luck googling it.

A: 

Also, I recall hearing that Microsoft had some program that gave beginning developers cheap or free access to the tools for a few years or something. Any idea what it was called - had no luck googling it.

WebSiteSpark program

Jakub Konecki
+2  A: 

I've been using MS-Access since 1995 and have had plenty of bad experiences with MS-Access in a concurrent multi-user read/write scenario over a LAN, especially when the network transport layer is not rock solid. A timed-out connection at the wrong moment and data corruption can result. I program in Oracle and SQL-Server as well, but some customers simply do not want to incur the additional cost of a true client-server (as distinct from a shared-file) architecture, not matter what horror stories you tell them.

You can connect to SQLite using the System.Data.SQLite libraries available thru http://sqlite.phxsoftware.com/ but because SQLite uses an exclusive file-lock during the write operation, it too could get corrupted by transport-layer anomalies, which are not uncommon when wireless connectivity is involved.

I'd be inclined to recommend either a) a web interface to the back-end if you opt for a shared-file architecture like Access or SQLite, or b) a true client-server engine, with the client running on the desktop. Your academic customer may qualify for steep licensing discounts from the major commercial companies if you opt to use them instead of open-source.

A web-interface would also allow non-Microsoft clients to use the application.

Tim
+1 web front-end solves most of the basic problems in this scenario imo. It's simple enough (ie not real-time stock trading) to not warrant an advanced local client with all the maintenance burden and communications issues that normally introduces. Access on the web server end could also work if that's what you're comfortable with, removing the LAN- and many-client connections issue from it.
Oskar Duveborn
A: 

Don't forget that Sql Server comes in a free version these days.

There are some restrictions but should not be an issue in your scenario.

What is the hang-up about restarting the database software, if you are restarting the server, the file share is going to go offline anyway.

Also, you should not hit any severe restrictions using VS2010 Express, notable missing components are unit-testing, add-in support, source control integration.

WPF should give you everything you need to produce a rich interface, however your biggest hurdle is going to be the learning curve. If you can overcome this then WPF will serve you well.

benPearce
I've just done a semester of WPF at university so I'm pretty comfortable with. That's not really the issue. The issue is I don't have any control of the server. I'm there to develop and deploy the application. They only need something simple, and with all things factored in, a PHP/Sqlite solution is looking pretty good at the moment. I'm after something that will need minimal maintenance after deployment.
NRaf