SharePoint 2013 – Customization & Development Jason Kaczor jason@kaczor.ca @jjkaczor +1 (403) 827-7276 Configuration Customization Development End-User / Browser Productivity Tools Composite Branding “App” .NET COM Solves the needs of one group/team/project? Configuration Customization Interacts with user-created SharePoint data? Configuration Customization Solves the needs of many groups / teams / projects? Customization Development Requires tightlycontrolled datamodel? Customization Development Globally re-usable? Development An “App” for SharePoint… Executes “OUTSIDE” of SharePoint Uses CLIENT APIs to talk to SharePoint (JS, REST, and .NET) Is the future proof way to add new capabilities to SP2013+ Is available from Corporate Catalog and/or SP Store Is easy to install by site owners or Tenant/Farm Admins Why does the SP2013 App Model Exist? When to use the new SP2013 App Model? … your SharePoint solutions require or consume: • • • • • • • Enhanced, custom or full-screen user interfaces App Parts Workflows and Remote Event Receivers External oData feeds Custom Ribbon/Menu Actions Custom Lists/Fields/Views/etc Capabilities offered by your Web host of choice When is NOT supported in the new App Model ? Question: What should we “build” as .NET developers within SharePoint ? “Massively Engineered Solutions”? … “Traditional” Development… (.NET or ‘Apps’) Components & Services … Site Owners, Designers & Business Analyst’s can use directly... Components & Services facilitate “Composite & ‘App’ Solutions” … “security” … … “self-service”… … “ownership”… … “empowerment”… … “governance”… SharePoint Development ‘Anti-Patterns’ AVOID the following SharePoint ‘Anti-Patterns’: Synchronous Code SharePoint as a “Database” Direct Requests to Remote Resources * List <> External Data Synchronization “In-process” Execution of Logic Code-based Workflows What to Build? & When? (How Frequently) Composite / ‘App’ Solutions Web Parts (Configured & Connected) Site Mailbox Incoming Outgoing E-mail E-mail List Forms Web Services (Consumption) Sites Pages Lists, Libraries & Views Composite / ‘App’ Solutions Excel (Charts, PivotTables, Reports & Dashboards) Visio Performance Point (Dashboards) (Data-Connected Diagrams) Reports (SQL RS) InfoPath Forms Access Apps (No-code) Word Automation PowerPoint Automation Composite / ‘App’ Solutions Business Connectivity Services Terminology Sets Workflows Site Columns Content Types Page Layouts Master Pages Composite / ‘App’ Solutions XSLT Custom client-site Field Rendering (JSLink) JavaScript CSS3 HTML5 Components (Declarative (CAML) Sandbox Solutions) List Instances Content Type Bindings Workflows List Templates Content Types Site Columns Ribbon Actions Item Menu Actions Site Definitions Views Forms Deployed Resources (Files) Components (.NET) Work Management Task Provider Application Pages Navigation Providers BCS Connection Assemblies Workflow Actions / Activities PowerShell Cmdlets Console Applications Components (.NET) Excel User-Defined Functions Document Converters Timer Jobs Authentication Provider Document ID Visio Services Data Provider Provider Feature Receivers NEVER HTTP Modules “web.config” Workflows (Code) Event Receivers User Controls iFilter Web Parts (COM) Fields CAML Views (.NET) XSLT Extensions