Web Services and Extensibility for Windows Server 2012 Essentials

Hi, I’m Mike Chen, program manager for the Windows Server Essentials team, and today I would like to share with you the extensibility story for Windows Server 2012 Essentials.

I’ll start with an overview of the extensibility points across Dashboard, Launchpad, Remote Web Access, and Health Monitoring. As you know, Windows Server 2012 Essentials is a hybrid solution that connects your on-premises environment to the cloud service. We will use cloud service integration scenarios when we talk about the extensibility points; these extensibility points can also be used by non-service-integration add-ins.

Let’s take a look at the Windows Azure Online Backup add-in (for more information, see the blog post Windows Azure Online Backup and Windows Server 2012 Essentials).

image

In the preceding screenshot, add-ins can be used in the Dashboard in four places:

  1. Top-level tab. Usually, as a standalone feature, most add-ins will have a separate tab. We recommend that you use all capital letters for the names of your tabs to be consistent with other built-in tabs. A top-level tab will own its standalone content space in the content area.
  2. Sub-tabs. To logically separate your features, you can have multiple sub-tabs under your top-level tab. If you own a separate top-level tab, you will naturally group sub-tabs together. If your add-in doesn’t create a top-level tab (for example, your add-in provides additional manageability for storage), you can add a sub-tab to the tab in question instead.
  3. Main panel. Different add-ins typically have different requests. While you can build your main panel from a blank panel, you can also leverage the list view in the SDK if you’re managing a list of objects, such as users or folders.
  4. Task panel. When you manage a list of items or a service, you usually need per item tasks and global tasks. When you leverage the list view, the Dashboard allows you to register per item tasks where you can perform tasks on a single item, such as removing a folder. It also allows you to perform global tasks, which apply to the entire add-in functions, such as registering your service.

In addition to these four options, the Dashboard also allows you to extend the built-in list view, wizards, and property pages by adding your own logic to the existing experience. An existing implementation of this is the built-in email solutions (including Office 365 and on-premises Exchange) that extend the list view, add a user wizard and user property pages that leverage the framework. We’re going to discuss this in depth in the upcoming blog for Hosted Email Add-in Framework.

Client-side integration is also interesting when you write an add-in to integrate with online services.

  • Launchpad. Most of the service integration, such as Office 365 Integration, provides value to end users where they need to have shortcuts to the new functionality they get from add-ins. In this case, you can extend the Launchpad by adding an additional shortcut.
  • Remote Web Access. Remote Web Access allows you to provide links on the Homepage, as well as provide your own page.
  • Health Integration. If the online service has dependencies on the client, such as agents running on the client or settings on the client, you can implement health monitoring rules on the client so that the monitoring results can be rolled up to the admin view. (Note that health integration is able to monitor the server as well.)

image

Web service platform

Anywhere Access is important for home and business environments today. To keep users more productive, they need to access files and folders anytime from their devices. In order to support this, Windows Server 2012 Essentials exposes a set of built-in web services for third-party developers to build applications on different devices that can access files and manage the server remotely. The built-in web services include file access, file operations, media access, and management tasks (including alerts, users, storage, devices). For a complete list of web services, see our MSDN page.

The following sample code demonstrates how to call the web services to access a folder from Windows 8 by using HTML and JavaScript. In HTML, we create a list view on your page to display the data. You will need to define the template of the item that defines how it’s going to be displayed.

<div id="fileListView" data-win-control="WinJS.UI.ListView"/>

In JavaScript, we use an HTTP request with your credential to get the information about items in the Company folder.

var url = "https://[serverName]/services/builtin/fileoperationservice.svc/items/index/0/count/10?path=\\\\[machineName]\\Company&filter=All&sortByField=Name&ascending=True";

WinJS.xhr({

    url: encodeURI(url),

    user: "[userName]",

    password: "[password]",

    headers: {

        "AppName": "[appName]",

        "Accept": "application/json"

    }

}).done(function (response) {

    var obtainedData = window.JSON.parse(response.responseText);

    var fileList = new WinJS.Binding.List(obtainedData.Items);

    WinJS.UI.setOptions(fileListView.winControl, { itemDataSource: fileList.dataSource });

    WinJS.UI.processAll();

});

To learn more about the Windows Sever 2012 Essentials SDK, you can visit our MSDN site and download the SDK. We’re looking forward to your feedback in our forum.