Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have recently started working for a pretty big bank writing internal apps. I am being subcontracted out by the company I work for (who I have also recently started working for).

This bank has recently upgraded to Windows XP, they previously used Windows 2000.

I have been tasked with re-writing a report viewing application, which I am currently doing in MVC4 (Windows XP == Visual Studio 2010). The original app was written in .net 2 with webfoms, and is a bit of a mess.

The whole application seems to rely on state, where MVC is all about embracing the stateless nature of the web, as in the data you input to form A, affects the options you see in form B, options you select in form B affect form C etc etc (I love MVC and think that it is an awesome thing in the right context).

The whole maintaining models between states thing is starting to get pretty messy, and I can't help but thinking that I am either doing it wrong, or not using the right tool for the job.

My thoughts are that WPF would be perfect for this but the Computers are controlled by an external agency and are pretty locked down. We have slightly more control over the servers hosting the applications. The obvious next option is Silverlight(I think, maybe I'm horribly wrong!)

A couple of questions.

First: Is MVC ASP actually the best option here, or am I doing it wrong?

Second: What argument would you present to management if you agreed with me and thought a Silverlight based application was the way to go?

Using non MS based technologies is a no go. MVC4 is controversial.

share|improve this question

closed as primarily opinion-based by Jimmy Hoffa, Robert Harvey, GrandmasterB, gbjbaanb, user16764 Sep 25 '13 at 0:20

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

5  
You were doing great until you asked "what is the best?" We don't know that; any answer we provide is going to be mostly opinion. You haven't told us why you think Silverlight is the way to go, or why you think it's future-proof. If you're looking for future-proof, HTML5 is almost certainly a better choice. –  Robert Harvey Sep 24 '13 at 18:42
4  
You should probably let them know that Microsoft will no longer issue security patches for Windows XP after April 8, 2014... –  M. Dudley Sep 24 '13 at 18:44
    
Yeah, Windows 7 would have been a better choice. –  Robert Harvey Sep 24 '13 at 18:45
    
+1. Very well written question. –  tjons Sep 24 '13 at 18:45
1  
I wouldn't consider Silverlight to be very "future-proof", given the lack of love shown by Microsoft lately. If I had to bet, I'd put my money on HTML5. –  TMN Sep 24 '13 at 20:56

2 Answers 2

First off, there isn't a "future proof" application. It just doesn't exist. An application can be designed to handle change more easily and therefore better adapt to the future, but it's not future proof.

Since you're at a technology decision point, and you're constrained to the Microsoft stack, this is my recommendation based upon my experience.

  1. Leave Silverlight alone. Microsoft has not provided any information regarding updates or a roadmap in well over a year's time. Cynics and critics have declared the language dead, but the reality is we don't know. With Microsoft technology, don't know == don't use assuming you have the choice, which you do. In short, I wouldn't use Silverlight at this point because you don't know how long it will be around. But I like the MVVM pattern it provides.

  2. Windows XP is slated to officially retire on April 8, 2014. That having been said, nothing will force your current employer to upgrade their systems to Windows 7 or 8. However, you can make future changes to the application easier by avoiding technologies that are more closely tied to the underlying OS. To me, this means avoiding WPF. Not because there is anything wrong with WPF, but because the environment your application will be running in will soon be in end-of-life legacy support. Your worst case scenario is your application needing a security patch for WPF that isn't available on XP.

  3. ASP.NET has the best chances of providing a technology that will work within your environment and has an active roadmap from Microsoft.

  4. Many of the problems with winForms applications come from poorly structured code. Even if using MVC4 is controversial, you can still use the underlying principles and patterns it presents. Separating the view from the business logic (controller) from the data access logic (model) is a "good thing" and will make the application easier to change in the future. There's quite a bit written on the MVC pattern as well as many variants such as MVVM and MVP. Have a read over that information and you'll be well on your way to encapsulating responsibility within the appropriate layers of the new application.

share|improve this answer

Either way you go, you're putting a different peg in the same hole; you're just saying well this peg is a little rounder than the other one, is it better?

There is no reason an ASP.NET MVC app cannot appear to function the same way as an ASP.NET WebForms app. This will require different approaches because the two frameworks have radically different philosophies. Ultimately WebForms managed more state for you, but the state capabilities are identical.

Make sure you ask, and consider why ASP.NET MVC was chosen before making a proposal to management that a client dependent technology be considered

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.