Everything We Can Possibly Cover about Developing with SharePoint® Technology in an Hour's Time
Agenda This session is all about “what”, not “how” We’ll explain what’s different to developing with Windows SharePoint Services v3 and Microsoft Office SharePoint Server 2007 We’ll enumerate where within SharePoint Products and Technologies you can add your own code We’re here to provide a big picture – albeit a technical big picture We’ll point you to the places to go for more information about how to do all of these things
What is SharePoint Technology Designed to Accomplish?
Windows SharePoint Services version 3 Docs/tasks/calendars, blogs, wikis, e-mail integration, project management “lite”, Outlook integration, offline docs/lists Collaboration Platform Services Workspaces, Mgmt, Security, Storage, Topology, Site Model
Microsoft Office SharePoint Server 2007 Server-based Excel spreadsheets and data visualization, Report Center, BI Web Parts, KPIs/Dashboards Docs/tasks/calendars, blogs, wikis, e-mail integration, project management “lite”, Outlook integration, offline docs/lists Business Intelligence Collaboration Platform Services Workspaces, Mgmt, Security, Storage, Topology, Site Model Enterprise Portal template, Site Directory, My Sites, social networking, privacy control Rich and Web forms based front-ends, LOB actions, enterprise SSO Business Forms Portal Content Management Search Integrated document management, records management, and Web content management with policies and workflow Enterprise scalability, contextual relevance, rich people and business data search
How does SharePoint Technology Fit Together?
SharePoint Technology Stack Applications/Portals Collaboration Discussions Calendars E-Mail Presence Project Mgt. “Lite” Offline Enterprise Content Management Authoring Approval Web Publishing Policy/Auditing Rights Management Retention Multi-Lingual Staging Personalization My Sites Targeting People Finding Social Networking Privacy Profiles Search Indexing Relevance Metadata Alerts User Experience Business Application Integration Rich Forms Web Forms Biz Data Catalog Data in Lists LOB Actions Single Sign-On BizTalk Integration Business Intelligence Server Calculations Web Rendering KPIs Dashboards Report Centers SQL RS Integration SQL AS Integration Core Workspace Services Storage Repository Metadata Versioning Backup Security Rights/Roles Pluggable Auth Per Item Rights Trimming Management Admin UX Delegation Provisioning Monitoring Topology Config. Mgmt. Farm Services Feature Policy Extranet Site Model Rendering Templates Navigation Visual Blueprint APIs Fields/Forms OM and SOAP Events Deployment Operating System Services ADO.NET / SQL Server IIS Windows Workflow Foundation ASP.NET (Web Parts, Personalization, Master Pages, Provider Model for navigation, security, etc.)
Why Develop with SharePoint Sites?
Anatomy of a Page Request The typical ASP.NET way Browser: HTTP GET http://server/appname IIS C:\inetpub\wwwroot\appname web.config default.aspx myapp.css mycontrol.dll myothercontrol.ascx . . . Database
Anatomy of a Page Request The Windows SharePoint Services way Browser: HTTP GET http://server/appname IIS all work and no play makes Jack a dull boy all work and no play makes Jack a dull boy WSS Page Web Part Instances List data List view Web Part Assemblies Database Site Definition Default.aspx /bin or GAC WebPart1.dll WebPart2.dll schema.xml allitems.aspx
Many Sites on a Single Farm The typical ASP.NET way Browser: HTTP GET http://server/appname Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database IIS Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Default.aspx web.config otherpage.aspx mystyles.css Database Aaaaaaarrrrrggggh!!!!!
Many Sites on a Single Farm The Windows SharePoint Services way Browser: HTTP GET http://server/appname IIS all work and no play makes Jack a dull boy all work and no play makes Jack a dull boy WSS page Web Part Instances list data list view Web Part Assemblies Database Site Definition Default.aspx /bin or GAC WebPart1.dll WebPart2.dll schema.xml allitems.aspx
Why Develop with SharePoint Sites? Provisioning engine One project can yield thousands of instances Information store List and document management services Events and workflow Access via SOAP, WebDAV, et. al. Ready-to-use facilities you don’t have to write Pre-existing list templates Navigation, security, site administration, logging, etc.
A Quick Standardization of Terms IIS WSS v2 / SPS 2003 WSS v3 / MOSS Web Sites Virtual Servers Web Applications SPSite = WSS Site Collection SPWeb (or Web) = WSS Site Physical Server Web Application(s) Top Level Site(s) Site(s) Site(s) Site Collection
What Do You Build for Windows SharePoint Services? Store Enhancements Event Receivers Workflows Field Types Content Migration Security Policies Site Metadata Site Columns Content Types List Definitions UI Enhancements Web Parts Master Pages View Definitions Smart Clients SOAP WebDAV FrontPage RPCs Provisioning Site Definitions Feature Definitions Provisioning Assemblies
Data Lists, libraries, views Change logs Calendars / Contacts / Announcements / Links / Surveys / Discussions … Change logs Exposed on server via managed object model Exposed remotely via Web Services Documents Accessible via WebDAV or FrontPage RPCs You can create SOAP interface, but be careful
Smart Clients and Web Services Demonstration Smart Clients and Web Services
Events Before and after events List schema events SPWeb deletion events Events on lists and libraries Pre-synchronous with cancellation and filtering Multiple event receivers Event Receivers per list Item Attach events at SPWeb or Item Level
Demonstration Event Receivers
Workflow Windows Workflow Foundation embedded Types of projects Workflow activities Workflow assemblies Workflow metadata Workflow UI Tools Visual Studio SharePoint Designer
Metadata Site Columns Content Types Centralized Field Management e.g., all “Priority” fields should have 3 choices: 1, 2, 3 Inherits to subsites Content Types Reusable definition of a list schema Hierarchical Associate Behaviors Events Document Templates Workflows
Content Types and Site Columns Demonstration Content Types and Site Columns
ASP.NET Extensions Web Parts Custom pages Custom controls Application Pages (apply to all sites) Site Pages Master Pages Custom controls User/role providers Allow for forms-based authentication ASP.NET ships with SQL Server and Active Directory/ADAM providers in the box
Master Pages in SharePoint Sites Demonstration Master Pages in SharePoint Sites
Feature Definitions Collection set of components and specifications e.g., list, view, Web Part, workflow, content type, custom page Interdependent – useless without each other Installed as a set Activated in sites if site owner chooses Can be programmatically activated
Demonstration Feature Definitions
Site Definitions “Real” templates (c.f., user templates) Instructions for creating a site Assets referenced by a site Can be little more than a set of features Can call provisioning assembly code during site creation
Development Environment Tools Visual Studio 2005 Microsoft Office SharePoint Designer 2007 Platform Windows Server 2003
Use SharePoint Designer to… Write No-code workflows Modify CSS files Edit .aspx pages Add script to pages Customize look & feel of Web Parts Write XSLT to customize data rendering More…
Rich Data Views
Workflow in SharePoint Designer
Use Visual Studio to… Create code components Web Parts Event receivers Document converters Workflow activities, templates Create provisioning assets Site definitions Feature definitions XSDs provided for validating XML Create solution packages
Windows Server 2003 Windows SharePoint Services only runs on Windows Server 2003 or later You can develop without it, but… You need a copy to deploy/debug Options Make it your development OS Run it in a Virtual PC Have a standalone server at your disposal
Code Deployment Old School Method: New School Method: Manually copy files onto the file system Add web.config entries for assemblies Do IIS reset Repeat, on EVERY web front end! New School Method: Solution Packages
Solution Deployment How It Works WSS Config DB HelpDesk.wsp (WSS Solution Cab) add delete Feature Manifests Template Files UI, Command Line, OM “deploy” command deploy Assemblies retract New WFE Web Front End Servers
Solution Deployment Central Admin UI Solution Information Status Lang pack? Deployed? Scheduled Deployment This solution deploys to the GAC and to the bin Warns admin of GAC install Admins can choose particular Web Application
Site Deployment Content Migration APIs Uses change logs Builds CAB files with data, metadata changes Job server copies them to target server/site Job server applies them on target sever/site Used by Windows SharePoint Services to copy list/library content to other sites Extended by Microsoft Office SharePoint Server to deploy site applications
Microsoft Office SharePoint Server 2007 It’s an example of what you can build on Windows SharePoint Services It adds several declarative development options for solution development It adds several object models for custom extensibility projects
Office SharePoint Server as the Ultimate WSS Development Example Most of Microsoft Office SharePoint Server 2007 consists of: Features (with lots of components) Site Definitions Shared Services
What Can You Build for Microsoft Office SharePoint Server 2007? Business Intelligence Excel worksheets .NET User Defined Functions SQL Server Analysis Services cubes SQL Server Reporting Services reports Filter-aware Web Parts Search Custom Web Parts iFilters/Protocol Handlers Custom smart clients InfoPath Form Services Custom forms Records Management “Workflow” Policies Web Content Management Page Layouts Custom Deployment Jobs Business Data Catalog Custom UI components Entity Web services Custom Actions People/Personalization Privacy-aware Web Parts User profile import code User profile clients
Excel Services Excel Calculation Services Excel Web Access Loads workbooks Calculates them Refreshes external data Maintains session state Excel Web Access Web Part Excel Web Services ASMX
InfoPath Form Services Develop forms (client and server) Within InfoPath IDE Logic inspector Template parts (“formlets”) Migration from Word, Excel forms Visual Studio Tools for Applications (VSTA) Within Visual Studio via VSTO Forms become content type on publish Content type is responsible for extra UI
Business Data Catalog
Demonstration Business Data Catalog
Business Data Catalog Creating Web services You’d be doing this anyway to build a service-oriented architecture Make sure you have methods for display, enumeration Creating custom consumer components Custom Web Parts Custom synchronization methods Creating custom actions
Search Development Customize/extend Search Center Customize alerts Add tabs Modify XSLT, CSS on results Modifying query parameters Custom search Web Parts Customize alerts Index custom data Protocol handlers and iFilters Custom search Web service clients
Custom Search Web Parts
User Profile Store
Personalization Development Privacy policy-compliant code Custom synchronization Reading/writing information about: Users Profiles Memberships Colleagues Audiences Audience-targetable components
Enterprise Document Content Document Information Panels Policies Document converters Workflows Records repositories Search and Process Items
Enterprise Document Content Document Information Panels InfoPath forms Usable in Word Excel PowerPoint
Enterprise Document Content Policies Event Receivers Scoped to Lists/Libraries Content Types Policies Policy Item (settings) Policy Feature (assembly) Policy Resource (assembly) Can include client-side add-in logic
Enterprise Document Content Document Converters Packaged as Features Converter logic ASP.NET UI XML definition Dependent on shared services to manage execution, load balancing, etc. Relationship is preserved
Enterprise Document Content Workflows What’s unique to Office – beyond just Windows SharePoint Services Client components and UI if desired Additional activities SharePoint Designer InfoPath forms for workflow association, initialization, tasks
Web Content Management Professional Developer-level work Portal site provisioning assemblies Long-running operations Multi-language enhancements Navigation providers Field controls Deployment jobs Reporting Designer-level work Master pages and page layouts Placement of field controls, etc.
Summary There’s a lot going on here It’s yet one more way to use .NET skills Windows SharePoint Services Facilities for creating code components Provisioning engine Microsoft Office SharePoint Server Declarative options for creating solutions Additional object models Go here for more information: http://msdn.microsoft.com/sharepoint http://msdn.microsoft.com/office/sharepoint
Please fill out the survey forms Please fill out the survey forms! They are the key to amazing prizes that you can get at the end of each day Thank you!
Q & A