views:

53

answers:

2

I have read quite a few posts on SO and around the web of the benefits and features of various WPF Frameworks (Caliburn, Prism) and Module Frameworks (MEF, Unity) and combining them.

In theory, I love the ideas behind them. And I know once I get a grasp on those systems, that it may actually increase development speed - but the upfront cost of learning tools and frameworks with that level of complexity seems high.

Project Background:
I am taking a 10-year old series of Access databases (with an enormous amount of bad macro code) and redesigning the database. On top of that, I want to come up with the best way to display and present that information. Using Access (2007) is an option, but not one I would like to use.

The company I am working for is a small to medium size business and the app will have about 40-80 concurrent users during the work day. This is the reason I would like to avoid Access.

I am currently using the Model-First feature of Entity Framework 4 (SQL Server 2008 R2) and .NET 4 (C#/WPF).

Dilemma:
The high level of design for the new database is permission based (a role is simply a collection of permissions) and I want the UI to show the information/edit buttons/etc based on these permissions. If I go for a standard approach, the code would be littered with if/else statements. However, if I go with a large framework - I feel it is overkill for what is basically a database access layer - especially given the high upfront learning curve. Not to mention I'm not 100% sure these frameworks would help me in the way I beleive they will.

The Question:
I am looking for some discussion as to whether these frameworks are worth the learning curve in a small-scale, "database layer" type applications.

In addition, if they are considered overkill, are there any frameworks that COULD help with this type of system? I have considered transitioning the UI to the web which seems perfect (and is more my expertise).

Thanks for your time.

+1  A: 

From the sounds of it, this seems like a perfect candidate for WCF RIA Services. You could then use your choice of presentation (Silverlight or ASP.NET, currently) for the front end. Depending on the specific scenario, you could mix and match the presentation.

Reed Copsey
I definitely want to hear from a few others before I mark as answer but this is absolutely great. The examples are perfect answers to my questions.
Chris Ridenour
@Chris: No problem. This is the exact type of scenario that RIA Services was designed for, though - so I think you'll definitely want to consider this. Brad Abrams's blog is a great resource for RIA Service info, too (including a 24+ post tutorial): http://blogs.msdn.com/b/brada/archive/tags/riaservices/
Reed Copsey
A: 

Given the conventional approach of Caliburn and your security needs, I think they would be a good fit. With Caliburn you are able to wire up control automagically based on either a specified convention or one that is baked in. Show you could have a convention for Button where its name contains a suffix that relates to the Role that is allowed to use the action. Using a base ViewModel that exposes the Users role, you could have the Convention Enable/Disable the Button based on the user Role.

Agies