views:

118

answers:

2

I will soon begin the painful*(kidding)* process of migrating multiple, separate, Access Applications to "Real" applications*(notice the quotes, no flame wars please)*. Most likely this will be Web Apps as the usual reason is multiple users and deployability but I will take it case by case.

Some of these are traditional Access apps using Access as the back end and others are using SQL Server(a central one) as the back end.

What I am looking for is a combination of your experience doing this and what resources you used to help.

Websites, apps, standards, best practices, gotcha's, don't forget's, etcetera.

I am a 1 person C# shop with SQL Server back end so whether Web or not I will be looking that direction.

Also, is it overkill or unattainable to try and develop a Framework for this kind of thing? Would there just be TOO MANY variables to even try and walk this path? Anyone ever try this?


Some further info based on below questions. We currently have ~250 users and they are spread between 5 Locations.

What I meant by deployability is perhaps a little vague. I simply meant that we are a Non-Profit Organization and as such we do not have the best bandwidth available so deploying full apps, even through ClickOnce can be tricky when combinded with the highly fickle nature of my users*(I want that box purple, no green, no get rid of it altogether type stuff...)*.

My idea is to try and develop a "framework", of sorts, that will help to streamline the process of moving an Access App to a .Net App.

Now I fully understand that this "framework" may be nothing more than a set of steps and guidelines; like, Use ORM*(LINQ2SQL or SubSonic)*to generate DAL, Copy UI to corresponding UserControls, rewrite Business Logic.

I am just looking for your experience/expertise to help me streamline my streamlining process... ;)

+1  A: 

Speaking from experience I think you would need to upgrade on a case by case basis. Upgrading is essentially a re-write from scratch and you should take the opportunity here to re-design as necessary. The type of application structure and code style used for Access (likely to be procedural I'm guessing) is very different to a well designed OO .Net app.

You will be able to re-use the SQL Server databases of course and, depending on the apps maybe even the Access ones. If you're feeling brave you could even try the upsizing wizard although I wouldn't recommend it as we found the results less than ideal.

I would also advise you take a look at some kind of ORM tool (we use Subsonic) as this can massively reduce the amount of boiler plate code you need to write. Some ORM tools will also generate DDL for your database too.

We follow these standards (good idea to pick a standard early on and stick to it we found) and also found this really useful to get up and running.

Hope this was some help.

Simon
Uh, what's with the "procedural" comment? Where exactly does Access encourage procedural code?
David-W-Fenton
Only trying to point out the fundamental differences between VBA and .NET. I know OO is possible in Access (indeed I've done plenty of it myself) but a large proportion (maybe even the majority) of Access apps are basically loads of procedural code behind forms. Most of the Access developers I've worked with (and there have been plenty) were not using classes within Access.
Simon
@Simon: **Without** starting a war here and knowing there are mountains of other SO posts about this, can you touch on YOUR reasons for using `SubSonic` in this case? Did you consider `LINQ2SQL`? I would be very grateful for another IT's insight in the WHY choose one or the other.
Refracted Paladin
Well, we're still on .Net 2.0 so Linq wasn't really an option. We also tried nHibernate but couldn't get on with the vast amounts of mapping involved and Entity Spaces (not free!). Subsonic is intuitive, pretty powerful and we haven't noticed any performance hits. Would probably use Entity Framework if it was available to us though.
Simon
+3  A: 

Those apps which use an Access database to store tables and which need web access should first be upsized to SQL Server. There is a tool from the SQL Server group. SQL Server Migration Assistant for Access (SSMA Access)

Then consider moving to the web only that portion of the app that requires remote access. And leaving the rest of the app in Access. That could save a considerable amount of time.

Alternatively consider going to Terminal Server. That along with a VPN means just some software licensing costs and next to no work on your part.

That said what do you mean by "multiple users" and "deployability"? Possibly we can give you some suggestions there. Access is multi user out of the box. However if you have mission critical data or can't rekey the data in the event of a corruption or have more than 25-50 users on the LAN then you should be moving the data to SQL Server.

Now that it's public Access 2010 can deploy applications to the web. All kinds of very interesting stuff can be done. For more information check the Microsoft Access product group blog or my blog with the appropriate Access 2010 tags

Tony Toews
See edit above but in short, yes it is mostly critical data and we have ~250 users in 5 locations.
Refracted Paladin
Terminal server would give you the ability to handle remote slow users now. It works well on a low bandwidth scenario. I've used it myself to administer my web server on a 28.8 kpbs connection behind a motel room in a small town in the Canadian Rockies. Sluggish but it worked. I also might not have optimized the connection for low bandwidth.And for a non profit group it is cheap, cheap, cheap. See www.techsoup.org.I also see very little purpose in replacing apps just because you can. If there is a true need and the Access app is truly badly designed then fine.
Tony Toews
For easily deploying Access apps see my free Auto FE Updater utility. http://www.autofeupdater.com/
Tony Toews