You are previewing Designing Solutions for Microsoft® SharePoint® 2010.
O'Reilly logo
Designing Solutions for Microsoft® SharePoint® 2010

Book Description

Designing Solutions for Microsoft SharePoint 2010 draws together much of the core material produced by the Microsoft patterns & practices team for the Developing Applications for SharePoint 2010 online guidance, a release that includes documentation, reference implementations, and reusable code utilities. The book tackles four core areas of architecture and development for SharePoint applications: execution models, data models, client application models, and application foundations.

Table of Contents

  1. Designing Solutions for Microsoft® SharePoint® 2010
  2. Foreword
  3. Preface
  4. Introduction
    1. Rationale
    2. Who Should Read This Book?
    3. What’s Inside?
  5. I. Execution Models
    1. 1. Understanding SharePoint Execution Models
      1. Introducing the Sandbox
      2. What Are the SharePoint Execution Models?
        1. Farm Solutions
          1. The Full-Trust Execution
          2. The Bin/CAS Execution Model
        2. Sandboxed Solutions
          1. The Sandbox Execution Model
          2. Hybrid Execution Models
      3. Which Execution Model is Right for My Solution?
        1. Typical Scenarios for Farm Solutions
        2. Typical Scenarios for Sandboxed Solutions
        3. Typical Scenarios for Hybrid Solutions
        4. How Does My Execution Logic Affect My Choice of Model?
      4. Conclusion
    2. 2. Execution Models for Farm Solutions
      1. How Does the Full-Trust Execution Model Work?
      2. How Does the Bin/CAS Execution Model Work?
      3. What Can I Do with Farm Solutions?
      4. What Are the Core Issues for Farm Solutions?
        1. Deployment
        2. Capabilities
        3. Stability
        4. Security
      5. Conclusion
    3. 3. Execution Models for Sandboxed Solutions
      1. How Does the Sandbox Execution Model Work?
      2. What Can I Do with Sandboxed Solutions?
        1. Code Access Security Restrictions
        2. Permission Restrictions
        3. Retrieving User Identity
        4. Using Event Receivers
        5. Accessing External Data
        6. Using Workflows
      3. How Do I Manage Sandboxed Solutions?
        1. Understanding Operational Modes
        2. Deploying and Upgrading Solutions
        3. Understanding Solution Monitoring
        4. Understanding Solution Validation
      4. What Are the Core Issues for Sandboxed Solutions?
        1. Scope and Capabilities
        2. Security (Authentication)
        3. Performance (Throughput)
        4. Logging
        5. Configuration Settings
        6. Deployment
      5. Conclusion
        1. Further Information
    4. 4. Hybrid Approaches to Execution
      1. How Do Hybrid Execution Models Work?
        1. Hybrid Execution with a Full-Trust Proxy
        2. Hybrid Execution with External Content Types
        3. Hybrid Execution with Custom Workflow Activities
      2. What Can I Do with Hybrid Solutions?
      3. How Do I Manage Hybrid Solutions?
      4. What Are the Core Issues for Hybrid Solutions
        1. Security
        2. Deployment
        3. Capabilities
        4. Logging and Configuration
        5. Stability
        6. Performance (Throughput)
      5. Conclusion
        1. Further Information
  6. II. Data Models
    1. 5. SharePoint List Data Models
      1. Understanding List Data in SharePoint 2010
      2. Green Field and Brown Field Scenarios
      3. Structured and Unstructured Data
      4. Database Models vs. SharePoint Data Models
      5. SharePoint Columns, Lists, and Content Types
        1. SharePoint Columns
        2. SharePoint Lists
        3. SharePoint Content Types
          1. Creating a Content Type Programmatically
      6. List Relationships in SharePoint 2010
        1. Lookup Columns Explained
        2. Creating and Using Lookup Columns
        3. Lookups for List Columns, Site Columns, and Content Types
        4. Projected Fields
        5. Enforcing List Relationships
          1. Parent-Child Relationships and Cascade Delete Rules
          2. Peer-to-Peer Relationships and Restrict Delete Rules
          3. Programmatically Setting the Delete Behavior on a Lookup Field
      7. Query Throttling and Indexing
        1. What Is Indexing?
        2. What Is Query Throttling?
          1. How Does Indexing Affect Throttling?
      8. Managing Large Lists
        1. Using the ContentIterator Class
        2. Partitioned View
        3. Partitioned List with Aggregate View
      9. Aggregating List Data
        1. Aggregated View
        2. Search-Aggregated View
        3. Union List Aggregation
        4. Denormalized List Aggregation
        5. List of Lists and List of Sites
      10. Conclusion
        1. Further Information
    2. 6. External Data in SharePoint 2010
      1. Introducing the BCS
        1. Understanding Service Proxy Groups
      2. Business Data Connectivity Models
        1. External Content Types
        2. External Lists
        3. External Data and Search
        4. .NET Connectivity Assemblies
        5. Constraints and Relationships
        6. BDC Models and Common Scenarios
      3. Implementing Advanced BDC Models
        1. Understanding Associations in External Data
        2. Modeling Complex Types in External Data
        3. Working with Database Views
      4. Performance and Security Considerations
        1. Filters and Throttling in the BDC
        2. Security and Identity
      5. Where Should I Build My Data Store?
      6. Conclusion
        1. Further Information
    3. 7. Accessing Data in SharePoint 2010
      1. What Are the Key Approaches to Data Access?
      2. Using Query Classes
        1. Using SPQuery
          1. Using SPQuery with Regular SharePoint Lists
          2. Using SPQuery with External Lists
        2. Using SPSiteDataQuery
      3. Using LINQ to SharePoint
        1. The LINQ to SharePoint Process
        2. How Are LINQ to SharePoint Queries Executed?
        3. Generating Entities for Content Types
        4. Modeling Associations in Entity Classes
        5. Query Efficiency with LINQ to SharePoint
          1. Reviewing the CAML Output
          2. Where Clause Efficiency
          3. Using View Projections
          4. Using List Joins across Sites
          5. Additional Performance Considerations
        6. The Repository Pattern and LINQ to SharePoint
      4. Using the BDC Object Model
        1. Querying Data by Using a Finder Method
        2. Querying Data by Using a SpecificFinder Method
        3. Querying Data by Using an AssociationNavigator Method
        4. Other Scenarios That Require the Use of the BDC Object Model
      5. Conclusion
        1. Further Information
  7. III. Client Models
    1. 8. Client Application Models in SharePoint 2010
      1. Building a User Experience
        1. Ajax User Interface
        2. Silverlight User Interface
        3. Microsoft Office Clients and Managed Code Clients
      2. Reach Considerations for RIA Technologies
      3. Performance Considerations for RIA Technologies
        1. Initial Load Time
        2. Caching JavaScript Files and Silverlight XAP Files
        3. Maximizing Responsiveness
          1. Asynchronous Execution Model
          2. Local Processing Power
          3. Client-side Data Caching
          4. Predictive Loading
      4. Security Considerations for RIA Technologies
        1. Authentication
        2. Cross-Domain Data Access and Client Access Policy
      5. Overcoming Sandbox Restrictions
      6. Conclusion
        1. Further Information
    2. 9. Data Access for Client Applications
      1. Using the Client-Side Object Model
        1. Query Efficiency and the Client Object Model
          1. Request Batching
          2. List Queries with CAML
          3. Using LINQ for Objects
          4. In-Place Load and Queryable Load
        2. Synchronous and Asynchronous Operations
        3. Accessing Binary Data
      2. Using the REST Interface
        1. Using the Service Proxy
        2. How Does the REST Interface Work?
        3. Query Efficiency with the REST Interface
          1. Joins
          2. Projections
        4. Concurrency Management
        5. Put and Merge Operations
        6. Using the Rest Interface from Javascript
        7. Batching
        8. Synchronous and Asynchronous Operations
      3. Conclusion
        1. Further Information
  8. IV. Application Foundations
    1. 10. Building Robust SharePoint Applications
      1. Introducing the SharePoint Guidance Library
        1. The SharePoint Logger
        2. The Application Setting Manager
        3. The SharePoint Service Locator
      2. Building in Robustness
        1. Catch Only Exceptions That You Handle
          1. Catch Only Exceptions That You Handle
            1. Catch Only Exceptions That You Handle
            2. Catch the Most Specific Type of Exception
            3. Avoid Empty Catch Blocks
            4. Implement a Handler for Unexpected Exceptions
      3. Providing Testability and Flexibility
        1. Removing Dependencies from Your Code
        2. Isolating User Interface Logic
          1. The Model-View-Presenter Pattern
            1. View Classes
            2. Presenter Classes
            3. Model Classes
          2. The Model-View-ViewModel Pattern
        3. Isolating Data Access Logic
      4. Conclusion
        1. Further Information
    2. 11. Testing SharePoint Solutions
      1. Testing Concepts and Phases
        1. Unit Testing
        2. Integration Testing
        3. Continuous Integration Testing
        4. Web Testing
        5. Stress Testing
        6. Functional Testing
        7. Build Verification Testing
        8. Load or Scale Testing
        9. User Acceptance Testing
      2. Unit Testing for SharePoint Applications
        1. Stubs and Mocks
        2. The Moles Framework
        3. Using Stubs
        4. Using Moles
        5. Best Practices for Stubs and Moles
        6. Behavioral Models
      3. Conclusion
        1. Further Information
  9. Index
  10. About the Authors
  11. Copyright