SharePoint as a Composite Application Platform

I had the pleasure of speaking at the SharePoint TechFest 2010 event today in Dallas, Texas.  Over 650 people at this event, holy smokes it was a great time.  I had the first time slot of the day, and when I first started the talk the room wasn’t even 1/4 full (maybe about 30 people).  Fifteen minutes into the talk, it was standing-room only with people looking into the room from the hallway.  Awesome to see so much interest in Composite Applications!

The talk’s title was “Creating SharePoint 2010 Composite Applications”. My slides are posted to Windows Live SkyDrive, I had quite a few people ask me for a copy of the deck.

Creating composite applications, particularly applications that enable the business end user and show how IT can add strategic value to an organization, is an area that I am pretty passionate about.  Many of my customers view SharePoint as part of their overall enterprise application portfolio and need to interact with SharePoint from non-Microsoft platforms.  Leveraging workflow, business connectivity services, Silverlight, REST, and particularly SharePoint Designer 2010 provides a very potent combination that frankly most organizations don’t realize that they possess.

My first demo focused on empowering the end user with SharePoint Designer 2010 to create sites, master pages, site pages, and to quickly brand a site.  I then showed how to create a list from existing site columns, showing reuse of assets and how developers can create their own site columns.  I then created a page from the default master page, added a Data View Web Part (DVWP) and a new item form to show how end users can create branded business applications in a matter of minutes.  Linking all of this back to composites, I then showed how to attach a workflow to the list, and how entering data into our new page will kick off workflow processes.  Every time I do that demo, I am amazed to see how many developers don’t realize how easy this is to do.  I can’t tell you how many custom ASP.NET applications could be eradicated and those developers freed up for more interesting and strategic work if enterprises saw what an end user with a minimal amount of training could achieve.

The next demo showed how to create an external content type pointing to the AdventureWorks database in SQL Server.  I then created a new External List and showed the data in the SharePoint UI.  I updated it and showed that the data was written to the back-end database.  I thought about putting more developer stuff in here, like talking to a WCF service or creating my own composite (like I did in my MSDN article, Using Business Connectivity Services in SharePoint 2010), but opted for a simplistic demo that targeted what an advanced end user might achieve.

The next demo was all about Silverlight interacting with the client object model.  I happened to run across Tobias Zimmergren’s article on SPS 2010: Programmatically work with External Lists (BCS) using the Client Object Model, which shows a demo that is very similar to the one that I performed today.  The cool part here is that working with external lists is no different than working with “real” SharePoint lists with the client side object model, it’s the exact same code, the client side object model doesn’t care that the list is actually getting its data from a backend system.  The client side object model is a fantastic addition to SharePoint 2010, you can leverage it from a .NET CLR application, Silverlight, or even JavaScript. 

The next demo was all about REST.  This is by far my favorite feature of SharePoint 2010, the ability to easily work with data in SharePoint using the great OData tools that Microsoft has been building.  If you aren’t familiar with OData, it is the Open Data Protocol that builds upon AtomPub.  Not only do we get CRUD operations over data in a RESTful manner, but we also get query semantics.  I used this to query a relational list in SharePoint using URLs like:

Find the employee with the name “Kirk Evans”

https://contoso.com/\_vti\_bin/Employees?$filter=Fullname eq ‘Kirk Evans’

Find the employees who are working on a project with a title of “Building Awesome Demos”

https://contoso.com/\_vti\_bin/Employees?$filter=Project/Title eq ‘Building Awesome Demos’

I then showed how to add a reference to SharePoint from a Windows Forms application, populate two data grids, and how update the data into the backend system, all of which leverages the same exact REST APIs that we typed in the URL.  You can see this demo as part of a much longer presentation at https://microsoftpdc.com/Sessions/PR12.  The session at PDC shows the client-side object model as well, and shows how to create a new web service easily that enables you to revert to a previous version of the item in a list. 

Thanks to everyone who attended the talk and for all the kind words from people stopping me in the hallway to tell me they enjoyed the session.  I had a lot of fun putting it together and presenting it.

For More Information

https://cid-09d5ededfee6c24b.skydrive.live.com/self.aspx/Presentations/sptf2010%20-%20Composite%20Applications.pptx SPS 2010: Programmatically work with External Lists (BCS) using the Client Object Model SharePoint Developer Learning Course at Channel9 https://www.odata.org/ It's All about the Services: Developing Custom Applications for Microsoft SharePoint Server 2010 Using Microsoft ASP.NET, WCF, and REST

Using Business Connectivity Services in SharePoint 2010