Windows SharePoint Services 2.0 Architecture
The architecture for SharePoint Team Services from Microsoft is improved and enhanced for Microsoft Windows SharePoint Services. In Windows SharePoint Services, site settings and information, along with all site content — such as all list data, all documents in document libraries, and other page content — is now stored in the Microsoft SQL Server computer or Microsoft SQL Server 2000 Desktop Engine (Windows) (WMSDE 20) database. It is no longer split between the file system and the database. This change was made primarily for the following reasons:
To enable Windows SharePoint Services to perform well in much larger installations. Data in the database can be managed transactionally, so that the Web site does not need to be locked whenever a file is saved.
To improve server availability. If you have multiple stateless Web servers in a server farm, when one fails, another can take over without losing access to any content.
To improve the integrity of the stored data. The possibility of conflicts between database and file system information is removed, and the database can be easily backed up.
Furthermore, because the new architecture greatly reduces the dependency on the Microsoft Windows registry and the Internet Information Services (IIS) metabase for each server that runs Windows SharePoint Services, you can now create a server farm system with multiple servers and host many more Web sites than you can with SharePoint Team Services.
Windows SharePoint Services Configurations
You can choose between two configurations for Windows SharePoint Services: stand-alone server or server farm. If you anticipate only light usage of your Web sites, you can use the stand-alone server configuration. If you are supporting Web sites in a large organization or as an Internet service provider (ISP), and anticipate heavy usage and a lot of data, you will most likely want to use the server farm configuration.
Stand-alone Server Configuration
A stand-alone server configuration has the following characteristics:
There is a single server running Windows SharePoint Services.
Multiple sites and subsites are grouped in site collections on each virtual server in IIS that is extended with Windows SharePoint Services. An Internet Server Application Programming Interface (ISAPI) filter maps incoming Uniform Resource Locator (URL) to specific sites on that virtual server.
Scaling is achieved by adding site collections to an existing virtual server, or by adding subsites to an existing site collection.
Each virtual server has its own set of content database in SQL Server or WMSDE. The configuration database directs each virtual server to the appropriate content database for a given Web site. The content for the top-level Web site and any subsites within a site collection is stored in the same content database.
The following diagram illustrates the architecture for the Windows SharePoint Services stand-alone server configuration.
This diagram shows a similar architecture to the one used for SharePoint Team Services, with the exception that all data is now in the SQL Server database rather than split between the database and the file system.
Server Farm Configuration
A server farm configuration has the following characteristics:
There are multiple separate servers running Windows SharePoint Services and SQL Server.
Multiple sites and subsites are grouped in site collections on each virtual server in IIS that is extended with Windows SharePoint Services. An ISAPI filter maps incoming URLs to specific sites on that virtual server.
Each virtual server has its own set of content databases in SQL Server. The configuration database for the server farm directs each server to the appropriate content database for a given Web site. The content for the top-level Web site and any subsites within a site collection is stored in the same content database.
Performance and capacity are increased by adding additional servers running Windows SharePoint Services and SQL Server.
Scaling is achieved by adding more front-end Web servers (to increase throughput for the existing content), and by adding top-level Web sites and subsites (to support more content).
Load balancing is achieved by using switching and routing hardware, or by using software such as Windows Network Load Balancing Service.
The following diagram illustrates the architecture for the Windows SharePoint Services in a server farm configuration.
In this diagram, you can see the larger effects of the architecture change. Because site information is stored in the content databases, you can distribute the load among several front-end Web servers running Windows SharePoint Services, and they can all communicate with the appropriate database. So, a request coming from the client can go to any of the front-end Web servers and still be able to connect to the correct Web site data.
In a server farm, each front-end Web server running Windows SharePoint Services can have multiple virtual servers. Each virtual server, in turn, can have multiple site collections, which can have one top-level Web site and multiple subsites. The following diagram illustrates this hierarchy.
About Virtual Servers
A virtual server is a way of breaking up the Web server structure, giving you finer control over settings for particular groups of Web sites. So, rather than configuring a setting for an entire server, you can configure it for just a virtual server. You can also configure authentication on a virtual server basis, so that different virtual servers can use different authentication methods. If you have some sites that are internal to an organization, and some that are accessible from the Internet, you can host them on separate virtual servers and use the appropriate authentication method for each environment.
Virtual servers are called Web sites in Internet Information Services (IIS).
Using virtual servers can also allow you to isolate Web sites from one another. You can specify different application pools for each virtual server, and be sure that changes made to a site on one virtual server will not accidentally be transferred to another site on a different virtual server. For more information about application pools and processes, see Windows SharePoint Services 2.0 Security Model or IIS 6.0 Help.
SharePoint Team Services supported approximately 1000 virtual servers per server. Windows SharePoint Services supports many fewer virtual servers per front-end Web server (approximately 10). This difference is a result of the use of ASP.NET, which creates a separate set of compiled DLLs for each virtual server. Because Windows SharePoint Services uses several large DLLs, it is not practical to have them all in memory at the same time. (When you extend a virtual server, approximately 50 MB of memory is taken up by the base working set of processes, including ASP.NET.) However, because you can host multiple site collections on each virtual server, you should not need to create as many separate virtual servers in Windows SharePoint Services as were needed in SharePoint Team Services.
Structuring the URL Namespace
Windows SharePoint Services can be used in a variety of environments, from the small, departmental server to a large server farm at an ISP. To suit these environments, Windows SharePoint Services running on an IIS 6.0 platform allows you to set up your URL namespace in several configurations, each of which is based on the type of site you want to create. Windows SharePoint Services supports the following types of sites:
You can create multiple Windows SharePoint Services site collections with a network domain name as the URL, for example, http://mysite or http://mysite.mycorp.com. Use domain-named sites to allow users to create short, simple URLs.
You can also create multiple site collections that are named as subfolders of a domain URL, for example, http://myserver/sites/mysite or http://www.mycorp.com/myOffice/MyGroup/mysite. Use subfolder-named sites to show the hierarchy of sites in your organization.
You can choose between these types of sites depending on your organization's needs. After you decide which basic site types you will support, you can choose from the following namespace configurations:
One domain-named site per virtual server
For example, Server1 contains http://site1, http://site2, and so on. Each top-level Web site is a separate virtual server and has its own database. This scenario allows each site to be isolated for billing or security purposes.
Multiple subfolder-named sites per virtual server
For example, Server1 contains the sites http://server1/portal1, http://server1/portal2, http://server1/webapp, and so on. Each virtual server can host multiple sites based on Windows SharePoint Services, and the same virtual server can also host Web applications. All of the sites for that virtual server can share the same content database. This allows team Web sites to coexist with portals and other Web applications.
One domain-named site and multiple subfolder-named sites per virtual server
For example, Server1 contains the sites http://portal/teams/site1, http://portal/teams/site2, http://portal/webapp, and so on. The virtual server contains a top-level Web site based on Windows SharePoint Services. Subfolders of that site can be Web sites based on Windows SharePoint Services, or be used for Web applications. All of the sites based on Windows SharePoint Services for the virtual server share the same database.
Two virtual servers hosting the same content (extranet scenario)
For example, Server1 hosts http://portal and Server2 hosts https://portal.company.com. Both of the virtual servers (and they can be on separate server computers) share the same content database, and provide the same site content to create an intranet and extranet. The two servers can have different security settings in IIS (for example, requiring SSL access on the external site, and anonymous access for internal), but share content. Note that the Office FrontPage 2003 Recalculate hyperlinks feature cannot work in this scenario, because fixing the links for one URL path would break the links for the other.
Multiple domain-named sites per virtual server (large-scale hosting scenario)
For example, Server1 hosts http://user1.company.com, http://user2.company.com, http://user3.company.com, and so on. Each of these sites is a top-level Web site on the same virtual server, but they are mapped to different URLs. There can be one or many content databases, depending on the scale.
Communication Between the Client and Server
The Office FrontPage 2003 client communicates with Windows SharePoint Services using HTTP, the same protocol Web browsers and Web servers use to communicate. FrontPage implements a remote procedure call mechanism on top of the HTTP POST request, so that the FrontPage client can request documents, update the Tasks list, add new users, and so on.
The Web server sees POST requests addressed to the Internet Server Applications Program Interface (ISAPI) filter for Windows SharePoint Services and directs those requests accordingly. FrontPage correctly communicates between client and server through proxy servers (firewall).
FrontPage does not use the HTTP PUT request. As described in the HTTP specification, PUT sends a document to a Web server; however, few Web servers implement PUT. Therefore, the FrontPage client uses the universally implemented HTTP POST request for all communication with Windows SharePoint Services.
Windows SharePoint Services does not follow the "create and then publish" model you may be accustomed to with other Web sites. The moment you create a Web site based on Windows SharePoint Services it is live on the server; you do not need to publish the Web site to another server. You can still edit the Web site in a compatible Web page editor, such as Office FrontPage 2003, or add pages and documents to the site, but you do not need to publish your changes — they take effect immediately when you save the files.
Mapping URLs to Physical Paths
Windows SharePoint Services handles the mapping of incoming URLs to the site content in the databases. When using the server farm configuration, multiple sites are stored in each content database. A configuration database keeps track of which sites are mapped to which content database. The content databases themselves store all site content and provide the appropriate content when the front-end Web servers request it. In SharePoint Team Services, because site content was stored both in the file system and in the IIS metabase, IIS was responsible for URL mapping.
Because the mapping between a site and the content database is based on the site's URL, two URLs cannot point to the same site. For example, you cannot use both http://www.server_name.com/site1 and http://www.server_name.com/site2 to point to the same content in the database. You can, however, achieve the same effect by setting up http://www.server_name1.com/site1 to redirect to http://www.server_name2.com/site1. The exception to this rule is an intranet /extranet scenario, where you can have two virtual servers map to the same site content with URLs such as http://server_name/sites/site_name and http://extranet.company_name.com/sites/site_name. For more information about setting up this type of scenario, see Configuring Two Virtual Servers to Host the Same Content (Windows SharePoint Services 2.0).
Handling ASP.NET Pages (ASPX Pages)
Windows SharePoint Services uses ASP.NET pages (Active Server Pages (ASP pages) or ASPX pages) for forms and lists. These pages can be customized, and you can add additional ASP.NET pages to run custom solutions on top of Windows SharePoint Services.
ASP.NET pages in the _layouts directory for a SharePoint site run in direct mode, which means they are allowed to run directly. The _layouts directory contains fixed application pages for Windows SharePoint Services, such as the Create List, Create Field, and Site Settings pages. This directory is considered outside of the Web site, and these pages are supplied directly by IIS as requested.
ASP.NET pages inside a Web site run in safe mode. In safe mode, the ASP.NET page does not get compiled into a DLL and only a specific set of controls (identified previously as "safe") are allowed to run. You can edit the list of "safe" controls allowed to run in Web sites on a specific virtual server by editing the web.config file for a virtual server. For more information about customizing or adding ASP.NET pages in Windows SharePoint Services, see the Microsoft SharePoint Products and Technologies Software Development Kit.