September, 2011

  • Interoperability @ Microsoft

    The OData Producer Library for PHP is here



    I’m pleased to announce that today we released the OData Producer Library for PHP. In case you missed it, we released last year a client library that allows PHP applications to consume an OData feed, and with this new library it now easy for PHP Applications to generate OData Feeds. PHP developers can now add OData support to their applications so it can be consumed by all clients and libraries that support OData.

    The library is designed to be used with a wide range of data sources (from databases such as SQL Server and MySQL to data structures that are at the application level for applications such as CMS systems). The library is available for download under the open source BSD license:
    In order to make the library generic so it can be used on a wide range of scenarios we didn’t take any dependency to specific data structures or data sources. Instead the library is based on 3 main interfaces that, when implemented by the developers for the specific data source, allow the library to retrieve the appropriate data and serialize it for the client. The library takes care of handling metadata, query processing and serialization/deserialization of the data streams.

    Two examples are included that show how a full OData service can be built using the library: the Northwind DB example uses an SQL Express DB as data source and the WordPress example that uses the WordPress’s MySQL DB Schema to expose a feed for Posts, Comments and Users.

    Quick Introduction to OData

    Open Data Protocol is an open protocol for sharing data. It is built upon AtomPub (RFC 5023) and JSON. OData is a REST (Representational State Transfer) protocol, therefore a simple web browser can view the data exposed through an OData service.

    The basic idea behind OData is to use a well-known data format (Atom feed or JSON) to expose a list of entities.

    The OData technology has two main parts:

    • The OData data model, which provides a generic way to organize and describe data. OData uses the Entity Data Model (EDM).The EDM models data as entities and associations among those entities. Thus OData work with pretty much any kind of data.
    • The OData protocol, which lets a client make requests to and get responses from an OData service. Data sent by an OData service can be represented on the wire today either in the XML-based format defined by Atom/AtomPub or in JavaScript Object Notation (JSON).

    An OData client accesses data provided by an OData service using standard HTTP. The OData protocol largely follows the conventions defined by REST, which define how HTTP verbs are used. The most important of these verbs are:

    • GET : Reads data from one or more entities.
    • PUT : Updates an existing entity, replacing all of its properties.
    • MERGE : Updates an existing entity, but replaces only specified properties.
    • POST : Creates a new entity.
    • DELETE : Removes an entity.

    Each HTTP request is sent to a specific URI, identifying some resource in the target OData service's data model.

    The OData Producer Library for PHP

    The OData Producer Library for PHP is a server library that allows to exposes data sources by using the OData Protocol.

    The OData Producer supports all Read-Only operations specified in the Protocol version 2.0:

    • It provides two formats for representing resources, the XML-based Atom format and the JSON format.
    • Servers expose a metadata document that describes the structure of the service and its resources.
    • Clients can retrieve a feed, Entry or service document by issuing an HTTP GET request against its URI.
    • Servers support retrieval of individual properties within Entries.
    • It supports pagination, query validation and system query options like $format, $top, $linecount, $filter, $select, $expand, $orderby, $skip .
    • User can access the binary stream data (i.e. allows an OData server to give access to media content such as photos or documents in addition to all the structured data)

    How to use the OData Producer Library for PHP

    Data is mapped to the OData Producer through three interfaces into an application. From there the data is converted to the OData structure and sent to the client.

    The 3 interfaces required are:

    • IDataServiceMetadataProvider: this is the interface used to map the data source structure to the Metadata format that is defined in the OData Protocol. Usually an OData service exposes a $metadata endpoint that can be used by the clients to figure out how the service exposes the data and what structures and data types they should expect.
    • IDataServiceQueryProvider: this is the interface used to map a client query to the data source. The library has the code to parse the incoming queries but in order to query the correct data from the data source the developer has to specify how the incoming OData queries are mapped to specific data in the data source.
    • IServiceProvider: this is the interface that deals with the service endpoint and allows defining features such as Page size for the OData Server paging feature, access rules to the service, OData protocol version(s) accepted and so on.
    • IDataServiceStreamProvider: This is an optional interface that can be used to enable streaming of content such as Images or other binary formats. The interface is called by the OData Service if the DataType defined in the metadata is EDM.Binary.

    If you want to learn more about the OData Producer Library for PHP, the User Guide included with the code provides detailed information on how to install and configure the library, it also show how to implement the interfaces in order to build a fully functional OData service.

    The library is built using only PHP and it runs on both Windows and Linux.

    This is the first release of a Producer library, future versions may add Write support to be used for scenarios where the OData Service needs to provide the ability to update data. We will also keep it up to date with future versions of the OData Protocol.

    Claudio Caldato, Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    Community Participation


    I'm heading off to Paris this weekend to participate in the annual Open Source Think Tank and Open World Forum events held in that wonderful city next week.

    I'm really looking forward to chatting with all those folk interested in this space, from enthusiasts to developers and end users.

    I will be joined at these events by my colleague and Technical Ambassador Craig Kitterman, as well as by our local market interoperability program lead Alfonso Castro.

    We will present technical sessions and participate in a number of panel discussions, ranging from what Open Source, Open Standards and Open Systems mean today to Open Source as an agent of change.

    Our participation in these Paris events complements our existing broad engagement with OSS communities, and we look forward to meeting our friends from the PhP, Node.js, Drupal, Joomla, and WordPress.communities as well as to making a lot of new ones.

    You can read more about our participation in Paris here, and we look forward to meeting those of you lucky enough to be attending in person.

  • Interoperability @ Microsoft

    Nokia Developers: learn Windows Phone even faster


    It’s my great pleasure to announce today a comprehensive package to leverage your development skills while learning to build applications for Windows Phone. The Microsoft & Nokia agreement has been described at length over the past few months and, like Matt Bencke highlighted, one of our goals has been to make it easy for Nokia Symbian developers to learn Windows Phone.

    So, folks from Microsoft and Nokia worked together to build a great package to help you get started. This helpful package contains the following tools and documentation to help you along the path to learning Windows Phone development:

    These complement the similar iOS/Android guidance & mapping work we released a couple months ago.

    The “Windows Phone Guide for Symbian Qt Application Developers” white paper is about 100 pages organized in 8 chapters.

    • clip_image002Chapter 1: Introducing Windows Phone Platform
      to Symbian^3 Qt Application Developers
    • Chapter 2: Windows Phone Application Design Guidelines
    • Chapter 3: Windows Phone Developer and Designer Tools
    • Chapter 4: C# programming
    • Chapter 5: Introducing Windows Phone Application Life Cycle
    • Chapter 6: Porting Applications to Windows Phone
    • Chapter 7: Windows Phone Example Applications
    • Chapter 8: Using the API Mapping Tool

    The white paper is available in different formats (HTML, DOCX & PDF). Feel free to leave comments, suggestions, and/or corrections on the online version.

    Chapter 6 introduces porting tutorials, in which you will find practical examples and tips on how to port your applications, like the RSS Reader applications or the “Diner” example, a catalog-type restaurant information application. From design consideration to data binding, the porting story addresses many aspects of the process that will be useful to you; the developer.


    The full list of samples and source code is available to you.

    The addition of Symbian Qt to the Windows Phone API mapping tool is another perk we wanted to deliver in order to speed up the learning curve to Windows Phone. For this first iteration of the mapping, we’ve focused on the core libraries for Qt 4.7 for Symbian (QtCore, QtGui, QtLocation, QtNetwork, QtSensors, QtSql, QtXml, QtWebKit, QML Elements, QML Components ). We invite you to offer up ideas about what additional mapping you feel would make sense and would like to see included in the tool.


    Finally, keep an eye on the “Nokia Windows Phone Training” roadshow, starting today in Paris, France. During this one day training event, you’ll learn how to take your ideas and get them running on the Windows Phone platform. Upcoming dates and locations for the roadshow are as follows: Milan, Italy (Sept 26), Madrid, Spain (Sept 29), Berlin, Germany (Oct 4) , London, United Kingdom (Oct 10) and Silicon Valley, USA - date & details coming soon!
    Similar events are also happening in Australia: Sydney (Sept 24-25[SOLD OUT], Oct 8-9), Melbourne (Oct 8-9[SOLD OUT, wait list]) and Brisbane (Oct 8-9).
    We realize this is only a few dates and locations, so for all the developers who want to learn Windows Phone, I recommend that you follow at your own pace the EXCELLENT “Window Phone Mango Jump Start” online video training. And stay tuned, there’s more to come!

    Start Today!

    We’re all eager to see the Nokia hardware running Windows Phone. Windows Phone Mango is just out of the door, so don’t wait, go get your copy of the “Windows Phone Guide for Symbian Qt Application Developers white paper and take advantage of its guidance!

    Jean-Christophe Cimetiere, Sr. Technical Evangelist
    @jccim -

    [Cross-posted on the Windows Phone Developer blog]

  • Interoperability @ Microsoft

    W3C Announces Process Innovations Making it More Authoritative And More Agile


    The JTC1 and W3C jointly announced this week that the international vote of 8 web services specifications was successful, and that these Recommendations are now ISO/IEC JTC1 International Standards.

    Last year, the W3C applied to ISO/IEC JTC1 to become a “Publicly Available Specification (PAS) Submitter”, which would allow selected W3C Recommendations to be  voted on to become international standards.

    After ISO/IEC JTC1’s approval, W3C submitted the package of 8 web services specifications that was recently approved. With this approval, the W3C is now using successfully another process innovation, the second this month.

    So why is this announcement important? The best answer comes from the W3C press release, which says: "To many national bodies, the ISO and IEC brands will be more familiar than the W3C brand. In some cases, such as procurement, a country may be required to use ISO/IEC standards. For these reasons and others, W3C believes that formal approval by JTC 1 of W3C standards as International Standards will increase deployment, reduce fragmentation, and provide all users with greater interoperability."

    Microsoft already implements these ISO/IEC standards in several ways, especially in .NET Framework which uses all their major features. Thus, products which layer on top of the .NET Framework can also use these standards. Microsoft General Manager Bob Dimpsey notes this in his testimonial, while also pointing to the fact that this announcement validates W3C’s ability to build authoritative standards.

    “Web Services specifications are an important part of the interoperability surface for Microsoft’s enterprise and cloud products.  For example, while Web Services specifications are used to enable a Single-Sign-On experience using Access Control Services (ACS), they are also one key way for connectivity with Windows Azure applications through Windows Communication Foundation. We are very pleased that national bodies around the world have agreed to advance these specifications to become ISO/IEC Standards.  Microsoft strongly endorses this vote of confidence in W3C’s ability to build consensus across diverse communities and produce stable, interoperable, and useful standards,” he says.

    This is the second important announcement from W3C in recent weeks about process innovations.  As you may remember, on August 16 Community Groups launched to provide an open forum where developers can work with other stakeholders to develop, analyze, test, and promote specifications using a lightweight process with sound legal underpinnings. This announcement was well received, with 15 groups (as of this writing) already up and running, while 9 more have been proposed and are looking for supporters. 

    Press reaction has also been very favorable.  I particularly like Webmonkey’s summary: "Well, now is your chance to do something more than whine about the slow pace of standards on your blog. The W3C’s new community groups are designed so that anyone can contribute to the development of HTML. Just head over to the site and join a group that interests you. …  With the new community groups you don’t need to be a Google or Apple employee to catch the attention of the W3C’s members, you just need to sign up and post your ideas for everyone to read."

    Together, the Community Group and PAS Submission announcements add up to a compelling story: The W3C Recommendation process now has an “on ramp” allowing open and agile development of community specifications that can feed specifications into traditional Working Groups, and it has an “off ramp” that allows provably useful and interoperable Recommendations to become ISO/IEC JTC1 international standards. 

    Not all specs will travel the full route from informal brainstorming in a Community Group to formal standardization by ISO/IEC JTC1, but it’s good to have that full development path available. Not only can individuals get together and jumpstart potential new web standards but there is a full path to ISO/IEC JTC1 standardization. 

    Michael Champion, Sr. Program Manager

    Member of W3C Advisory Committee and Advisory Board

  • Interoperability @ Microsoft

    PhoneGap mobile HTML5 framework adding support for Windows Phone Mango


    [Cross posted from the Windows Phone Developer Blog]

    We’re very excited to join Nitobi to announce availability of a PhoneGap beta supporting Windows Phone Mango. This new option to build applications targeting Windows Phone gives more choices to developers. In particular, Web developers will be able to easily leverage their HTML5 skills to target Windows Phone.

    The beta version of the PhoneGap libraries can be downloaded from:

    PhoneGapWindows Phone MangoIn case you’ve been so busy writing code for months and you’ve never heard about PhoneGap, it’s an open source mobile framework that enables developers to build applications targeting multiple platforms, by using standard web technologies (HTML5, CSS and JavaScript). On Windows Phone Mango PhoneGap leverages the new HTML5 support provided by IE9.

    We have been in touch with André Charland and Brian Leroux (Co-Founders of Nitobi the creator of PhoneGap), who are seeing a growing interest from the PhoneGap developer community to target Windows Phone. So we’ve started working with Nitobi, helping to speed up the development of Windows Phone Mango support in PhoneGap by providing engineering resources and technical support.

    The current beta version includes most of the basic features, and includes JavaScript APIs to use Windows Phone Mango features like:

    • Access Device Information (UDDI and stuff)
    • Add and search Contacts
    • Connection status (network / wifi connection status)
    • Alerts/Notification (alert and confirm)
    • Media Capture (Image and Audio)
    • Camera
    • Accelerometer
    • Geolocation

    Here’s a screen shot of the PhoneGap Unit Test application running on the Windows Phone emulator:


    I encourage you to read Nitobi’s blog post to get more details on how the whole process works.

    This is the first step toward having full PhoneGap support for Windows Phone Mango. Stay tuned, we will provide updates and more extensive demos as progress is made. With Windows Phone Mango Released to Manufacturing and developer tools hitting “Release Candidate”, it’s the perfect time to start testing, give feedback and join the PhoneGap open source project.

    Jean-Christophe Cimetiere, Sr. Technical Evangelist – Interoperability
    @jccim -

  • Interoperability @ Microsoft

    Site Ready WebSockets


    Today the Internet Explorer blog has a post on site ready Web Sockets, which talks about how WebSockets technology has made significant progress over the last nine months and how the Web gets richer and developers are more creative when sites and services can communicate and send notifications in real-time.

    As Brian Raymor, Microsoft's Program Manager for WebSockets notes in the blog, the standards around WebSockets have converged substantially, to the point that developers and consumers can now take advantage of them across different implementations, including IE10 in Windows 8.

    You can read the full post here.

Page 1 of 1 (6 items)