SharePoint and Windows Azure: Data Sync, Media Services & Virtual Machines

Introduction

Today at TechEd, I had the opportunity to talk with a number of developers and IT Pros about some of the new ways in which you can use Microsoft’s cloud platform, Windows Azure, to build some very compelling solutions. I covered four areas in the talk:

  • Windows Azure Data Synchronization to enable you to filter data from on-premises to the cloud;
  • Windows Azure Media Services to prepare and stream videos to SharePoint and SharePoint Online;
  • Windows Azure Virtual Machine to either migrate or create SharePoint-based VMs to the cloud; and
  • Office 365 and Windows Azure integration.

The following slide-deck provides an overview of these integrations and more generally the talk. Following the slide-show, I’ve added some color commentary on each of these areas—which I’ll expand on in future blog-posts.

TechEd Talk: Why SharePoint and Windows Azure are Just Plain Better Together (June, 13, 2012)

Synchronizing Data from On-premises to the Cloud

This is an interesting area that provides us to leverage a data sync from data that we are storing in SQL Server on-premises (which I was using in an external list via BCS in SharePoint) to a SQL Database instance sitting in Windows Azure. It’s interesting because one of the key concerns today is data protection and sovereignty. For example, the screen-shot below provides a snapshot of my Data Sync Group that takes data from my on-premises SQL Server and syncs it with SQL Database. You can see on the right the “Edit Dataset” button that enables you to edit the columns you want to expose to your SQL Database.

image

Once you’ve got your data into your SQL Database, you can do any number of things—such as building a WCF wrapper, REST service, etc. to expose that data to any number of endpoints and clients. This is where the cross-device and SharePoint Online (SP-O) story comes into play here: through a REST service, for example, you can expose the data from the SQL Database to either a phone, tablet, Win 8, or SP-O application. To illustrate this, I created a simple REST service that is being consumed through a Windows Phone 7.5 application.

image

The code for this was straightforward and was created using an ASP.NET application with a WCF Data Service template, which I then deployed to Windows Azure.

namespace RestfulPhoneApp
{
public partial class MainPage : PhoneApplicationPage
{
private TechEdEntities context;
private readonly Uri techedURI = new Uri("https://mytechedrestsvc.cloudapp.net/SpeakerData.svc/");
        private DataServiceCollection<Speaker> speakers;

        public MainPage()
{
InitializeComponent();

            context = new TechEdEntities(techedURI);
speakers = new DataServiceCollection<Speaker>(context);

            var query = from spkrs in context.Speakers
select spkrs;

            speakers.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(speakers_LoadCompleted);
speakers.LoadAsync(query);
        }

        void speakers_LoadCompleted(object sender, LoadCompletedEventArgs e)
{
if (e.Error == null)
{
if (speakers.Continuation != null)
{
speakers.LoadNextPartialSetAsync();
}
else
{
this.LayoutRoot.DataContext = speakers;
}
}
else
{
MessageBox.Show(string.Format("An error has occurred: {0}", e.Error.Message));
}
}
}
}

The net with this demo was the ability to first synchronize the data from on-premises (the same data I was using to populate and manage data within an external list within my on-premises instance of SharePoint) to SQL Database in Windows Azure, which can then be consumed in a variety of ways/clients—as shown through the WP7.5 app above.

For more information on Data Sync, download the latest Windows Azure Training Kit and walk through the Data Sync module.

Leveraging Windows Media Services

Azure Media Services is very cool; it provides you with a way to manage media workflow via a set of services sitting in Windows Azure. And while this workflow is tangential to SharePoint, the ultimate time you save and where the application you build ends up directly makes media preparation and deployment very easy for SharePoint.

The example I showed earlier today was first leveraging the services in Windows Azure Media Services to encode a WMV file to MP4—to illustrate one service to use, and then leveraged the resulting MP4 file that was stored in BLOB storage. I then created an SMF player (which is a Silverlight application) with a link to my uploaded and encoded MP4 video that was then playable in a Silverlight web part that I created in SP-O (which would also work the same in SP on-premises). 

image

To do this, I created a new SMF player application and then amended the video link manifest (the link to the video), built the XAP and then as mentioned above leveraged the XAP within a Silverlight web part.

<UserControl x:Class="TechEd_Smooth_Streaming_Example.MainPage"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="https://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400"
xmlns:smf="https://schemas.microsoft.com/smf/2010/xaml/player"
    xmlns:media="clr-namespace:Microsoft.SilverlightMediaFramework.Core.Media;assembly=Microsoft.SilverlightMediaFramework.Core">

    <Grid x:Name="LayoutRoot" Background="White">
<smf:SMFPlayer>
<smf:SMFPlayer.Playlist>
<media:PlaylistItem DeliveryMethod="AdaptiveStreaming" MediaSource=" https://yourvideolink/video.ism/Manifest"/ >
</smf:SMFPlayer.Playlist>
</smf:SMFPlayer>
</Grid>
</UserControl>

The Windows Azure Media Services are a new set of services, and there’s some great starter information for the developer within the MSDN SDK. To download the SMF player, which has some video how-to tutorials and docs, visit Codeplex here. Overall, there’s a ton of potential here, both in video production and in integrating the finished production video into SharePoint or SharePoint Online.

Leveraging the New Virtual Machine Role for SharePoint

This is one of the biggest announcements that’s landed in the last week, and in the various sessions, keynote activities and other chalk-talks, SharePoint has had a mention in being a workload that is supported. Point of fact is that SharePoint is one of the core workloads that is supported on Windows Azure VM (or also referred to more generally as Infrastructure as a Service—IAAS). This is important because SharePoint has dependencies on Active Directory and SQL Server—which are also core workloads that are supported on the new Virtual Machine role. 

Using the new Virtual Machine (VM), you can do a couple of things:

  • Create a new VM from scratch using the gallery and then add your software on that baseline VM; or
  • Upload a pre-created VM that you can then use in Windows Azure.

You can also build a standalone SharePoint server, which essentially is a self-contained server sitting in the cloud, or you can create a SharePoint farm—Paul Stubbs spoke on this at TechEd as well. I used the standard Windows Server 2008 R2 SP1 image in the gallery to do this (see below) and then remoted into the image and added the appropriate software to the image.

image

In today’s session, I walked through how to create a new Virtual Machine which was a standalone SharePoint server. I then built and customized a couple of web parts, deployed them to the SharePoint site collection and then opened up the site for audience visibility using Anonymous Access to the site to let the audience join in on the fun.

I’ll be blogging more on this topic as there’s a ton to write about here.

In the meantime, to get started take a look at this article here, and then make sure you get yourself sorted out with an account by going here.

Lots more to come here!!!

Office 365, SharePoint Online & Windows Azure

I’m not going to talk too much about this; I’ve spoken a lot on this topic, and you can find some info on my past blogs. The net net is I walked through how to use Windows Azure WCF services to connect a LOB (using SQL Database) to BCS and SP-O. A good blog-post on this is here.

I am very excited at the possibilities around Windows Azure and SharePoint and will continue to post on these areas, focusing on the above and other areas I discover.

Happy coding!

Steve
@redmondhockey