38
Talbott Crowell ThirdM @talbott Custom SharePoint Development in SharePoint What are My Options Now?

Custom Development in SharePoint – What are my options now?

Embed Size (px)

DESCRIPTION

Since Microsoft has released SharePoint 2013 with a whole new application development methodology, there has been some confusion and frustration in the community on what the best approach for customizing SharePoint for developers. In this session, we will look at the options, new and old, and discuss the pros and cons. We may even see some novel approaches you haven’t thought about yet.

Citation preview

Page 1: Custom Development in SharePoint – What are my options now?

Talbott CrowellThirdM

@talbott

Custom SharePoint Development in

SharePointWhat are My Options Now?

Page 2: Custom Development in SharePoint – What are my options now?

Talbott Crowell

SharePoint Saturday New Hampshire

September 21st, 2013

Custom SharePoint Development in SharePoint – What are My Options Now?

Page 3: Custom Development in SharePoint – What are my options now?

About Me• http://about.me/talbott • Solutions Architect at ThirdM• A Founder of SharePoint Saturday Boston• Microsoft MVP• Blogger and Author• @talbott

Page 4: Custom Development in SharePoint – What are my options now?

About this Talk• For Developers

• Who want to build Custom Solutions on SharePoint

• For Architects• Who want to understand options and architecture considerations of

the different options for building applications on SharePoint

• For Anyone • Who wants to learn more about SharePoint 2013 and previous

versions and what is possible for customization of this great platform

Page 5: Custom Development in SharePoint – What are my options now?

App Development History• SharePoint 2003 – Web Parts• SharePoint 2007 – Farm Solutions & SPD

• WSP (A CAB file with deployment assets and instructions) which may include:• Server Code (.NET Assemblies for GAC or BIN)• Client Code (JavaScript Files, CSS, HTML)• ASP.NET (ASPX, ASCX, Master Pages), Images,

Site templates, List definitions, Content Types (CAML), Layouts, various other types of content

• SPD (SharePoint Designer)• Create custom solutions with Workflows,

JavaScript, HTML, jQuery, Master Pages, Layouts stored in Content Database

• SharePoint 2010• Sandbox Solutions

• SharePoint 2013• Apps for SharePoint

Page 6: Custom Development in SharePoint – What are my options now?

What are My Options Today• For SharePoint 2007 and SharePoint 2010

• OOTB Configuration• CSS, JavaScript, Web Parts

• SharePoint Designer (with designer view)• Master Pages, Page Layouts, Power Editing

• Visual Studio WSP• SharePoint Solutions

• Can contain: CAML declarative XML• Compiled .NET Code (.NET Assemblies)• Features (Scoped at Farm, Web Application, Site Collection, or Site)

• For SharePoint 2010 only• Sandbox Solutions

• WSP with Compiled .NET Code and CAML declarative XML

Page 7: Custom Development in SharePoint – What are my options now?

What are My Options Today• For SharePoint 2013

• OOTB Configuration• CSS, JavaScript, Web Parts

• SharePoint Designer (without designer view)• Master Pages, Page Layouts, Power Editing

• Visual Studio WSP• SharePoint Solutions

• Can contain: CAML declarative XML• Compiled .NET Code (.NET Assemblies)• Features (Scoped at Farm, Web Application, Site Collection, or Site)

• Sandbox Solutions• WSP without Compiled .NET Code • Can contain only CAML declarative XML

• Apps for SharePoint

Page 8: Custom Development in SharePoint – What are my options now?

What are My Options Today• For Office 365 (aka SharePoint Online)

• OOTB Configuration• CSS, JavaScript, Web Parts

• SharePoint Designer (without designer view)• Master Pages, Page Layouts, Power Editing

• Sandbox Solutions• WSP without Compiled .NET Code • Can contain only CAML declarative XML

• Apps for SharePoint

Page 9: Custom Development in SharePoint – What are my options now?

Factors in Choosing• Size of Development Team

• Just you or a group of people?

• Skillset• Leverage existing skills: JavaScript, C#, etc…

• Development Environment• Depending on what you choose, the cost for development

workstations can vary immensely

• Requirements• Of course this should be #1, what are you trying to accomplish?• This can be the most important factor on choosing between the

many different API’s and customization options

• Maintainability/Upgradeability

Page 10: Custom Development in SharePoint – What are my options now?

Choose the right API set in SharePoint 2013

http://bit.ly/sp2013api

Page 11: Custom Development in SharePoint – What are my options now?

Server Object Model• The largest set of APIs is in the server object model of

managed classes• Workflow, Alerts, Web Parts, Search, BCS• Many more classes are added in SharePoint 2013 for

• Enterprise Content Management (ECM)• User profiles• Taxonomy• Advanced search

Page 12: Custom Development in SharePoint – What are my options now?

Client Object Models• Microsoft Options

• .NET client object model • Silverlight Client Object Model

• SilverlightWebPart class

• Mobile object model• REST/OData endpoints• WCF Data Services Framework

• http://bit.ly/sp2013api

• SPServices

Page 13: Custom Development in SharePoint – What are my options now?

REST/OData endpoints• For non-JavaScript clients

• C#, Java, etc…

• CRUD Operations on SharePoint lists• Target the client.svc web service

• Accepts a RESTful HTTP Request• Responds with either Atom or JSON

• Example:• http://server/site/_api/web/lists(‘guid’)/items?$filter=City eq

‘Nashua’

Page 14: Custom Development in SharePoint – What are my options now?

Deprecated API sets

Two API sets are still supported in the SharePoint 2013 framework for backward compatibility, but we recommend that you not use them for new projects

1. ASP.NET (asmx) web services

2. Direct Remote Procedure Calls (RPC) calls to the owssvr.dll file

Page 15: Custom Development in SharePoint – What are my options now?

SPServices• Compatible with SharePoint 2007, 2010, 2013• Based on asmx web services• Created and maintained by Marc Anderson• Great client side JavaScript library• http://spservices.codeplex.com/

Page 16: Custom Development in SharePoint – What are my options now?

What is a Provider Hosted App• SharePoint 2013 Compatible Application• Hosted outside of SharePoint

• Azure• Amazon Web Services (AWS)• Rackspace• Your Datacenter• An on-premise server in your customer’s Datacenter (you provide

the Application, Hardware, and/or VM)

• Written in any language on any platform• Java, F#, Ruby, Linux, Unix

Page 17: Custom Development in SharePoint – What are my options now?

Apps for SharePoint Hosting Options• Provider Hosted Apps

• SharePoint 2013 on-premise or Office 365

• Unlimited scaling

• Autohosted Apps• Typically Azure Web Sites written in

.NET• Runs only in Office 365 (no on-

premise option)• Uses the consumers Office 365

Azure resources

• SharePoint Hosted Apps• Client side only (JavaScript,

jQuery, HTML, CSS)• Uses CSOM to manipulate

SharePoint object

• http://bit.ly/spapphosting

Page 18: Custom Development in SharePoint – What are my options now?

Provider Hosted Apps

SharePoint 2013

Provider Hosted

app

Provider Service

Office 365 Data Centeror On-Premise SharePoint 2013 Farm

Application Runtime and Backend(Can be anywhere: On-Premise or Cloud)

Customer Provider

Provider Data

Page 19: Custom Development in SharePoint – What are my options now?

Alternative Using Autohosted

Office 365(SharePoint

Online)

Autohosted app

Windows Azure

Azure Database

Provider Service

Office 365 Data Center (including Azure)

Application Runtime and Backend(Cloud Service you Host)

Customer Provider

Provider DataCustomer Data

Page 20: Custom Development in SharePoint – What are my options now?

Provider Hosted Architecture• Store or App Catalog – Deployment Manifest .APP file• App Manifest – Declare App Permission Requests• Trust Settings – User must “allow” or “trust” your app• Provider receives Request with Trust Token• Provider uses CSOM to call back to SharePoint using the

Trust Token• SharePoint persists changes made by the Provider in the

Content Database (just like SharePoint Designer)

Page 21: Custom Development in SharePoint – What are my options now?

Costs of Being a Provider• Need to maintain and cover hosting cost

• But you can extend your app to other ecosystems outside of SharePoint• iPad, Facebook, Kindle, Salesforce

• Changes will affect ALL customers• May need a versioning strategy for customers in Life Sciences

(long validation lifecycle)

Page 22: Custom Development in SharePoint – What are my options now?

Benefits of Provider Hosted• Does not tax the SharePoint Farm’s resources as much

as Farm Solution might• Update 1000’s of SharePoint Farms with one release

update to the Provider• Centrally managed at the Provider’s location• Develop on any platform using any language leveraging

your existing developer and infrastructure knowledge• Same App works on Office 365 and SharePoint 2013 on-

premise

Page 23: Custom Development in SharePoint – What are my options now?

Development Model• Get Started using Azure and Office 365 Preview

• Many Blog posts on getting started

• Deploy your Provider Hosted app to your Provider (Azure, AWS, Rackspace, local server)

• Deploy your .APP file to SharePoint

Page 24: Custom Development in SharePoint – What are my options now?

Development System Requirements• Visual Studio 2012

• On Premise Development Environment• http://bit.ly/spappdevenv

• Office Developer Tools for Visual Studio 2012• http://bit.ly/spapptools

Page 25: Custom Development in SharePoint – What are my options now?

Developing Apps? Development Environment Decisions• Office 365 or On-Premise?

• If Office 365, Visual Studio 2012• If On-Premise then build your SharePoint 2013 Dev

Server• Windows Server 2012 or Windows Server 2008 R2 SP1• http://msdn.microsoft.com/en-us/library/fp161179.aspx • http://msdn.microsoft.com/en-us/library/fp179923.aspx

• Andrew Connell’s Critical Path Training • SharePoint 2013 Setup Guide for Developers

• http://bit.ly/cp2013setup

Page 26: Custom Development in SharePoint – What are my options now?

App Packaging• Start with Visual Studio 2012 Project Template• .APP

• Contains AppManifest.xml• Set Permission Requests for your App• Start Page• Client ID

• App Icon Image File

• You can unpack the .APP by renaming .ZIP

Page 27: Custom Development in SharePoint – What are my options now?

Security• Client Secret vs Certificate

• Client Secret requires SharePoint is farm connected to ACS• Azure ACS (Access Control Service)• Office 365 is already connected to ACS

• AppManifest.xml (.APP)• Contains permissions

• OAuth• TokenHelper.cs (runs on the Provider)

• Helps you manage requests for app tokens• If you are developing in another language you will need to implement

this yourself

Page 28: Custom Development in SharePoint – What are my options now?

CSOM• Client Side Object Model• Rich improvements over 2010• .NET version• JavaScript version• http://bit.ly/csom2013

Page 29: Custom Development in SharePoint – What are my options now?

Scope of Access• What can you get to from CSOM?

Page 30: Custom Development in SharePoint – What are my options now?

Series by Jeremy Thake• Introducing SharePoint Apps Playbook Series

• http://bit.ly/appsplaybook

• Real world experience building Apps for SharePoint

Page 31: Custom Development in SharePoint – What are my options now?

App Model Review• SharePoint has completely new Development Model

• Leverage existing understanding with CSOM• Leverage existing other technology knowledge• Update many customers (or Farms) at once• Costs and Benefits of being a Provider• Security with OAuth• Package and Deploy to Store

Page 32: Custom Development in SharePoint – What are my options now?

Development Environment Options• CloudShare

• http://cloudshare.com/

• Windows Azure• if you have MSDN

• Stand up a Server with HyperV• MSDN licenses

• Buy a powerful workstation or laptop with adequate RAM, etc..

• If you are doing OOTB• just a Browser

• If you are doing SharePoint Designer• No need for powerful workstation

Page 33: Custom Development in SharePoint – What are my options now?

Session Review• Many choices in customization

• OOTB, SharePoint Designer, C#, jQuery, Sandbox Solutions, Full Trust Farm Solutions, Apps for SharePoint

• Factors on Choosing• Requirements, Maintainability, Upgradability, Development Team

Skillset, Budget, etc…

• Where to Go to Learn more…

Page 34: Custom Development in SharePoint – What are my options now?

Resources• My Blog for Slides, Questions, and Follow up information

• http://bit.ly/tcrowell

• Pluralsight Videos by Andrew Connell• Over 12 hours of Video• http://bit.ly/acplural

• Microsoft MSDN Documentation on Apps for SharePoint• http://bit.ly/spappmsdn

• CloudShare for developer and test hosting• http://www.cloudshare.com/

Page 35: Custom Development in SharePoint – What are my options now?

More Resources• Jeremy Thake’s SharePoint Apps Playbook Series

• http://bit.ly/appsplaybook

• Choose the Right API Set in SharePoint 2013• http://bit.ly/sp2013api

• SPServices for SharePoint 2007, 2010, and 2013• http://spservices.codeplex.com/

• CloudShare• http://cloudshare.com/

Page 36: Custom Development in SharePoint – What are my options now?

Custom SharePoint Development in SharePoint – What are My Options Now?

Presented by Talbott Crowell

@talbott

Questions?

Thank You

Page 37: Custom Development in SharePoint – What are my options now?

was made possible by the generous support of the

following sponsors…

And by your participation… Thank you!

Page 38: Custom Development in SharePoint – What are my options now?

Be sure to fill out your eval form & turn in at the end of the day for

a ticket to the BIG raffle!

Join us for the raffle & SharePint following

the last session