SharePoint Developer Building Blocks: Technologies for Creating SharePoint Applications (Part 2 of 2)
Summary: Read a high-level overview of SharePoint development and learn about the SharePoint developer building blocks in this two-part series.
Applies to: Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio
Provided by: Eric White, Microsoft Corporation
Contents
Introduction
Important SharePoint Building Blocks
Complete List of SharePoint Developer Building Blocks
Using the Developer Dashboard to View Performance Metrics
SharePoint 2010 Accessibility Guidelines
SharePoint 2010 Development Tools
Setting Up SharePoint 2010 Development Environments
SharePoint 2010 and Application Life Cycle Management (ALM)
Conclusion
Additional Resources
This article is the second in a two-part series of articles about developer building blocks for Microsoft SharePoint products and technologies.
SharePoint Developer Building Blocks: Technologies for Creating SharePoint Applications (Part 2 of 2) (this article)
Introduction
In the previous article in this series, SharePoint Developer Building Blocks: Technologies for Creating SharePoint Applications (Part 1 of 2), I defined SharePoint applications. I identified several SharePoint capabilities that people find so valuable. I discussed developer scenarios, and provided examples of kinds of scenarios. In this article, I discuss SharePoint developer building blocks. What do you, as a developer, actually develop when you build applications for Microsoft SharePoint products and technologies?
Important SharePoint Building Blocks
Although the following table is presented in alphabetical order, not all building blocks have the same importance to you. This section lists several of the building blocks that should be called out separately because of their importance.
First, you have to learn about the server object model. You use this programming interface when you build Web Parts, workflows that incorporate custom actions, and event receivers. The managed client object model is based on the server object model. Much of what you learn about the server object model applies to the client-side object model.
Web Parts are the most common way to extend SharePoint. Learning to build Web Parts is a great way to start SharePoint development.
Workflows enable you to codify and standardize business processes, and are one of the essential tools for implementing certain scenarios. If you extend workflows using code, you use theserver object model .
Microsoft Business Connectivity Services (BCS) make data from outside the SharePoint deployment available to the SharePoint application.
Understanding Collaborative Application Markup Language (Collaborative Application Markup Language (CAML)) and LINQ to SharePoint are keys to building good SharePoint applications.
In addition to being end-user features of Microsoft SharePoint Foundation 2010, document libraries and list are programming resources for you as a developer. Often, when you design a software system, you must store configuration information that drives behavior of the application. You can store such information in hidden lists, and restrict access to users as necessary. This is most appropriate when you must enable non-developers to maintain the application configuration. Another approach is to store configuration XML files in a hidden, access restricted document library.
Complete List of SharePoint Developer Building Blocks
The following table lists the SharePoint developer building blocks that you can use to build a SharePoint application.
SharePoint 2010 Developer Building Blocks
Building Block |
Description |
|||
---|---|---|---|---|
Access Services |
Publish Microsoft Access databases to SharePoint sites |
X |
||
Administration |
Programmatically administer SharePoint Foundation 2010 and Microsoft SharePoint Server 2010 |
X |
X |
X |
Alerts |
Send email messages or SMS messages |
X |
X |
X |
ASP.NET Application Pages |
Build web pages by using the Microsoft ASP.NET code-behind model |
X |
X |
X |
Business Connectivity Services |
Bring external data into SharePoint deployments |
X |
X |
X |
Business Connectivity Services Client-Side API |
Access Business Connectivity Services data from client computers |
X |
X |
X |
Collaborative Application Markup Language (CAML) |
Declarative query language expressed as XML |
X |
X |
X |
Column Types and Field Types |
Create domain definitions for data in lists and libraries |
X |
X |
X |
Content Types |
Define prototypes for list items |
X |
X |
X |
Custom Actions |
Create links, toolbar buttons, and menu items |
X |
X |
X |
Custom Views |
Define view for lists and document libraries |
X |
X |
X |
Dashboards and KPIs |
Web Part for reports, charts, and KPIs |
X |
||
Document Libraries |
Storage for documents or files of any type |
X |
X |
X |
Document Metadata |
Sophisticated document categorization |
X |
X |
|
ECMAScript Client Object Model |
Access SharePoint data from ECMAScript (JavaScript, JScript) |
X |
X |
X |
Event Receivers |
Provide behavior when lists or libraries are updated |
X |
X |
X |
Excel Services |
Load, calculate, and display Microsoft Excel workbooks |
X |
||
Excel Services ECMAScript Interface |
Access the Excel Web Access Web Part control from JavaScript |
X |
||
Excel Services REST API |
Access Excel workbook document parts or elements directly through a URL |
X |
||
Excel Services User Defined Functions |
Write high-performance functions for use in server-side spreadsheets |
X |
||
Excel Web Services |
Access Excel services programmatically by using Web services |
X |
||
Features |
Unit of deployment |
X |
X |
X |
Health Rules |
Codify how you monitor health in a large installation |
X |
X |
X |
InfoPath Forms Services |
Enable Microsoft InfoPath 2010 forms to be completed in a browser |
X |
||
LINQ to SharePoint |
Use LINQ to query SharePoint lists and document libraries |
X |
X |
X |
Lists |
User editable storage of data |
X |
X |
X |
Managed Client Object Model |
Access SharePoint data from client computers |
X |
X |
X |
Mobile Pages, Controls, and Adaptors |
Brings SharePoint data to mobile phones |
X |
X |
|
OData REST APIs |
Provides REST access to SharePoint data by using the OData proposed standard |
X |
X |
X |
Office Client Managed Add-Ins |
Enhance Office clients to use SharePoint data and documents |
X |
X |
X |
Open XML SDK |
Use Open XML for document generation and transformation |
X |
X |
X |
PerformancePoint Services |
Build dashboards, scorecards, reports, and key performance indicators |
X |
||
PowerPivot |
Create business intelligence solutions |
X |
||
Sandboxed Solutions |
The sandbox infrastructure isolates and shuts down bad code, preventing it from taking down the server farm |
X |
X |
X |
Search Customization |
Enable search through varied content, including external content types. |
X |
X |
|
Secure Store Service |
Securely access legacy systems |
X |
X |
|
Security |
Ensure that sensitive information is available only to authorized users |
X |
X |
X |
Server Object Model |
Server-side .NET Framework–based API for accessing data and content |
X |
X |
X |
Server Ribbon |
Customize the ribbon in SharePoint |
X |
X |
X |
Service Application Architecture |
Create shared services that can be consumed by multiple SharePoint applications |
X |
X |
X |
SharePoint Dialog Framework |
JavaScript programming interface for creating dialog boxes and other client-side user interface elements |
X |
X |
X |
SharePoint Themes |
Apply custom branding to a site or site collection |
X |
X |
X |
SharePoint Web Services |
Access SharePoint data through Web services |
X |
X |
X |
Silverlight Web Parts |
Create user interfaces that are better looking and easier to use |
X |
X |
X |
Site Definitions |
Create, configure, and provision SharePoint sites |
X |
X |
X |
Site Pages |
User customizable pages that conserve resources |
X |
X |
X |
Timer Jobs |
Execute code at specific times or intervals |
X |
X |
X |
Variations |
Tailor sites for different cultures, markets, and languages |
X |
X |
|
Visio Services |
Share and view Microsoft Visio drawings |
X |
||
Visual Studio SharePoint Tools Extensibility |
Extend Microsoft Visual Studio 2010 to enable you to create custom solutions more quickly |
X |
X |
X |
Web-Based Distributed Authoring and Versioning (WebDAV) |
Upload and download files efficiently |
X |
X |
X |
Web Parts |
Web Parts and Web Parts pages enable users to customize their user interface. Building Web Parts is the most common way to extend SharePoint. |
X |
X |
X |
Web Services |
Key component of building scalable, distributed, and loosely coupled SharePoint applications. |
X |
X |
X |
Windows Identity Foundation |
Provides claims-based identity services based on trusted providers |
X |
X |
X |
Word Automation Services |
Provides services to convert documents to and from various file formats |
X |
X |
|
Workflows |
Automate business processes using tasks and forms |
X |
X |
X |
Access Services
You can use Access Services in SharePoint Server 2010 to edit, update, and create linked Access 2010 databases by using an Internet browser or the Access client. You can use Microsoft SQL Server Reporting Services to produce formatted reports.
Visual How-to: Creating Web Databases with Access 2010 and Access Services
Video: The Access Show: Access 2010 demo of Access Services and web databases
White paper: Improving the Reach and Manageability of Microsoft Access 2010 Database Applications with Microsoft Access Services
Portal: Access 2010 Development
SDK: Using Access Services with SQL Reporting Services
Administration
The classes of the Microsoft.SharePoint.Administration namespace give developers tools for programmatically deploying, migrating, maintaining, and administering their SharePoint sites and SharePoint-based solutions.
SDK: SharePoint Foundation Administration
SDK: Microsoft.SharePoint.Administration
SDK: Administrative Object Model of Microsoft SharePoint Foundation
Alerts
Alerts provide a framework for automatically sending email messages or SMS alert results to SharePoint users. You can attach alerts to lists or list items. SharePoint Foundation 2010 provides a library of alert templates for common scenarios.
SDK: Alerts in SharePoint Foundation
SDK: Alerts Overview
SDK: Alert Object Model
ASP.NET Application Pages
To build a custom user interface with specific application logic (written in Microsoft Visual C# or Microsoft Visual Basic by using the ASP.NET code-behind model), you can use ASP.NET application pages (also known as .aspx pages), which are a special variety of ASP.NET pages.
Your .aspx page must integrate with an ASP.NET master page. The relationship between master pages and .aspx pages enable you to provide a consistent user interface across SharePoint sites and site collections.
Because they are traditional .aspx pages that can contain code-behind and be precompiled, they offer some performance advantages over SharePoint site pages.
You cannot use application pages to host Web Part zones or Web Parts.
One characteristic of .aspx pages is that you have several options about where you put Microsoft Silverlight controls. For certain users, you can exclusively provide Silverlight interfaces to large parts of the site. However, site maintainers can use the default SharePoint user interface.
SDK: Master Pages
SDK: Sites and Pages in SharePoint Foundation
MSDN: Creating Application Pages for SharePoint
SDK: Building Block: Pages and User Interface
SDK: Cascading Style Sheets Class Usage in SharePoint Foundation
Business Connectivity Services
Business Connectivity Services provide infrastructure so that you can define some methods (with specific prototypes) and bring data into SharePoint so that users can view and modify that data directly from SharePoint. External tables are called external content types or entities. You can use external content types as entities (as in entity/relationship theory).
Business Connectivity Services provides three basic mechanisms that you can use to bring external data into SharePoint:
You can connect to SQL databases. By default, SQL Server is supported. With effort, you can connect to Oracle or other varieties of database servers.
You can consume web services that expose methods that follow specific patterns for the method prototypes.
You can write .NET managed code (C# or Visual Basic) to connect to any variety of data. There are two ways that you can extend through code:
You can write .NET assembly connectors to enable users to create external content types to predefined schemas. The schemas cannot change without recompiling and redeploying.
If you build upon an underlying system that contains its own schema mechanism and definitions, you can write a custom connector that uses the underlying schema definition and lets users create external content types for any table in the underlying schema. This is, of course, more work than writing .NET assembly connectors.
External lists and external data columns are part of built-in user interface functionality that lets you show and maintain data in external content types. You can create external lists by using the web interface, Microsoft SharePoint Designer 2010, or Visual Studio 2010.
You can expose your external content types to the search engine so that users can find data in them. By default, you display data in profile pages. You can customize the page, or customize what happens when users clicks an item in the search results. For example, you could use a non-SharePoint site to display and maintain the item.
SDK: Business Connectivity Services Overview
SDK: Microsoft Business Connectivity Services (BCS) in SharePoint 2010
SDK: Business Connectivity Services: How-tos and Walkthroughs
SDK: Differences Between Using the .NET Assembly Connector and Writing a Custom Connector
SDK: How to: Create External Lists in SharePoint
SDK How to: Create an External Content Type Based on a SQL Server Table
SDK How to: Connect to an Oracle Database Using Business Connectivity Services
SDK How to: Create a SharePoint List with External Data Columns
Visual How-to: Creating a SharePoint 2010 Web Part That Can Read and Write Data to an External Data Source
Walkthrough: Creating an External List in SharePoint by Using Business Data
Video and hands-on lab: Accessing External Data with Business Connectivity Services in SharePoint 2010
Blog: Walkthrough of creating a SharePoint 2010 external list using Visual Studio 2010
Blog: Searching External Data in SharePoint 2010 Using Business Connectivity Services
Business Connectivity Services Client-Side API
By using the Business Connectivity Services client-side API, you can create applications that have Create, Read, Update and Delete (CRUD) functionality for an external content type. When building Microsoft Office managed add-ins, a convenient way to present the user interface is by using task panes or action panes. This lets users interact with Business Connectivity Services data while they continue to work in their document or spreadsheet.
The Business Connectivity Services client-side API provides a means for client applications to access data from Business Connectivity Services. Further, you can configure Business Connectivity Services so that you can take the data offline. When the client computer comes online again, changes are synchronized through Business Connectivity Services by using conflict resolution if it is necessary. The Business Connectivity Services client-side API is most often used within Office 2010 client managed add-ins, although it can be used from any .NET Framework–based application.
You can take the data offline so that users can continue to review and modify the data in a cache. If an offline user modifies data in such a way that it conflicts with modifications made by another user, you can write code to resolve those conflicts, and present appropriate options to users.
SDK: Creating Advanced Code-Based Solutions Using Business Connectivity Services
SDK: How to: Show External Data in Word Using Content Controls
Blog: Overview of business connectivity services Advanced Code-Based Solutions
Collaborative Application Markup Language (CAML)
Collaborative Application Markup Language (CAML) is an XML based query language that lets you specify filters, sort order, and more. You can specify exactly which fields in each item that you want to retrieve. This lets you control the size of the query results.
Although there are certain circumstances where you can use LINQ to SharePoint instead of CAML for querying, CAML is still relevant inSharePoint 2010. You use CAML when querying using the managed client object model. When using the managed client object model, if you filter list items by using LINQ instead of CAML, in the underlying system, the filtering happens after all items are returned. This can result in using more CPU and memory resources on the server than necessary.
SDK: Collaborative Application Markup Language Core Schemas
SDK: Introduction to Collaborative Application Markup Language (CAML)
Column Types and Field Types
Column types and field types enable you to define rich metadata for standardized fields and columns in SharePoint lists. You can define a site column (in a site column gallery) of a specific data type that you can use throughout your site. This resembles defining domains in database schema design. It lets you ensure that columns in several lists use the same value space.
SDK: Custom Field Types
SDK: Columns
Content Types
You can define a content type that is a prototype of a list item. If you are using content types for a list, you can define that the list contain only items of one content type, or you can define that it can contain items of one of several content types.
SDK: Content Types
SDK: Introduction to Content Types
Custom Actions
Custom actions represent a link, toolbar button, menu item, or any control that you can add to toolbars or menus that appears in the user interface. You define custom actions by using custom action elements within Feature definition files. You can bind custom actions to list types, content types, file types, or programmatic identifiers (ProgID).
SDK: Custom Action
SDK: How to: Modify the User Interface Using Custom Actions
Custom Views
Defining custom views for SharePoint lists is a key tool in your toolkit. You can programmatically define custom views for specific users or scenarios so that data is presented in the most convenient form. A common use of custom views is to define the format of data for exporting to a spreadsheet for additional processing.
Note
A view in this context differs from a view in the context of SQL Server. In SQL Server, views are database constructs that define views into tables. In this context, views are visible tables presented in pages so that users can see a specific subset of the data in SharePoint lists.
Office Online: Create or change a view
SDK: SPViewCollection
SDK: SP.View Class
Dashboards and KPIs
A dashboard is a solution for information workers that merges personal, team, corporate, or external information, and provides single-click access to analytical and collaborative tools. It brings integrated views of company data resources to a single desktop. This provides access to key business information.
Getting Started: Introduction to the Business Intelligence Center
Office Online: Getting started with dashboards
Office Online: KPIs and Status Indicators
SDK: Development Scenarios with PerformancePoint Services
Document Libraries
SharePoint document libraries are special forms of SharePoint lists. They contain features such as the capability to keep major and minor versions of documents. They can restrict access to documents based on identity. You can define any number of columns that contain auxiliary information about each document in the library.
A very important feature of document libraries is that you can bind columnar data to metadata in the document. When you check the document out of the library, the metadata is copied to the document, where it can be maintained by the user. When the document is checked back into the document library, the updated metadata is copied back into the fields in the item in the document library.
Document libraries can contain files of any variety. Document libraries can contain nested folders. This makes a document library resemble a file system.
SDK: Building Block: Files and Documents
Document Metadata
Document metadata is custom data that SharePoint stores for each document in a document library. Your users can specify this data by using the SharePoint web user interface or using Microsoft Word. You can programmatically set this data in an event handler as users add documents to document libraries. Your users can then filter and find documents by using this data. In addition, you can access this metadata in SharePoint workflows, and alter workflow behavior based on metadata. You typically define document metadata by using content types. Workflows can interact with this data.
Document information panels are forms that are displayed within the client application. They contain fields for the document metadata. Document information panels enable users to enter important metadata about a file when they want, without having to leave the client application.
SDK: Metadata Navigation and Filtering in SharePoint Server 2010 (ECM)
SDK: Document Information Panel Overview in SharePoint Server 2010 (ECM)
ECMAScript Client Object Model
The JavaScript client object model is a variant of the managed client object model that you can use from JavaScript. You use the same methods and data types. The same programming model applies. As with the managed client object model, you control when you send network traffic to the server and from the server.
SDK: SharePoint 2010 Client Object Model
SDK: Differences Between Managed and JavaScript Object Models
Event Receivers
Event receivers enable you to write event handlers that are called when users add, delete, or modify items in SharePoint document libraries or lists, and at other times. You can deploy event handlers either as full-trust server farm solutions, or as sandboxed solutions.
Video: How Do I: Create Event Receivers for SharePoint 2010 in Visual Studio 2010
SDK: Building Block: Event Handling
SDK: Events in SharePoint Foundation 2010
SDK: Introduction to Events in SharePoint Foundation
SDK: Walkthrough: Add Feature Event Receivers
SDK: SPEventReceiverDefinition
Excel Services
Excel Services enables users to load, calculate, and display Excel workbooks on SharePoint Server 2010. There are four primary programmatic interfaces for Excel Services.
Excel Web Access. A viewer page and Excel Services Web Part that you can add to any Web Parts page in SharePoint Server 2010. Excel Web Access renders (in other words, creates the HTML for) live Excel workbooks on web pages and enables the user to interact with those workbooks.
Excel web services. Provides programmatic access.
JavaScript object model. Enables you to automate and customize and to drive the Excel Web Access control and help build more compelling, integrated solutions.
Representational State Transfer (REST) API. Enables access to workbook document parts directly through URLs.
To customize spreadsheets, you can extend Excel Calculation Services by creating Excel Services User Defined Functions.
Office Online: Excel Services
SDK: Excel Web Access
SDK: Excel Web Services
SDK: Excel Services ECMAScript (JavaScript, JScript)
SDK: Getting Started with Excel Services
SDK: Excel Services Development Roadmap
Excel Services ECMAScript Interface
The JavaScript object model in Excel Services enables you to write code to automate, customize, and interact with Excel Web Access Web Part controls on pages. By using the JavaScript object model, you can build mashups and other integrated solutions that interact with Excel Web Access Web Part controls. It also enables you to add more capabilities to your workbooks.
SDK: Excel Services ECMAScript (JavaScript, JScript)
Excel Services REST API
The Excel Services REST API provides programmatic access to workbook document parts or elements directly through URLs.
Excel Services User Defined Functions
Excel Services user-defined functions (UDFs) enable you to write high-performance functions in Microsoft Visual C or Microsoft Visual C++ for use in server-side spreadsheets.
SDK: Excel Services User-Defined Functions
Visual How To: Writing Asynchronous User-Defined Functions in Excel 2010
Visual How To: Creating Managed-Code UDFs for Excel Services
Excel Web Services
You can use Excel Web Services to access Excel Services programmatically.
SDK: Excel Web Services
Features
Features are units of deployment for SharePoint. Deploying Features in a large server farm ensures that the artifacts in the Features are installed on all servers. Features can contain templates, pages, list definitions, event handlers, workflows, JavaScript source files, and cascading style sheets files. Features can contain Feature receivers, which are event handlers that run when the Feature is installed, uninstalled, activated, deactivated, or upgraded.
SDK: Using Features in SharePoint Foundation
SDK: Walkthrough: Add Feature Event Receivers
Health Rules
SharePoint Health Analyzer monitors the health of a SharePoint Foundation deployment throughout server farms by applying health rules. A health rule is executable code that is deployed in a compiled assembly at the server farm level and registered with SharePoint Health Analyzer. When you register rules, timer jobs are created to run the rules. An item for the rule is added to the Health Analyzer Rule list under Review rule definitions in the Monitoring section of Central Administration.
SDK: Building Block: Health Rules
SDK: SharePoint Health Analyzer
InfoPath Forms Services
InfoPath Forms Services is a server technology that enables users to complete forms in web browsers. By managing forms in central locations, you can streamline business processes and improve relations with customers, partners, and suppliers.
Developer Center: InfoPath Developer Center
Office Online: Getting started with InfoPath 2010
TechNet: Plan InfoPath Forms Services
LINQ to SharePoint
LINQ to SharePoint is a LINQ query provider that enables you to write queries more naturally than when you are using CAML. It is most useful when you use the SharePoint Server object model.
One important characteristic of LINQ to SharePoint is that it uses an approach of generated code so that your code uses strongly-typed object models for accessing the data returned by queries.
For developers who are interested in functional programming, LINQ to SharePoint serves as a data source for doing pure functional transformations.
SDK: Managing Data with LINQ to SharePoint
Video and hands-on lab: Accessing SharePoint 2010 Data with Server-Side APIs
Blog: Query Composition using Functional Programming Techniques in C# 3.0
Lists
Custom lists in SharePoint sites provide locations to store data. By using SharePoint lists to contain data that you access programmatically is a very important building block for developers. In the section Comparing SharePoint Applications to Database Applications, I describe how you can use SharePoint lists for parts of your database.
SDK: Building Block: Lists and Document Libraries
SDK: SharePoint List Data Model
Managed Client Object Model
The managed client object model provides access to SharePoint data from external .NET Framework–based applications. This API is also known as the client-side object model (CSOM).
The managed client object model has three basic uses:
Managed .NET-connected applications. You can use the managed client object model from most .NET Framework–based applications. This includes rich client applications that run on user computers, or as parts of the .NET Framework–based server applications. You could write a Windows Presentation Foundation (WPF) real-estate management application that runs on client computers and pulls information from SharePoint Server by using the managed client object model. You could also improve traditional ASP.NET applications to pull data by using the client object model.
Silverlight Web Part. Code within Silverlight controls can use the client object model.
HTML Web Part. You can use JavaScript versions of the client object model. It has exactly the same semantics, except that you use JavaScript programming interfaces.
Important
When you are using the managed client object model to query for items in lists, you should always form your queries using CAML, not LINQ. If you use LINQ, there is a performance consequence that is relational to the total number of items in the list. In contrast, when using the server object model, we recommend using LINQ to SharePoint instead of CAML.
A common activity for client-side code is to upload and download documents and files in SharePoint document libraries. In the managed client object model, the OpenBinaryDirect method and the SaveBinaryDirect method use Web-Based Distributed Authoring and Versioning (WebDAV) for uploading and downloading files. Without building your own custom Windows Communication Foundation (WCF), WebDAV is the most efficient way to upload and download files.
SDK: SharePoint 2010 Client Object Model
Technical article: Using the SharePoint Foundation 2010 Managed Client Object Model
Technical article: Using the SharePoint Foundation 2010 Managed Client Object Model with the Open XML SDK 2.0
Video and hands-on lab: Accessing SharePoint 2010 Data with Client-Side APIs
Mobile Pages, Controls, and Adaptors
SharePoint Foundation 2010 provides mobile pages and mobile controls that are separate from the pages and controls that you see from desktop computers and portable computers. Mobile browsers can access certain Web Parts by means of mobile Web Part adapters.
SDK: Building Block: Mobile Pages, Controls, and Adapters
OData REST APIs
SharePoint 2010 publishes data as resources that are addressable by URIs using the OData protocol. You can access and change data by using standard HTTP verbs of GET, PUT, POST, and DELETE. OData uses the entity-relationship conventions of the entity data model to expose resources as entities that are related by associations.
SDK: SharePoint Foundation REST Interface
Office Client Managed Add-Ins
Office client managed add-ins give you a way to extend Office client applications and integrate them more deeply with SharePoint Foundation and SharePoint Server. Building Office client managed add-ins is an effective way to make the features of the SharePoint application discoverable and easy to use for end users. Deep integration of SharePoint data with Microsoft Word documents or Excel spreadsheets results in applications where you have only one version of your important data, helping to prevent decisions based on stale data.
You can access SharePoint external content types through thebusiness connectivity services client-side API . You can access data and documents stored in SharePoint lists and documents by using the managed client object model.
Developer Center: Office Developer Center
Developer Center: Office Development with Visual Studio
Video: Developing with Office 2010
Open XML SDK
Most SharePoint users make extensive use of document libraries, and most documents in document libraries are stored in the Open XML file format. Prior to the advent of Open XML, it was difficult to write code that directly accessed the contents of documents, but with theOpen XML SDK you have server-hardened tools to query and transform Open XML documents. Using Open XML from SharePoint applications opens up new scenarios. You can generate many documents, and automatically convert those documents from one format to another. You can query the contents of existing documents and bring that content and data to users in new and interesting ways. For example, a product design team might use specific document templates for specifications, and each section of the specification may follow conventions that report the status of the specification. You could then write an application to process all specifications for a project, and generate reports for management that show the overall status of the specification writing process.
Combining the power of the Open XML SDK with the power of Word Services, you can implement many server-side scenarios with high performance.
Prior to the advent of Open XML, customers sometimes tried to solve server-side document processing needs using Office Automation. Automating Microsoft Office applications on servers presents a set of well-known issues. The solution is to use SharePoint 2010 and the Open XML SDK.
A common pattern for document generation in SharePoint 2010 is to generate them into a SharePoint document library. Then, if it is necessary, you can use Word Automation Services to update fields in the document, or to import altChunk content.
Developer Center: Open XML Formats Resource Center
External link: ECMA 376-2
External link: ISO/IEC 29500-2
KB article: Considerations for server-side Automation of Office
Blog: Eric White's Blog
Blog: Brian Jones’ Blog
Blog: How to Use altChunk for Document Assembly
PerformancePoint Services
PerformancePoint Services in SharePoint Server 2010 is a performance management service that you can use to monitor and analyze your business. It provides tools for building dashboards, scorecards, reports, and key performance indicators (KPIs). Integrated analytics help employees move quickly from monitoring information to analyzing it and, when it is suitable, sharing it throughout the organization.
SDK: Development Scenarios with PerformancePoint Services
PowerPivot
PowerPivot gives users the power to create compelling self-service business intelligence solutions, supports sharing and collaboration on user-generated business intelligence solutions, and enables IT organizations to increase operational efficiencies through Microsoft SQL Server 2008 R2–based management tools.
MSDN: PowerPivot Overview
External: PowerPivot.com
Sandboxed Solutions
Sandboxed solutions are one approach to solving scalability problems when SharePoint users must have specialized solutions built. If every developer knew all best practices, followed them religiously, and always wrote perfect code, this would not be a problem. However, code is not perfect, and bugs in code that runs with server farm administrator privileges can bring down the server farm. By using sandboxed solutions, an infrastructure watches code for thrown exceptions, and monitors memory and CPU use, among other things. The misbehaving code is stopped, and not the server farm.
SDK: Sandboxed Solutions in SharePoint 2010
SDK How to: Creating Sandboxed Workflow Actions
Video and hands-on lab: Sandboxed Solutions for Web Parts in SharePoint 2010
Search Customization
You can customize search to index new and different kinds of content. This includes external content types.
SDK: SharePoint Enterprise Search in SharePoint Server 2010
Blog: Searching External Data in SharePoint 2010 Using Business Connectivity Services
Secure Store Service
Secure Store Service is a claims-aware authorization service that provides storage and mapping of credentials such as account names and passwords. It enables you to securely store data that provides credentials that are required for connecting to external systems and associating those credentials with a specific identity or group of identities.
SDK: Secure Store Service
SDK: How to: Use Secure Store Service to Connect to an External System
Security
Security features of SharePoint Foundation 2010, the underlying ASP.NET and the .NET Framework, help give you protection from unauthorized changes to your data, whether deliberate or unintended, and help ensure that sensitive information is available only to those authorized to see it.
SDK: SharePoint Foundation Security
Server Object Model
The SharePoint server-side object model enables you to write programs to access SharePoint lists and document libraries, site collections, sites, and other resources. Although the object model is very large, it is not difficult.
When you are developing for SharePoint, things can become complex. You may be developing a Web Part, an event receiver, or code that runs as part of a workflow. In all these scenarios, you write code that uses the server object model. This means that your edit/compile/execute cycle is more complex. With each compilation, you may have to reinstall a SharePoint Feature, cycle Internet Information Services, or connect to another process for debugging
. Dealing with those issues while learning how the server object model works is not desirable. Instead, when I was learning the server object model, I built small console applications that used the server object model. I executed those console applications directly on the server. When writing more complex code that would eventually end up in a Web Part, I factored the code so that the code that used the server object model was isolated in one or several classes in my application. I factored code that used the Open XML SDK into its own set of classes. This gave me a quick edit/compile/execute cycle for both the Open XML code and the server object model code. Then, after all constituent parts are developed, it is easy to build and deploy a Web Part that uses the debugged code.
Code that uses the server object model can run with server farm administrator permissions or as a sandboxed solution. By using sandboxed solutions, you have access to a subset of the API that is available to code that is running with server farm administrator permissions.
You can divide the server object model into three hierarchies:
Content Hierarchy of SharePoint Foundation discusses the various classes that represent publishable items of data, such as list items. There are also classes that represent nested containers of data, such as lists, content databases, web sites, collections of web sites, and groupings of site collections called web applications.
Physical Objects Hierarchy of Microsoft SharePoint Foundation discusses the various classes that represent physical entities, such as servers and files, and containers of such entities, such as farms and folders.
Services Hierarchy of Microsoft SharePoint Foundation discusses classes that represent web services, Windows services, other kinds of services, and instances of services.
SDK: Server and Site Architecture: Object Model Overview
SDK: Essential SharePoint Programming Tasks
SDK: Using the SharePoint Foundation Server-Side Object Model
SDK: Basic Object Model Tasks in SharePoint 2010
SDK: Rich Media Programming Model in SharePoint Server 2010 (ECM)
SDK: Document Management Programming Model in SharePoint Server 2010 (ECM)
SDK: Records Management Programming Model in SharePoint Server 2010 (ECM)
SDK: Metadata and Taxonomy Programming Model in SharePoint Server 2010 (ECM)
SDK: Publishing Programming Model in SharePoint Server 2010 (ECM)
SDK: Sandboxed Solutions in SharePoint 2010
Video and hands-on lab: Accessing SharePoint 2010 Data with Server-Side APIs
Server Ribbon
Customizing the SharePoint 2010Server ribbon enables you to give an intuitive and powerful user interface to the SharePoint application. The key point behind customizing the ribbon is to make features and capabilities of your custom SharePoint application discoverable to users. Customizing the ribbon is comparable to customizing the ribbon for the Office client applications.
SDK: Building Block: Server Ribbon
SDK: Server Ribbon in SharePoint Foundation
SDK: Architecture of the Server Ribbon
SDK: Customizing the Server Ribbon
Video and hands-on lab: Creating Dialogs and Ribbon Controls for SharePoint 2010
Service Application Architecture
The service application architecture enables you to create robust and scalable shared services that can be consumed by multiple SharePoint applications.
SDK: Service Application Framework
SDK: Service Application Framework Architecture
Video: SharePoint 2010 Service Application Architecture
Video: Creating Custom Service Applications
SharePoint Dialog Framework
When building Web Parts or application pages, you may need to display a dialog box of one sort or another.
SDK: Walkthrough: Customizing the PWA Ribbon and Accessing the JS Grid
Video: SharePoint 2010 UI Features
Blog: How to Display a SharePoint Dialog from Ribbon Button and Get Selected Item Context
Video and hands-on lab: Creating Dialogs and Ribbon Controls for SharePoint 2010
SharePoint Themes
Themes, which are important when branding a SharePoint site, provide quick and easy methods to apply colors and fonts to sites in SharePoint 2010. A change in theme cause the color of most page elements, such as background images, text, and hyperlinks, to change. The fonts that are used for some page elements, such as titles, also changes.
TechNet: SharePoint Themes
SharePoint Web Services
SharePoint has long provided a set of Web services to enable client interaction with SharePoint deployments. Some of these are designed specifically for data retrieval and other services include some data retrieval services. The APIs of these data-providing Web services are still supported for backward compatibility and interoperability with web service clients. For reasons of both performance and ease, we recommend that you use either the client object model or the OData REST APIs to query SharePoint data.
SDK: SharePoint Foundation 2010 Web Services
SDK: WebSvcLists
SDK: WebSvcWebs
SDK: WebSvcsites
SDK: WebSvcSiteData
SDK: WebSvcDspSts
Interoperability documentation: SharePoint Products and Technologies Protocols
Instead of using Web services, see the following:
SDK: SharePoint Foundation REST Interface
SDK: SharePoint 2010 Client Object Model
Technical article: Using the SharePoint Foundation 2010 Managed Client Object Model
Technical article: Using the SharePoint Foundation 2010 Managed Client Object Model with the Open XML SDK 2.0
Video and hands-on lab: Accessing SharePoint 2010 Data with Client-Side APIs
Silverlight Web Parts
Silverlight Web Parts are an important tool for building the best user interfaces. There are times when nothing but Silverlight will do.
Code sample: SharePoint Foundation 2010 Code Samples
Video and hands-on lab: Creating Silverlight User Interfaces for SharePoint 2010 Solutions
Site Definitions
A site definition is a set of files that includes a master XML configuration file that is stored on all front-end web servers. A site definition provides the basic blueprint for how sites look, what lists they include, their default navigational structures, and so on.
SDK: Site Types: WebTemplates and Site Definitions
Site Pages
Site pages provide an efficient means (for both storage and CPU time) to allow for hundreds of thousands of web pages where many are the same and some are customized. Unlike a traditional ASP.NET application, a physical .aspx page does not have to exist for every site page on the server. SharePoint treats any site page that is not customized as a virtual file, which can enable only a few files to appear in many locations. This is one of the many aspects of SharePoint that gives it scalability. Without this capability, you must have far too many compiled .aspx pages for large sites. Management of that many pages is unwieldy.
SDK: Sites and Pages in SharePoint Foundation
Blog: Creating a SharePoint Site Page with Code-Behind Using Visual Studio 2010
Timer Jobs
Like a cron job, a timer job is code that runs at a specific time. An application may regularly have to process data in a SharePoint list, and perhaps modify data in an external system. You can write timer jobs for this that run at 1 A.M. every day.
SDK: Timer job reference
Variations
Variations enable you to customize sites for different cultures, markets, and languages. It is a feature that facilitates serving different content to different audiences. Variations can help serve different content based on the language of the user. In addition, variations can serve different content based on end-user devices, or any arbitrary difference that you decide, such as brand or level of user expertise.
SDK: Variations and Multiple Languages Sites in SharePoint Server 2010 (ECM)
Blog: Variations in SharePoint 2010
Visio Services
Visio Services is a service application that enables users to share and view Microsoft Visio web drawings. The service also enables data-connected Visio 2010 web drawings to refresh and update from various data sources.
Visual Studio SharePoint Tools Extensibility
The SharePoint tools in Visual Studio 2010 meet the requirements of many application development scenarios. However, you might discover cases in which they do not provide functionality that you or other developers require. In these cases, you can extend the SharePoint tools to create the functionality that you need.
SDK: Visual Studio SharePoint Tools Extensibility
Video: Getting Started with SharePoint 2010 Developer Tools in Visual Studio 2010
Web-Based Distributed Authoring and Versioning (WebDAV)
A common activity for client-side code is to upload and download documents and files. You may have to retrieve documents from SharePoint document libraries to client computers, or upload documents from client computers to SharePoint document libraries. You can use WebDAV directly. But an easy way to use WebDAV is to use the managed client object model. The OpenBinaryDirect() method and the SaveBinaryDirect() method in the client object model use WebDAV for uploading and downloading files. Without building your own custom WCF service, WebDAV is the most efficient way to upload and download files. Note that WebDAV is limited to accessing files, not data.
External link: RFC 4918
Web Parts
SharePoint is based on ASP.NET. It inherits several important aspects of ASP.NET. This includes the concepts of Web Parts pages, and Web Parts. The classes that represent SharePoint Web Parts derive from the appropriate ASP.NET classes.
Building SharePoint Web Parts accounts for more SharePoint developer hours than any other category (perhaps more than the rest put together). Today, more than ever, users expect good looking, intuitive, and powerful user interfaces, and developing Web Parts is often the most effective approach.
Web Parts can communicate with other Web Parts. For example, you can link them to enable parent/child form/list user interfaces when maintaining data.
AJAX Web Parts are a special category. When your optimal user interface requires it, you can take advantage of AJAX architecture.
Silverlight Web Parts are another special category. There are times when Silverlight is most appropriate. Personally, I think that Silverlight Web Parts in SharePoint are the future.
You can build Web Parts by using the ASP.NET code-behind model, either in sandboxed or full-trust mode.
On the client side, Web Parts can communicate with the SharePoint server by using the managed client object model, OData REST APIs, or web services. WCF is an option from within Silverlight Web Parts.
While you can build custom Web Parts, SharePoint 2010 provides many default Web Parts that are useful in designing custom solutions. Some of the more common SharePoint built-in Web Parts include the following.
Common Built-in Web Parts
Web Part |
Links |
---|---|
List View Web Part |
SDK: List Views Blog: SharePoint 2010 List View Blog Series Office online: About the List View Web Part |
Image Web Part |
Office Online: Image Web Part |
Site Users Web Part |
Office Online: Site Users Web Part |
Chart Web Parts |
Office Online: Introduction to the Chart Web Part |
SDK: Web Parts in SharePoint Foundation
SDK: Microsoft.SharePoint.WebPartPages
SDK: Building Block: Web Parts
SDK: ConnectWeb Parts in SharePoint 2010
SDK: JS Grid Control
SDK: How to: Create a Basic JS Grid Control
Video and hands-on lab: Getting Started Building Web Parts in SharePoint 2010
Video and hands-on lab: Building Blocks for Web Part Development in SharePoint 2010
Video and hands-on lab: Creating Silverlight User Interfaces for SharePoint 2010 Solutions
Video and hands-on lab: Sandboxed Solutions for Web Parts in SharePoint 2010
Video: Creating a SharePoint 2010 Web Part That Can Read and Write Data to an External Data Source
Video: Advanced Web Part Development in SharePoint 2010
SDK: Cascading Style Sheets Class Usage in SharePoint Foundation
Code sample: SharePoint Foundation 2010 Code Samples
Web Services
When you build large distributed applications, the best practice is to couple them loosely by using ASMX web services or WCF services. You have to apply this same technique when you build large-scale SharePoint applications.
As an example, operational research often requires deployment of a sophisticated mathematical optimizer to arrive at an optimal or near optimal solution to some problem. This should be deployed on dedicated hardware and exposed through Web services.
In some cases, you may want to build client applications that use sophisticated server-side functionality that scales to the maximum extent. You may want to reduce extraneous network traffic to an absolute minimum. In these cases, the best solution often is to host WCF services on SharePoint Server. Code in this service can use the server object model with full server farm permissions, and supply the necessary functionality for the client application. As appropriate, when you build these kinds of services, you must perform attack surface analysis and threat modeling.
Developer Center: WCF Developer Center
Blog: Getting Started Building a WCF Web Service
Windows Identity Foundation
The claims-based identity model for SharePoint Foundation 2010 and SharePoint Server 2010 is built upon Windows Identity Foundation (WIF). Features of claims-based identity include the following:
Authentication across users of Windows-based systems and systems that are not Windows-based.
Multiple authentication types.
Stronger real-time authentication.
A wider set of principal types.
Delegation of user identity between applications.
When you build claims-aware applications, the user presents an identity to your application as a set of claims. One claim could be the user name, another might be an email address. The idea is that an external identity system is configured to give your application all the information that it needs about the user with each request, together with cryptographic assurance that the identity data that your application receives comes from a trusted source. Under this model, single sign-on is much easier to achieve.
Developer Center: SharePoint 2010 Security Resource Center
Developer Center: Windows Identity Foundation
Blog: Consuming a Claims-Enabled WCF Web Service as a SharePoint 2010 External Content Type
Word Automation Services
There are some tasks that are difficult in the Open XML SDK, such as repagination, conversion to other document formats such as PDF, or updating of field codes or the table of contents, fields, and other dynamic content in documents. Word Automation Services is a feature of SharePoint 2010 that can help in these scenarios. It is a shared service that provides unattended, server-side conversion of documents into other formats, and other important pieces of functionality. It was designed from the outset to work on servers and can process many documents reliably and predictably.
SDK: Word Automation Services in SharePoint Server 2010
Technical article: Developing with SharePoint 2010 Word Automation Services
Workflows
SharePoint workflows enable you to codify business process. Workflow logic can be very simple or very complex. End users can use workflows to build no-code business solutions. You can improve workflows with C# code that is called at appropriate times. You can deploy workflows as full-trust server farm solutions, or as sandboxed solutions. Examples of workflow use include claims processing, content approval, or purchasing processes.
SDK: Workflows in SharePoint Foundation
SDK: Microsoft.SharePoint.Workflow
SDK: Walkthrough: Use SharePoint Full-Trust Workflow Activities with Business Connectivity Services
Video and hands-on lab: Developing Business Processes with SharePoint 2010 Workflows
Using the Developer Dashboard to View Performance Metrics
Developing SharePoint applications can be a fairly complex undertaking. If pages or Web Parts do not perform well, it can be difficult to determine the cause of the delay or resource consumption. SharePoint 2010 provides a developer dashboard that you can use to view performance metrics related to the page that is loading.
You can turn on the developer dashboard by running the following Stsadm command:
stsadm -o setproperty -pn developer-dashboard -pv OnDemand
SDK: SharePoint 2010 Development for ASP.NET Developers
SDK: Using the Developer Dashboard
SharePoint 2010 Accessibility Guidelines
Microsoft adopted the Web Content Accessibility Guidelines 2.0 (WCAG 2.0) for SharePoint 2010, and set a goal for Level AA. Becoming a W3C recommendation on December 11th, 2008, WCAG 2.0 defines the expectations of and the techniques deployed in well-built, accessible Web sites.
External link: Web Content Accessibility Guidelines 2.0
Blog: Accessibility and SharePoint 2010
SharePoint 2010 Development Tools
There are a number of tools that you use to build SharePoint 2010 applications.
SharePoint Development Tools
Tool |
Description |
---|---|
Visual Studio 2010 |
Visual Studio 2010 is the primary tool for professional developers onSharePoint 2010. It contains pre-configured project types to make it as easy as possible to write code for your scenario. |
SharePoint Designer 2010 |
SharePoint Designer 2010 enables you to create no-code SharePoint solutions that encompass common scenarios, from collaborative sites and web publishing to line-of-business data integration, business intelligence solutions, and human workflows. You can use SharePoint Designer 2010 to get started with SharePoint development projects. |
Visio 2010 |
Visio 2010 enables you and subject-matter experts to create SharePoint workflows by using drag-and-drop operations. You can then import them into SharePoint Designer 2010 for additional editing, and then execute them in SharePoint 2010. |
SDK: SharePoint Foundation Development Tools
MSDN: SharePoint Development in Visual Studio
MSDN Magazine: Visual Studio 2010 Tools for SharePoint Development
Video: Getting Started with SharePoint 2010 Developer Tools in Visual Studio 2010
Download: Microsoft SharePoint Designer 2010 (32 bit)
Blog: SharePoint Workflow Authoring in Visio Premium 2010
Blog: Visual Studio SharePoint Development Blog
Setting Up SharePoint 2010 Development Environments
There are several ways to set up SharePoint 2010 development environments.
My favorite approach is to use Windows Server 2008 R2, and set up my development computer by using Hyper-V. Immediately after I install everything, I take a snapshot. This lets me to revert to this clean state if it is necessary, although in my experience, it rarely is. For the best experience, place the virtual hard disk drive on a different drive than where the host operating system resides.
You can install on a computer that is running Windows Server 2008 (or Windows Server 2008 R2) that is running directly on the server, not in a Hyper-V virtual machine. This can be an effective approach, although it loses the ability to revert to a snapshot.
You can install on a computer that is running Windows 7 64-bit or Windows Vista 64-bit. Some developers work for companies where they are prevented by policy from running server operating systems. Therefore, this can be a good solution. In addition, if I were starting a long development project that will take several months to complete, I would install SharePoint 2010 on my laptop so that I could develop at opportune times, and keep the ease of use of an end-user operating system.
Blog post: SharePoint development environments
SharePoint 2010 and Application Life Cycle Management (ALM)
Application Life Cycle Management (ALM) is the coordination of all aspects of software engineering—including the formulation and communication of business and technical requirements, code design and architecture, project tracking, change management, coding, testing, debugging, and release management—by using tools that support and track collaboration among and within work teams.
Resource Center: Application Lifecycle Management Resource Center
Video and hands-on lab: Development Life Cycle for SharePoint 2010
Video: Improving Software Development across the Lifecycle with Visual Studio 2010
Conclusion
With SharePoint Foundation 2010 and SharePoint Server 2010, SharePoint has evolved into a comprehensive development platform. Although many SharePoint applications are simple, SharePoint applications can very complex by using many building blocks, all working together. Careful design of your application is necessary to ensure that your application is robust and can scale up and scale out, and that the user interface of your application meets the needs of users.
Additional Resources
Code samples: SharePoint 2010: SDK: Code Samples
Code samples: SharePoint Foundation 2010 Code Samples
SDK: Best Practices with SharePoint Server
Articles: SharePoint 2010 Development Basics Technical Articles
Videos: SharePoint 2010 Videos | SharePoint Conference 2009
Video and hands-on lab: What Developers Need to Know About SharePoint 2010
Blog: SharePoint Team Blog
Blog: Microsoft SharePoint Developer Documentation Team Blog
MSDN: Developer Getting Started Training
MSDN: Advanced Developer Training
Training: Microsoft Training and Certification for SharePoint 2010