0

I’m starting to think about and develop an architecture for a big web application, and I wanted to get suggestions and/or recommendations on which technologies and/or frameworks to use.

The application will be an Intranet-based web site using Windows authentication, running on IIS and using ASP.NET. It’ll need to be structured as a main web application with sub-web applications. Essentially, the entire scope is a composite browser-based, Intranet application that is composed of discrete, functionally complete modules or sub-applications.

This composite web client application would have a main or shell module to provide the overall user interface structure. Additionally, the shell module would provide access to common services that all the individual sub-apps or modules could use. Then each sub-app/module would contain its own functionality and implementation, but integrate with the shell user interface.

Next, based on the user and which of the sub-apps are available, the main or shell app would dynamically build tabs (or buttons or something) as a way to access each individual application. And, we’ll be storing the user and application data in a database table.

So, for example, we’re going to have a reports application, a display application, and probably a couple other distinct applications. On startup of the main/shell application, after determining who the user is, the main app will query the database to determine which sub-apps the user can use and build out the UI. Then the user can navigate between available sub-apps and do their work in each.

I hope all this makes sense.

Anyway, I’m wondering which, if any, pre-existing technologies/frameworks would work best for architecting and developing a system such as this.

Would the Web Client Software Factory be a good choice? Would some other MVP solution be a good choice? Would ASP.NET MVC be a good choice? Something else???? Would none of these be a good choice and we should just develop everything from the ground up using web forms? Any other info I should know about?

Thanks!!!!

DaveRandom
  • 87,921
  • 11
  • 154
  • 174
lmttag
  • 2,499
  • 4
  • 26
  • 30
  • possible duplicate of [Architecture Suggestions/Recommendations for a Web Application with Sub-Apps](http://stackoverflow.com/questions/4719196/architecture-suggestions-recommendations-for-a-web-application-with-sub-apps) – John Saunders Feb 23 '11 at 01:47
  • Please stop posting duplicate questions. – John Saunders Feb 23 '11 at 01:47
  • I had some issue with the open id thing, so I thought I needed to re-post it (and, in doing so, I tried to clean-up and clarify the original post - so, technically, they are slightly different). If I could delete the original post, I would. But, I can't, or at least it's not clear at all how to do that. – lmttag Feb 23 '11 at 15:52

2 Answers2

0

ASP.Net MVC2 also facilitates the use of areas. Here is a link that may be useful

http://odetocode.com/Blogs/scott/archive/2009/10/13/asp-net-mvc2-preview-2-areas-and-routes.aspx

basically you could use areas to break out your "subapplications"

John Hartsock
  • 85,422
  • 23
  • 131
  • 146
0

Before discussing frameworks, some points to consider when building such a system (where sub-apps can be plugged in):

  • Possible integration points (Data, Services, Business Logic, UI)
  • Cross-cutting concerns (system logging, audit logging, config, security)
  • Who'll be developing the sub-apps (you, people that work in your office, or anyone / the greater community)

I think that before leaping in and building a framework (or choosing an existing one) you need to step back and think through these aspects first.

In terms of farmeworks: you'll find many frameworks but very few offer the full range of what you're after:

  • ASP.NET WebForms is basically a completely vacant parcel of land - you'll have to build most things yourself, or bring in additional frameworks (such as the MS Enterprise Libraries)
  • ASP.NET MVC is effectively the same thing but in a different style.

Neither of these are "frameworks" but you could use either of these as the low-level base 'platform'.

  • The MS Ent Libs are great for cross-cutting concerns (like data access, logging, etc) but that's all.
  • There's also a range of good Dependency Inversion frameworks but again these aren't a full solution.

The big thing is to control dependencies: ensure you abstract out the data layer (for a start), adhere to principles around interface segregation, reuse and so on.

One option that you could consider (and I'm blowing my own trumpet here - so I'm not impartial) is the open source .net application framework I've built ('Morphfolia' it's taken me about 5 years, part-time). Even if you don't use it you might find some good ideas or code you can 'steal':

Morphfolia:

It's available for download at http://morphfolia.codeplex.com/

Community
  • 1
  • 1
Adrian K
  • 9,880
  • 3
  • 33
  • 59