Search code examples
.netsilverlightasp.net-mvc-2prism

.NET Presentation Tier Architecture / Blueprint for Line of Business Systems


We are revisiting our presentation tier architecture as a blueprint for future new, and re-written business systems (Just the presentation tier), using Microsoft technology stacks.

We have around 30 .NET systems (2, 3, and 3.5), about 60% of which are web-based (CWAB + Web Forms) and 40% Smart Client (using CAB / SCSF, WinForms) All systems integrate into a back-end SOA stack via ASMX or WCF (i.e. the 'back end' systems architecture is common)

The objectives are

  • if possible, try to keep the codebase as 'common' as possible between Web, Windows, and Mobile (currently no reuse of MVP / MVC between Web and WinForms)
  • Will increasingly need to support Mobile devices
  • Most of our systems are grunt line of business systems - functionality is more important than aesthetic requirements
  • Definitely a lean toward moving across to WPF
  • Even if there is no presentation tier reuse, to keep a consistent architecture (MVC / MVP / MVVM, etc) between the clients
  • Stay mainstream!

Some thoughts have swung between

  • ASP.NET MVC 2 + jQuery etc for web + ?Prism / WPF for Smart Client vs
  • Prism for all (Smart Client and Silverlight) vs
  • Sharepoint Web Parts (Portal Architecture) vs
  • Leaving Web / Winforms and waiting for the dust to settle some more ;)

How does the future HTML5 affect your thinking?


Solution

  • We are in a similar situation and have given this subject considerable thought. For us we ruled out Sharepoint Web Parts for several reasons. That could be a valid path for some, but expensive.

    We are using MVC for externally facing user interfaces with some Silverlight modules for specific needs that require richer user interaction.

    For internally facing user interfaces we are using Silverlight/Prism/MVVM for new modules and, for now, hosting the new Silverlight modules in the existing WinForms Smart Client system using a browser control. We have been able to create the needed interaction between the existing Smart Client code and the Silverlight modules with much trouble. This has worked well for our system, but your mileage may vary. I beleive the ease of integration was helped by our simple application framework that we used instead of the more general but more complicated CAB framework for Smart Client.

    At some point in the future as we upgrade older modules from WinForm to Silverlight, drop them becasue they are no longer needed, or rewrite them to accomodate significant business changes. We will then redo the host application, completely embrace the Silverlight/Prism/MVVM environment and drop all of the WinForm code. The obvious advantage of this approach being that we do not have to redo all of the UI at once.

    So far, it is working well for us. Good luck whatever route you choose.