Site Definitions versus Site Templates and deciding on the correct customization approach
l A site definition is the core definition of what a site is in SharePoint.
l A site definition is installed on file system of web front ends, located at ..\12\Template\SiteTemplates. This directory is language-neutral.
l A site definition consists of .aspx pages and .xml files with Collaborative Application Mark-up Language (CAML).
l A major benefit is that the Page and List definition is read locally from the file system, not from Content Database.
l A site definition Page and List definition are cached at IIS process startup
l Customizations made to site definition are stored in content database, not on the file system. This can be performed via SharePoint Designer, or when custom site templates are saved.
l are developer created
l Localization: WSS 3.0 supports full site template localization (based on ASP.Net 2.0 via XML files and .ASPX files pulling strings from RESX files. Therefore solutions can be shipped “language packs” of resource files.
l “Global Template” defines commonality across site definitions; it gets called before any other template. It works by injecting common provisioning content into all new sites. ONET.XML file defines base types, galleries, mobile redirects
· Site Definitions and Configurations - http://msdn2.microsoft.com/en-us/library/aa978512.aspx
A site template (*.stp file) is created through the user interface or through implementation of the object model. It is a package containing a set of differences and changes from a base site definition.
The site template package is stored as a CAB-based file that can be downloaded or uploaded to site collections by users with the appropriate rights. As before, site templates offer a measure of portability to SharePoint Applications.
It is not as performant as a pure site definition as site definitions are cached on start of IIS on the web front ends while site templates are stored and hence need to be fetched from the content database and merged with the site definition code at runtime to render the site.
Also note that if you plan to transfer a site template to separate farm, that the farms have the same versions installed of SharePoint installed. (hotfixes,etc.) This is due to the dependence site templates have on the original base site definition they were created from.
Deciding Between Site Definitions and Custom Site Templates
When choosing whether to create a site template or a site definition, first consider the following issues:
· Are the changes you need to make simple or complex? If, for example, you need to make only minor changes in the look of certain pages and add a few fields in particular lists, you should create a custom site template. However, if you need to create new content types, add new Web Part definitions, and significantly restructure sites, you should create a custom site definition.
· Can you deploy changes to the front-end Web server? If you do not have access to the file system of the computers running Windows SharePoint Services, you have no choice but to create a custom site template.
Custom site definitions hold the following advantages over custom templates:
· Data is stored directly on the Web servers, so performance is typically better.
· A higher level of list customization is possible through direct editing of a Schema.xml file.
· Certain kinds of customization to sites or lists require use of site definitions, such as introducing new file types, defining view styles, or modifying the Edit menu.
Site definition disadvantages include the following:
· Customization of site definition requires more effort than creating custom templates.
· Editing a site definition after it has been deployed is difficult.
· Doing anything other than adding code can break existing sites.
· Users cannot apply a SharePoint theme through a site definition.
· Users cannot create two lists of the same type with different default content.
· Customizing site definitions requires access to the file system of the front-end Web server.
Custom templates hold the following advantages over customization of site definitions:
· Custom templates are easy to create.
· Almost anything that can be done in the user interface can be preserved in the template.
· Custom templates can be modified without affecting existing sites that have been created from the templates.
· Custom templates are easy to deploy.
Custom template disadvantages include the following:
· Custom templates are not created in a development environment.
· Custom templates are less efficient in large-scale environments.
· If the site definition on which the custom template is based does not exist on the front-end server or servers, the custom template does not work.