Here are my personal requirements that I use for applications built on SharePoint. I think they embody many of the best practices.
Applications should be SharePoint Solutions
· Each application should be self contained in a single SharePoint solution .wsp file.
o Including all DLL’s to GAC
o Including all SafeControls
o Including all Templates
o Including all Features
o Including all List and Item Schema
· Including all WebServices and HttpHandlers for data communication
· Solutions should not be global to the farm (SharePoint has the concept of a global solution deployment) as this prevents multiple versions of the same solution from coexisting on the farm.
· Solutions must be visible in the Farm Solution Manager so they may be retracted from the SharePoint farm.
· Solutions should properly clean up themselves upon a Solution retraction.
· Solutions must play friendly with third party applications
o Unique ID’s on all objects
o Unique namespace within file store
o Never override or modify built in items
o Smart about web application configuration
· Solution version to version compatibility must be maintained
o If the site template needs to be upgraded
§ Never change ID or site template (no delete)
§ Add a new site template into the system with the new functionality
§ Preserve all old template definitions
· there may be existing site content built on this template
· there may be customer customized site templates built on this template
· PTC partners may have built their own templates on top of existing templates
§ Mark old template definitions as hidden so that customers are discouraged from using old site definitions
o If a list definition needs to be upgraded
§ Never change ID or remove a list definition (no delete)
§ add a new list definition into the system with the new functionality
§ Preserve all old list definitions
· They may have been customized and migration is impossible without loss of customization
§ Mark old list definitions as hidden so that customers are discouraged from using old list definitions
§ Repurpose the Microsoft’s SharePoint Upgrade Schema system to upgrade old lists to new lists
o If a feature definition needs to be upgraded
§ Never change ID or remove a feature definition (no delete)
§ Do not remove any existing element definitions
o If a administrative object needs to be upgraded
§ Should maintain deserialization between versions
§ Override the Upgrade method in the SPPersistedObject to perform self upgrade
§ Detect old status (when deserialized) and implement the NeedsUpgrade property
§ Maintain all API’s from version to version (no delete on API)
No comments:
Post a Comment