In the next series of blog posts, I’ll be exploring some interesting aspects of SharePoint development. In particular, I’ll be examining how to leverage the combination of Open XML, LINQ to XML, and SharePoint. The Open XML document formats enable new possibilities within SharePoint, and LINQ to XML brings the power, robustness, and succinctness of the functional approach to SharePoint development.
Each of these technologies (LINQ to XML, Open XML, and SharePoint) are important in their own right; when used in concert, the resulting power in the platform is greater than the sum of the parts.
What is SharePoint?
I realize that while many who read my blog will be aware of SharePoint, not all will, so a quick intro to SharePoint is in order.
SharePoint is a server product sold by Microsoft that allows you to create internet and intranet web sites. It is built on ASP.NET, and Microsoft SQL Server. There are six primary capabilities that SharePoint brings:
Collaboration: Allow teams to work together – collaborate on and publish documents, maintain task lists, implement workflows, and share information through the use of wikis and blogs.
Portals: Create a personal MySite portal to share information with others and personalize the user experience and content of an enterprise Web site based on the user’s profile.
Enterprise Search: Find people, expertise, and content in business applications.
Enterprise Content Management: Create and manage documents, records, and Web content.
Business Process and Forms: Create workflows and electronic forms to automate and streamline business processes.
Business Intelligence: Allow information workers to access critical business information, analyze and view data, and publish reports to make more informed decisions.
When someone asks me informally what SharePoint is about, I say it is about people working together.
It was only a few years ago when working with other people meant emailing documents around, and only a few years before that when it meant putting printed paper memos in physical mailboxes. I think that we have barely scratched the surface of what it means to work together.
Open XML and SharePoint
Much of the information in SharePoint is stored in documents, and until Open XML, those documents were binary office files. And this makes it harder to get at the information in those documents. You could find a library to work with those binary documents, but do you really want code like this running on your SharePoint server? What if you have gradual performance degradation? On a server, for all practical purposes, much of the information stored in binary office files is inaccessible.
But this changes with Open XML. We can access the contents of Open XML documents using high quality XML programming interfaces. XML programming API’s are the tools that servers are made of; we can now use those same tools to access and modify the information in our documents.
Within the SharePoint framework, there are three primary points where we can plug in functionality using Open XML:
In the user interface – we can access and modify Open XML documents when the user selects an item on a menu, clicks a button on a page or web part, etc.
In the storage architecture – we can access and modify Open XML documents when a document is checked in to or out of a document library. This can happen behind the scenes. We don’t need to bother the user. It just happens automatically and reliably.
In the business process layer – content that was previously locked in a black box can now be an integral part of a SharePoint workflow.
This blog post is about possibilities. Now that we can get at and modify the information in documents, what can we do? I’ve recently posted snippets of code that:
Surfaces information stored in word processing documents and spreadsheets.
Accepts all revisions in a document.
Removes all comments from a document.
Removes personal information from a document.
In the next blog post, I’m going to use these snippets of code from within SharePoint. I’ll present a small technology demonstration that will show the power and flexibility that is available to us, now that we can access and modify the contents of word processing documents, spreadsheets, and presentations.
(July 23, 2008: the technology demonstration of Open XML, the Open XML SDK, LINQ to XML, and SharePoint can be found here.)