Splitting / Modularizing Large ASP.NET Web Application Projects

Our company has a fairly large ASP.NET web application. The app is already broken up into distinct ‘areas’ of business functionality. I’m looking for some strategies we can use to split this web application into separate buildable/versionable modules.

Primary goal being to:

Enable us to deploy the web app with only select areas of functionality.

I envision the parent web app as a ‘shell’ that can host ‘plugins’ which can register themselves as menu items on the parent web app’s navigation hierarchy. The parent web app would contain the master page, stylesheets and common controls used by the plugins.

What kinds of ideas do you have for implementing something like this?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

I would do sub-web projects. Each website is a sub-project of the parent website. You can write an HttpModule that checks some data store to see if that customer has access to that site (module) and deny access in that way. Scott Guthrie has a nice post about how to set up sub web projects here.

Method 2

One easy way to do this would be to simply use a SiteMap. You can segregate your aspx files and compile different dll’s all you want. The SiteMap is completely independent and can be configured however you want to include whatever modules you want, with whatever permissions you want. There’s no real need for any code modules to register themselves with other code modules. This is ASP.NET, each request is independent and can start at any aspx entry point. As far as your pages are concerned, enabling cross-module functionality is as simple as providing a link to a page in another module. The SiteMap accomplishes this handily.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x