Published: 04 Oct 2010
By: Arun Gopal V

This article focus on MOSS 2007 technology stack architecture and SharePoint request routing. The article also sheds light on difference between different versions of SharePoint, SharePoint data store, key players involved in handling a request and terminologies like Ghosted and Unghosted pages.

Contents [hide]


The article also sheds light on differences between different versions of SharePoint, SharePoint data store, key players involved in handling a request and terminologies like Ghosted and Unghosted pages.

SharePoint is a collaboration and content management platform. SharePoint is used mostly when required information is distributed. Microsoft came with SharePoint Team Foundation Service in 2001 then Windows SharePoint Services [WSS] v2 in 2003 and WSS v3 in 2006 and then with MOSS 2007.

MOSS 2007 Architecture

WSS v2 is integrated with IIS 6.0 and ASP.NET 1.1 through an ISAPI filter DLL. This architecture made sure all the requests are routed to the WSS v2 before reaching ASP.NET page parser. This brought lot of issues with ASP.NET context initialization and challenges like adding custom HTTP handlers, modules, user controls or changing execution process.

Microsoft came with new architecture for WSS v3. It was highly influenced by the new ASP.NET 2.0 features and flexibility, which helped developers to customize application to a new level. Another milestone which helped for new architecture was Virtual Path Provider. Virtual path provider brings in ability to store files and directories in any data store rather than just file system provided by server OS. Developer could provide custom provider for requested file.

WSS v3 came with custom HTTP application, handlers and modules. With WSS v3 all SharePoint site requests are carried out through ASP.NET 2.0. The custom virtual path provider in SharePoint uses library 'Microsoft.SharePoint.ApplicationRuntime.SPVirtualPathProvider'. SPVirtualPathProvider supports SharePoint concept of page customization. These topics are discussed later in the article.

WSS v3 relies upon .NET Framework 3.0 [mainly WF and WCF]. The stack architecture of SharePoint could be defined as shown in the figure below

Figure 1: MOSS 2007 stack architecture

MOSS 2007 stack architecture

This architecture helps MOSS 2007 to take advantage of ASP.NET 2.0, .NET 3.0 and WSS v3 abilities.

To understand SharePoint we should understanding on relation between MOSS 2007, WSS v3, ASP.NET 2.0 and SPVirtualPathProvider.

MOSS 2007 and WSS v3

Compared to previous versions of SharePoint WSS v3 got improved capabilities over:

Content Storage

  • Item level security
  • New additive in columns [more data]
  • Integration with smart clients tools
  • Easier provisioning for workspace
  • Greater Security
  • Permission

Collaboration Workspace

  • Email
  • AD integration
  • Alerts
  • RSS
  • Blogs & Wikis
  • Event and Task Navigation
  • Enhanced site navigation

MOSS 2007 was built with SSP (Shared Service Provider) on top of WSS v3 which helped to improve and place addition to all existing WSS v3 features. The glimpse of feature with MOSS 2007 is specified below:

Content Management

  • Business document workflow support
  • Records Repository
  • Navigation controls
  • Content publishing and deployment
  • Page Layouts
  • Site Templates
  • WYSISYG content editor and more

Business Intelligence

  • Spreadsheet publishing
  • Business Data Catalog
  • Key Performance Indicators (KPI)
  • Filter Web parts
  • Report Center and many more
  • Enterprise Search
  • Enterprise Content Source
  • Indexing Controls
  • Security
  • People Search
  • Business Data Search and many more
  • Portal Services
  • My Site Personal Site
  • Content Syndication
  • Privacy and Security
  • Portal Site Templates
  • User Profiles
  • Audience Targeting
  • Platform Services
  • Browser based forms
  • Centralized form management and control
  • Single Sign-On(SSO)
  • LDAP Authentication provider

Following are the additional features brought by MOSS 2007:

  • Global search [intranet +internet]
  • Audience targeting
  • Enterprise Service
  • Business Data Catalog
  • My Site
  • Recycle Bin

SSP brought in all the centralized service like user profile, BDC, Excel Service etc. required for all SharePoint web applications.


An important point to be understood is that MOSS 2007 adds to WSS v3, it does not have any independent existence. The product MOSS 2007 is licensed one but WSS v3 is free download.

WSS v3 and ASP.NET 2.0

WSS v3 is built on top of ASP.NET 2.0. All SharePoint requests route through the ASP.NET runtime before WSS; thus ISAPI filters are no longer required in WSS v3. Microsoft added HTTP Modules and HTTP Handlers registered with ASP.NET using standard web.config entries. This means every site request enters the ASP.NET runtime and are fully initialized in with ASP.NET context and forwarded to the code that carries out WSS-specific processing.

Assuming everyone is aware of the terminology Web Application, which represents IIS web site extended with WSS; when we extend web site to Web Application, WSS v3 adds a wildcard application map to IIS metabase. This map routes all incoming HTTP requests to the ASP.NET runtime regardless of file type (*.aspx, *.docx, *.pdf...) and then routes back for WSS for processing.

WSS v3 has its own version of virtual path provider known as SPVirtualPathProvider which is capable of pulling *.aspx page from SQL server or File System and supply it to aspx page parser available in ASP.NET 2.0. A separate component, Microsoft.SharePoint.ApplicationRuntime.SPPageParserFilter a derivative of PageParseFilter lets WSS control how pages are parsed and compiled and what executes on those pages. It is this PageParserFilter which eliminates unsafe controls and decides to whether to serve the page in compiled or no compiled mode.

Before discussing request routing we should discuss Ghosted and Unghosted pages in SharePoint.

Ghosted Pages and Unghosted Pages

SharePoint web pages could be classified into two categories – Ghosted Pages and Unghosted Pages based on their location. Normal user need not know about these classifications but as a developer we should be aware of it.

Before talking about Ghosted and Unghosted pages we should discuss on SharePoint data store. SharePoint data is stored between SQL Server and OS File System. File System would have common files and SQL Server contain specific data regarding configuration, sites, contents etc. The SQL server would contain at least two data bases – 'Configuration DB and Content DB'. Configuration DB stores configuration and site mapping information for your server computer, the web applications on your server computer, and for servers in a server farm. We need one configuration database for each server farm, whether your server farm is one server computer with everything on it, or within distributed computers. Content DB stores and manages site content. These are very brief description on SharePoint data store and you would be able to find many more DB's like Profile DB in SQL server.

'Ghosted Pages' are the SharePoint web pages which have not been customized. To understand Ghosted page we could take example of default.aspx page available with a new site and any web part created by New Web Part Page UI. These pages lie in File System and Content DB would tell WSS the location for these files. Any out of the box page that you find with SharePoint are all Ghosted pages. This Ghosted page concept help SharePoint to provision different sites with same set of *.aspx file though end user might feel there is individual file associated with each site. This improves performance and would also make branding much easy. The Ghosted files could be found under 12hive folder '~\TEMPLATE\LAYOUTS'.

'Unghosted Pages' are customized SharePoint web pages. These pages could be customized through SharePoint Designer. The customized files are stored in the Content DB. This might get little confusing as we talked about role of Content DB for Ghosted Pages too. Consider a table in Content DB with two columns, one for Content and other for SetUpPath. In case of Ghosted pages Content column would be NULL and SetUpPath would have absolute path to the file. In case of Unghosted pages Content column would be having customized file and SetUpPath column would be absolute path to file (here SetUpPath column helps us to convert unghosted to ghosted).

Request Routing and SPVirtualPathProvider

There is a big change in ASP.NET 1.1 parser and ASP.NET 2.0 parser, in the first one the parser retrieves file for parsing and in later version this job is assigned to virtual path provider. SharePoint has its own version of virtual path provider called SPVirtualPathProvider. SPVirtualPathProvider is integrated into every web application in SharePoint and it is integrated with ASP.NET request handling infrastructure by 'SPRequestModule'. The SPRequestModule component contains code to register the SPVirtualPathProvider class with the ASP.NET Framework as it does its work to initialize a SharePoint web application too. When a new SharePoint page is requested, SPVirtualPathProvider checks Content DB to analyze whether it's a Ghosted or Unghosted page.

If it's a Ghosted page then SPVirtualPathProvider retrieves file from File System. The ASP.NET 2.0 page parser turns it into dynamically generated class, compiles the class into an assembly and passes the request to processing. When the same page is requested (for a user it could be a different SharePoint site) the compiled class library is reused. This improves performance of Ghosted page.

If it's an Unghosted page then SPVirtualPathProvider retrieves the file from Content DB. Here SPVirtualPathProvider works with SPPageParserFilter to complete the processing of the request. SPPageParserFilter gives instruction to ASP.NET page parser on whether to compile the page into an assembly or pass it in a non-compile mode. WSS v2 had a separate aspx page parser called 'Safe Mode Parser' but in WSS v3 SPPageParserFilter and ASP.NET 2.0 aspx page parser has taken up that job. The above actions could be summarized with the figure shown below.

Figure 2: Unghosted page request

Unghosted page request

If we need to provide a SharePoint solution with MySQL, Oracle or MS Cloud, it's SPVirtualPathProvider that need to be customized and registered.


We have so far discussed on MOSS 2007 stack architecture and how each technology involved with SharePoint and discussed on features of WSS v3 and MOSS 2007. Then we focused on SharePoint data store and on the concept of Ghosted and Unghosted pages in SharePoint. Finally we discussed key players and processes involved with SharePoint request routing.

<<  Previous Article Continue reading and see our next or previous articles Next Article >>

About Arun Gopal V

A Technology enthusiast

View complete profile here.

Other articles in this category

Android for .NET Developers - Location and Maps
In Windows Phone and iOS getting the current position of the device in terms of latitude and longitu...
Android for .NET Developers - Using Web Views
In this article, I'll show a native app that contains a web-based view. The great news is that HTML ...
Android for .NET Developers - Building a Twitter Client
In this article, I'll discuss the features and capabilities required by an Android application to ta...
Developing a Hello World Java Application and Deploying it in Windows Azure - Part II
In this article we will see the steps involved in deploying the WAR created in the first part of thi...
Ref and Out (The Inside Story)
Knowing the power of ref and out, a developer will certainly make full use of this feature of parame...

You might also be interested in the following related blog posts

Querying a Multi-Tenant Data Architecture read more
Ruminations on Multi-Tenant Data Architectures read more
Using Telerik OpenAccess ORM in N-Tier applications read more
Handling security for Flex and Silverlight in ASP.NET read more
XM Radio Player Part II : Scraping read more
Overview of Microsoft Office SharePoint Server 2007 read more
The Onion Architecture : part 2 read more
The Onion Architecture : part 1 read more
A Tale of Software Rewrites read more
Microsoft Patterns & Practices - Improving WCF Services Security read more

Please login to rate or to leave a comment.