Random things that I’m looking forward to with SharePoint 2010:
- Managed Metadata Service
- Enterprise Content Types
- Tagging and Rating (Taxonomy & Folksonomy)
- Content Organizer (routing content based on pre-set policies)
- Records Management (in place or upload to record center)
- Delete, Hold in-place, Archive with Link options
- Social features, social search, social bookmarking, search for user content
- My Sites: Customizable My Site templates, org chart, user’s activity feed
- User Profile Service; Sync data from multiple sources into SharePoint profile
- Unique document IDs (HUGE!)
- SharePoint Workspace for offline collaboration
- Office Web applications
Yes, a bit heavy on the social networking and content metatagging side, but that’s the stuff that gives users control while still being able to intelligently manage all that data!
This guidance helps architects and developers design, build, and test intranet and enterprise-scale SharePoint applications. Two reference implementations demonstrate solutions to common issues, and a library provides reusable components that can help you with your own development projects.
So I’m going to spend a few moments on my soapbox here…
SharePoint is an amazing application platform and through the use of many different 3rd party tools and custom code it can do just about anything. As developers who know SharePoint we may be tempted to custom code something that is similar to SharePoint functionality, but just needs a few little tweaks to be perfect for the business.
This is such a dangerous path. Most SharePoint developers are .NET developers, but not all .NET developers are SharePoint developers. Due to the restrictions that SharePoint places on the code, often times I find that .NET developers code around these “limitations” which can cause security and coding issues down the road.
That being said, here are some quick bullet points to get started:
When possible try to not store custom settings in the web.config file. Use a separate file on CONFIG folder.
File name should follow this format:
Entries to web.config keys must be communicated beforehand to the customer.
Entries to web.config (user names or passwords) must be encrypted.
Entries to the web.config should be inside a block of comment which contains the solution name and description.
Should be used for storing only primitive types.
If the values are user-defined, provide a web interface to edit those properties from custom actions on central administration on each property scope.
Ensure that each feature GUID is unique in the farm.
Ensure that each feature folder name and title should follow this format:
Ensure that all the features has a appropriate name, description, updated version number and icon.
Features with event receivers should clean up all changes created in activation as part of the deactivation routines. If the feature creates a list that contains user data, the feature should not delete this list.
Farm and Web Application features should never be hidden.
Site Collection and Site features should be hidden.
Ensure that new solutions have a unique GUID in the Farm
Ensure that the new solution version number is incremented (format V#.#.#)
Solution naming convention must be descriptive:
In case of an update solution action is required for installation,solution name must not be changed.
The solution package should not include any of SharePoint installed files.
Referenced assemblies should not be set to copy local = ‘true’.
All prerequisites must be communicated to the customer and pre-installed as stand-alone components for easier administration.
Tools for Building the Solution:
Tools for Quality Assurance:
for identifying and fixing performance and security issues in source code.
Use the CAT.NET
to help identify security issues in the solution source code.
to identify code style and naming conventions issues.
All source code must be under a proper source control (like TFS or SVN).
All internal builds must have proper labels on source control.
All releases have proper labels on source control.
Release to Customer: