It has been a while since I wrote my last post. December obviously is a holiday month which I spend with my family.
Also, finishing my project has kept me busy lately. So now I am in between projects and about to venture off to a new one, I have time to write a small post.
Today, one of my clients asked me whether it would be possible to control the Managed Metadata service remotely from a client. For as far as I knew, most services by SharePoint are controllable and accessible through web services, so I decided to spend some time finding out.
The default exposed web services by SharePoint 2010 are listed at the following MSDN article and obviously, controlling the MMS is not one of them. So I decided to dive into the object model. The MMS and its functionalities are located in the Microsoft.SharePoint.Taxonomy.dll assembly and its associated namespaces. In the Microsoft.SharePoint.Taxonomy.WebServices namespace, there is a class called TaxonomyClientService which contains a web service proxy for the interacting with the MMS.
Unfortunately, the functionality of this proxy is rather limited and only offers possibilities to extract information from the MMS and add terms. There is no possibility to move, remove or organize terms. The following methods are available on the proxy:
- AddTerms
- GetChildTermsInTerm
- GetKeywordTermsByGuids
- GetTermsByLabel
- GetTermSets
Besides these, some additional methods inherited from Object and some properties like Server, GetService, Session and User are available. Comments in the definition also state that the service was intended to use for Office Client applications.
Finally, the service needs to be hosted somewhere. The definition is there, but it is not hosted by a process just yet. So it is usuable from the object model by a client running in the farm, but why bother? You have the full API to your disposal. Hosting the web service through IIS or WCF will save you the trouble of creating your own, but the functinality is rather limited. The web service is also sealed, so expanding the service by inheritance is also not an option.
Conclusion, rather limited for use. Has anybody found a better method of controlling the MMS through (standard) webservices from a client?
CU