This last Wednesday I presented a session at the Microsoft Architect Forum 2007, held at the Lisbon Casino (a great venue), with ~100 architects attending. The overall topic of the event was S+S, with a general introduction about the topic being done by Beat Schwegler. My session, following Beat, was about the «S for Services», the S after the plus (S+S), and José António Silva wrapped up with a talk about the «S for Software».
My presentation was divided in two parts. The first was a general introduction to the topic of Services, SOA, SaaS and S+S. The second, and most provocative part, aimed at introducing a different paradigm of looking at the way software is developed, the notion of having it completely hosted in «The Cloud». Very specifically, I talked about the concept of the Internet Service Bus, materialized (I wonder if this is the best word, since there's no box to buy) in BizTalk Services, under development by Microsoft, and based on WCF technology.
I described its three main current components: Identity&Access Control, Connectivity, and Workflow (still to be made available). The first two are the essential parts of the platform, allowing for universal secure connectivity. It is perhaps not obvious that Ms should start with these two, but if you want to put up software in the cloud, you do have to make sure that people can both reach it, and reach it in a secure way, so it makes sense.
I had to ask people for their "suspension of disbelief", however, to make a parallel between Facebook and BizTalk Services. Facebook is a social community site, and what I find most amazing in it is that there are over 6500 apps in its directory. Six thousand! This is an amazing figure.
Now imagine you had the same, in terms of services and enterprise services. Imagine you wanted an portfolio of services to handle HR, clicked "Add" in some kind of marketplace site (will there be one?), and BAM!, here you have it. You want an accounting app? just pick one and click "Add". Not working as you want? click "Remove", etc. This would be S+S-nirvana, and maybe we'll have it one day.
I hope it is now clear why I asked people to suspend the disbelief :-)
At the end of the session I did a small demo. This was the scenario: a global company has a set of distributed warehouses, and wants its business users to be able to monitor remotely what merchandise goes out. The tracking of the merchandise was done using Rfid tags and BizTalk Rfid, which sent events to BizTalk Services, and these were consumed by a client app developed in WPF/.Net 3.0.
Here's how we did it: in BizTalk RFID, I created an app with two event handlers: the first removes duplicated tag reads; the second connects up to the ISB using usn/pass authentication, and sends a notification with the tag id read. I used the Phidgets RFID device. On the other end, the client app(s) just connects to the ISB and subscribes to that notification. Every time a tag is read, its photo is displayed in the Rfid Dashboard.
I developed the BizTalk RFID part, Raúl did the BizTalk Services bit based on the Multicast sample in the SDK, and André did the WPF app (great work, guys!). The scenario supports several publishers and several consumers.
I did a recording of the demo, so if you want to check it out you can download it from here (2 minutes, 5 mb):