Today's guest blog post is from Martin Harwar who is the chief solution architect for Point8020 Limited. A few weeks ago, I was able to sync up with Martin while he was on campus and he was kind enough to assemble this post that dives into how his solution is leveraging Silverlight-on-SharePoint to build rich Internet applications. At the end of the post, he links you off to a longer white paper, demos of his learning management system and trial. So on to Martin's post.
Dave Pae SharePoint Technical Product Manager
LearningPoint for SharePoint is a great example of the next generation of SharePoint solutions. Specifically, it is both a fully-fledged Learning Management System and a courseware authoring tool, but what makes it a true 'gen-next' solution is that it consists of a Silverlight user interface that consumes and manipulates underlying SharePoint data and files. Our company, Point8020 Limited, is convinced of the benefits of building slick, rich Internet applications (RIAs) that operate on the SharePoint platform, so that is why we built the user-interface in Silverlight. The combination of these two technologies really does open up huge possibilities for building compelling, responsive business applications.
I'm going to discuss some very interesting concepts in this post, particularly around the challenges and solutions for consuming and manipulating SharePoint objects in a Silverlight UI. As you will read, this is not as simple as it sounds, but hopefully some of the patterns we have created will help you develop your own Silverlight-on-SharePoint solutions. So even if you are not interested in Learning Management Systems or courseware authoring tools, you can hopefully still relate the issues and how we resolved them to your own projects.
Before I delve into the architectural details of LearningPoint for SharePoint, however, I will briefly discuss the benefits of building an LMS on SharePoint.
Building a Learning Management System on SharePoint
Many of our customers were interested in obtaining an LMS that was installed and ran simply and easily on the SharePoint platform. They could see how the traditional features of an LMS (such as assigning courses to learners, viewing course activity reports, and enabling learners to launch courses in a Web browser) could be supplemented by the underlying collaborative capabilities of SharePoint. They also saw how providing training is an integral part of enabling employees to perform their tasks to the best of their abilities. What better way to 'help your employees help you' than to provide them with training in the tool they use to do their job?
So that was the underlying motive for building on SharePoint. Figure 1 shows the Silverlight UI with access to the underlying collaborative features for a course:
Figure 1. The LearningPoint for SharePoint UI
Reflecting how Learners Learn
Our next key concept is that LearningPoint was designed from the very beginning to provide an environment that reflects how learners really learn. The learning process does, of course, include consuming information (such as e-learning content), but most real learning continues long after a learner has studied a course.
One of the most important ways in which people learn is by collaboration with other people, both at the time of studying a course and, more importantly, afterwards. Of course, SharePoint's collaborative features provided us with the ideal platform for adding collaboration to the learning process. We built on the following collaborative features to ensure that learning is indeed a high-value, collaborative process:
· Discussion boards per training course. Students can start discussion threads, reply to existing threads, and view all discussions about a course. Most learners will not only use discussion boards to ask and answer questions about the published training material, they will often include additional useful information that enhances, clarifies, and puts into context the points covered in the course. They will also see the participants in discussion boards as useful contacts within the organization that they can call on to complete a real-world task—without the collaborative features of LearningPoint it is all too easy for real experts in your organization to remain unknown to other employees.
· Issue lists per training course. Students can raise issues that they find with courses so that learning managers, training designers, and other learners can review the issues. This type of collaboration can really show that a learner has thought deeply about the contents of a course, and has suggested improvements. The contents of their issues can be of real help to other learners studying the course, especially if the material contains factually incorrect or outdated guidance. Training designers or learning managers can then perhaps fix the issues with the training material, or at least confirm (or repudiate) the accuracy of the issue submitted by the learner. In these ways, LearningPoint provides an environment in which course material can continually be improved (or at least clarified) by experts within your organization.
· Surveys per training course. Student can respond to pre- and post-course surveys. The results of the surveys can be collated by learning managers and used to improve courses or create additional learning. Many of our customers create pre-course surveys, post-course surveys, and post-course-plus-six-months surveys. These last types enable the organization to really see if the training has helped move the employee forwards in how they perform their tasks.
· Wikis per training course. Virtually everyone with an interest in a subject has something useful that they can add to training material, even if their role is currently that of a learner. LearningPoint provides an environment where learners can create wiki pages with additional content that can supplement the published training material. As with all wikis, other learners can add or edit information in wiki pages, so over time an organization will build up more useful, insightful, and contextually accurate information in the wiki pages than that contained in the actual courseware itself.
Building Management Tools for Courses
All LearningPoint courses are administered by learning managers through their Web browser. There is no need to install any other type of application for learning managers. Administrative and management tasks in LearningPoint are simple and intuitive; with just a few clicks, a learning manager can create a new course (or upload an existing one), assign courses to individuals or groups, edit course properties, run training activity reports, and remove courses from the catalog.
And, of course, the learning manager can review and participate in the collaborative features used by the learners
Building Courseware Authoring Tools on SharePoint
One of the biggest value-adds of LearningPoint is that it enables an organization to create their own e-learning courses for what we call 'almost-zero' cost. The authoring tools that we provide enable a training designer to build a rich e-learning course in literally a matter of minutes. It is as easy (if not easier) to build an e-learning course with our tools as it is to create a PowerPoint deck. Figure 2 shows the courseware authoring tools.
Figure 2. The LearningPoint Courseware Authoring Tools
The authoring tools all run on SharePoint and consist of a slick Silverlight user interface. What's more, the e-learning course that is created is also 100% Silverlight. And the training designer does not even need to know the first thing about Silverlight! We take care of that for them.
The courses are really rich, as demanded by learners today. They can include videos, graphics, text, self-assessment quizzes, YouTube videos, PowerPoint decks, Microsoft Word documents, Excel Spreadsheets, PDF's, and in fact any other type of file that your learners have a reader for. They can also include links to any resource that is accessible over HTTP, be that a published file on your intranet, or a page on the Internet.
Just imagine: You can build a course that consists completely of existing content, such as Wikipedia pages, YouTube videos, your own training videos, and other documents. Hence the term 'almost-zero' cost. Figure 3 shows a very simple course that was created with the authoring tools.
Figure 3. A Simple LearningPoint Course
So that's our LMS and authoring story. If you would like to delve deeper into those concepts, I would highly recommend reading our white paper and viewing our online demos:
Download white paper View Demos Download Evaluation Version
The white paper also includes discussions for how generation-next employees (i.e. those lucky enough to be under 25 years old) really learn. Fascinating stuff, but now I'm going to leave that in favor of discussing the general architecture for consuming SharePoint objects in a Silverlight UI.
Architectural Patterns for Silverlight-on-SharePoint
The LearningPoint UI consists of a normal Web Part that hosts a Silverlight control. The challenge that this poses is that the code in the Silverlight control runs in the user's Web browser, and not on the server like a normal Web Part. Therefore, unlike a normal Web Part, the Silverlight UI does not have access to the SharePoint object model. The aim, then, is to somehow provide an infrastructure that enables communication between the client-side Silverlight UI and server-side code that has access to SharePoint objects and data.
As part of our research and development, we defined four possible patterns for consuming and manipulating SharePoint objects in the Silverlight UI. The key thing is to understand that the data needs to be surfaced inside the Web Part, while control is maintained of the data's context . In brief, the patterns are:
1. Use the Silverlight WebClient object to communicate with the built-in SharePoint Web services (such as Lists.asmx)
2. User the Silverlight WebClient object to communicate with your own server-side runtime objects (such as your own Web services, or your own HTTP handlers, or your own ASPX pages in the _layouts folder)
3. Build your own client-side adapter and embed that in the Web Part. Then have your Silverlight UI communicate with your client-side adapter (in the user's browser), which in turn makes AJAX-style calls to the built-in SharePoint Web services (such as Lists.asmx)
4. Build your own client-side adapter and embed that in the Web Part. Then have your Silverlight UI natively communicate with your client-side adapter, which in turn makes AJAX-style calls to your own server-side runtime objects (such as your own Web services, or your own HTTP handlers, or your own ASPX pages in the _layouts folder)
Pattern #4 is obviously the most complex approach, but ultimately offers you the most control and the most possibilities. For example, this is the pattern we use most frequently in LearningPoint because our solution also needs to communicate with SQL Server, not just SharePoint. Figure 4 shows the communication architecture and flow.
Figure 4. LearningPoint Communication Architecture
I will be presenting at TechEd 2009 in L.A. on all four architectural patterns for Silverlight-on-SharePoint. Stop by and say 'Hi' if you are there!
About the Blogger
Martin Harwar is chief solution architect for Point8020 Limited. He develops content for the SharePoint team at Microsoft as well as developing solutions based on Silverlight and SharePoint.