Welcome to Azure Toss!
Azure Toss advocates a new way of integration
- Flexible Types instead of Static Types
- Focus on
Semantics instead of Syntax
- Dynamic discovery and orchestration instead of static binding
With the booming of personal devices (such as iPad and Windows 8 tablets) and cloud-based services (such as Azure and iCloud), we are entering an era of highly connected yet very loosely coupled applications and services. As ISVs and application developers,
you’ll find your applications need to communicate with many other applications and services in a “non-binding” way - there are no hard commitments among the applications and services to work together. Instead, services and features are discovered
and consumed on an “as needed” basis. Azure Toss provides an integration platform that allows your services and applications to work together more easily and more reliably without any binding contracts. Here are some challenges you’ll face:
- Integrate with many services. As more and more services are moving on to cloud, you’ll find your application needing to access various APIs provided by these services such as email service, storage service, authentication service, messaging service,
etc. You not only need to figure out details of how to work with these services, but also to keep tracks of these services so that your application won’t be broken by their API changes. Azure Toss provides semantic service discovery and consumption so
your application is not coupled with specific services or API details.
- Dynamically interact with many applications. The next generation of applications are more and more user activity-centric by allowing users to carry their data across application boundaries easily. For example, on some smart phones, after you take a picture,
you have the options to set the picture as wallpaper, to send the picture via email or SMS, or to edit the picture using a photo editor. So when you write a photo editor, you need to think about the workflow that is started not by user opening a file
from File menu, but by a foreign application sending you a picture via inter-application communication channels. Azure Toss provides an easy-to-use, semantic communication channel over the cloud for your applications to work with (many) other applications
seamlessly across multiple devices – yes I’m talking about iPad and Windows 8 tablet and Kindle Fire working together.
There are three levels of “tossing” under Azure Toss, which I shall explain one-by-one:
Level 1 – Simple Toss.
In case you haven’t noticed, there’s a universal application integration mechanism on virtually all platforms – the clipboard. By allowing simple Ctrl + C and Ctrl + V (or Command C and Command V for Mac) key strokes, many applications
are able to share information among them without even knowing each other. There’s no data contract negotiation, there’s no fixed binding, applications simply try to work with the data they get through clipboard. Azure Toss Level 1 gives you a cloud-based
clipboard with additional features such as publish-subscribe pattern, access control and multi-cast. Your applications and services will be able to “toss” information over the cloud to other parties without any committed contracts.
Level 2- Semantic Fields.
Let’s consider a very simple integration scenario among applications – to send a picture to another application. This was not a problem in the old days when your application only needed to talk to a handful of other applications. You need to
study the APIs provided by the other applications and to code for these interfaces. However, imagine you’ll need to interact with hundreds of application, many of which are not written yet! To satisfy the needs to all those interface requirements is
just infeasible. The problem is that traditional data contracts and APIs define only syntax of data, not semantics of data. The picture APIs don’t say “I need a picture, in .png or .jpg format” (although the names of functions may
suggest that to
humans)”. Instead, what they are really saying is “I need a byte array with an associated utf-8 encoded string”. Without a business context, that contract can mean anything. Azure Toss semantic fields allow you to describe your data
and API needs with actual semantic meanings. Your application will be able to say, “Hey, I can give you a .png image if you want.” And other applications can still reliably integrate with your application because they will clearly know what they
are going to get is indeed a png image.
Level 3 – Semantic service discovery and consumption
Imagine you are writing a chat client that automatically translates chat messages to different languages of the participants, and you want to use an online translation service for the purpose. What you need to do nowadays is to search around for such services,
study their licensing, pricing, capabilities and APIs, and pick a service to work with. This is a one-way commitment – you are committed to the service but the service is not committed to you (or even knows you). When the service changes, your application
breaks. Azure Toss will help you to avoid making such commitment. You application will simply say, “I need A translation service that translates between English and Chinese.” And Azure Toss will take care of the rest. Of course you can be much
more specific on your needs: “I need a translation service that is free, with a rating higher than 4, within my trusted service providers”. Yet you still don’t need to worry about any details, Azure Toss will find the service for you. And
if you chose to, Azure Toss can even invoke the service for you and return you the result. With the help of semantic fields, Azure Toss will be able to tell you, “Your request of translating text from English to Chinese has been fulfilled, and here’s
the result text, in Chinese language”.
Look under Documentation tab for quick start guide and detailed documentations on system design, specs and everything else (coming soon).
Does Azure Toss sound like an interesting project to you? Follow us, or better yet, join us! This project is still at its infancy, we welcome your to bring your ideas and experiences into the project! You can contribute at spec level, design level, coding
level, or just give us your good ideas on the forum. Also, you can participate by providing client implementations, or even work on alternative server implementation on other cloud platforms (such as “Amazon Toss” or “Salesforce Toss”).
We will be glad to link to your projects from here.