You are previewing Inside Microsoft SharePoint 2013.
O'Reilly logo
Inside Microsoft SharePoint 2013

Book Description

Build custom SharePoint solutions with architectural insights from the experts.

Take a deep dive into SharePoint 2013, and master the intricacies for designing and implementing robust apps and other business solutions for your organization. Led by an author team with in-depth knowledge of SharePoint architecture, you’ll thoroughly explore the SharePoint 2013 development platform and new app model through hands-on tasks and extensive code samples.

Discover how to:

  • Create SharePoint-hosted, provider-hosted, and autohosted apps

  • Master the new app security model with OAuth and Certificates

  • Develop workflows with the SharePoint 2013 workflow model

  • Design a custom search experience and create search-based apps

  • Leverage the client-side object model and REST APIs

  • Produce catalog-driven web sites with Web Content Management capabilities

  • Get cloud-based data sources with Business Connectivity Services

  • Create and utilize remote event receivers for lists and libraries

  • Generate new social networking apps and solutions

  • Table of Contents

    1. Special Upgrade Offer
    2. Introduction
      1. Who this book is for
      2. Organization of this book
      3. Acknowledgments
      4. Support & feedback
        1. Errata
        2. We want to hear from you
        3. Stay in touch
    3. 1. SharePoint 2013 developer roadmap
      1. A brief history of SharePoint
        1. Understanding the impact of SharePoint Online on the SharePoint platform
      2. Examining SharePoint Foundation architecture
        1. Understanding SharePoint farms
          1. Working with SharePoint 2013 Central Administration
        2. Creating web applications
          1. Understanding web applications and user authentication
        3. Understanding service applications
        4. Creating service applications in SharePoint Server 2013
        5. Managing sites
          1. Understanding the role of site collections
          2. Understanding host-named site collections (HNSCs)
        6. Customizing sites
          1. Creating and customizing pages
          2. Creating and customizing lists
        7. Using SharePoint Designer 2013
        8. Understanding site customization vs. SharePoint development
      3. Windows PowerShell boot camp for SharePoint professionals
        1. Learning Windows PowerShell in 21 minutes
          1. Writing Windows PowerShell scripts
        2. The Windows PowerShell Integrated Scripting Environment (ISE)
        3. Windows PowerShell snap-ins for SharePoint
      4. Summary
    4. 2. SharePoint development practices and techniques
      1. Setting up a developer environment
        1. Deciding between virtual and physical
        2. Understanding hardware and software requirements
        3. Delivering high-quality solutions
      2. Automating SharePoint administration by using Windows PowerShell scripts
        1. Using Windows PowerShell to deploy a custom solution
      3. Configuring SharePoint service applications
      4. Using debugging tools
        1. Working with ULS and Windows event logs
        2. Using the Developer Dashboard
      5. Using the SharePoint Developer Tools in Visual Studio 2012
      6. Choosing a development approach
      7. Using the SharePoint APIs
        1. Understanding the server-side object model
        2. Using the client-side object model
        3. Using the REST APIs
      8. Summary
    5. 3. Server-side solution development
      1. Understanding the server-side object model
      2. Developing farm solutions
        1. Creating a SharePoint project in Visual Studio
        2. Designing your SharePoint solution: Features
        3. Adding declarative elements
        4. Adding a feature receiver
        5. Understanding the SharePoint root directory
        6. Deploying and debugging farm solutions
        7. Updating farm solutions
        8. Upgrading features
          1. Updating a feature definition with upgrade actions
          2. Adding code-behind custom upgrade actions
          3. Upgrading feature instances
      3. Developing sandboxed solutions
        1. Understanding the sandbox execution environment
        2. Creating a SharePoint project for a sandboxed solution
        3. Deploying and debugging sandboxed solutions
        4. Updating and upgrading sandboxed solutions
      4. Summary
    6. 4. SharePoint apps
      1. Understanding the new SharePoint app model
        1. Understanding SharePoint solution challenges
        2. Understanding the SharePoint app model design goals
      2. Understanding SharePoint app model architecture
        1. Working with app service applications
        2. Understanding app installation scopes
        3. Understanding app code isolation
        4. Understanding app hosting models
        5. Reviewing the app manifest
          1. Using the app manifest designer in Visual Studio 2012
        6. Setting the start page URL
        7. Understanding the app web
          1. Understanding the app web hosting domain
        8. Working with app user interface entry points
          1. Building app parts
          2. Building UI custom actions
      3. Using the chrome control
      4. Packaging and distributing apps
        1. Packaging apps
          1. Understanding the app web solution package
          2. Packaging host web features
          3. Packaging for autohosted apps
        2. Publishing apps
          1. Publishing SharePoint apps to the Office Store
          2. Publishing apps to an app catalog
        3. Installing apps
          1. Installing apps at tenancy scope
        4. Upgrading apps
        5. Trapping app life cycle events
      5. Summary
    7. 5. Client-side programming
      1. Understanding app designs
        1. Assessing SharePoint-hosted app designs
        2. Assessing cloud-hosted app designs
      2. Introduction to JavaScript for SharePoint developers
        1. Understanding JavaScript namespaces
        2. Understanding JavaScript variables
        3. Understanding JavaScript functions
        4. Understanding JavaScript closures
        5. Understanding JavaScript prototypes
        6. Creating custom libraries
          1. Understanding the singleton pattern
          2. Understanding the module pattern
          3. Understanding the prototype pattern
      3. Introduction to jQuery for SharePoint developers
        1. Referencing jQuery
        2. Understanding the global function
        3. Understanding selector syntax
        4. Understanding jQuery methods
        5. Understanding jQuery event handling
      4. Working with the client-side object model
        1. Understanding client object model fundamentals
          1. Understanding contexts
          2. Loading and executing operations
        2. Working with the managed client object model
          1. Returning collections
          2. Handling errors
          3. Creating, reading, updating, and deleting
        3. Working with the JavaScript client object model
          1. Returning collections
          2. Handling errors
          3. Creating, reading, updating, and deleting in the JavaScript client object model
      5. Working with the REST API
        1. Understanding REST fundamentals
        2. Working with the REST API in JavaScript
          1. Performing basic operations
          2. Performing CRUD in REST
        3. Working with the REST API in C#
          1. Performing basic operations
          2. Performing CRUD in C#
      6. Summary
    8. 6. SharePoint security
      1. Reviewing authentication and authorization
      2. Understanding user authentication
        1. Configuring web applications
        2. Understanding the User Information List
        3. Working with users and groups
        4. Working with application pool identities
        5. Understanding the SHAREPOINT\SYSTEM account
          1. Escalating privileges
        6. Delegating user credentials
        7. User impersonation with the user token
        8. Securing objects with SharePoint
        9. Rights and permission levels
      3. Understanding app authentication
        1. Using internal authentication
        2. Using the cross-domain library
        3. Using the web proxy
        4. Using external authentication
        5. Understanding app authentication flow
      4. Understanding app authorization
        1. Managing app permissions
        2. Understanding app permission policies
        3. Requesting and granting app permissions
        4. Requesting app-only permissions
        5. Establishing app identity by using OAuth
          1. Understanding where OAuth fits in
          2. Understanding OAuth terms and concepts
        6. Understanding app principals
          1. Registering app principals
          2. Understanding app authentication flow in Office 365
        7. Developing with OAuth
          1. Programming with the <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>TokenHelper</em></span> class class
          2. Working with access tokens
          3. Working with app-only access tokens
          4. Acquiring permissions on the fly by using authorization code
        8. Establishing app identity by using S2S trusts
        9. Architecture of an S2S trust
        10. Configuring an S2S trust
        11. Developing provider-hosted apps by using S2S trusts
      5. Summary
    9. 7. SharePoint pages
      1. SharePoint and ASP.NET
        1. Learning ASP.NET basics
          1. Understanding ASP.NET and IIS
          2. Using ASP.NET Web Forms
          3. Using ASP.NET master pages
        2. Understanding how SharePoint relates to IIS web applications
        3. Understanding the Web.config file
        4. Understanding the SharePoint virtual file system
        5. Working with files and folders in SharePoint
        6. Understanding page customization
          1. Understanding uncustomized pages
          2. Understanding customized pages
          3. Understanding Safe Mode parsing
      2. Using pages in SharePoint
        1. Understanding master pages
          1. Understanding SharePoint 2013 default master pages
          2. Dissecting the seattle.master file
          3. Using delegate controls
          4. Referencing master pages in SharePoint
        2. Understanding MDS
          1. Improving performance with MDS
          2. Understanding the MDS feature
          3. Working with MDS requirements and compliance
        3. Understanding content pages
          1. Creating a content page
          2. Deploying a content page
          3. Creating a Web Part page
          4. Understanding publishing pages
        4. Creating a custom branding solution
          1. Creating a custom master page
          2. Adding a feature receiver
        5. Working with application pages
          1. Understanding application page anatomy
          2. Creating an application page
          3. Securing the application page
          4. Adding navigation support to the application page
      3. Customizing the ribbon
        1. Understanding the anatomy of the SharePoint ribbon
        2. Adding a custom ribbon control
      4. Summary
    10. 8. SharePoint Web Parts
      1. Understanding Web Part fundamentals
        1. Understanding Web Parts
        2. Comparing ASP.NET and SharePoint Web Parts
        3. Understanding App Parts
        4. Understanding Web Part zones
        5. Understanding the Web Part Manager
        6. Understanding static Web Parts
        7. Storing Web Part control description files in the Web Part Gallery
      2. Developing and deploying Web Parts
        1. Building your first Web Part
          1. Implementing the Web Part
          2. Examining the Web Part control description file
          3. Understanding the element manifest
        2. Deploying and uninstalling a Web Part
        3. Deploying a Web Part page with Web Parts
          1. Deploying Web Parts by using a declarative approach
          2. Deploying a Web Part by using <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>SPLimitedWebPartManager</em></span>
          3. Deploying Web Parts to wiki pages
          4. Deploying Web Parts by using client-side code
      3. Controlling Web Part rendering
        1. Overriding the <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>RenderContents</em></span> method method
        2. Using <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>CreateChildControls</em></span>
        3. Responding to events
        4. Combining <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>CreateChildControls</em></span> and and <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>RenderContents</em></span>
        5. Using Visual Web Parts
      4. Working with Web Part properties
        1. Persisting Web Part properties
        2. Using custom Editor Parts
      5. Exploring advanced Web Part development
        1. Using Web Part verbs
        2. Using Web Part connections
          1. Building a provider Web Part
          2. Building a consumer Web Part
          3. Connecting Web Parts
        3. Using parallel and asynchronous execution in Web Parts
          1. Using parallel execution
          2. Using asynchronous execution
      6. Summary
    11. 9. SharePoint lists
      1. Creating lists
      2. Working with fields and field types
        1. Performing basic field operations
        2. Working with lookups and relationships
      3. Understanding site columns
      4. Working with content types
        1. Programming with content types
        2. Creating custom content types
      5. Working with document libraries
        1. Creating a document library
        2. Adding a custom document template
        3. Creating document-based content types
        4. Working with folders
      6. Creating and registering event handlers
        1. Understanding event receiver classes
        2. Understanding remote event receivers
        3. Registering event handlers
        4. Programming before events
        5. Programming after events
      7. Querying lists with CAML
        1. Understanding CAML fundamentals
        2. Querying joined lists
        3. Querying multiple lists
        4. Throttling queries
      8. Working with LINQ to SharePoint
        1. Generating entities with <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>SPMetal</em></span>
          1. Understanding the <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>DataContext</em></span> class class
          2. Using parameters.xml to control code generation
        2. Querying with LINQ to SharePoint
        3. Adding, deleting, and updating with LINQ to SharePoint
      9. Summary
    12. 10. SharePoint type definitions and templates
      1. Custom field types
        1. Creating custom field types
          1. Creating classes for custom field types
          2. Deploying custom field types
        2. Creating custom field controls
          1. Custom field types with multicolumn values
          2. Custom field types with custom properties
        3. JSLink
      2. Custom site columns and content types
        1. Creating site columns and content types by using CAML
        2. Creating site columns and content types by using the server-side object model
      3. Custom list definitions
      4. Summary
    13. 11. SharePoint site provisioning
      1. The GLOBAL site definition
      2. Site definitions
        1. Webtemp*.xml
        2. ONET.xml for site definitions
        3. Feature stapling
        4. Order of provisioning when using site definitions
        5. Custom site definitions
      3. Web templates
        1. elements.xml
        2. ONET.xml for web templates
        3. Deploying web templates
      4. Using custom code to create sites
      5. Site templates
      6. Site provisioning providers
      7. Web provisioning events
      8. Web templates and SharePoint apps
      9. Summary
    14. 12. SharePoint workflows
      1. Workflow architecture in SharePoint 2013
        1. Installing and configuring a Workflow Manager 1.0 farm
        2. Understanding workflow in SharePoint 2013
        3. Creating custom workflows for SharePoint 2013
      2. Building custom workflows
        1. Custom workflows with Visio 2013 and SharePoint Designer 2013
          1. Creating a workflow with Visio 2013 and SharePoint Designer 2013
        2. Custom workflows with Visual Studio 2012
          1. Creating a workflow with Visual Studio 2012
        3. SharePoint Designer 2013 and web services
        4. Creating custom activities
          1. Creating a custom workflow activity in a SharePoint app
          2. Creating a custom workflow activity for SharePoint Designer 2013
      3. Using tasks in workflows
        1. Adding tasks to a workflow
        2. Custom task outcomes
          1. Creating custom task outcomes for a SharePoint Designer 2013 workflow
          2. Creating custom task outcomes for a Visual Studio 2012 workflow
      4. Workflow services CSOM and JSOM
      5. Adding custom forms to workflows
        1. Association forms in SharePoint 2013
          1. Creating association forms
        2. Initiation forms in SharePoint 2013
          1. Creating initiation forms
      6. Summary
    15. 13. SharePoint search
      1. Introducing search-based applications
      2. Understanding search architecture
        1. Understanding the indexing process
          1. Connecting and parsing
          2. Enhancing metadata
          3. Analyzing searches
        2. Understanding the query process
          1. Creating managed properties
          2. Introduction to ranking models
          3. Executing queries
      3. Understanding Keyword Query Language
      4. Creating no-code customizations
        1. Creating simple link queries
        2. Extending the Search Center
          1. Adding pages to search navigation
          2. Creating result sources
          3. Displaying search results
          4. Defining query rules
          5. Adding refiners
          6. Exporting search customizations
        3. Using the Content Search Web Part
      5. Using the client-side API
        1. Using the REST API
        2. Using the CSOM API
      6. Using the script Web Parts
      7. Improving relevancy
      8. Enhancing content processing
      9. Creating .NET Assembly Connectors for search
        1. Search-enabling a model
        2. Implementing security in search results
        3. Crawling the .NET Assembly Connector
      10. Summary
    16. 14. SharePoint Enterprise Content Management
      1. Understanding the Managed Metadata Service Application
        1. Understanding managed metadata
        2. Using managed metadata in a custom solution
          1. Managing the contents of the term store
          2. Creating managed metadata site columns
          3. Using a <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>TaxonomyWebTaggingControl</em></span>
        3. Understanding content type syndication
      2. Using document services
        1. Understanding versioning
        2. Understanding Document IDs
          1. Creating custom Document ID providers
        3. Understanding Document Sets
          1. Creating Document Sets declaratively
        4. Using the Content Organizer
        5. Understanding Word Automation Services
      3. Records management
        1. In-place records management
        2. Records archives
        3. eDiscovery
      4. Summary
    17. 15. Web content management
      1. Understanding the WCM features
        1. Publishing site templates
      2. Accessing SharePoint publishing files
        1. Mapping to the SharePoint Master Page Gallery
      3. Page layouts
        1. Understanding the page model
        2. Creating a new page layout
        3. Managing the presentation of page fields
        4. Working with edit mode panels
        5. Working with Web Part zones
      4. Understanding device channels
        1. Working with device channel panels
      5. Understanding managed navigation
        1. Working with managed navigation APIs
        2. Creating a navigational term set
      6. Content aggregation
        1. Deciding between the Content Query and Content Search Web Parts
        2. Working with display templates
      7. Understanding cross-site publishing
        1. Working with catalogs
      8. Summary
    18. 16. Business Connectivity Services
      1. Introduction to Business Connectivity Services
      2. Creating simple BCS solutions
        1. Creating External Content Types
        2. Creating External Lists
      3. Understanding External List limitations
      4. Understanding BCS architecture
        1. Understanding connectors
        2. Understanding Business Data Connectivity
        3. Managing the BDC service
        4. Understanding the BDC Server Runtime
        5. Understanding the client cache
        6. Understanding the BDC Client Runtime
        7. Introduction to the Secure Store Service
        8. Understanding package deployment
      5. Understanding authentication scenarios
        1. Configuring authentication models
          1. Understanding <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>Passthrough</em></span> authentication authentication
          2. Understanding <span xmlns="" xmlns:epub="" xmlns:m="" xmlns:pls="" xmlns:ssml="" xmlns:svg="" class="emphasis"><em>RevertToSelf</em></span>
          3. Understanding secure store options
        2. Accessing claims-based systems
        3. Accessing token-based systems
      6. Managing client authentication
      7. Creating External Content Types
        1. Creating operations
        2. Creating relationships
        3. Defining filters
      8. Using ECTs in SharePoint 2013
        1. Creating custom forms
        2. Using External Data Columns
        3. Using External Data Web Parts
        4. Creating a profile page
        5. Searching External Systems
        6. Supplementing user profiles
      9. Using ECTs in Office 2013
        1. Understanding Outlook integration
        2. Using Word Quick Parts
      10. Creating custom BCS solutions
        1. Using the BDC Runtime object models
        2. Using the Administration Object Model
        3. Creating custom event receivers
        4. Creating .NET Assembly Connectors
        5. Developing SharePoint apps
          1. Understanding app-level ECTs
          2. Understanding the BCS client object model
      11. Summary
    19. 17. SharePoint social enterprise features
      1. What’s new in SharePoint 2013
      2. Understanding social components
        1. Working with the social APIs
      3. Understanding user profiles
        1. Retrieving user profile properties
      4. Understanding social feeds
        1. Retrieving posts from your newsfeed
        2. Retrieving posts from a site feed
        3. Posting to your personal feed
        4. Posting to a site feed
      5. Understanding following within SharePoint 2013
        1. Following people
      6. Understanding Yammer
        1. Understanding how Yammer can work with SharePoint
        2. Retrieving followers and followings from Yammer
      7. Summary
    20. A. About the authors
    21. Index
    22. About the Authors
    23. Special Upgrade Offer
    24. Copyright