With the release of SharePoint 2010 came a truck load of new features. It can be a lot to digest. In this post I am going to highlight the top features that I see for ISVs. A lot of ISVs look to SharePoint to help with visualization of information from their data store or providing integration with their product through the SharePoint platform. Integration is made easier with four improvements to the platform; Business Connectivity Services, Search Connector, Client object model and the Service Application Framework. These are in no particular order.
Business Connectivity Services
Business Connectivity Services, aka BCS, is the evolution of the BDC. It now allows for read/write scenarios to your data store versus the read-only approach in the previous release. BCS also allows you to create a list that uses your BCS definition to surface data within SharePoint as if it were a native SharePoint list. To the end-user this is a seamless transition. Previously this was done using web parts, but now the underlying data looks to the user as if it were list in SharePoint. The user interacts with the data in the same way they would with data stored natively in SharePoint.
Another benefit here is that you can define a BCS definition based on a .NET assembly. If your data store isn’t a supported store out of the box you can expose the data using a web service or a POCO (plain old CLR object). find out more about the BCS here.
Lastly, BDC used to be an enterprise only feature, which meant your customers had to have enterprise licenses to leverage any work you may have done in this space. With SharePoint 2010 the BCS is now offered with SharePoint Foundation.
Search Connector Framework
The search connector allows you to take advantage of the BCS features to expose your data to search. Previously this required a protocol handler. This was typically unmanaged code that was difficult to write. This was a barrier to entry for a lot of businesses. Now that you can leverage .NET to expose your data to SharePoint search the barrier to entry has been lowered significantly.
Read more about the Search Connector Framework here.
Client Object Model
With SharePoint 2007 you either wrote code on the server using the object model (web parts, asp.net pages, etc.) or used the SharePoint web services to interact with the farm. With 2010 the product group has provided a client object model exposing common tasks that can be used from .NET clients, web pages via ECMAScript and Silverlight. This opens the possibilities for integration as well as relieving the burden of working with the web services. While they exposed quote a bit of functionality, there seemed to always be a one off scenario that wasn’t covered, requiring you to write your own. More information related to using the client object can be found here.
Finally, there is the introduction of Service Applications. “The Service Application Framework provides a platform that allows developers to build scalable middle-tier applications that are hosted in Microsoft SharePoint Foundation 2010. These services can provide data or processing resources to other SharePoint features. The Service Application Framework enables services to be shared between computers on a server farm; it also helps load balance and manage services in SharePoint.”
A lot of companies wanted to integrate with the SSP in the previous release, but there was no means to do so. With the service application framework you become part of the SharePoint infrastructure, including the ability to participate in backup scenarios with the farm. Read more about the capabilities using this link. The architecture of the Service Application Framework is described in this post.
Those capabilities that are exposed in your product today via services can easily be made available to the SharePoint platform using this framework. If you are not using services today, perhaps this framework will generate ideas on how you can expose functionality or data in your product to SharePoint.
Cliff Green Senior Consultant, MCSD.NET, MCTS Enterprise Services, ISV Practice