↑ Grab this Headline Animator
I, along with other Microsoft colleagues, participated in the ApacheCon 2009 in Oakland, CA this week. This week also marks the 10th Anniversary of the Apache Software Foundation – so congratulations to the ASF and overall Apache community, which has steadily grown and sustained over the past decade!
Microsoft is now actively participating in several Apache projects and becoming part of the core community. ASF President, Justin Erenkrantz, talked about Microsoft’s contributions recently, as well. Peter Galli has also blogged on other activities that we were engaged in at the ApacheCon this year.
I have personally been involved in the Apache Stonehenge incubator project along with my colleague, Kent Brown, and it is good to see all the progress that we have made in the last 1 year. The original goal of Stonehenge was to provide a public forum to test the interoperability of WS-* protocols on different vendor stacks and to build sample applications that could provide best practices and coding guidelines for better interoperability. We are on a good path to achieving many of these goals, with the main sample application, Stock Trader, now having been implemented on .NET (by Microsoft), PHP (by WSO2), WSAS JAVA stack (by WSO2), Metro (by SUN Microsystems), Spring Web Services (by SpringSource).
The Stock Trader application has also been extended to use the WS-Security and WS-Trust protocols now for claims-based authentication scenarios. This allows the end-users’ access to be authenticated through an independent Security Token Service (STS) that is trusted by the bank and to pass that token to the broker to process the transaction.
Moving forward, the Stonehenge dev community wants to focus on building multiple micro-samples each focused on specific set of WS-* protocols. I think this is a great idea because it will allow vendors, developers and customers to quickly test and learn specific protocols of interest to them instead of going thru one big application that covers most of them. It also allows individual developers to work on different samples and turn them around faster. One other idea that is being talked about is having a dashboard available which can show the results of interop tests across different stacks in an easy to understand and consume way. This will be of great interest to our customers who can see the interop testing results across different versions of implementations of WS-* standards by different vendors. Kent Brown, along with Prabath Siriwardena of WSO2, did a technical session on Stonehenge and talked about future plans. There seems to be good consensus building around these future plans for Stonehenge.
In addition to the meetings to discuss the progress of Stonehenge with other contributors to the project, I had the privilege of meeting with the ASF executives and talk about other projects that Microsoft can work on. I look forward to doing more interop work and engagements with the Apache community over the next year. We also showed off several other interop-related projects that Microsoft has been engaged in recently:
The Toolkit for PHP with Virtual Earth aka Bing Maps is one of the useful tools that we announced and on our Interoperability Bridges site. The toolkit provides a set of files that allow you to connect your server running PHP to a set of client web browser files in JQuery, Javascript, JSON that in turn access the Virtual Earth or Bing maps services in the cloud via request/responses. That’s a whole set of technologies working together to ease developing solutions.
The database that connects to PHP can either be either MySQL or Microsoft SQL Server and the kit ships with both of these in two separate downloadable (.zip) hosted on the Codeplex project site. The open source code is also available from this site and contributors welcome to check it out or contribute to it.
This scenario involves PHP using MySQL. In this case I want to be able to create pins on a Bing Map from a simple form on a web page and a database that stores the location. You have the ability of storing it directly into the database via the service with both the latitude and longitude as raw data or you have a provided helper application that will search a common address and store it transparently in the database and render it on a map as well as do some basic input checking.
You will need to have a web server running PHP 5.2 or higher installed, you must have JSON enabled for previous versions. An internet connection and Javascript enabled in your browser will also be necessary. The phpMyAdmin tool will be useful in setting up the initial database schema. The entries would each have a title, description, latitude and longitude and a position ID as a key. This will all be delivered back as JSON through the returnresults.php service included in the solution. Modify the $serverName variable in this file with the database server name. $uid and $pwd will need to be modified appropriately to a valid database user and password. $dbname changed to the correct database where you created the entries earlier. You will now have a service that will retrieve and store the data for your map.
You may want to add some sample values at the beginning so that some new shapes can be rendered by the mapping service. The pushpin shape is handy here and comes as a default in the solution. You can either populate the locations from your database tool or you can use the example below.
It’s a good idea to change the first variables in map.js with the starting location of your map and the zoom value by changing the results below, set for Seattle WA and it’s surroundings. It will give you a nice user experience if you start with a default that shows where there is a good number of pins or your first entry.
Then create a new html file with in the headers
The following statement loads the map from the mapping service, the function is provided in maps.js
Create a placeholder in the body for the rendered map, the following div will do this for you,
Then bring up a form which calls the other functions also located in the file maps.js. The proper way is to use form that calls the FindAndAddPin function by passing a title, description and location. You can also render the map by itself by omitting this form if you don’t want users to be able to modify it. The service will call the mapping service to find the location provided and provide a callback with an array that includes the latitude longitude. This in turn is stored by the SavePushPin function through the returnresults.php service to the local store we created earlier.
For illustration, you can use the alternate form that calls the SavePushPin function directly and it will write the latitude and longitude via service to the database. It will render the location when the map changes in any way and the function MapChangeHandler, receives an event . That handler lives in the GetMap function in reference earlier. Panning and Zooming the mouse will do the trick and update the values.
Save the html file and put it in the same folder or reference it appropriately along with returnresults.php, map.js, map.css and jquery-1.2.6.js included in the solution package you downloaded on your website and view in your browser!
That’s all you will need to display a Bing map on your site with pre-populated locations using a little PHP, JQuery, JSON and HTML!
Jas Sandhu Technical Evangelist, Interop Vendor Alliance Manager, Interoperability Strategy Team Twitter@jassand, FriendFeed@jassand
I’m very happy about today’s announcements at the Eclipse Summit in Ludwigsburg, Germany. Microsoft,Tasktop and Soyatec announced a series of projects to help developers using the Eclipse platform do two things: take advantage of new features in Microsoft® Windows 7 and Window Server 2008 R2 and reinforce Java and PHP interoperability with Windows® Azure and Microsoft® Silverlight.
In the first of the four projects, Microsoft is partnering with Tasktop Technologies, a leading Eclipse-based solutions provider from Canada, to create an Eclipse “next-generation experience” on Windows 7 and Windows Server 2008 R2, which shares the same user interface improvements. Tasktop Technologies will contribute enhancements to the Eclipse IDE, which will be available under the Eclipse Public License in Q1 of 2010.
In addition, Microsoft has collaborated with Soyatec, a France-based IT solutions provider, to develop three solutions:
Microsoft is providing funding and architectural guidance for all four of the projects. Let’s take a look at some of the details.
Eclipse “next-generation experience” on Windows 7
Microsoft and Tasktop will collaborate to extend the Eclipse Rich Client Platform (RCP), and in particular the Standard Widget Toolkit (SWT), to include the mapping of new features offered by Windows 7. This will allow Eclipse developers to take advantage of the new user interface features offered by Windows 7, directly from the Eclipse IDE and from any desktop applications built on top of the Eclipse platform.
Here are a couple of sample features that illustrate what I’m talking about:
Of course, these features and screenshots are the result of early prototyping, so they may not precisely duplicate the features that will be delivered during the first phase of the project. Microsoft and Tasktop Technologies are working together to establish the following list features, which are currently entered as bugs in the Eclipse bugzilla:
These goals mark the beginning of a momentous journey for us. We expect to complete the first phase in Q1 2010.
As always, feedback from the developer community about “most wanted” features is very important to us. So if you have ideas, don’t be shy about speaking up—we would love to hear them. I also encourage you to read Mik Kersten’s blog post (Mik is Tasktop’s CEO and project lead of Mylyn) to get his perspective on the project.
Windows Azure Tools for Eclipse for PHP developers
Microsoft worked with Soyatec on Windows Azure Tools for Eclipse, a project to produce an open source plug-in that enables PHP developers using Eclipse to create web applications that target Windows Azure. Windows Azure Tools for Eclipse provides a series of wizards and utilities that allow developers to write, debug, and configure for and deploy PHP applications to Windows Azure. It is available for download at www.windowsazure4e.org
Architecturally speaking, the plug-in leverages the PHP Development Tools (PDT) framework for enabling PHP developers with integrated developer experiences.
The plug-in also bundles the existing Windows Azure SDK for PHP, which we introduced a few months ago. In a nutshell, this SDK provides a speed dial for PHP developers who use the Windows Azure storage component, making it very easy to use the blob, queue and table data storage features. If you need more details about this SDK, just visit the project site at http://phpazure.codeplex.com/.
In the coming months, we’ll detail many of the additional features you’ll find in the Windows Azure Tools for Eclipse plug-in. For now, you can get a quick overview by watching a video we just recorded with Robert Hess for Channel9:
Windows Azure SDK for Java developers
First let me say that the Storage Explorer is really one of the coolest features of Windows Azure Tools for Eclipse—it allows developers to browse data contained in the Windows Azure storage component, including blobs, tables, and queues. Storage Explorer was developed in Java (like any Eclipse extension), and we realized during the Windows Azure Tools for Eclipse development with Soyatec that abstracting the RESTful communication aspect between the Storage Explorer user interface and the Azure storage component made a lot of sense. So this led us to package the Windows Azure SDK for Java developers as open source, which is available at www.windowsazure4j.org.
The Windows Azure SDK for Java enables developers to easily leverage Azure storage service in their Java applications. The logical architecture is very simple:
The Windows Azure Storage Explorer feature that is part of Windows Azure Tools for Eclipse illustrates perfectly a Java application using the SDK:
Eclipse Tools for Silverlight
The Eclipse Tools for Silverlight (Eclipse4SL) plug-in is an open source, cross-platform plug-in for the Eclipse development environment that enables Eclipse developers to build Silverlight Rich Internet Applications (RIAs).
We have developed subsequent beta versions, including the Mac version, since announcing the Eclipse4SL project in October 2008. So, I’m very excited to announce that Microsoft and Soyatec have released version 1.0 of the Eclipse Tools for Silverlight plug-in, which can be downloaded here: http://www.eclipse4sl.org/
Version 1.0 of Eclipse4SL targets Silverlight 2.0. We are working with Soyatec to add support for subsequent releases of Silverlight (Silverlight 3.0 was released in July). You can find a roadmap of the milestones that we have projected on the project site: http://www.eclipse4sl.org/#roadmap . Video demo walkthrough of the plug-in are available here and here (Mac version).
We are always working hard to find new ways to provide more choice and opportunity for developers in our ongoing journey to foster interoperability between Microsoft products and other technologies. We are hoping that today’s announcements give developers the additional choices and opportunities they’re looking for, and that they amount to yet another reason why choosing Microsoft platforms means keeping all the options open.
Data portability has become an increasing need for our customers and partners as more information is stored and shared in digital formats. One scenario that has come up recently is how to further improve platform-independent access to email, calendar, contacts, and other data generated by Microsoft Outlook.
On desktops, this data is stored in Outlook Personal Folders, in a format called a .pst file. Developers can already access the data stored in the .pst file, using Messaging API (MAPI) and the Outlook Object Model—a rich set of connections to all of the data stored by Outlook and Exchange Server—but only if Outlook is installed on the desktop.
In order to facilitate interoperability and enable customers and vendors to access the data in .pst files on a variety of platforms, we will be releasing documentation for the .pst file format. This will allow developers to read, create, and interoperate with the data in .pst files in server and client scenarios using the programming language and platform of their choice. The technical documentation will detail how the data is stored, along with guidance for accessing that data from other software applications. It also will highlight the structure of the .pst file, provide details like how to navigate the folder hierarchy, and explain how to access the individual data objects and properties.
This documentation is still in its early stages and work is ongoing. We are engaging directly with industry experts and interested customers to gather feedback on the quality of the technical documentation to ensure that it is clear and useful. When it is complete, it will be released under our Open Specification Promise, which will allow anyone to implement the .pst file format on any platform and in any tool, without concerns about patents, and without the need to contact Microsoft in any way.
Designing our high volume products to enable such data portability is a key commitment under our Interoperability Principles, which we announced in early 2008. We support this commitment through our product features, documented formats, and implementation of standards. The move to open up the portability of data in .pst files is another step in putting these principles in action.
Over the past year, Microsoft Office has taken several steps toward increased openness and document interoperability. We’re proud of the work we’ve done around document interoperability, offering customers a choice of file formats and embracing a comprehensive approach that includes transparency into our engineering methods, collaboration with industry stakeholders, and shared stewardship of industry standards.
We’re excited about the possibilities created for our customers and partners by this kind of effort, and we look forward to continued collaboration with the industry in our pursuit of improved interoperability with Microsoft Office. Stay tuned.
Paul Lorimer, Group Manager, Microsoft Office Interoperability.
Related Items:
ZendCon 2009 just wrapped up on Thursday. It was held at the San Jose McEnery conference center from the 19-22 October 2009. The conference is a great opportunity to catch up on PHP development and deployment. There are intensive tutorials and crash courses where developers can get up to speed quickly and get certified. An Un-Conference runs alongside the main sessions in an informal setting and is mostly presented by the attendees themselves. An exhibit hall has a few partners on display including our Microsoft Website Spark team. There was something for those new to the technology, and plenty to chew on for experts, with plenty of opportunities to network and get to know one another.
ZendCon is put together by Zend Technologies Inc. They are also is known as ‘the PHP Company’ in the industry. The founders, Andi Gutmans (CEO) and Zeev Suraski (CTO) are key contributors to PHP and the creators of the core PHP scripting engine, the Zend Engine as well as the Zend Framework. The company provides important leadership for PHP and other open source communities, and plays a central role in the explosive growth of PHP.The conference also serves as an opportunity for the rest of the contributor community to have a real-world venue to connect, which is an important thing in itself as they usually interact virtually. You get to hear about some of the key developments and trends right from the source and not just as the sessions.
Microsoft has been participating in ZendCon since 2006 and so we weren’t exactly strangers to this community. At this conference however we had some key information that we wanted to share with the community. These projects can be found on our Interoperability Bridges page and are also on this blog. Featuring …
PHP on Windows has come a long way on Windows! At first it was a framework you had to compile from source and run on a web server, it is now installable from many popular ftp/websites like windows.php.net. You can easily get PHP downloaded along with the rest of your favorite apps and tools on your web development stack by using the Microsoft Web Platform Installer. It’s tiny and free! The install for PHP happens in minutes once you pull it down from the web. More and more applications that are frequently being adopted can be found on the Windows Web App Gallery. For example applications such as Drupal, a popular Content Management System and Wordpress, a popular Blog engine are available on there.
Getting PHP on Windows easily installed for development and deployment was one of the most frequently asked question by most PHP developers and administrators I have talked to. Many are shocked when they first download the installer and in a few check boxes have a fully configured PHP environment and application running. You can also modify and create custom deployments of your applications fairly easily and have the same environment running in your staging and production environments in a few mouse clicks too.
The keynotes are a big draw at the event … Andi Gutmans in his kickoff and state of the union keynote, ‘PHP at the Heart of Mainstream IT’, spent some time on the partnership with Microsoft. You can read a little more about what was said on Information Week and Visual Studio Magazine. We were also on a special Keynote Panel, Developing on the Cloud. Vijay Rajagopalan, Principal Architect on the team and a person who is very instrumental in developing some of the technical bridges mentioned in this post participated on behalf of Microsoft. He was joined by a few other cloud players including Wil Sinclair (Zend), Doug Tidwell (IBM), Thorsten von Eicken (RightScale) and Dave Nielsen (CloudCamp). Stephen O'Grady (RedMonk) was the moderator. Most of the panels participants are from the Simple Cloud effort. The questions were mostly taken from the #ZendCon Twitterstream in real-time and that gave a bit of a dynamic feel to the panel and allowed observers to provide live and, most of the time, candid commentary. There was a range of discussion from developer tools and frameworks, to management and security, and to more abstract discussions about the offerings from different vendors in the industry.
Some notable sessions that covered Microsoft and Interoperability topics,
Neat thing about this community of web experts, they share their slides online! You can find them at the ZendCon 2009 and Unconference Joind.in event page.
There was a lot to learn! I had a very pleasant experience at the conference and I’m very glad that I attended. I even bumped into some old friends and made many new ones too. I would like to thank all the folks at Zend Technologies & S+S media for putting the conference together and to the PHP community for the great discussion on technology, the web, PHP and all sorts of geekdom … y’all rulz!
Jas Sandhu Senior Technical Evangelist, Interop Vendor Alliance Manager, Interoperability Strategy Team Twitter@jassand, FriendFeed@jassand
My last post, Microsoft, Interoperability at XML-in-Practice 2009 mentioned a project called Open Government Data Initiative (OGDI) which complements Data.gov by providing an SDK that allows you to easily access publicly available government data. It’s a pretty useful tool to quickly build applications on top of the datasets. I had a couple of questions on this project and how to interact with the PHP language and I wanted to highlight some simple ways on how you can do so.
The most interesting way you can do so is by using PHP via our Toolkit for PHP with ADO.NET Data Services. This project makes it easier for PHP developer to take advantage of the ADO.NET Data Services, a set of features now available in the .NET framework. It simply exposes data in a RESTful way via proxy classes that are generated by the toolkit at design time by using the metadata that is exposed. Your code at runtime uses these classes to work with the .NET based service over http. You can easily adapt the example given in the toolkit also described by Claudio here, to use the OGDI service.
You will want to install the toolkit as per instructions (/docs folder has a good Users Guide, it’s also available here) by copying all the files and folders into an accessible folder with the proper include_path reference in your php.ini file, as well creating the proper variables and enabling the proper extensions such as php_curl an php_xsl. This stumped quite a few folks as generating proxy classes using the PHPDataSvcUtil.php client will not work otherwise and neither will the proxy, editor or the entity you generate. With that done, you should be able to point to the uri, you want on the OGDI data service (e.g. http://ogdi.cloudapp.net/v1/dc/ ) and with that you can generate your proxy classes or Entity Container. You can find a working example that has a full browser for the data at http://ogdiphpsample.cloudapp.net/ , with source code available that you can reference. There is also an ADO.NET Data Services Client Library that can be found here in which you can build using Visual Studio 2008, Service Pack 1 or later and create a svc proxy using the above method.
The next option is to use the REST Web Services, that let’s you query using PHP and have a return result in either ATOM Publishing Protocols, Javascript Object Notation (JSON) and JSON with Padding (JSONP) which is used in quite a few Web2.0 frameworks. There is also the ability to call using straight Javascript from within your PHP apps. You would ideally however want to create a REST client service class, with a pointer to the URL, typically one of the data services on http://ogdi.cloudapp.net/v1. You will then create a query, using a format, using the methods defined here. After grabbing executing with the proper exception handling and managing the responses for display or processing. You can see an example of the PHP code by using the data catalog. This query for example, will return the Domestic Per Diem Rates for 2009 from the General Services Administration entity container. You can also apply filters to narrow down your result as in the examples above.
There is also the ability to return your data in Geospatial form by using the Keyhole Markup Language (KML) which is compatible with popular mapping tools including Bing Maps and services from Google and yahoo. All you need to do is to append format=kml to your query just like the filters and you will be able to visualize the data that is returned. You will find some good examples of usage in the data catalog mentined earlier. That should add some interesting color to your application along with the other methods mentioned above if the data lends itself to the solution you create.
I have just returned from a busy two days in the Washington DC area for XML-in-Practice 2009. The event was held in the Arlington VA Hilton on September 30 and October 1. The conference’s purpose is to showcase real world applications and solutions that XML has enabled, enhanced and or made possible. The event was put together by the IDEAlliance and in tradition with the XML Conference, the tracks covered a number of different topics with technical depth and explored issues beyond the fundamentals. The tracks included the Electronic Medical Records Summit covering President Obama’s Economic Plan, eGovernment Program , Publishing & Media Program , Applications, Foundations and Interoperability Program, and a Tools Summit. You can also find the Conference Program.
I wore a few hats at the event, I was a member of the Program Advisory Committee, was a co-chair/track leader of the Applications, Foundations and Interoperability Program with G. Ken Holman from Crane Softwrights Ltd. and co-presented a session on Open Government and Interoperability with Dan Kasun who leads our US Developer and Platform Evangelism Public Sector team. The session gave us an opportunity to start a discussion about how Microsoft is participating, sharing our thoughts and work in engaging with Recovery.gov which is built on SharePoint and consumes multiple disparate data sources, interoperates with a number of other technologies, and to share our Open Government Data Initiative (OGDI) which complements Data.gov
Keith Hurwitz, our State and Local Government Evangelism Manager on Dan’s team, also participated in the Demo Jam at the reception hosted by one of our InteropVendorAlliance.org partners Mark Logic using OGDI. He dived deeper into OGDI in a session the next day titled Microsoft’s eGovernment Solutions: Government Transparency and Cloud Computing: Publishing government data in Windows Azure with Microsoft’s Open Government Data Initiative open source toolkit. Keith shared some of the thinking on how it can be used, it’s architecture and demonstrating some good examples, including the OGDI sample site and a visualization by a partner IDV Solutions called Visual Fusion that utilizes the OGDI data. OGDI is a great cloud solution for Government hosted on Windows Azure. It supports calling from a number of different languages including Flash, Java, Silverlight, Google Maps and Bing Maps. It also utilizes some of the Technical Bridges that have been highlighted on this blog including the Toolkit for PHP with ADO.NET Data Services, Open XML Daisy Translator. OGDI has also been used as a demo in our latest technical bridge published, Restlet Extension for ADO.NET Data Services.
I had a great opportunity to learn a bunch of new stuff and I would like to thank the organizers, IDEAlliance, it’s board, the track leaders and members of the advisory committee, our great speakers and to the attendees for the interaction and stimulating conversation. Special thanks to Joy Donat and Ken Holman for cat herding. I look forward to working with you all again at the next event.
Today, Microsoft announced a new XMPP Gateway for Office Communications Server 2007 R2 that enables interoperability with Cisco Jabber/XMPP and Google Talk, along with new licensing options for Office Communications Server customers to connect with AOL and Windows Live (read the details of the announcement).
I had a chance to seat down with Ashima Singhal (Senior Product Manager) and Albert Kooiman (Senior Product Manager) from the Communication Server team to discuss the news focusing on Instant Messaging (IM) interoperability between different networks. Here's what they have to say about how all of this works:
This video is posted on the Channel9 Interoperability topic area: Instant Messaging Interoperability extended through XMPP (Jabber)
Links:
Jean-Christophe Cimetiere, Sr. Technical Evangelist
Active Directory Federation Services (AD FS) 2.0, formerly known by codename “Geneva” Server, passed SAML 2.0 interoperability testing. You can read more on the Forefront team blog in today’s post: MSFT Identity and Access news: Forefront Identity Manager RC1 and ADFS 2.0 SAML interoperability
Additional readings:
Jean-Christophe Cimetiere - Sr. Technical Evangelist
[Update: more details from Noelios Technologies as well as a complete tutorial]
Much of the work that we have collaborated on in the past several months has been centered around PHP, but rest assured we have been focused on other technologies as well. Take Java, for example. A big congratulations goes out this week to Noelios Technologies, which just released a new bridge for Java and .NET.
Noelios Technologies is shipping a new version of the Restlet open source project, a lightweight REST framework for Java that includes the Restlet Extension for ADO.NET Data Services. The extension makes it easier for Java developers to take advantage of ADO.NET Data Services.
Microsoft collaborated with the France-based consulting services firm and provided funding to build this extension to the Restlet Framework. It’s always very exciting for me, as a French citizen living in the United States, to witness French companies like Noelios collaborating with Microsoft to develop new scenarios and bridges between different technologies. Noelios specializes in Web technologies like RESTful Web, Mobile Web, cloud computing, and Semantic Web, and offers commercial licenses and technical support plans for the Restlet Framework to customers around the world.
ADO.NET puts data sources within reach
For those who are relatively new to ADO.NET Data Services, it is a set of recently added .NET Framework features that provides a simple way to expose a wide range of data sources, such as relational databases, XML files, and so on, through a RESTful service interface. Formerly known as “Project Astoria,” ADO.NET Data Services defines a flexible addressing and query interface using a URL convention, and supports the usual resource manipulation methods for data sources, including the full range of Create, Read, Update, and Delete operations.
Microsoft Visual Studio 2008 SP1 and the upcoming Visual Studio 2010 fully support ADO.NET Data Services, including the capability to create and consume data services directly from the development environment. If you want more information about ADO.NET Data Services, look here. I recommend the “How do I…” videos; the links are located on the right side of the page.
A closer look at the Restlet Extension architecture
The Restlet Extension for ADO.NET Data Services provides a high-level client API that extends the Restlet Framework’s core capability by providing access to remote data services that are hosted on ASP.NET servers or the Windows Azure cloud computing platform.
Java developers use the extension’s code generator to create Java classes that correspond to data entities exposed through ADO.NET Data Services. The Java application is then able to access the data via a simple method call. The runtime components in the Restlet engine and the extension take care of the communication between the Java client application and ADO.NET Data Services.
REST makes it all possible
The Restlet Extension project is a great example of the infinite possibilities that REST affords. Java developers using the Restlet Extension for ADO.NET Data Services can now connect their applications to a .NET platform with relative ease, which means more choices for Java developers and new opportunities for Microsoft.
Looking beyond just the Java-Microsoft bridge, REST is a truly compelling architecture model for enabling interoperability between all kinds of different platforms, regardless whether the applications are run on premise or in the cloud. We’ve recently presented several scenarios that leverage REST (“Viewing government data with Windows Azure and PHP: a cloud operability scenario using REST,” and “A new bridge for PHP developers to .NET through REST: Toolkit for PHP with ADO.NET Data Services”), and we plan to continue sharing similar scenarios between various technologies.
A big thanks to Stève Sfartz, Jerome Louvel and Thierry Boileau
A very big thanks goes out to my French colleague Stève Sfartz in the DPE Division at Microsoft France. Steve was instrumental in initiating and driving the collaboration during the Restlet Extension project. He has been working for quite some time with Noelios Technologies Cofounders Jerome Louvel and Thierry Boileau using the Restlet Framework to illustrate interoperability scenarios between Java and Microsoft technologies using REST.
If you’re interested in being part of or contributing to the Restlet community, visit www.restlet.org/community/.
And if you want more information about Java interoperability, take a look at the list of Java-Microsoft interoperability projects at www.interoperabilitybridges.com/projects/tag/Java.aspx. It includes Apache POI (OpenXML Java API), Apache Stonehenge (practical SOA/Web services interoperability across platforms), Azure .NET Services SDK for Java, and Eclipse Tools for Silverlight.
The Restlet Extension for ADO.NET Data Services represents yet another bridge added to our growing list of interoperability solutions, and we are very happy about this!
—Jean-Christophe Cimetiere, Sr. Technical Evangelist
Zend Technologies today launched the Simple API for Cloud Application Services project, “a new open source initiative that allows developers to use common application services in the cloud, while enabling them to unlock value-added features available from individual providers.”
The initial goal of the project is to provide a set of programming interfaces for PHP developers to facilitate the development of applications that have basic cloud storage needs.
The project’s announcement includes a quote from Microsoft’s Doug Hauger, General Manager Windows Azure: “Microsoft is pleased to continue to work with Zend and join efforts with other contributors to this project. The Simple Cloud API is an example of Microsoft’s continued investment in the openness and interoperability of its platform. We’re excited to see how this project will foster adoption of cloud computing platforms by PHP developers and hope that many of these developers are encouraged to use Windows Azure.”
What is the Simple API for Cloud Application Services
Cloud computing platforms are new technologies and the platform vendors are innovating rapidly in their platforms to address varied customer needs. Some projects do not require the richness provided by vendor-specific APIs and can instead be built with simple APIs that provide an abstraction layer across different platforms. From a developer’s perspective, simple APIs make it easier to write code that remains the same whatever the destination platform.
This project is pragmatic. The first available implementation of the “Simple API for Cloud Application Services” is provided by Zend who will ship the “Zend Cloud” adapters that will target storage services such as:
It encourages PHP developers to explore cloud computing by writing code that leverages commonalities across different platforms’ storage services. As the developers become proficient and learn each platform, they will be further inclined to learn vendor-specific features to take advantage of richer functionality.
Microsoft’s contribution to the project
A few months ago, Microsoft started to work with Real Dolmen on a Windows Azure SDK for PHP developers. This SDK has been submitted to the Zend Framework (see “July CTP of Windows Azure for PHP Released and support in Zend Framework”) and it now forms the basis of Microsoft’s contribution to the Simple Cloud API project.
PHP developers will be able to program against Windows Azure using the Simple Cloud API to access the main features of Window Azure Storage:
For PHP developers who need to use Windows Azure specific features that are not included in the Simple Cloup API (e.g. Windows Azure storage supports transactions unlike some other cloud storage services) they will be able to combine Simple Cloud API code with Windows Azure storage specific code using the dedicated Windows Azure SDK for PHP. The goal is to allow “developers to use common application services in the cloud, while enabling them to unlock value-added features available from individual providers”.
The Channel9 video provides more information on this announcement:
Going Forward
Windows Azure is an open platform. We believe that initiatives like the Simple Cloud API will benefit adoption of cloud computing platforms by developers. The Simple Cloud API gives PHP developers more choices and for Microsoft this is a great opportunity to encourage them to use Windows Azure.
Let’s meet at www.simplecloud.org
Vijay Rajagopalan, Principal Architect, Microsoft Corp.
This week Microsoft is participating in the first Gov 2.0 Summit produced by O'Reilly Media, Inc. and TechWeb in Washington D.C., to explore how technology can enable transparency, collaboration and efficiency in government. Today, we're pleased to present a cloud interoperability scenario which takes advantage of the recently announced Toolkit for PHP with ADO.NET Data Services to view public government data with Windows Azure and PHP.
As you may recall, few weeks ago, Microsoft announced the Toolkit for PHP with ADO.NET Data Services, a new bridge enabling PHP developers to connect to .NET using a RESTful architecture. Today, we've published a cloud interoperability scenario where a Windows Azure application exposes data in a standard way (XML / Atom) and how you can simply “consume” this data from a PHP web application. This scenario takes advantage of the Open Government Data Initiative (OGDI), another piece of Microsoft's Open Government effort, built on the foundation of transparency, choice and interoperability.
A few words about OGDI
The Open Government Data Initiative (OGDI) is a project launched in May by our colleagues from the Microsoft Public Sector Developer Platform Evangelism team
In a nutshell, Open Government Data Initiative (OGDI) is a cloud-based collection of software assets that enables publicly available government data to be easily accessible. Using open standards and application programming interfaces (API), developers and government agencies can retrieve the data programmatically for use in new and innovative online applications, or mashups.
Data and Platform Interoperability scenario in the cloud
Publicly available government data sets have been loaded into Windows Azure Storage, and the OGDI team built a data service that exposes the data through REST web services, returning data by default in the Atom Publishing Protocol format. The OGDI application uses ADO.NET Data Services to expose the data. On the diagram below you see the list of available data sets: http://ogdi.cloudapp.net/v1/dc.
This list is then accessed by the data browser web application built in PHP. To build the PHP applications the Toolkit for PHP with ADO.NET Data Services was used by simply generating the PHP proxy classes that would match the data sets exposed through REST at this URI: http://ogdi.cloudapp.net/v1/dc.
Trying out the sample application
The PHP Data browser sample application is deployed on Windows Azure. Although it is not required and it could be deployed on any PHP compatible hosting environment, this sample application showcases a PHP application running on Azure. You can view or download the source of this sample from the demo site: http://ogdiphpsample.cloudapp.net/
The OGDI Service demonstrates some of the possibilities of the Azure platform and you can try the OGDI interactive SDK http://ogdisdk.cloudapp.net to understand how it works, as it features a similar data browser developed in .NET.
Moving forward
This sample application illustrates how you can simply create applications leveraging data and platform interoperability (PHP & .NET). The Toolkit for PHP with ADO.NET Data Services makes it easier for PHP developers to interoperate with .NET, including Azure which supports multiple internet protocols, including HTTP, REST, SOAP, and XML. This scenario is just one among many we are working on using RESTful architectures. Stay tuned, more to come soon!
Finally, here’s a recap of related resources:
For more information on Microsoft's Open Government efforts and participation at the Government 2.0 Summit, check out: FutureFed, the voice of Microsoft's Federal division.
Today, I’m excited to announce that we are releasing a new project that bridges PHP and.NET. More precisely, we are releasing today the Toolkit for PHP with ADO.NET Data Services which makes it easier for PHP developers to take advantage of ADO.NET Data Services, a set of features recently added to the .NET Framework. ADO.NET Data Services offer a simple way to expose any sort of data in a RESTful way. The Toolkit for PHP with ADO.NET Data Services is an open source project funded by Microsoft and developed by Persistent Systems Ltd. and is available today on Codeplex: phpdataservices.codeplex.com
You can see an overview and quick demo of the toolkit in the following Channel9 video with Pablo Castro (software architect of ADO.NET Data Services) and me:
ADO.NET Data Services (formerly known as Project “Astoria”) is a technology used to expose a wide range of data sources through a RESTful service interface. Data sources can be relational databases, XML files, and so on. ADO.NET Data Services defines a flexible addressing and query interface using a URL convention, as well as the usual resource manipulation methods on data sources (it supports the full range of Create/Read/Update/Delete operations).
There is full support for ADO.NET Data Services in Visual Studio 2008 SP1 as well as in the upcoming Visual Studio 2010; this includes direct support for both creating and consuming data services directly from the development environment. You can find more information about ADO.NET Data Services here, (I recommend the “How do I…” videos).
You should consider two aspects of the PHP Toolkit:
In the following steps we assume that you have already created the ADO.NET Data Services on top of the Northwind sample SQL Server database (check this “How do I…” video). The service I created exposes data like this, through a simple URL:
The next step is to use the PHPDataSvcUtil.php utility that is part of the toolkit, and point it to the URL of the Data Service. It will read the Data Service metadata and create the PHP proxy classes (called northwinddb.php in our example):
The code generated (northwinddb.php) looks like this:
At runtime, you simply include in your code the northwinddb.php files and the URL of the data service:
And then you can start writing your PHP code to access the data collections. Note the first highlighted line: it defines the query over the data service. Many options are available, the full description of the query format can be found here.
And here is the result:
I hope you enjoy reading this quick introduction to the Toolkit for PHP with ADO.NET Data Services. Feel free to check the project site on Codeplex phpadodataservices.codeplex.com. As always your feedback is welcomed!
Claudio Caldato, Senior Program Manager, Interoperability Technical Strategy team.
O’Reilly OSCON (Open Source Convention) has been an opportunity for Microsoft to make significant announcements and unveil new projects. For sure, Microsoft’s participation did not go unnoticed :), in fact it has been a busy week for us.
First we announced the release of Linux Device Drivers, to enhance the performance of Linux when virtualized on Windows Server 2008 Hyper-V. The source code has also been submitted to the Linux Community. Read Peter Galli’s post on Port25: Microsoft Releases Device Driver Code to the Linux Community) and check the Channel9 interview.
The next announcement was the Live Services Plug-in for Moodle, a free download released under the General Public License v2 that integrates Microsoft's Live@edu services such as email, calendar, instant messaging and search directly into the Moodle experience. Read more on the “Microsoft On the Issues” blog: Microsoft Develops Plug-in for Moodle to Aid Teachers, Students and check out the Channel9 interview:
Then Vijay Rajagopalan, Principal Architect for Interoperability Technical Strategy team presented a session titled “Interoperability - Build Mission Critical Applications in PHP, Ruby, Java and Eclipse Using Microsoft Software + Services” where he discussed our approach to interoperability & open source and illustrated this with three (Eclipse4SL, PHP Application development in Azure & .NET Services) of the open source initiatives that enabled bridging Microsoft Software + Service & Open Source Technologies. Finally, Vijay unveiled progress made on PHP SDK for Azure & tooling in Eclipse. He has demoed a prototype earlier this year at MIX. This time Vijay showed us how you can do "create, read, update & delete" (CRUD) operations on Azure Storage from the Eclipse IDE, leveraging the PHP SDK for Azure, screenshot below:
Stay tuned, we’ll be able to say more about this in a few weeks.
Vijay’s presentation is available for download (PDF & PPTX).
It’s been an exciting conference, and I hope you can appreciate all the activities and projects that Microsoft is driving to show openness and interoperability in action.
By the way if you want to follow us more closely on these topics, check out OpenAtMicrosoft twitter line.
Jean-Christophe Cimetiere, Sr. Technical Evangelis
Last week I had a chance to attend a live webcast “Connecting PHP to Microsoft Technologies” presented by my colleague Sumit, where he demoed the PHP projects (samples toolkits, frameworks and SDK) that we announced in May (Announcing PHP SDK for Windows Azure… and much more!).
These projects enable PHP developers to easily extent their web applications using some of the Microsoft technologies. Here’s a recap of the current projects:
Sumit also introduced new project during the webcast:
The offline recording is now available for download at http://www.phparch.com/conferences/webcasts (there are a couple minor glitches in the audio, just skip ahead for a few seconds when it happens ;-) and you’ll find bellow a zip containing Sumit’s presentation (PDF and PowerPoint PPTX)
This webcast is part of CodeWorks 09 summer series organized by PHP|Architect website. The series touch a number of PHP related topics including two additional sessions focused on PHP and Microsoft technologies interoperability. Please mark your calendar:
In addition you might want to check out the free May 2009 issue of php | architect magazine which focuses on running PHP on Windows, and additional technical details on how to use some of the Microsoft products with PHP.