Office 365 for Developers


Published on

Overview of features, techniques, features for developing on Office 365 Online. For technical decision makers, architects, developers.

Published in: Technology
1 Comment
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Microsoft® Office 365delivers the power of cloud productivity to businesses of all sizes, helping to save time, money and free up valued resources. Office 365 combines the familiar Office desktop suite with cloud-based versions of Microsoft’s next-generation communications and collaboration services: Exchange Online, SharePoint Online and Lync Online. Office 365 is simple to use and easy to administer – all backed by the robust security and guaranteed reliability you expect from a world-class service provider.Microsoft Office 365 Includes:Microsoft® Office Professional PlusThe world’s leading productivity tool now seamlessly connected and delivered with cloud services – for the best productivity experience across the PC, Phone and Browser.Exchange OnlineCloud-based email, calendar and contacts with always-up-to-date protection from viruses and spam.SharePoint OnlineCloud-based service for creating sites to connect colleagues, partners and customers.Lync OnlineCloud-based instant messaging, presence, and online meeting experiences with PC-audio, video conferencing and screen sharing. Key Microsoft Office 365 Benefits:Anywhere-access to email, documents, contacts, and calendars on nearly any device Work seamlessly with Microsoft Office and the other programs your users already count on everydayBusiness-class features including IT-level phone support,  guaranteed 99.9% uptime, geo-redundancy, and disaster recoveryPay-as-you-go pricing options which give you predictability and flexibility for all or part of your organizationLatest version of Business Productivity Online Suite (BPOS), which has millions of business users today Microsoft® Office 365 for small businesses offers an easy-to-use set of web-enabled tools for small businesses, independent consultants and professionals looking for business-class productivity services. Working with the tools people know and use today, Office 365 provides anywhere access to email, important documents, contacts, and calendars on nearly any device. It’s free for the first 30 days and then just $6 per user per month. Microsoft® Office 365 for enterprises brings together cloud versions of our trusted communications and collaboration software with our familiar Office Professional Plus desktop suite. It is designed to help meet your IT needs for robust security, 24/7 reliability, and user productivity.We have a variety of plans to meet the needs of businesses of all sizes and varying IT needs. Priced from $2 - $28 per month per user, each plan has the same 99.9% uptime guarantee and includes the security and support you expect from Microsoft. Office 365 offers great flexibility by allowing businesses to provide users access to only the services they need and pay-as-you-go pricing options. Microsoft® Office 365 for education provides your institution with the same great communication and collaboration experiences used in enterprises around the world while saving time and money. Microsoft Office 365 for education delivers all of this and more while training students on familiar software which employers depend upon.
  • Sandboxed solutionsA sandboxed solution is deployed at the site collection level by using the SharePoint solution gallery, and it cannot access data outside of the site collection in which it was deployed. In addition, a sandboxed solution cannot invoke certain security-related functionality, such as running with elevated privileges. All of these restrictions are put in place to ensure that malicious or poorly performing code cannot adversely affect the SharePoint Online environment. As a result, site collection administrators can feel confident about uploading and activating a sandboxed solution. SharePoint Online supports the deployment of sandboxed solutions that restricts the operations that your code can perform, and also provides a monitoring environment to verify that code does not adversely impact other sites. Note: Developing a sandboxed solution is the only way you can upload and run custom code in SharePoint Online.SharePoint Server ribbonThe SharePoint Server ribbon provides a consistent user interface for working with SharePoint objects. The ribbon includes tabs and controls that appear at the top of the browser interface, providing a consistent location to perform tasks for users of your SharePoint site.SharePoint dialog boxesSharePoint provides a dialog box platform that enables modal dialog boxes to be included in custom solutions that fit in with the style of a SharePoint page. By using dialog boxes, users are encouraged to focus on the information that is presented to them, and then interact with and close the dialog box before continuing to work with the site. Dialog boxes enable the creation of responsive user interfaces so that users can complete data entry boxes from the pop-up dialog box on the existing page, instead of having to navigate to a new page to complete the data entry task. In many cases, they improve performance by reducing the number of page requests and round trips to the server.Silverlight Web PartSharePoint 2010 provides a Silverlight Web Part that you can use to easily add a Silverlight application to a page in your site. You can upload a Silverlight application to a library in your SharePoint site and then configure the Silverlight Web Part to load your Silverlight application.List lookups and relationshipsSharePoint 2010 enables you to create relationships between lists in your SharePoint site collection. For example, you can specify that the column for a list can take values that exist only in another list elsewhere on the site. Using a defined lookup, you can use join statements in Collaborative Application Markup Language (CAML) or LINQ to SharePoint to query across lists.LINQ to SharePointSharePoint 2010 includes the LINQ to SharePoint provider, which translates LINQ statements to CAML queries. LINQ is a standard query language and, when applied to SharePoint, it enables developers to query SharePoint lists without requiring them to learn the CAML syntax that is used internally by SharePoint.Event enhancementsSharePoint 2010 provides new events that you can use when developing applications for your SharePoint site. Events enable you to intercept an action and run code either pre-event or post-event, as part of a sandboxed solution.Workflow enhancementsIn SharePoint 2010, you can associate workflows with the site and with a particular list. This enables you to create workflows that affect multiple lists or start workflows that do not affect lists. Workflows also support new events that enable complex business processes to be chained together in a modular, manageable way. Note: You can develop code for workflow events only in sandboxed solutions.Client object modelThe client object model is a client-side set of technologies that exposes SharePoint 2010 server-side objects and data on client computers. By using the client object model, you can develop applications that run on the client computer through familiar development concepts, such as objects, properties, events, and methods.REST APIsSharePoint 2010 provides access to server data through the Representational State Transfer (REST) API. By using REST, lists and list items are represented as HTTP resources that can be addressed by remote URLs.
  • Important to note here that the only installs that are supported are WSP installs .. And they are made by the site collection admin.
  • Demo is available in the kitYou can use SharePoint Designer to do the custom brandingAdding a Silverlight Application to a Master PageTask 1 – Create a Library for the Silverlight ApplicationTask 2 – Create the Custom Master PageTask 3 – Customize the Master PageTask 4 – Apply the Custom Master Page
  • Sandboxed solutions challenge, however, has always been the balance between creating solutions and deploying them in a way that you can trust will not damage or impair the SharePoint farm. Farm administrators are responsible for maintaining the health and integrity of the SharePoint farm, and often this means putting complicated, time-consuming processes in place to test and validate solutions deployed to the farm. This need is counter to the rapid application model used to create SharePoint solutions, and it complicates the deployment of third-party solutions. A new feature in SharePoint 2010, called sandboxed solutions, addresses many of these concerns, enabling farm administrators to feel comfortable that the SharePoint farm is safe, giving site collection administrators the authority to manage the applications in their site collection, and providing developers with the flexibility to create solutions they know will be deployed in a safe and rapid manner.
  • A sandboxed solution looks and behaves like a farm solution, but a sandboxed solution’s assembly must be marked to allow partially trusted callers. The Sandboxed Solution property is configured in the properties window of the project. Remember that a sandboxed solution can be deployed as a full-trust solution and gain the expanded capabilities that come with running in full trust because nothing in the .wsp solution file specifies it as a sandboxed solution or a farm solution. This is determined by how the solution is deployed.Generally you can do most things you can with full solutions, at least those within the context of a site collection. You cannot deploy files on disc or assemblies to the GAC.
  • Solutions can be added to a production SharePoint Server environment without the risk of affecting processes outside the sandboxSite collection administrators can deploy sandboxed solutions, freeing farm administrators from this taskScalability and flexibility are increased because sandboxes run in separate process that can be restricted by quotas, and their effect on the farm can be monitoredA solution does not have to be modified or recompiled if it is moved from a sandbox to running directly on the farm
  • Quotas managed byMSOnline – cannot be modified by individual customers because it is a shared environment.See link to MSDN blog on quotas.Describe the various ways that the sandbox is limited and how the limitations affect what you can and cannot do in the sandbox.
  • Sandboxed solutions have access to a large subset of functionality in the Microsoft.SharePoint namespace. Essentially all the classes below SPSite are available. This means that SPSite, SPWeb, SPList, and SPListItem are all available. In a sandboxed solution, you can create Web Parts, list definitions and instances, content types and fields, modules, declarative workflows, and event receivers. The complete sandboxed API is documented in the SharePoint SDK.
  • In general, the sandbox process prevents you from accessing data outside the site collection where the solution has been deployed. This means, for example, that you can’t access the Internet to make Web service calls, you can’t access a hard drive to read or write files, and you can’t access code that is not marked to allow partially trusted callers. You also can’t deploy files to disk or add assemblies to the GAC in a sandboxed solution, and security-related functionality, such as running RunWithElevatedPriviledges and other SPSecurity methods, is not allowedBCS to ship in service update prior to the next major Rev
  • But what you can do is read and write to lists and libraries within the same site collection. The sandbox provides enough functionality to build most of the applications that are required at a site level. At times, however, you might want to enable your sandboxed solutions to reach outside the sandbox to perform a trusted operation, such as calling a Web service or accessing a database. The best way to reach out of the sandbox is by using the Business Connectivity Services (BCS) to create an external content type. You can then read and write to the data source from the sandboxed solution. Another, more advanced, way to reach outside the sandbox is to create a class that runs in a full-trust process outside the sandboxed worker process to proxy calls. This proxy class is deployed as a farm solution and is callable from the sandboxed solution. Although it is outside the scope of this presentation to describe how to create a full-trust proxy, you should be aware of the functionality.
  • Code components:Feature receiversEvent receiversSPItemEventReceiverSPListEventReceiverSPWebEventReceiverNavigationWeb Parts (if derived from the WebPart class)Microsoft InfoPath forms logicSharePoint Designer workflow activitiesSandboxed solutions workflow activitiesDeclarative components:Declarative workflowsContent types, site columnsLists and list definitionsVisual and nonvisual Web PartsCustom actions, ribbon extensionsClient-side technologiesWeb templates, site pages, page layouts, and master pagesThe following capabilities and elements are not supported in sandboxed solutions:Access to the Internet to make web service callsAccess to a hard disk to read or write filesYou can, of course, read and write to lists and libraries within SharePoint OnlineWeb application-scoped or farm-scoped FeaturesAdding assemblies to the global assembly cacheRunning security-related functionality; for example, RunWithElevatedPrivileges or other SPSecurity methodsCustom Action groupsHideCustomAction elementContent type bindingWeb Part connections
  • The structure of a sandboxed solution is very similar to a farm solution, which generally runs with full-trust permissions. The main differences lie in how a sandboxed solution is deployed and in the process that hosts the solution (which determines whether a solution is a sandboxed solution or a farm solution). This means that the same sandboxed solution can run with full trust when it’s deployed at the farm level and with partial trust when it’s deployed at the site collection level. (Office 365 apps don’t run at the farm level. They run at the site level.)A SharePoint solution is a deployable package that can contain features and assemblies. The solution package is a .cab-based file with a .wsp extension. Visual Studio 2010 SharePoint project templates create .wsp package files. A solution might contain a number of SharePoint features, and these features provide functionality such as Web Parts, list definitions, modules, and event receivers.Site collection administrators now have the authority to upload, activate, delete, and manage sandboxed solutions using the new Solution Gallery, which is a repository of sandboxed solutions. The gallery also enables a site collection administrator to monitor a solution’s usage against a resource quota. The Solution Gallery is simply a standard SharePoint list that stores the .wsp file. It is located under the _catalogs folder at _catalogs/solutions. The gallery is added to your site collection when you upgrade from a SharePoint 2007 site collection.
  • Farm administrators have the responsibility to keep the SharePoint farm healthy and secure, and they now have the tools to monitor and set quotas on sandboxed solutions. SharePoint provides farm administrators with a UI in Central Administration to assign resource quotas to each site collection. You can access the quotas from the Central Administration page under the Application Management section. Resource monitors keep sandbox solutions from over taxing the server.The SUM of all resource measures is the number applied to the quota.The MAX of all resource measures is used to determine if the sandbox should be turned off for a given solution one day.Discuss throttling and the page you see and ULS.Add a link to P&P work about resource consumption.Each metric, called a ResourceMeasure, contains a ResourcesPerPoint property. The ResourcesPerPoint value is divided by the resources consumed to calculate the points used for that category. For example, AbnormalProcessTerminationCount has a ResourcesPerPoint value of 1. Every time a sandboxed solution terminates abnormally, 1 point is added. If you want to increase the penalty for a sandboxed solution that terminates, you can set ResourcesPerPoint to another value, such as 2. You can use 0 if you are not concerned about this metric. Other ResourceMeasures might not have a one-to-one correspondence with an event. The CPUExecutionTime metric prevents a sandboxed solution from consuming too many CPU cycles. The default ResourcesPerPoint value is 3,600 for CPUExecutionTime.Another value is AbsoluteLimit, which is incremented each time a solution gets a point. If a solution exceeds the AbsoluteLimit value, it is terminated even if the daily usage limit has not been reached. Exceeding the value of AbsoluteLimit affects only the single solution, unlike the daily usage limit. These two levels of quotas, daily limit and absolute limit, work together to protect the health of the farm.
  • SharePoint contains 14 metrics that contribute to the quota points.Each metric, called a ResourceMeasure, contains a ResourcesPerPoint property. The ResourcesPerPoint value is divided by the resources consumed to calculate the points used for that category. For example, AbnormalProcessTerminationCount has a ResourcesPerPoint value of 1. Every time a sandboxed solution terminates abnormally, 1 point is added. If you want to increase the penalty for a sandboxed solution that terminates, you can set ResourcesPerPoint to another value, such as 2. You can use 0 if you are not concerned about this metric. Other ResourceMeasures might not have a one-to-one correspondence with an event. The CPUExecutionTime metric prevents a sandboxed solution from consuming too many CPU cycles. The default ResourcesPerPoint value is 3,600 for CPUExecutionTime.Another value is AbsoluteLimit, which is incremented each time a solution gets a point. If a solution exceeds the AbsoluteLimit value, it is terminated even if the daily usage limit has not been reached. Exceeding the value of AbsoluteLimit affects only the single solution, unlike the daily usage limit. These two levels of quotas, daily limit and absolute limit, work together to protect the health of the farm. I strongly recommend that you not modify ResourceMeasures, but as a developer or an administrator, you should understand exactly how these mechanisms work. Resource Per Point is how much this contributes to the point limit per day for the site collectionHard Limit is how much of this resource a solution can use in a single invocation before it is terminated – a maximum use of quota in a single invocationInvocation count is used to measure the per-instance cost of a solution for purposes of reporting and assigning to run-time “tiers” for farms that want to separate solutions into multiple different sandbox processes – there is only one by default.
  • Visual Studio 2010 SupportNew Project SupportIntellisensePackagingF5 DebuggingSharePoint Power ToolsCompilation SupportVisual Web Part (Sandboxed)the default SharePoint project type in Visual Studio is a sandboxed solution. This should be the default in your mind as well—you should be thinking about creating your SharePoint solutions to run within the sandboxed environment. You have seen that sandboxed applications are very capable, can do most of the tasks that a business user needs, and provide the ability to break out in a safe way when you need to. The real benefit is the speed at which you can deploy your solutions into the enterprise. You no longer need to follow a grueling process of testing and validation for every solution you create, although good software practices should always be followed. Developing, Deploying, and Monitoring Sandboxed Solutions in SharePoint 2010 build an sandboxed app the same way you build a farm solution. You can add a webpart to the solution. At this point, you have a fully functional sandboxed Web Part that you can deploy.During the development of a sandboxed solution, Visual Studio automatically deploys and activates the solution in the Solution Gallery when you press F5. If you browse to the Solution Gallery, you can see the solution you just created and deployed. As you can with other types of Visual Studio projects, you can set a breakpoint in the code for a sandboxed solution. However, Visual Studio won’t recognize a breakpoint at this point because the Web Part has not been added to a page. When you add the Web Part to a page, Visual Studio detects that the assembly has been loaded and will stop on the breakpoint. Even though you haven’t added any real code to the project yet, you can see that everything is in place and working correctly.Sandboxed solutions do not run under the IIS worker process used by SharePoint called w3wp.exe. Instead, they run under the sandboxed worker process called SPUCWorkerProcess.exe.Visual Studio automatically attaches the debugger to this process when you press F5. If you are debugging a solution that’s already deployed, you need to attach to this process manually.
  • Similar to programming against server objects in the server context, the new client-side object models use a ClientContext object as the "center of gravity" for all operations. The process of obtaining and working with sites and data begins by retrieving a context object.Show the various resources and their locationsServer – Microsoft.SharePoint – [..]\\14\\ISAPI .NET – Microsoft.SharePoint.Client – [..]\\14\\ISAPISilverlight – Microsoft.SharePoint.Client.Silverlight – [..]\\14\\LAYOUTS\\ClientBinECMAScript– SP.js - [..]\\LAYOUTS
  • The Client Object Model contains a lot of overlap coverage with the full SharePoint API
  • This diagram displays how the transport mechanism worksManage client OM = .NET / SilverlightAll communication goes through the client.svc WCF serviceMicrosoft implemented the client OM by decorating the core SharePoint OM with attributes if it was “client aware”[ClientCallableType(Name=“Web”,[…]),[…]]public class SPWeb {}Then a code gen tool generates the client OM assemblies and JavaScriptThis ensures that there’s fidelity between all the client OM’s and the server equiv
  • Many Benefits include:Designed specifically for Silverlight applicationsWorks on client machines (remote)No need to install SharePoint runtimeAsynchronous operationsPer user security context availableIncreases application portabilityOvercomes sandbox limitationsEASY TO DEPLOY!
  • Purpose: Windows Azure is partner friendly, great opportunity for SaaS ISVsWindows Azure has been around since Feb 2010, we have thousands of active users with incredibly good experienceWindows Azure is important dimension of our cloud strategy and to our partner strategyIt provides scalable hosting platform for customers, ISVs and partners, to host their applications and extend their own cloud, and leverage the scale and investment we have in AzureGreat examples today with SaaS ISVs leveraging their existing tools and skills to write applications that run on Windows Azure or Windows ServerHosters can take advantage of Azure, and leverage us for fail/over, burst capacityBut the partnering opportunity for Azure is not restricted on SaaS ISVs developing their applications to run on Azure, we are also sharing our learning on Azure with hosters and customers We run it ourselves to make sure it will work for you at arbitrary scale with good COGS[ Announcing: Azure Appliance]Customers and high scale partners have been asking to provide Windows Azure technology so they can run it in their datacentersThis is to emphasize that Microsoft is committed to bringing the learningsfrom the MS datacenter into our hosting partner's datacenters either through integrating the Azure innovations-- such as elasticity, multi-tenancy, and power & automation efficiencies -- into Windows Server/System Center or via the Azure Appliance.
  • This pattern demonstrates how to call external code at GA and post GA stages.0. A user accesses a Silverlight application deployed to a SharePoint Online site.1a. The Silverlight application can call external code running in Azure.1a. ACS is used to provide tokens used for Authorization.1b. The Silverlight application can call external code accessible from the Internet.1b. OAUTH is used to provide tokens used for Authorization.ACS – Access Control ServiceAzure (ACS 2.0 – Waiting for 2.0)Internet (OAuth 2.0 – future work by BPOS/SPO team)
  • This pattern demonstrates how to access external data at GA and post GA stages.0. A user accesses a Silverlight application deployed to a SharePoint Online site.1a. The Silverlight application can access external data stored in Azure.1a. ACS is used to provide tokens used for Authorization.1b. The Silverlight application can access external data stored available on the Internet.1b. OAUTH is used to provide tokens used for Authorization.OAUTH 2.0 Example:A good example of external data access on the Internet are pictures stored on a user’s Flickr site.In order to access the pictures on the Flickr site the user signs into the Flickr site and OAUTH is used to Provide a token back to the Silverlight application which may be used to access the pictures on the user’s Flickr site.Once OAUTH 2.0 is release, a primary goal is to enable the BCS to use OAUTH 2.0 to access external data sources.
  • This pattern demonstrates how to access SharePoint data at GA and post GA stages.Right now SharePoint does not support OAUTH 2.0.Currently this is a wav 15 planning item in the costing work stage. It has yet to be decided if this will be implemented as part of wave 14 post GA or if it will be part of wave 15.Can revoke via same UI as regular SharePoint groups. This UI has yet to be built to accommodate applications and OAUTH support.0a. A user accesses a web application from an Internet web site.1a. OAUTH is used to provide tokens used for Authorization.2a. The web application uses the token to access SharePoint data.0b. A user accesses a web application hosted in Azure.1b. OAUTH is used to provide tokens used for Authorization.2b. The web application uses the token to access SharePoint data.Get feedback from the field on this on especially.
  • Cloud based relay for WCF servicesTraverses Network Address Translation (NAT)Service opens outbound bi-directional TCP connection and leaves it openService is relayed through the cloud to the on-premise applications (WCF services)ASMX not supported
  • Can create Custom Actions:Define class/method in Visual Studio 2010Sandbox Solutions APIDefine new action via <WorkflowActions> schemaMaps designer to method call<Action><RuleDesigner><Parameters>
  • Use diagrams to illustrate these concepts.
  • Silverlight application can provide a single view into both SPO and On Premises apps
  • Lync ControlsShips in Microsoft Lync 2010 SDK“Drag and Drop” feature integrationContact list, contact searchPresence, contact info, custom contact listIM and audio “Click-to-Call”Supports contextual conversationsWPF 3.5/4 and Silverlight 4Requires Lync 2010Reuses Lync 2010 connectionPut your Content into a Lync conversation
  • Office 365 for Developers

    1. 1. OverviewOffice 365 for Developers<br />Bruce Kyle<br />ISV Architect Evangelist<br />Developer & Platform Evangelism, West Region US Partner Team<br />Microsoft Corporation<br />
    2. 2.
    3. 3. Agenda<br />Developing for SharePoint Online Standard<br />What Is Supported<br />Sandboxed Solutions<br />Client Object Model<br />Windows Azure Integration<br />SharePoint Services & Workflow<br />Migration Approaches<br />ISV Early Adoption Programs<br />
    4. 4. Office 365 Overview<br />
    6. 6. What Is Supported; What Isn’t Supported<br />SharePoint Online Standard<br />
    7. 7. Key Extensibility Points for SharePoint Online<br />Sandboxed Solutions<br />SharePoint Server Ribbon<br />SharePoint Dialog Boxes<br />Event Enhancements<br />Rest APIs<br />Silverlight Webpart<br />Listbox Lookups & Relationships<br />LINQ to SharePoint<br />Client Object Model<br />Architecture Guidelines<br /><br />
    8. 8. SharePoint Online Platform for Devs<br />OOTB Browser<br />SharePoint Designer 2010<br />Visual Studio 2010<br />Sandbox Solutions<br />Code<br />Feature Receivers, Event Receivers, Navigation, Web Parts, InfoPath Forms Logic, Custom Declarative Workflow Activities<br />Declarative<br />Declarative Workflows, Content Types, Site Columns, List Definitions, Lists, Custom Ribbon Actions/Extensions, Web templates, Site Pages, Page Layouts, Master Pages<br />Client Object Model<br />Silverlight, JavaScript<br />.NET<br />
    9. 9. Supported<br />WSP Installs<br />Branding<br />On the Server<br />Sandbox Solutions<br />On the Client<br />Client Object Model<br />SharePoint Services, Workflows<br />
    10. 10. Supported - Branding<br />Custom branding<br />Master Pages, Page Layouts<br />CSS<br />Themes<br />Embedding custom controls and Silverlight applications<br />Web Part limitations<br />Deploying .js files to the Master Page Gallery<br />
    11. 11. Sandbox<br />SharePoint Online Standard<br />
    12. 12. Administration<br />SharePoint 2010<br />SharePoint Online<br />
    13. 13. Sandboxed Solution<br />Designed for farm administrators to trust custom solutions will not damage or impair the SharePoint farm<br />Gives site collection admins authority to manage apps in site collection<br />Developers can create solutions deployed safely<br />
    14. 14. Sandboxed Solutions<br />Look and behave like farm solution<br />Sandboxed solution marked to allow partially trusted callers<br />Scoped to SPSite / Site Collection<br />Web Parts<br />Lists<br />List Templates<br />Custom Actions<br />Workflows<br />Event Receivers<br />Content Types<br />Site Columns<br />Compile time support within Visual Studio<br />
    15. 15. Sandbox Benefits<br />Removes risk of affecting processes outside the sandbox<br />Deployment by site collection administrators<br />Increased scalability and flexibility are increased<br />A solution does not have to be modified or recompiled if it is moved from a sandbox to running directly on the farm<br />
    16. 16. Sandbox Limitations<br />Managing Quotas<br />Deployment locations<br />External services<br />SharePoint web services<br />SharePoint namespaces<br />
    17. 17. Permitted Feature Elements<br />ContentType<br />Field <br />CustomAction<br />Module <br />ListInstance<br />ListTemplate<br />Receivers<br />WebTemplate<br />WorkflowAssociation<br />PropertyBag<br />WorkflowActions<br />
    18. 18. Sandbox Assemblies Cannot<br />Connect to resources that are not located on the local server<br />Access a database<br />Change the threading model<br />Call unmanaged code<br />Write to disk<br />Access resources in a different site collection<br />Office 365 Limitations Until GA++<br />No BCS<br />No Web Service Calls<br />
    19. 19. Components You Can Deploy in Sandbox<br />Web Parts<br />Event receivers<br />Feature receivers<br />Custom Microsoft SharePoint Designer workflow activities<br />Microsoft InfoPath business logic<br />
    20. 20. Sandbox Solution Support Summary<br />
    21. 21. Sandbox Deployment<br />WSP files<br />Solution Gallery located at root of site collection<br />Microsoft Conidential- NDA Only<br />
    22. 22. Sandboxed Solution Monitoring<br />Quotas specify limits for resource consumption per day<br />Summed across solutions deployed to Site Collection<br />i.e.: add up CPU Points for all solutions<br />Solution is self-regulated vs. quotas to protect Site Collection<br />Throttled<br />Deactivated<br />Microsoft Confidential - NDA Only<br />
    23. 23. Monitored Resources<br />
    24. 24. Building Sandbox Web Part<br />
    25. 25. Client Object Model<br />SharePoint Online<br />
    26. 26. SharePoint Client Object Model<br />Scoped SharePoint API<br />Microsoft.SharePoint.Client<br />Microsoft.SharePoint.Client.Runtime<br />Works in<br />.NET Applications<br />Silverlight Applications<br />JavaScript<br />Works on client machines (remote)<br />No need to install SharePoint runtime<br />Asynchronous operations<br />Security<br />Microsoft Confidential - NDA Only<br />
    27. 27. Equivalent Objects<br />Member names mostly the same from server to client (e. g., SPWeb.QuickLaunchEnabled = Web.QuickLaunchEnabled)<br />Microsoft Confidential - NDA Only<br />
    28. 28. Supported Areas<br />Site Collections and Sites<br />Lists, List Items, Views, and List Schemas<br />Files and Folders<br />Web, List, and List Item Property Bags<br />Web Parts<br />Security<br />Content Types<br />Site Templates and Site Collection Operations<br />Microsoft Confidential - NDA Only<br />
    29. 29. Client Object Model Execution Flow<br />Managed Clients<br />Server<br />Managed Controls and Logic<br />SPO-D<br />Or BCS GA+<br />External Data Sources<br />Client Service<br />client.svc<br />Managed Object Model<br />Server Object Model<br />Proxy<br />Proxy<br />Content Databases<br />JavaScript Object Model<br />JavaScript Controls and Logic<br />Web Browsers<br />Microsoft Confidential - NDA Only<br />
    30. 30. SharePoint Online and Silverlight<br />Silverlight<br />Many benefits<br />RIA<br />Web Services/Distributed Systems<br />SP Client Object Model makes SP/SPO solutions possible<br />SPO<br />Limitations overcome by SL<br />SPO + Silverlight<br />Common solution pattern for cloud solutions<br />Microsoft Confidential - NDA Only<br />
    31. 31. Azure Integration<br />
    32. 32. Windows Azure Platform<br />Extend & Scale<br />Azure Cloud<br />App<br />Windows Platform in the Cloud<br />Developer Experience<br />Cloud Storage<br />Connected Platform<br />AppFabric<br />Grow your business<br />
    33. 33. What’s Possible?<br />SPO-D or GA+<br />SPO-D<br />Microsoft Confidential - NDA Only<br />
    34. 34. Calling External Code<br />OAUTH<br />2.0<br />Post-GA<br />Services<br />SharePoint Online<br />Internet<br />SPO<br />ACS 2.0<br />Post-GA<br />Services<br />User<br />Azure<br />Microsoft Confidential - NDA Only<br />
    35. 35. Accessing External Data<br />OAUTH<br />2.0<br />BCS<br />Post-GA<br />Data<br />Internet<br />SharePoint Online<br />ACS 2.0<br />SPO<br />Post-GA<br />Data<br />Azure<br />User<br />Microsoft Confidential - NDA Only<br />
    36. 36. Exposing SP Data to External Code<br />Internet<br />OAUTH<br />2.0<br />Post-GA<br />Web Application<br />Data<br />SharePoint Online<br />SPO<br />Web Application<br />User<br />Azure<br />Microsoft Confidential - NDA Only<br />
    37. 37. Azure AppFabric Service Bus Flow<br />Azure AppFabric Service Bus Relay<br />On Premise<br />Your<br />Service<br />Users<br />
    38. 38. Excel & Access ServicesWorkflow Solutions<br />SharePoint Online<br />
    39. 39. SharePoint Services Summary<br />Excel Services<br />Surface Excel data and artifacts in SharePoint Online<br />Publish pieces of Excel workbooks to SharePoint Online<br />Interact with Excel data and artifacts with the REST API and JavaScript Object Model<br />Access Services<br />Convert Access databases to SharePoint lists and forms<br />
    40. 40. Workflow Services<br />Prototype workflows in Visio 2010<br />Use diagrams to get sign-off<br />Implement the workflow in SharePoint Designer 2010<br />Custom or copy & modify built in workflow<br />Actions, conditions and steps<br />Develop custom workflow actions and events in Visual Studio 2010<br />
    41. 41. Workflow Services<br />Implemented via Workflow Event Receiver<br />Override SPWorkflowEventReceiver<br />Scope<br />SPSite<br />SPWeb<br />SPList<br />SPContentType<br />Events<br />WorkflowStarting<br />WorkflowStarted<br />WorkflowCompleted<br />WorkflowLoading<br />WorkflowUnloading <br />WorkflowPostponed<br />Can’t export from SPD2010 to VS2010<br />Can’t build Visual Studio code workflows in a sandboxed solution<br />
    42. 42. Common SharePoint Migration Approaches<br />Microsoft Confidential - NDA Only<br />
    43. 43. Application Components<br />What components make up your applications?<br />Solutions<br />Features<br />How are they scoped?<br />Farm, Site, Web<br />How do these components map to your target environment?<br />What changes need to be made?<br />
    44. 44. Multiple paths are possible<br />Greenfield<br />Rewrite components to adhere to best practices before migrating<br />Migrate data to new locations <br />Brownfield<br />Migrate pieces that work in the target environment<br />Update architecture later<br />Ex:<br />Migrate data as needed, or not at all<br />Gradual vs. Complete<br />Creating an SPO compatible on premise solution for later migration.<br />Microsoft Confidential - NDA Only<br />
    45. 45. Capabilities By Solution Type<br />Microsoft Confidential - NDA Only<br />
    46. 46. Capabilities By Solution Type<br />Microsoft Confidential - NDA Only<br />
    47. 47. Mash Up Pattern<br />Client Data Model<br />SharePoint 2010<br />SharePoint Online<br />SharePoint Online<br />Client Data Model<br />Client Application<br />Services<br />User<br />On Premises<br />Microsoft Confidential - NDA Only<br />
    48. 48. Client Data Model<br />Web Application<br />SharePoint 2010<br />SharePoint Online<br />SharePoint Online<br />Data<br />Client Data Model<br />Services<br />User<br />On Premises<br />Microsoft Confidential - NDA Only<br />Server Application<br />
    49. 49. Lync Online<br />
    50. 50. Lync Online Features<br />Presence, IM, audio, video, and screen sharing<br />Lync Web App for online presentations with external contacts<br />Federation with customers and partners<br />Reply by IM from Outlook<br />IM with Windows Live contacts<br />Presence and click-to-communicate from Office and SharePoint<br />
    51. 51. Lync Controls<br />“Drag and Drop” feature integration<br />Contact list, contact search<br />Presence, contact info, custom contact list<br />IM and audio “Click-to-Call”<br />Supports contextual conversations<br />
    52. 52. Contextual Conversations<br />Launch applications from the Lync conversation window<br />Lync Extensibility Window Context<br />Host Silverlight applications in the Lync conversation window extension<br />Use separately or combine<br />
    53. 53. Exchange Online<br />
    54. 54. Use Exchange Managed Web API<br />Managed API for developing applications that use Exchange Web Services <br />Functional parity with EWS*<br />Easier than working with EWS proxy classes<br />Makes EWS calls under the covers<br />No additional required server side components<br />Backwards compatible<br />Request versioning<br />new ExchangeService(<br /> ExchangeVersion.Exchange2010_SP1);<br />Cloud compatible out of the box<br />
    55. 55. Development Scenarios<br />I want Exchange data in my application<br />Create/Read/Update/Delete operations on mailbox items:<br />Appointments<br />Attachments<br />Contacts<br />Emails<br />Tasks<br />Public Folders<br />I want to leverage Exchange business logic<br />I want Outlook feature “X” in my application<br />Free/Busy<br />Notifications<br />Data Sync<br />
    56. 56. About Exchange Online<br />Exchange Web Services Managed API 1.1<br />Power of Exchange Web Services<br />Productivity of .NET<br />Interact with Exchange data from your applications<br />Leverage Exchange business logic in your applications<br />
    57. 57. Resources<br />
    58. 58. Resources – Office 365 Overview<br />Office 365<br /><br />Office 365 Developer Training Kit<br /><br />Microsoft Office 365 Fact Sheet<br /><br />Office 365 Beta Service Descriptions<br /><br />SharePoint Online Developer Resource Center <br /><br />
    59. 59. Resources - Developers<br />Developing, Deploying, and Monitoring Sandboxed Solutions in SharePoint 2010<br /><br />SharePoint Online Standard Developer Guide<br /><br />Microsoft Patterns & Practices – SharePoint 2010<br /><br />SharePoint 2010 Training Kit<br /><br />SharePoint 2010 Training Kit - Client Object Model<br /><br />
    60. 60. Resources - Developer<br />Best Practices: Common Coding Issues When Using the SharePoint Object Model<br />
    61. 61. ISV Resources<br />Join Metro Connect Office 365 and (SharePoint)Azure<br /><br />Deep dives, software design reviews, porting events<br />Office 365 Beta<br /><br />Microsoft Partner Network Online Services Sales Guides<br /><br />
    62. 62. Summary<br />Functionality available in sandboxed solutions<br />Develop on-premise<br />Deploy to SPO<br />Debugging and troubleshooting<br />Architect for the sandbox<br />Server code runs in sandbox<br />Silverlight<br />Call external web services<br />Azure<br />Call Azure-hosted WCF services from Silverlight web parts<br />Use the Azure AppFabric Service Bus to call on-premise WCF services<br />Use Azure Worker Roles to simulate long running services<br />BCS coming soon after launch<br />
    63. 63. © 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.<br />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.<br />