Steve Mann was born and raised in Philadelphia, Pennsylvania, where he still resides today. He is an Enterprise Applications Engineer for Morgan Lewis and has more than 17 years of professional experience. Steve was previously a Principal Architect for RDA Corporation, where he worked for over thirteen years. Steve graduated from Drexel University in 1993. For the past eight years, he has focused primarily on collaboration and business intelligence solutions using Microsoft technologies.
Steve managed the internal BI Practice Group at RDA for several years. He was also heavily involved within RDA's Collaboration/Search Practice Group. Steve has authored and coauthored several books related to the subject of SharePoint Server 2010. Steve’s blog can be found at: www.SteveTheManMann.com. Steve enjoys vacationing with his family along the east coast, including locations such as Orlando, Florida; Williamsburg, Virginia; Ocean City and Sea Isle City, New Jersey; and New York City. They usually hits three or four locations each year. Follow Steve on Twitter @stevethemanmann!
Colin Murphy lives in Atlanta, Georgia, where he works as a Principal Architect for RDA Corporation, a Microsoft Gold Partner. He has spent the last fifteen years developing Web sites and Windows applications using a variety of languages including C++, PowerBuilder, Java, PHP, and Python, but has primarily been a .NET/C# developer for the last ten years. Colin has been developing enterprise solutions built on SharePoint since SharePoint 2007 was in beta. Colin holds a number of technical certifications including Microsoft Certified Professional, Microsoft Certified Application Developer, Microsoft Certified Solutions Developer, and is also a Microsoft Certified Technical Specialist for SharePoint. He has been recognized as a K2 Insider and is the coauthor of the book Professional K2 blackpearl by Wiley.
Pablo Gazmuri is a Principal Architect with RDA Corporation, an IT Consulting firm. He has led SharePoint efforts for a number of Fortune 500 companies where he conducts planning, mentoring, training, and coding activities. With fifteen years of development experience, Pablo is a web, collaboration, and search expert who has built numerous corporate intranets, extranets, ecommerce sites, and custom applications over the course of his career. Pablo has recently built custom SharePoint applications enabling project management, document generation, SharePoint site provisioning, governance enforcement, and more. You can find him on Twitter as @PGazmuri, or contact him through RDA at http://www.rdacorp.com.
Chris Caravajal has been working exclusively with SharePoint technologies since 2007. As a consultant, he works with organizations on planning and architecting SharePoint solutions that vary in both size and complexity. Primarily an “out-of-the-box” specialist, Chris’s main focus is getting the most out of SharePoint with the native features and tools. He also has experience building InfoPath forms and SharePoint Designer workflow solutions. Chris is a MCTS and is a contributing author to the top-selling SharePoint technical publication, "Professional SharePoint 2010 Administration."
Christina Wheeler is a SharePoint Trainer for Mindsharp and founder of CM Portal Solutions, LLC. She is a highly respected SharePoint consultant who is extremely active in the SharePoint community. With over ten years of experience in the industry, Christina has knowledge and experience in graphic design, web development, and custom development. Her work is targeted primarily toward educational institutions, financial institutions, and telecommunications. As a trainer, Christina brings her real-world experience to the classroom. She enjoys contributing articles to technical Web sites and often speaks at SharePoint community events and conferences. You can follow her on Twitter as @cwheeler76.
Introduction xxiPart I: using sharepoint technologies and exploiting Functionality
Chapter 1: Leveraging the SharePoint Object Model 3
Customizing SharePoint 3
UI Components 4
Nonvisual Components 11
External Access 13
Putting It All Together 24
A Blog Aggregator 24
Calendar Reminders 28
Scheduled Workflows 31
Summary 33
Chapter 2: Creating Visual Web Parts 35
Creating Visual Web Parts 35
Visual Web Part Project 35
Adding Controls 38
Adding Code 40
Deployment 41
Connecting Web Parts 43
Creating an Interface 44
Creating the Provider Web Part 45
Creating the Consumer Web Part 46
Deploying the Solution 48
Connecting the Web Parts 48
Using SharePoint Controls 49
Leveraging the XSLT Web Part 53
Summary 54
Chapter 3: Customizing Search 55
Configuring and Creating Content Sources 55
Indexing Content 55
Planning Content Sources 56
Implementing Content Sources 57
Configuring Search Scopes 57
Defining Search Scopes in the Service Application 58
Defining Site Collection Search Scopes and Scope Display Groups 60
Creating Managed Properties 62
Customizing the Enterprise Search Center 63
Creating a New Search Results Page 65
Modifying the Advanced Search Screen 68
Finding Content with Alerts 70
Summary 71
Chapter 4: Leveraging the SharePoint Lists Web Service 73
Web Services Overview 73
SharePoint Web Services Introduction 73
Instantiating a Web Service 73
Setting Credentials 76
Querying Lists and List Items 78
Modifying the SharePoint Location 78
Retrieving Lists from a SharePoint Location 79
Retrieving List Items from a SharePoint List 79
Modifying List Items 83
Creating a New Item 83
Updating an Existing Item 84
Deleting an Existing Item 86
Programmatically Uploading Files to SharePoint 89
Adding References 89
Create Upload Method 90
Create Web Request and File Buffer 90
Use Stream and FileStream Objects 90
Perform the Upload 91
Error Handling and Returns 91
Summary 92
Chapter 5: Custom Field Types, Content Types, and List Definitions 93
Field Types 94
Field Type Definition Components 95
Building a Restricted Social Security Number Field Type 99
Custom Content Types 114
Creating the Employee Details Content Type Stub 114
Implementing the Employee Details Content Type 116
List Definitions 120
Creating the Employees List Definition 120
Customizing the List Schema 122
Summary 129
Chapter 6: Workflow 131
Workflow Introduction 131
Getting Started 132
Defining the Process 132
Types of Workflow Associations 133
Starting Workflows 134
Selecting Your Solution Method 134
SharePoint 2010 Native Tools 136
SharePoint Workflow Tools 136
SharePoint Workflow Templates 138
Microsoft Office Visio 2010 Premium 148
SPD 2010 151
Conditions 151
Actions 154
Workflow Options and Features 160
Visual Studio 2010 171
Summary 173
Chapter 7: Administrating SharePoint 2010 with PowerShell 175
Getting Started 176
Starting PowerShell 176
PowerShell Conventions 177
Command Discovery 178
Function Key Shortcuts 180
Command Prompt System Commands 180
SharePoint Management with PowerShell 181
SharePoint Farm Management 181
Web Application Management 184
Site Management 186
Solutions and Features 189
Enterprise Content Management 192
SharePoint Database Management 193
Search Administration with PowerShell 195
SharePoint Foundation Search 195
Enterprise Search 196
Service Applications 199
Access Services 200
Excel Services 200
InfoPath Forms Services 201
Metadata Service 202
PerformancePoint Services 202
Secure Store Service 204
State Service 205
User Profile Service 205
Visio Services 206
Word Services 207
Summary 208
Part II: SharePoint Solutions
Chapter 8: UI Design and Branding 211
Themes 211
Creating Themes 212
Using Themes 212
Configuring Themes from the Site User Interface 215
Deploying Themes Through a Feature 217
Branding with Custom CSS 217
Themes and CSS 217
Building and Including Custom CSS 218
Using a Centered Fixed Width Design 218
Styling Individual Navigation Items 219
Changing SharePoint Search Icon with CSS 220
Master Pages 220
Browser Support 221
Deploying Master Pages via Visual Studio 2010 221
Customizing the Ribbon 224
Working with Page Layouts 225
Creating Page Layouts Using SharePoint Designer 2010 226
Deploy Custom Page Layouts Through Visual Studio 2010 227
Branding Layouts Pages 228
Customizing Application Pages 229
Creating Custom Application Pages 229
Registering Custom Application Pages from Receivers 231
Registering Custom Application Pages from Windows PowerShell 232
Summary 232
Chapter 9: Building a Site Provisioning System 233
Sites and Site Collections 234
Determining Your Site Taxonomy 235
Example Taxonomy Matrix 235
Additional Factors 236
The Site Request Process 237
An Example Site Request Process 237
Security Challenges 240
Our Example Solution 241
Alternatives in Implementation 242
Buildout 243
Creating the Project Framework 244
Creating the Necessary Lists 244
Creating a Custom Feature Receiver 251
Building and Deploying the Solution 255
Creating a Custom List Item Form 256
Creating Form Helper Functions 258
Creating Form Controls 261
Building Out the Custom Form Code 265
Creating the Core Site Provisioning Functionality 276
Deploying the Solution 284
Next Steps 293
User Experience 293
Site Request and Configuration 293
Additional Uses for Site Data 294
Summary 295
Chapter 10: Building Scalable Applications in SharePoint 297
General Performance Issues 298
Memory, Disk, and Network Access 298
Algorithmic Efficiency 299
Load Balancing and Farm Configuration 300
Server Configuration Options 300
Load-Balancing Options 302
Database Allocation 304
Data Sharding 305
SharePoint Caching Options 306
Page Output Caching 306
SharePoint Object Cache 309
The BLOB Cache 312
Caching in Code 316
Application Object 316
Session Object 317
View State 317
HTTPContext 318
HTTP Cache 319
Static Variables 320
Local Files and the SharePoint Content DB 320
A Reusable Caching Method 321
Managing Large Lists 325
Query Throttling 325
Indexed Fields 327
Configuring Views 328
Client-Side Optimizations 329
Content Distribution Networks 329
Reducing Server Round Trips 330
Writing Efficient Code in SharePoint 331
Adding and Retrieving List Data 331
Batch Operations 333
Supported Batch Operations 334
Multithreaded Operations 336
String Processing 338
Exception Handling 340
SPMonitoredScope 340
General Tips for Solving Hard Problems 341
Summary 342
Chapter 11: Building a Custom Global Navigation Solution 343
Defining the Requirements 343
Reviewing the Architecture 344
Understanding OOTB SharePoint Navigation 345
Pieces of the Solution 346
Creating the Solution 348
Creating the Visual Studio Solution and Projects 348
Building the Navigation Menu UI 350
Building the Processing Layer 363
Building the Global Navigation Consumer 377
Building the Timer Job 394
Summary 398
Appendix A: URL Shortcuts 399
Site Management 399
Galleries 400
Page Maintenance 400
Appendix B: CSS Quick Reference 401
Appendix C: Hiding and Customizing Page Breadcrumbs 405
Appendix D: PowerShell Quick Reference 407
Backup and Restore 407
Features 407
Form Templates 407
Sites and Webs 408
Solutions 408
Users 408
Glossary 409
Index 411