Introduction to
SharePoint Development
for .NET developers
About me
Rob Wilson MCT, SharePoint MCTS/MCITP SharePoint 2003 20072010 Email: rwilson@[Link] Twitter: @theRobManDotNet Blog(s):
[Link] [Link]
Agenda
Introduction to SharePoint Platform Overview of SharePoint Development Tools .NET Development Environment for SharePoint Visual Studio Solutions for SharePoint 2010 SharePoint 2010 Solution Architectures Some New SharePoint 2010 Features
The SharePoint Platform
SharePoint Foundation 2010 (f.k.a. WSS 3.0) SharePoint Server 2010 (f.k.a. MOSS 2007)
Which edition is right for me?
Why should I develop on a platform?
Why Platforms?
Platform 10-15% of the effort. Lost projects because of one-time costs. Custom Code Business Apps Search Error Handling Significant cost reduction and standardization. Business Apps
Much Other Stuff
RAD SEO Friendly
MVC Framework Business Apps RAD SEO Friendly Standards-Based Separation of Roles Uniformity Error Handling
Standards-Based
Separation of Roles Uniformity Search Administration Area Content Management Error Handling
Content Management
Administration Area Menus Authorization Authentication
Menus (Menu Control)
Authorization Authentication
Menus
Authorization Authentication
When the requirements call for it
Not a brochure site Authentication and search required Does not have to be a large-scale project No-brainer for most intranets
When you need self-service
Web Parts (re-usability) Subscriptions and alerts RSS Recycle Bin My Site
Connecting with peers Publishing
When you need personalization/socialization
From a webmasters perspective
Targeted content
From a visitors perspective
Ability to customize look and feel
Tagging and newsfeeds Organizational chart and peer suggestions
When you need workflow
Based on Workflow Foundation In addition:
SharePoint front-end Document libraries and task lists Workflow history lists
When you want flexible development options
Web Parts Object model Client object model (managed code, JavaScript, SilverLight) Web services Separation of development roles
GUI expert, workflow developer, reports and queries, event handlers
Varying levels of experience on a project team
When you want focus on the business requirements
Do not worry about how someone will find your application or how it integrates with the security model Eliminate the headache of external content repositories
When you want consistency in your support footprint
Common user interface Vocabulary Standardized code base
When you want to take advantage of the inherent features of the platform
Collaboration Portal Content Management Search Business Intelligence Forms and Business Processes
When you want to offset the cost of development
More time spent in the planning and design stages should surface more out-of-the-box features [that should save time later] Out-of-the-box features should reduce the cost of custom software development Developer focus should shift immediately to the business needs and extending the out-ofthe-box features
When you need SOA
Rest API expose SharePoint content Use the object model to create your own web services/WCFs
When you need composite applications
Dashboards, Mash-ups Business Connectivity Services All levels of your organization
When you need composite applications
ERP
Before SharePoint
CRM
Middleware
Legacy Systems
When you need composite applications
ERP
SharePoint
CRM
Legacy Systems
When you need Single Sign On
Multiple built-in authentication options Support for third-party authentication providers Built-in SSO provider Manages credentials for other apps on your intranet
When you need off-line support of your data
Office Integration Importing/exporting lists from/to excel Linked tables with Access Calendar/Task List integration with Outlook Groove/SharePoint Workspace
When you need auditing and retention policies
Log just the events you need for what lists are of interest to you Develop auditing reports using SSRS Develop/customize workflows for content retention and disposal
When a development community is important to you
Blogs and forums Community video tutorials User Groups CodePlex Commercial/Open Source Features and Web Parts
Editions
[Link]
Overview of SharePoint Development Tools
InfoPath 2010
smtp4dev
SharePoint Development Environment for .NET
SharePoint no longer required on development machine in some cases, but recommended Virtual environment 64-bit is a must RAM is your friend
Visual Studio Solutions for SharePoint
Formerly 2 Gaps filled with CodePlex add-ons Now 14 OOB
SharePoint Solution Architectures
Object Model Web Services *Client Object Model
Web Parts
Event Handlers
Workflows Desktop Apps * New Client Object Model for Managed .NET, Silverlight and ECMA Script
Feature Activated
Feature Deactivated
Client Object Model Files
Managed Client (CLR based)
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI [Link] (281 kb) [Link] (145 kb) FYI: [Link] is 15.3 mb
JavaScript Client
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Layouts [Link] (380 kb) [Link] (13 kb) [Link] (68 kb)
Client Object Model Files
Silverlight Client
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Layouts\ClientBin [Link] (262 kb) [Link] (138 kb)
Client Object Model
Allows you to write SharePoint applications that run on different platforms w/o using web services Traditional .NET, Web/JavaScript and Silverlight developers can use familiar syntax
New Features
Ease of deployment
Publish and run if SharePoint on local host Package and deploy if SharePoint remote
Debugging
Step through code if SharePoint on local host
Sandbox solutions
Allow applications to be deployed at the site collection level by a site collection administrator (as opposed to farm-level equivalent)
New Features
LINQ Support
No longer restricted to just CAML queries if writing server-based code Create strongly typed SharePoint objects using SPMetal utility
New Features
Dialog framework External Lists
Looks and behaves like a SharePoint list Stored in SQL Server or some other data source
For More Information
Hands On Labs: [Link] =c010fc68-b47f-4db6-b8a8-ad4ba33a35c5&displaylang=en Or [Link]
Developer Training Kit [Link] MSDN Training Videos [Link]