Tuesday, June 26, 2012

SharePoint 2010: Best Practices on SharePoint on-premise and Office 365 SharePoint Online

Some best practices on "How to develop SharePoint 2010 applications"

I found useful to know how Yaroslav Pentsarskyy suggested to organize SharePoint 2010 project in Visual Studio 2010:
 - Platform project - core components;
 - Content project;
 - Service project;
 - Branding project.

The first chapter gives you an idea how you can organize SharePoint project structure, including the deployment project.

And absolutely agree with the following:

"There is one more benefit to keeping those artifacts separate; when it comes to bug fixes or functionality upgrades, it’s easier to replace one dll that keeps all of the supporting functionality than replacing core platform dll"

Here is one more note on the book "Top 60 custom solutions build on Microsoft SharePoint Server 2010":
All demonstrated solutions are Farm Solutions.


I have decided not to buy the book, since in the near future I will not work with SharePoint 2010 on-premise.
Maybe I will work with SharePoint Online!
For more best practices on SharePoint 2010 development: SharePoint 2010: Best Practices


So, I needed to investigate what should I know before diving into SharePoint Online development.
I have found a great white paper: "Office 365 SharePoint Online –Architectural considerations" byJeremy Thake
"When considering an activation of SharePoint Online as part of your SharePoint strategy, the main architectural decisions which need to be made should focus on the following areas:
 Capabilities 
 Workloads
 Authentication
 Permissions
 Creation of a cohesive end user experience
 Information Architecture 
 On-boarding and Off-boarding of data
 System Requirements
 Architectural Approaches"
Restrictions for SharePoint Online:
- no farm solution;
- no FAST Search;
- no developer dashboard;
- no SharePoint Timer Jobs;
Business Connectivity Services Profile Page;
Audit Opening and Downloading;
 - Records Center (but you still can use in-place record management);

Good news - you can use SCOM 

"A general pattern in the industry has already been to leverage client side code (ECMAScript) and the client object model or Silverlight to bypass some of the limitations."

The "Architectural consideration" is a great and concise article, but in some places info is not up to date.
For example the article states that you cannot use BCS, but  The service update in November 2011 enables developers to create BCS applications by using SharePoint Online. You need to use WCF service deployed on Windows Azure.


SharePoint Online storage limitations:
SharePoint Online for enterprises: key features and specifications
SharePoint Online Collection Sizing and User Limits



In summary, the aforementioned limitations are outlined below:
 -  Size limit of a site collection (100 GB), number of site collections (300) and maximum storage in 
a tenant (5 TB).
-  Record Center capabilities not offered (but you still can use in-place record management)
-  Mail Enabled Document Libraries are not supported, impacting Scanners & Scanner software
-  PDF documents cannot be opened in the browser
-  Word Automation features not available
-  Auditing does not capture which documents are opened and closed

-  Business Intelligence Center, SharePoint PowerPivot, PerformancePoint Services and integration 
with a reporting server not supported
 - Only Sandboxed Solutions, or browser centric applications based on technologies such as Silverlight, jQuery and Client Object Model can be used.



Further reading:


Appendix B: SharePoint Online and Office SharePoint Server Feature Comparisons



SharePoint Online Developer Resource Center 
SharePoint Online Administration


SharePoint 2010 101 Code Samples