Live Framework CTP #3 – .NET: the developer’s Resource Model

There seems to be a lack of information on the web about the Live Framework Resource Model from a developer’s point of view, that means how can I address my mesh objects and more from my .NET code. Some Blog-Entries describe it more from a user’s standpoint respectively describe what is unveiled through the web services of the Live Operating Environment, but as .NET developer with the LiveFx libraries at hand that’s not interesting me much. Thus I want to briefly describe the resource/data model which you’re programming against in .NET (it has some similarities to the real class diagram) through the following article. Later on, in other posts I will go in depth on some of them.

The following diagram shows many (while not all) aspects of what you as developer should be worried about when juggling with Live Framework objects:

Live Framework Resource Model

First things first: every collection shown above is a LiveItemCollection<TMeshItem, TResource>, where TMeshItem is of type MeshItem and TResource is of type Resource. Normally you get data out of the Resource, which can be extracted from the LiveItem via YourLiveItem.Resource.

Now I want to shortly describe the individual components.

LOE: the Live Operating Environment is the root of all functionality. Here you can connect to your Mesh and get all the information you need (In fact it’s much more than that, but this should be deferred at the moment).

  • Contacts: Collection, which holds your contacts. One contact can contain some profiles and has many relevant contact data (Name, adresses, job title, profession etc.) connected to it.
  • Mesh: Represents your whole mesh and the data, that it contains.
  • Profiles: Respresents your personal profiles. The following kinds of profiles are available: General, AboutYou, ContactInfo, WorkInfo, Interests. Those profiles come from your Windows Live account, so Windows Live is basically integrated with some functions at the moment. I’m sure that there will be more interaction and features including Mesh and Windows Live in the future.

Mesh:

  • Devices: Collection, that represents the different kinds of devices belonging to your mesh. Those are the same devices that are shown on the device ring in your browser. From a device object you can gather information like the online status, if it’s a local device or if it has an active remote connection.
  • MeshObjects: Everything, which can contain data (data feeds) in your mesh. This can be folders (Type: LiveMeshFolder) and applications (Type: ApplicationInstance) for example.
  • News: Collection of NewsItem objects, which represent global news in the mesh. There are several kinds of existing News types: LiveMesh.FileAdd, FolderAdd, MemberAdd, AppInstanceCreate, AppInstanceMemberAdd, UserMessagePost and more. But you’re not limited by these, because you can create news of your own type…

MeshObjects:

  • DataFeeds: Collection of container items for data, that is included in the mesh object. Every data feed can have many data entries.
  • Mappings: Collection, that contains mapping objects. Those indicate the devices this mesh object is mapped to.
  • Members: Individuals, who have permission to this mesh object. There are several role type for mesh object members: Full, Author, Reader, Writer. With those the core Live services and your applications can handle access to mesh objects.
  • News: Every mesh object can have several news, that are related to this object. As the global news, this is a LiveItemCollection of NewsItem objects.

DataFeeds:

  • DataEntries: Data entries are everything that contains data in a data feed. This can be files or folders or user-specific data. A data entry can contain a media resource, with which a file (image, video, audio, word document, …) can be viewed and converted automatically.

These are just some first thoughts and introductionary information about the resource model from a developer’s view. As said before, I will blog later on specific topics of that, going more in depth…

kick it on DotNetKicks.com

Live Framework CTP #2 – Silverlight: Hello Mesh

I recently created my first little mesh applications. And yeah, I like it! One of those was a simple „Hello Mesh“ Silverlight application, only to get familiar with the mesh application creation and deployment process.

Fist I created a new „Silverlight Mesh-enabled Web Application“, which can be chosen through the new „Live Framework“ project type, (comes with the Live Framework Tools for Visual Studio).

New Live Framework Project Type
New Live Framework Project Type
This results in the following project structure:
Silverlight Mesh-enabled Web Application project structure

There is a main application project „MeshApp1“, whose icon indicates that it’s mesh-enabled. Furthermore it contains a page that is hosting the Silverlight application „MeshApp1Silverlight“. I’ve heard that there are some problems, if you want to adopt this project structure to your custom needs. Some people seem to have problems when adding new references and projects, making the Silverlight application not work on a machine’s desktop. I’m sure that Microsoft is working on that, don’t forget we just have a CTP at the moment 😉

In Blend I’m layouting „Hello Mesh“ a little bit, so that my Mesh in the cloud is getting happy when it sees my application. Back in Visual Studio and ready to run, I make a thing which I call F5 deployment, regarding the effect of pressing the F5 key in my solution. So what’s going on? When you press F5 the first time, a dialog is popping up that is showing you some information about deploying your app:

Deployment dialog for a mesh-enabled web application

At present you have to make some handwork on this. With the Live Framework you can create up to 25 projects at the moment, this should be enough for some playground experiences. The dialog is showing you the way: you have to go to your Azure developer center and create a new project. In return you get an application self-link (the URI for the application), which the dialog wants from you. With this, Visual Studio knows where to deploy the application automatically, when you press F5 the next time. My opinion on this is that this kind of handwork could be made a little smarter or more automatic, but remember: you have to make it only once, so it is quite ok for me. 

What I think about this: that is how cloud application development and deployment should look like! Easy development with respect to your existing skills and easy deployment of your applications. Furthermore, with the application’s self-link, Visual Studio is able to debug your applications in the cloud. That’s great! No competitor of Microsoft gives you these possibilities and in my opinion it’s making a big difference and will contribute much to the success of Microsoft’s cloud strategy. Attracting developers is the core of all.

Aehrm, where have I been? Oh yeah… well… when you press F5, your Silverlight application will start in the cloud. The Live Desktop will open up and your Silverlight application will get a shortcut on it. It starts on your Live desktop, showing the overwhelming „Hello Mesh“ result:

Silverlight Mesh Application on the Live Desktop

If you run the „Live Framework Client“, this app automatically creates a shortcut on your machine’s desktop to the MeshApp1 Silverlight application. And in the background, it automatically synchronizes the application to your machine. Now try the following (it works!): disconnect from the Internet, click on the shortcut at your desktop and the application runs! Without connection, on your desktop. This really impresses me and I will try some more complex scenarios later on…  Here’s the local desktop result:

Silverlight Mesh-enabled Web Application on the local desktop

First conclusion: I like/love my first experiences with the Live Framework and that I can use my existing development skills. The deployment process is intuitive and easy and brings my expectations to life. I will go on with some more topics during the next days and weeks.

kick it on DotNetKicks.com

Live Framework CTP #1: Start!

The last two days I started playing around with the Live Framework CTP, where I was lucky to get a token from. I will write about my experiences in a series of postings in this place, so stay tuned. I encountered with some first issues and want to write about those in this posting.

Installation

After redeeming my Live Framework CTP token, I was able to download the following packages:

  • Live Framework Client: similary to the „normal user“ Live Mesh client, the Live Framework client runs in the background and allow synchronisation. In difference to the Live Mesh client it’s limited in functionality, as you will see later on. Note: the Live Framework Client is not needed for you as a developer to program against the Live Services, it’s just for background synchronisation.
  • Live Framework SDK: The Software Development Kit for the Live Framework. There is only a zip archive, no installation package. You have to copy the included folder into „C:/Program Files/Microsoft SDKs/“  by yourself. The SDK contains a resource browser tool, application samples, some documentation and libraries for .NET, Silverlight and Javascript.
  • Live Framework Tools for VS: This is an installation package which gives you a new project type „Live Framework“ when creating a project in Visual Studio, as shown below. There you can choose between „Mesh-enabled Web Application“ (allows you to create a Web App using the Live Framework Javascript library) and „Silverlight Mesh-enabled Web Application“, if you got the Silverlight Tools installed. Additionally it allows you to deploy your mesh application automatically in your mesh when running the app (I call it F5 deployment and like it very much – that’s how cloud should look from a developer’s point of view). Independently you can manually create mesh-enabled console/WPF/WinForms applications by adding the required libraries as references to your project. Thus you can easily add some mesh-functionality to your given applications.

That’s it. Installation worked fine except for the Live Framework Client (see below).

New Live Framework Project Type
New Live Framework Project Type

Developer Sandbox

With your Live Framework token you get a completely new Mesh in https://developer.mesh-ctp.com/. That means you can not use your existing „user“ Mesh from https://www.mesh.com/. You have to add devices again to your developer Mesh and it has the same 5GB storage (at the moment) and device ring/Live Desktop as your user mesh. In difference you can add applications to your developer mesh and this makes a big and even great difference.

Applications

At the moment there is no possibility to run applications in your user mesh. The developer mesh allows this. Some days before I shortly wrote (in German) about the Meshpack, which comes with 4 little Silverlight applications. The developer mesh allows you to include those 4 applications in your mesh with your Live Framework token at hand. The „Apps“ tab of your developer mesh will show those apps and allows you to create new instances of each one, which will appear on your Live Desktop and can be run from there. I’m waiting in suspense to see which applications will be available in the future through the public application catalogue, how they can be included in Windows Live and how you can share applications and there data with your friends!

The meshpack installed in the developer mesh
The meshpack installed in the developer mesh

Live Framework Client

The Live Framework and Live Mesh Clients

The „Live Framework Client“ is the developer mesh’s pendant to the „Live Mesh Client“ a normal user’s mesh comes with. The Client can be installed and then runs in the background. A taskbar icon will show you that you’re connected with your developer mesh and gives you recent news of your mesh.

There’s a really annoying issue with the Live Framework Client: if you have the Live Mesh client installed, you cannot install the Live Framework client! This frustrated me because I want to use the Live Framework, but at the same time I don’t want to miss the Live Mesh functionality on my machines.

Live Mesh and Live Framework client running side by sideBut I found a solution/workaround for this: you can uninstall the Live Mesh client and then you’re able to install the Live Framework client. After that install the Live Mesh client again and then you will not encounter any problems. I don’t know why Microsoft doesn’t allow both applications to run at the same time and I don’t know if there could be any problems with that. Until now I don’t have troubles with both applications and there synchronization functionalities.

In comparison to Live Mesh, the Live Framework client has some limitations in functionality. There is currently no ability to synchronize folders to your machine and you can’t connect remotely to other machines. Furthermore you can’t get online/offline information for your machines. At first look these are really annoying limitations, but at the second look it is no big problem for you as developer, who wants to explore the functionality of the Live Framework, not of the client.

The really great thing at the Live Framework Client is: you can synchronize applications between your mesh and your machines! From a developer’s point of view, applications in your mesh are just simple mesh objects, like mesh folders, mesh files and so on. This gives you a nice and consistent view of everything in your mesh. Applications can have data feeds, that means data which they contain. They have all the nice things other mesh objects have, too: news, members, feeds, mappings, …   and you can iterate through them programmatically, which will be shown in one of the next posts. So what means application synchronization? First when you include or deploy a Silverlight application into your mesh, you will automatically get a shortcut on your machine’s desktop! Thus you can start applications from your Live Desktop on the browser or directly from your desktop – it doesn’t matter. And with synchronization you’ll get all the data of the application (this means all data of the mesh object which is represented by your application). You can work offline with this data and if you come online again, this data will synchronize automatically with your mesh. Great stuff, isn’t it? I will give an in-depth look on that in a later blog entry…

When taking the meshpack as an example, there you’ve got the corkboard application. If you create a new instance of that in your mesh, you’ll get a shortcut on your Live Desktop and can start the app from there as shown below:

The corkboard application running on the Live desktop
The corkboard application running on the Live desktop

At the same time the Live Framework client notices the new application, synchronizes it with your machines and makes a shortcut on your desktop. From there you can start the application, which gives you nearly the same view as on your Live Desktop:

The corkboard application running locally on the user PC's desktop
The corkboard application running locally on the user PC's desktop

Live Mesh? Just an application!

When I first heard of and used the Live Mesh, I thought and spoke of Live Mesh all the time. But then I reconsidered the whole thing and found out the players behind the scenes. Is it Live Mesh we should speak about as developers? No, it’s not! Live Mesh is nothing but an application, a frontend of the real Mesh. In this mesh you have some nice things like devices, profiles, contacts, mesh objects (data, applications, …)  etc., which are populated via a restful web interface. Live Mesh uses this interface for displaying the device ring and Live desktop in your browser and for the features of the Live Mesh client (synchronization, …). The functionality of the Mesh itself is enabled by the Live Services as part of the service layer of Windows Azure. And with the Live Framework, you as developer are able to code against these Live Services and use all the functionality and data which are offered through Mesh and the Live Services. Thus you are able to create applications similar to Live Mesh or something really new. As your future killer apps, Live Mesh is only an end-user-friendly application build on the Live Services basement.

kick it on DotNetKicks.com

Guys, it’s Christmas (for me) – let’s start meshing!

Wow, that’s so really really great. I’ve written about my pains (German) while waiting for the Live Framework CTP Token before, but no the pains have ended! No, I did NOT get a token while poping out of the waiting list. I’m such a lucky man… Here’s the story: yesterday by „accident“ I was on a web page of a Live Framework blogger and by „accident“ I wrote her an e-mail, if she wouldn’t have a token for me. And in response:

You are lucky, my last token was requested through the blog but the person never responded back. [Here you have it]

Guys, I’m soooo happy! Finally I can now get experienced with the Live Framework, write my meshified applications and blog about it. What a beautiful day… it’s Christmas for me (only better ^^) 🙂

Vorhang auf für… das MeshPack

Wie bereits zuvor beschrieben, ist Live Mesh nicht lediglich ein weiteres Synchronisationstool, sondern unter der Oberfläche eine Plattform für die Bereitstellung umfangreicher verteilter Funktionen, gegen die mit dem Live Framework programmiert werden kann. Und wie vermutet haben die Microsoft Startup Labs nun (Blog-Eintrag) als „Showcase“ die ersten 4 Mesh-Applikationen veröffentlicht: das MeshPack! (Zugang mit PDC-Code)

Die 4 Anwendungen lauten wie folgt:

  • Collaborative Crossword: Ein Kreuzworträtsel, welches von mehreren Benutzern zusammen (kollaborativ) gelöst werden kann.
  • CorkBoard: Digitales schwarzes Brett.
  • CrowdVote: Kollaboratives Umfragen-/Abstimmungstool.
  • MeshLists: Tool zur Erzeugung und zum Austausch von Listen.

Die Anwendungen basieren grundlegend auf den zur Verfügung gestellten Mesh-Objekten, z.B. den Feeds, um Informationen auszutauschen. Bei der Realisierung des Kreuzworträtsels kommt zudem Silverlight zum Einsatz, um die Mesh-Funktionalität mit einer RIA-Oberfläche zu verbinden.

Sicherlich ist keine dieser Anwendungen eine Killer-App und anscheinend spielen die Jungs bei Microsoft selbst noch mit dem Framework rum und erforschen, welche Ideen möglich bzw. sinnvoll sind. Persönlich vermute ich, dass im Hintergrund bereits größere Projekte angesetzt sind und umgesetzt werden, diese jedoch noch keinen Status erreicht haben, der es wert wäre, die Anwendungen das Licht der Welt erblicken zu lassen. Ich bin sehr gespannt, wie es hier weitergeht.

Links:

Mesh me up!

Microsoft’s Live Mesh ist ja nun endlich auch offiziell als Betaversion in Deutschland verfügbar. Grund genug, sich diese Web-Applikation einmal genauer anzuschauen…  Live Mesh (bzw. das derzeitige Frontend) ist (momentan!) vordergründig ein Online-Dienst zur Synchronisation von Daten zwischen mehreren Rechnern. Gerade für mich, der 3 Rechner besitzt und diese auch abwechselnd in Betrieb hat, kommt so eine Lösung gerade recht. Daten (z.B. Visual-Studio-Projekte), welche man auf allen seinen Rechnern immer auf dem aktuellsten Stand haben möchte, ohne z.B. über einen LAN-Server darauf zuzugreifen, können auf diese Art schnell synchronisiert werden.

Live Mesh

Mit seiner Windows-Live-ID hat man sich schnell beim Mesh-Dienst angemeldet und kann ein/sein Mesh anlegen. Zum Mesh gehört grundsätzlich eine Weboberfläche, über die neue Ordner angelegt werden können und über die sich neue Rechner/Geräte leicht in das bestehende Mesh aufnehmen lassen. Zudem steht über den „Live Desktop“ eine Art Desktop im Browser zur Verfügung, über den sich Dateien öffnen lassen und sogar Bilder angeschaut und Video-/Audio-Dateien abgespielt werden können. Die Datenhaltung erfolgt zentral, d.h. die zu synchronisierenden Daten liegen auf einem Server in einem MS-Datencenter, wobei der eigene Account über 5GB kostenlosen Speicher verfügt. Sensible Daten sollte man hier vielleicht nicht ablegen, je nachdem wie sehr man Microsoft vertraut 🙂  Dies ist sicher auch der größte Knackpunkt der Applikation, da nicht jeder Benutzer seine Daten auf einem Microsoft-Server halten möchte…

Clientseitig wird auf jedem Rechner, der an der Datensynchronisation teilhaben soll, eine kleine Desktop-Applikation installiert. Nachdem man den Rechner über die Webplattform zum Mesh hinzugefügt hat, lassen sich über diese Applikation schnell zu synchronisierende Ordner auswählen. Insgesamt erhält also jeder Client eine lokale Kopie der Ordner, die im Mesh abgelegt sind. Auf dieser Kopie kann gearbeitet werden und Dateien können geändert werden. Die Clientapplikation sorgt dann automatisch dafür, dass Änderungen zum zentralen Server hochgeladen werden und dann an die anderen angeschlossenen Geräte verteilt werden. So wird dafür gesorgt, dass die Dateien ohne Zutun des Benutzers auf dem aktuellen Stand sind. Benutzerfreundlicher kann man es kaum gestalten. Derzeit lassen sich Windows- und Mac-Rechner zum Mesh hinzufügen, bald sollen auch Mobiltelefone integriert werden können.

Nur zur Synchronisation?

Synchronisationssoftwares gibt es viele, Live Mesh bietet aber noch ein bisschen mehr. Über den Live Desktop kann man auch von Rechnern, die nicht an der Synchronisation teilhaben, auf Dateien zugreifen und neue Dateien hinzufügen. Die Webapplikation ist komplett in Silverlight geschrieben und gestaltet sich entsprechend intuitiv und benutzerfreundlich. Weiterhin kann man andere einladen und ihnen Zugriff auf einen Ordner gewähren. Somit lassen sich bestimmte Ordner leicht austauschen und gleichzeitig synchron halten. Eine News-Seite informiert dabei über aktuelle Änderungen und erlaubt auch ein Hinterlassen eigener Nachrichten. Eine interessante Möglichkeit ist zudem die Option, einen Remote-Zugriff via Live Mesh zu gewähren. Rechner, die online sind, können so von einem selbst über Live Mesh ferngesteuert werden, wenn man dies erlauben möchte.

Zukunftsstrategie

Microsoft hat ja bereits mit Groove eine Synchronisationssoftware im Programm, was macht Mesh also für einen Sinn bzw. besonders? Insgesamt kann man Live Mesh bzw. das, was derzeit davon zu sehen ist, guten Gewissens als Spitze eines riesigen Eisberges sehen. Ziel ist vielmehr die Vereinigung der 4 Elemente Applikationen, Geräte, Daten und Menschen. Den Zugriff und Austausch zwischen diesen Elementen zu vereinheitlichen ist das Ziel von Live Mesh. Unter der Oberfläche ist die Windows Azure Plattform angesiedelt, darauf setzen die sogenannten „Live Services“ auf (s. Bild unten). Diese stellen Dienste/Services für Live Mesh zur Verfügung und über das Live Framework kann bequem dagegen programmiert werden. Das alles sieht sehr elegant und einfach aus. Um z.B. alle zum Mesh gehörenden Devices abzurufen, genügen folgende Zeilen: „var livefx = new LiveOperatingEnvironment(); livefx.Connect(); foreach(var dev in livefx.Mesh.Devices) …“. Außer Devices gibt es noch allgemeine Mesh Objects, Data Feeds und Data Entries, Contacts, Profiles, News, Media Resources etc.. Das Live Framework ist als CTP bereits verfügbar, allerdings existiert für den Download eine Warteliste, die ziemlich lang sein dürfte (ich warte immernoch…). Microsoft hat weiterhin bereits damit begonnen, auf Basis des Live Frameworks einige Applikationen zu schreiben. Im Vorfeld wurde schonmal mit Tracker eine „Demo-App“ zur Aufgabenverwaltung vorgestellt. Man stelle sich aber vor, was mit dieser Technologie alles möglich ist! Eigene Applikationen können leicht alle Mesh-Features nutzen und Daten über das Mesh anderen Devices zur Verfügung stellen. Weiterhin sind Anwendungen denkbar, die sowohl auf dem Live Desktop als auch auf den Client-Rechnern laufen und somit von überall erreichbar sind.

Ich bin gespannt, was da demnächst auf uns zukommt – get meshified 🙂