office 365 for developers
DESCRIPTION
Overview of features, techniques, features for developing on Office 365 Online. For technical decision makers, architects, developers.TRANSCRIPT
OverviewOffice 365 for DevelopersBruce KyleISV Architect EvangelistDeveloper & Platform Evangelism, West Region US Partner TeamMicrosoft Corporation
| Copyright© 2011 Microsoft Corporation
| Copyright© 2011 Microsoft Corporation
Agenda
• Developing for SharePoint Online Standard• What Is Supported• Sandboxed Solutions• Client Object Model• Windows Azure Integration• SharePoint Services & Workflow
• Migration Approaches• ISV Early Adoption Programs
Office 365 Overview
| Copyright© 2011 Microsoft Corporation
Announcing Microsoft Office 365
BRINGING TOGETHER CLOUD VERSIONS OF OUR MOST TRUSTED COMMUNICATIONS AND COLLABORATION PRODUCTS WITH THE LATEST VERSION OF OUR DESKTOP SUITE FOR BUSINESSES OF ALL SIZES.
What Is Supported; What Isn’t Supported
SharePoint Online Standard
| Copyright© 2011 Microsoft Corporation
Key Extensibility Points for SharePoint Online
• Sandboxed Solutions• SharePoint Server
Ribbon• SharePoint Dialog Boxes• Event Enhancements• Rest APIs
• Silverlight Webpart• Listbox Lookups &
Relationships• LINQ to SharePoint• Client Object Model
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4387e030-73dc-48e7-ac95-abc043b9335a
Architecture Guidelines
| Copyright© 2011 Microsoft Corporation
SharePoint Online Platform for Devs
• OOTB Browser• SharePoint Designer 2010• Visual Studio 2010• Sandbox Solutions• Code• Feature Receivers, Event Receivers, Navigation, Web Parts, InfoPath Forms Logic,
Custom Declarative Workflow Activities• Declarative• Declarative Workflows, Content Types, Site Columns, List Definitions, Lists, Custom
Ribbon Actions/Extensions, Web templates, Site Pages, Page Layouts, Master Pages
• Client Object Model• Silverlight, JavaScript• .NET
| Copyright© 2011 Microsoft Corporation
Supported
• WSP Installs• Branding• On the Server• Sandbox Solutions
• On the Client• Client Object Model
• SharePoint Services, Workflows
| Copyright© 2011 Microsoft Corporation
Supported - Branding
• Custom branding• Master Pages, Page Layouts• CSS• Themes
• Embedding custom controls and Silverlight applications• Web Part limitations
• Deploying .js files to the Master Page Gallery
Sandbox
SharePoint Online Standard
| Copyright© 2011 Microsoft Corporation
Administration
SharePoint 2010 SharePoint Online
| Copyright© 2011 Microsoft Corporation
Sandboxed Solution
• Designed for farm administrators to trust custom solutions will not damage or impair the SharePoint farm
• Gives site collection admins authority to manage apps in site collection
• Developers can create solutions deployed safely
| Copyright© 2011 Microsoft Corporation
Sandboxed Solutions
• Look and behave like farm solution• Sandboxed solution marked to allow partially trusted callers
• Scoped to SPSite / Site Collection• Web Parts• Lists• List Templates• Custom Actions• Workflows• Event Receivers• Content Types• Site Columns
• Compile time support within Visual Studio
| Copyright© 2011 Microsoft Corporation
Sandbox Benefits
• Removes risk of affecting processes outside the sandbox
• Deployment by site collection administrators• Increased scalability and flexibility are increased• A solution does not have to be modified or
recompiled if it is moved from a sandbox to running directly on the farm
| Copyright© 2011 Microsoft Corporation
Permitted Feature Elements
• ContentType • Field • CustomAction • Module • ListInstance • ListTemplate • Receivers• WebTemplate • WorkflowAssociation • PropertyBag • WorkflowActions
| Copyright© 2011 Microsoft Corporation
Sandbox Assemblies Cannot• Connect to resources that are not
located on the local server• Access a database• Change the threading model• Call unmanaged code• Write to disk• Access resources in a different site
collection
Office 365 Limitations Until GA++• No BCS• No Web Service Calls
| Copyright© 2011 Microsoft Corporation
Components You Can Deploy in Sandbox
• Web Parts• Event receivers• Feature receivers• Custom Microsoft SharePoint
Designer workflow activities• Microsoft InfoPath business logic
| Copyright© 2011 Microsoft Corporation
Sandbox Solution Support SummaryItem Template Sandbox Compatible?
Visual Web Part No
Visual Web Part (Sandboxed) Yes
Web Part Yes
Sequence Workflow No
State Machine Workflow No
Business Data Connectivity Model No
Application Page No
Event Receiver Yes
Module Yes
Content Type Yes
List Definition from Content Type Yes
List Definition Yes
List Instance Yes
Empty List Yes
User Control No
| Copyright© 2011 Microsoft Corporation
Sandbox Deployment
• WSP files• Solution Gallery located at root of site collection
Microsoft Conidential - NDA Only
| Copyright© 2011 Microsoft Corporation
Sandboxed Solution Monitoring• Quotas specify limits for
resource consumption per day• Summed across solutions deployed
to Site Collection• i.e.: add up CPU Points for all
solutions• Solution is self-regulated vs.
quotas to protect Site Collection• Throttled• Deactivated
| Copyright© 2011 Microsoft Corporation
Monitored Resources
Metric Name Description UnitsResources Per Point
Hard Limit
AbnormalProcessTerminationCount Process gets abnormally terminated Count 1 1
CPUExecutionTime CPU exception time Seconds 3,600 60CriticalExceptionCount Critical exception fired Number 10 3
InvocationCountNumber of times solution has been invoked
Count N/A N/A
PercentProcessorTime Note: # of cores not factored inPercentage Units of Overall Processor Consumed
85 100
ProcessCPUCycles CPU Cycles 1E+11 1E+11ProcessHandleCount Windows Handles 10,000 1,000
ProcessIOBytes(Hard Limit Only) Bytes written to IO
Bytes 0 1E+08
ProcessThreadCountNumber of Threads in Overall Process
Threads 10,000 200
ProcessVirtualBytes(Hard Limit Only) Memory consumed
Bytes 0 1E+09
SharePointDatabaseQueryCount SharePoint DB Queries Invoked Number 20 100
SharePointDatabaseQueryTimeAmount of time spent waiting for a query to be performed
Seconds 120 60
UnhandledExceptionCount Unhanded Exceptions 50 3
UnresponsiveprocessCountWe have to kill the process because it has become unresponsive
Number 2 1
| Copyright© 2011 Microsoft Corporation
Building Sandbox Web Part
Client Object Model
SharePoint Online
| Copyright© 2011 Microsoft Corporation
SharePoint Client Object Model
• Scoped SharePoint API• Microsoft.SharePoint.Client• Microsoft.SharePoint.Client.Runtime
• Works in• .NET Applications• Silverlight Applications• JavaScript
• Works on client machines (remote)• No need to install SharePoint runtime• Asynchronous operations• Security
Microsoft Confidential - NDA Only
| Copyright© 2011 Microsoft Corporation
Equivalent Objects
Server (Microsoft.SharePoint)
.NET Managed(Microsoft.SharePoint.Client)
Silverlight(Microsoft.SharePoint.Client.Silverlight)
ECMAScript(SP.js)
SPContext ClientContext ClientContext ClientContext
SPSite Site Site Site
SPWeb Web Web Web
SPList List List List
SPListItem ListItem ListItem ListItem
SPField Field Field Field
Member names mostly the same from server to client (e. g., SPWeb.QuickLaunchEnabled = Web.QuickLaunchEnabled)
| Copyright© 2011 Microsoft Corporation
Supported Areas
• Site Collections and Sites• Lists, List Items, Views, and List Schemas• Files and Folders• Web, List, and List Item Property Bags• Web Parts• Security• Content Types• Site Templates and Site Collection Operations
Microsoft Confidential - NDA Only
| Copyright© 2011 Microsoft Corporation
Client Object Model Execution Flow
JavaScript Controls and Logic
Managed Controls and Logic
Managed Object Model
Proxy
Proxy
JavaScript Object Model
Client Service
client.svc
Server Object Model
Content Databases
External Data Sources
ServerManaged Clients
Web Browsers
Microsoft Confidential - NDA Only
SPO-DOr BCS GA+
| Copyright© 2011 Microsoft Corporation
SharePoint Online and Silverlight• Silverlight• Many benefits• RIA• Web Services/Distributed Systems• SP Client Object Model makes SP/SPO solutions possible
• SPO• Limitations overcome by SL
• SPO + Silverlight• Common solution pattern for cloud solutions
Azure Integration
| Copyright© 2011 Microsoft Corporation
Extend & Scale
Developer Experience
Grow your business
Windows Azure Platform
Windows Platform in the Cloud
Cloud Storage
Connected Platform
Azure CloudApp
AppFabric
| Copyright© 2011 Microsoft Corporation
What’s Possible?
Azure Integration HowSharePoint Client Object Model Interact with Azure data in a list.
BCS Model data from Azure and/or build external list to SQL Azure.
Silverlight Create UI against Azure services or data.
Sandboxed Solutions Silverlight application leveraging Azure deployed to site collections.
Standard / Visual Web Parts Leverage services and data from Azure.
REST Use REST to interact with Azure data to integrate with SP artifacts.
Office Server Services Combine with OO to auto-gen docs (ex: PDFs) on server.
Workflow / Event Receivers State or events that tie into Azure services or data.
LINQ Use for querying Azure data objects.
Search Federate search to include Azure data.
Microsoft Confidential - NDA Only
SPO-D or GA+
SPO-D
| Copyright© 2011 Microsoft Corporation
Calling External Code
Microsoft Confidential - NDA Only
SharePoint OnlineInternet
Azure
User
ACS 2.0
SPO
Services
Services
OAUTH2.0
Post-GA
Post-GA
| Copyright© 2011 Microsoft Corporation
Accessing External Data
Microsoft Confidential - NDA Only
SharePoint Online
Internet
Azure
User
ACS 2.0SPO
Data
Data
OAUTH2.0
BCS
Post-GA
Post-GA
| Copyright© 2011 Microsoft Corporation
Exposing SP Data to External Code
Microsoft Confidential - NDA Only
SharePoint Online
Internet
Azure
User
SPO
Data
OAUTH2.0
Web Application
Web Application
Post-GA
| Copyright© 2011 Microsoft Corporation On Premise
Azure AppFabric Service Bus Flow
YourService
Users
Azure AppFabric Service Bus Relay
Excel & Access ServicesWorkflow Solutions
SharePoint Online
| Copyright© 2011 Microsoft Corporation
SharePoint Services Summary
• Excel Services• Surface Excel data and artifacts in SharePoint Online• Publish pieces of Excel workbooks to SharePoint Online• Interact with Excel data and artifacts with the REST API
and JavaScript Object Model• Access Services• Convert Access databases to SharePoint lists and forms
| Copyright© 2011 Microsoft Corporation
Workflow Services
• Prototype workflows in Visio 2010• Use diagrams to get sign-off
• Implement the workflow in SharePoint Designer 2010• Custom or copy & modify built
in workflow• Actions, conditions and steps
• Develop custom workflow actions and events in Visual Studio 2010
| Copyright© 2011 Microsoft Corporation
Workflow Services• Implemented via Workflow Event Receiver• Override SPWorkflowEventReceiver
• Scope• SPSite• SPWeb• SPList• SPContentType
• Events• WorkflowStarting• WorkflowStarted• WorkflowCompleted• WorkflowLoading• WorkflowUnloading • WorkflowPostponed
• Can’t export from SPD2010 to VS2010• Can’t build Visual Studio code workflows in a sandboxed solution
Common SharePoint Migration Approaches
| Copyright© 2011 Microsoft Corporation
Application Components
• What components make up your applications?• Solutions• Features
• How are they scoped?• Farm, Site, Web
• How do these components map to your target environment?• What changes need to be made?
| Copyright© 2011 Microsoft Corporation
Multiple paths are possible
• Greenfield• Rewrite components to adhere to best practices before migrating• Migrate data to new locations
• Brownfield• Migrate pieces that work in the target environment• Update architecture later• Ex: http://sharepoint2010.microsoft.com
• Migrate data as needed, or not at all• Gradual vs. Complete• Creating an SPO compatible on premise solution for later
migration.
Microsoft Confidential - NDA Only
| Copyright© 2011 Microsoft Corporation
Capabilities By Solution TypeScenario Sandbox Hybrid Full-TrustCreate a Web Part that aggregates data from multiple SharePoint lists within the same site collection. *
x x x
Create a Web Part that aggregates data from multiple SharePoint lists from different site collections within the same SharePoint farm.
x x
Create a Web Part that aggregates data from multiple SharePoint lists from different site collections from different SharePoint farms.
x x
Create a Web Part that displays data from an external list. x xCreate a Web Part that interacts with a Web service or a Windows Communication Foundation (WCF) service.
x x
Create a workflow in SharePoint designer. x x xCreate a sandbox workflow action (a method call). xCreate a full-trust workflow activity. x xCreate a workflow in SharePoint designer that uses a full-trust custom coded workflow activity.
x x
Create a fully coded workflow. x
Microsoft Confidential - NDA Only
| Copyright© 2011 Microsoft Corporation
Capabilities By Solution Type
Scenario Sandbox Hybrid Full-TrustDeploy a new list definition. x x xDeploy a new list definition with list item event receivers. x x xDeploy a list definition with list event receivers. x x xDeploy a site definition. x x xCreate a content type. x xCreate an external content type.** xCreate a new ribbon element. x x xCreate a new Site Actions menu item. x x xCreate an instance of a SharePoint list. x x xProgrammatically create a SharePoint subsite. x x xBind a content type to the home page of a SharePoint subsite. x xDeploy a new application page. xCreate a timer job. xCreate a service application. x
Microsoft Confidential - NDA Only
| Copyright© 2011 Microsoft Corporation
Mash Up Pattern
Microsoft Confidential - NDA Only
SharePoint Online
On Premises
User
Client Application
SharePoint 2010
SharePoint Online
Services
Client Data Model
Client Data Model
| Copyright© 2011 Microsoft Corporation
Web Application
Microsoft Confidential - NDA Only
SharePoint Online
On Premises
UserSharePoint 2010
SharePoint Online
Services
Server Application
Client Data Model
Client Data Model
Data
Lync Online
| Copyright© 2011 Microsoft Corporation
Lync Online Features
• Presence, IM, audio, video, and screen sharing• Lync Web App for online presentations with external
contacts• Federation with customers and partners• Reply by IM from Outlook• IM with Windows Live contacts• Presence and click-to-communicate from Office and
SharePoint
| Copyright© 2011 Microsoft Corporation
Lync Controls
• “Drag and Drop” feature integration• Contact list, contact search• Presence, contact info,
custom contact list• IM and audio “Click-to-Call”• Supports contextual
conversations
| Copyright© 2011 Microsoft Corporation
Contextual Conversations
• Launch applications from the Lync conversation window
• Lync Extensibility Window Context• Host Silverlight
applications in the Lync conversation window extension
• Use separately or combine
Exchange Online
| Copyright© 2011 Microsoft Corporation
Use Exchange Managed Web API
• Managed API for developing applications that use Exchange Web Services • Functional parity with EWS*• Easier than working with EWS proxy classes
• Makes EWS calls under the covers• No additional required server side components
• Backwards compatible• Request versioning
new ExchangeService(ExchangeVersion.Exchange2010_SP1);
• Cloud compatible out of the box
| Copyright© 2011 Microsoft Corporation
Development Scenarios
• I want Exchange data in my application• Create/Read/Update/Delete operations on mailbox items:
• Appointments• Attachments• Contacts• Emails• Tasks• Public Folders
• I want to leverage Exchange business logic• I want Outlook feature “X” in my application
• Free/Busy• Notifications• Data Sync
| Copyright© 2011 Microsoft Corporation
About Exchange Online
• Exchange Web Services Managed API 1.1• Power of Exchange Web Services• Productivity of .NET• Interact with Exchange data from your
applications• Leverage Exchange business logic in your
applications
Resources
| Copyright© 2011 Microsoft Corporation
Resources – Office 365 Overview
• Office 365• http://office365.microsoft.com
• Office 365 Developer Training Kit• http://msdn.microsoft.com/en-us/sharepoint/gg153540.aspx
• Microsoft Office 365 Fact Sheet• http://www.microsoft.com/presspass/presskits/office/docs/office365
FS.docx• Office 365 Beta Service Descriptions• http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6c6
ecc6c-64f5-490a-bca3-8835c9a4a2ea• SharePoint Online Developer Resource Center • http://msdn.microsoft.com/sharepointonline
| Copyright© 2011 Microsoft Corporation
Resources - Developers• Developing, Deploying, and Monitoring Sandboxed Solutions in
SharePoint 2010• http://msdn.microsoft.com/en-us/magazine/ee335711.aspx
• SharePoint Online Standard Developer Guide• http://
www.microsoft.com/downloads/en/details.aspx?FamilyID=d007f35e-375c-4b11-bc40-bc9082bb224a&displaylang=en
• Microsoft Patterns & Practices – SharePoint 2010• http://msdn.microsoft.com/en-us/library/ff770300.aspx
• SharePoint 2010 Training Kit• http://channel9.msdn.com/learn/courses/SharePoint2010Developer/
• SharePoint 2010 Training Kit - Client Object Model• http://channel9.msdn.com/learn/courses/SharePoint2010Developer/
ClientObjectModel/
| Copyright© 2011 Microsoft Corporation
Resources - Developer
• Best Practices: Common Coding Issues When Using the SharePoint Object Modelhttp://msdn.microsoft.com/en-us/library/bb687949.aspx
| Copyright© 2011 Microsoft Corporation
ISV Resources
• Join Metro Connect Office 365 and (SharePoint)Azure
http://connect.microsoft.com/metro Deep dives, software design reviews, porting events
• Office 365 Beta http://office365.microsoft.com/
• Microsoft Partner Network Online Services Sales Guideshttps://partner.microsoft.com/40053541
| Copyright© 2011 Microsoft Corporation
Summary
• Functionality available in sandboxed solutions• Develop on-premise• Deploy to SPO• Debugging and troubleshooting
• Architect for the sandbox• Server code runs in sandbox• Silverlight
• Call external web services• Azure
• Call Azure-hosted WCF services from Silverlight web parts• Use the Azure AppFabric Service Bus to call on-premise WCF services• Use Azure Worker Roles to simulate long running services
• BCS coming soon after launch
| Copyright© 2011 Microsoft Corporation
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.