Last week I had loads of fun delivering a CCR-DSS-Robotics presentation at the Mexico Regional Architects Forum (RAF) in Mexico City. There’s something wonderful about this technology that set many people abuzz and I had some great conversations and brainstorming with some customers over drinks at the evening cocktail party. I find there's a very strong connection to enterprise scenarios and I gave a number of examples of how CCR-DSS could be used in common enterprise situations. I only hope we can get permission to publish some of our internal case studies on how some big enterprise customers are using this stuff in pretty impressive ways.
Many thanks to Vlad Vinogradsky; Marc Mercuri; George Chrysanthakopoulos; Henrik Frystyk Nielsen and Charles Liptaak for their material which I mashed together! Vlad did a great job putting together a compendium of samples that illustrate the basics of programming against the CCR which was extremely useful. To gain the most out of it, you must read Jeffrey Richter's MSDN magazine article on the CCR.
I also did a keynote presentation on Business Architecture and explained some of the recent fine-tuning being made to the MSBA methodology and I was able to demo a prototype of the new SQL-backed MSBA Entity Modeling Tool and Repository which replaces the unwieldy Excel-based heat maps and repository. My thanks here go to Mike Lloyd of Carbonflame who came up with a pretty neat Flex Index which helps contrast Capability models to Organizational Hierarchies, Process Optimisation and IT Infrastructure models. (Mike has been a long time proponent of MSBA since the days it was referred to a Microsoft Motion.)
I want to say what a pleasure it was for me to be in Mexico City which I thought was fabulous even though I saw very little of it. The food was superb and quite different to the commercialised Mexican food I have experienced in Europe and USA. The people I met are so easy going and friendly. Juan Lozada Villas, the D&PE Director, treated the RAF speakers to an evening at an authentic and apparently famous Mariachi restaurant (I think it was called Tarana?) which was awesome! I had an excellent education in Tequila from Jesus Hernandez Sanchez and tasted a number wonderful varieties. My favourite was Jose Cuervo 1800 Anejo and the Reposados generally... I bought three bottles at the airport Duty Free!
One last thing... Feliz Cumpleaños to Eduardo Nava Malagon! Sorry we didn't manage to sing to you during the keynote!
RoboChamps has launched!
I've been on the road in Latin America so am late to make this announcement as I was really busy. But better late than never as they say. Robotics = Services + Orchestration so it could prove really interesting - intellectually at the very least - to those of you who have not considered this area as useful as traditional application development in terms of learning about software design and architecture. It's time to prove yourself wrong.
Very briefly RoboChamps is:
- A new simulation-based robotics league
- New 3-D environments will be released every 1-2 months
- Based on MRDS 2008
- Targeted at ALL software developers - professionals, students, academics and hobbyists alike
- A community site providing links, videos, samples, training and forums
- Participants can win REAL robots
The Web site is chock full of great learning material and I especially like the tutorial videos, starter kits and the most excellent Chapter 3 on the CCR of Kyle John's upcoming book. I must admit I love all the bling too. :-)
Marc Mercuri has done a really outstanding job with this project - Thanks Marc!
I am completely bowled over by this video of Boston Dynamics' Quadraped. How long before this stuff hits the consumer business - 5 years, 10 years, or sooner?
Not bad for a Saturday project down in sunny Buenos Aires! My friend and professional geek Angel "Java" Lopez has recently rekindled his love of distributed computing (and Agents) through MRDS and specifically CCR/DSS. We're going to have a lot more fun with this stuff in the coming weeks. In the mean time check out his great little experiment and download the source code here.

Angel concludes:
All these tools opened my brain. Writing DSS service component is a new way of thinking and programming, something I want to explore for years: how to write objects with one-way message processing, in a distributed and parallel way. I envision some system that model Minsky ideas about the human mind.
Well, it’s a new brave world. Dorothy: we are not in Kansas anymore…
I couldn't agree more!
The high level set of changes is listed below. For me #2 and #3 are golden, but be sure to drill down to find out the details... like async streaming support!
-
Improved security model with support for Message Level Authorization using Role-based access control allowing to fine-grained control of who can access services and how.
-
Support for LINQ queries in DSSP subscriptions enabling applications to create complex queries that can be executed close to the data source instead of requiring moving data across the network
-
Support for creating applications that run on multiple DSS nodes using Visual Programming Language and DSS Manifest Editor. This makes it much simpler to create applications that run across nodes, either on the same machine or across the network. When an application containing multiple nodes is to be started, VPL creates individual deploy packages for each node and fires them up across the network.
-
Support for record and playback functionality in Visual Simulation Environment enabling it to record the position and orientation of each entity and save that information to a file which later can be replayed.
-
Support for storing simulation media resources such as texture maps, bitmaps, and mesh files directly as part of the CLR assemblies in the form of embedded resources rather than as external files.
-
New Simulation floor plan editor which allows the user to put together walls, doors, windows, etc. to represent the interior of a room, house, or other building.
Quoting from Marc Mercuri's blog:
At RoboBusiness today, Microsoft announced the release of Microsoft Robotics Developer Studio 2008 CTP1.
Get the free download here -
http://www.microsoft.com/downloads/details.aspx?FamilyId=EB00C558-2163-45A5-BEFE-531AD48BC525&displaylang=en
Mary-Jo Foley has an article on why you should care ('Why business users should grab a copy of Microsoft's new robotics' toolkit')
See that here - http://blogs.zdnet.com/microsoft/?p=1325
The folks who attended the conference also saw some videos from my new project. CNET references it in the article - "Microsoft's new gig: Virtual host to robot competitions".
See that here - http://www.news.com/8301-10784_3-9914959-7.html.
Outside of this, mum's the word until the clock at www.robochamps.com hit's 0's across the board.
By the way, in addition to RoboChamps, Marc also planned and built Tafiti – the guy is smart!
For further information, you can also check out:
1. MSDN Developer Centre
2. MRDS Team Blog
3. MRDS News Feed
4. MRDS Community Forum
Open XML has overwhelmingly been approved as an ISO / IEC standard (IS 29500) signaling the the end of the file formats war! More details can be found at Brian Jones' Blog here and an extensive list of resources at Erika Ehrli's Blog here.
Watch a video demo from Brian Jones:
It's Easter holiday and it's raining, snowing, sleeting, windy and generally undecided. So the family stayed in just hanging about, doing some reading, eating well and enjoying the odd bottle or two of vino. In a recent post I talked about The Microsoft Robotics Studio and it's sub components, CCR and DSS. I have to confess one of the reasons I'm excited about this technology is because I cut my programming teeth many years ago in the (then largely academic) field of Multi-Agent Systems (and Decentralized Computing) which involved very similar thinking and discussed many of the issues and patterns that I see in the Robotics space. Recently, I also started working in the Embedded Systems area and I hope to post some articles on how Embedded Systems and CCR/DSS come together in interesting distributed computing scenarios that are highly relevant in the enterprise!
Anyway, before I get ahead of myself, I just wanted to mention that through my reading in this holiday came across Mat Buckland's excellent book, Programming Game AI by Example, which very briefly mentioned the use of AI in Halo. Mat's site eventually led me to the Halo section on Bungie.org where I found a really eye-opening presentation by Jaime Griesemer (Halo level designer) and Chris Butcher (Halo AI programmer), which brought me back full circle to my Multi-Agent Systems programming days. In some ways I'm also reminded of the 'Agile Machine' we built in FABRIQ. Wow, what a fun trip down memory lane I'm having this holiday!
** = Update
The Microsoft Services Business Architecture (MSBA) methodology was formerly codenamed Microsoft Motion. I will continually add to this list over time!
** Getting Hold of MSBA
Many people have asked me how they can get hold of the tools and detailed methodology documents for MSBA/Motion and were wondering why we don't appear to have anything new published since 2006/2007. Does this mean Microsoft has abandoned MSBA? No, quite the contrary! MSBA is alive and well. MSBA is a strategic asset of Microsoft Services and is a very important competitive differentiator for our IT Architecture Practice. We use MSBA to connect more deeply with Enterprise customers and have found that it is a wonderful thing in driving stronger relationships with them - and the reasons for this are obvious.
MSBA is available to our customers through fee-based consulting engagements with Microsoft Services. Globally, we've sold 100+ Architecture Transformation engagements to major customers so far this fiscal year and this kind of momentum will ensure MSBA's continued healthy development.
You are free to use whatever information I have published on this Blog about MSBA and if you (or your organization) would like to use our tooling and other assets - like heat maps, repository, explorer, etc. - then it would make sense for you to to engage directly with Microsoft Services in your Country or local Microsoft Subsidiary and contract a qualified/certified MSBA consultant to work with you.
MSBA / Motion Overview
Capabilities to Services
MSBA / Motion Engagements
MSBA / Motion Case Studies
** Related Content
This book presents two intertwined innovations that work together to better connect business challenges to technology enablers to improve the odds for success in delivering value. Much like Motion in spirit and goes deeper than Motion in the actual creation of the high level logical solution. I found this book connects many different problem solving and solution envisioning ideas and requires one to apply quite a strong abstraction filter to make sense of it.
| 1. | My BIRTHDAY |
| 2. |
|
What fun! :)
The reality of distributed systems development today is the complexity that eventually if not immediately bogs it down. Instead of being fun, exciting and easy to develop, distributed systems are often hard and unwieldy to design and work with. We continue to face the same old issues time and again yet never appear to come up with game-changing simplifying solutions to our common issues of complexity which, amongst others, are:
- The large variety of participants: consumers, providers, intermediaries, administrators, etc.
- Highly heterogeneous systems and architecture, implementation and deployment practices
- Highly autonomous and independent systems & services
- Highly distributed information sources and services
The challenges developers, architects, testers, etc. face are many. In general we need to be able to:
- Apply (re)configuration in a live running system
- Coordinate many simultaneous asynchronous interactions
- Support high throughputs (and afford low latencies)
- Provide simple lifecycle services like starting and stopping components dynamically
- Monitor, interact with, and debug a running (distributed) system
- Ideally be able to develop the system in simulated conditions or a test environment
- Span multiple physically or logically distributed compute units
- Re-use components across multiple hardware platforms & devices
A typical solution to these challenges might be to centralise & standardise, but that's a kind of anti-pattern for many types of distributed systems scenarios today and simply serves to:
- Reduce the variety of systems, i.e. seeking economies of scale
- Remove the positive benefits of heterogeneity in a distributed system
- Eliminate the autonomy
- Put demands on 'perfect information' which is really hard to do consistently and reliably
- Hardwire the connections between components of the system
A better solution is to simply accept diversity and decentralize!
- Accept variety, i.e. seeking economies of innovation
- Encourage autonomy
- Accept heterogeneity
- Understand that that custom, personalized, networked information is normal
- Imagine an adaptable, open, distributed information system
Recently I've been energized by the power of the Concurrency and Coordination Runtime (CCR) + Decentralized Software Services (DSS) combined features, and dare I say, paradigm shifting concepts to fix a lot of the problems we have today in building distributed systems.
- CCR provides concurrent (multi-core) programming support by way of some key pattern implementations and developer conveniences
- DSS provides higher level support to create, host, and discover lightweight services
- DSS services are oriented to have a state and react to incoming request and updates, and sends update and request to other services
- DSS services state can be serialized and a service can migrate to another host
- DSS services are naturally RESTful
- The Visual Programming Language designer can be used to define, compose, monitor and manage DSS services
- CCR/DSS can be hosted in a device and is capable of running under .NET Compact Framework (and .NET Micro Framework coming soon)
Side Note - How does CCR/DSS relate to WCF?
WCF is more about communications infrastructure – standards-based ‘plumbing’ – whereas CCR/DSS is a high level programming model for distributed service-based and resource-oriented systems (however initially targeted to Robotics applications). Some key CCR features such as ports, memory queues, dispatchers, arbiters, etc. are hard to implement and beyond the scope of WCF. A better comparison would be the combo of WCF+WF, but still there would be many features and patterns missing from both sides. Apples to Oranges - just avoid trying to force a comparison and understand the core use cases for each technology set. In my opinion the patterns supported in CCR are also of immense value to WCF+WF developers. I wonder if anyone has implemented CCR patterns in WCF and furthermore provided a DSSP transport protocol binding for WCF? That would be really cool!
Resources
The Microsoft Robotics Studio includes the Concurrency and Coordination Runtime (CCR), Decentralized Software Services (DSS), Visual Programming Language (VPL), and a virtual worlds (robotics) simulation environment! If you want to dive straight into CCR/DSS check out the Wiki, watch a video or two and install Microsoft Robotics Studio.
As part of the Microsoft Robotics Studio (1.5) release, Microsoft has placed the Decentralized Software Services Protocol (DSSP) under its Open Specification Promise. This means that the Microsoft patents for the services-oriented protocol specification may be used by anyone in the world, at no cost, and for any type of development including free software, open source, academic, or commercial, enabling interoperability among a wide variety of devices and applications. The XSD schema for DSSP is also available.
The creators of CCR/DSS are George Chrysanthakopoulos and Henrik Frystyk Nielsen. Search on their names and you'll be very impressed.
CCR/DSS is not just for Robotics - it'll help you spruce-up your enterprise distributed systems architectures too! Like I said earlier, I'm pretty jazzed by this technology and hope to be writing about it again very soon.
In my previous post I examined the business transaction pattern is some detail and made the case for using the pattern to much better implement a capability as a service (capsule). In this post I will develop the connection between the three part model introduced in [SS06] and propose how it can be extended to support the modeling of communication patterns. This requires a richer expression of a "service contract" to include the interaction sequence required to communicate with the service in addition to the conventional WSDL contract. The recent emergence of new technologies such as Windows Workflow Foundation (WF) and Windows Communication Foundation (WCF) present some interesting options for automating the generation of the conversation controllers necessary to support the service interaction.
Extending the Three Part Model
Traditional approaches to developing IT solutions frequently focus on two well-understood models—the business model which describes what the business does, and the technology model which describes one way of implementing the various business functions, as shown in Figure 4. However, this strategy frequently leads to close-coupling between the two models, resulting in dependencies between the technology model and the business model. This can cause brittleness if the business model changes, and can ultimately require that the technology model (and the implementation of the solution) be completely redeveloped as business circumstances change.
The prime reason for this is that Business and IT maintain their separate models within their respective domains. Business needs are conveyed largely by "tossing documents over the wall" – all too often confusing requirements with solutions. This has made IT adopt a very introverted view of itself, focusing on improving things that IT knows best, like availability, security and productivity, and not spending too much time contemplating how it can drive radical business change and add business value. IT solutions and platforms create technology silos that impose awkward constraints on the business model and as a result, business silos become reinforced by technology silos, and the whole system of Business plus IT becomes inflexible and arthritic - i.e. close-coupling. Thus Business and IT must work together to achieve common aims, but this is just not happening smoothly enough.
Figure 4. Traditional approach to modeling solutions
The Three Part Model attempts to eliminate as many of these dependencies as possible, enabling you to build solutions that can easily adapt as the business evolves and grows. It achieves this by introducing the Service Model. The service model enables you to abstract the business capabilities into one or more services, and then map these services to the technology model, as shown in Figure 5.
This simple idea lends a lot of value to the SOA vision which seeks not just to remove the gap between Business and IT but to blur the boundary between business processes and technology services. Essentially, SOA benefits by introducing the third service model element lying between the existing business model and the technology model. You might think that adding an intervening layer moves these models further apart, but actually the service model (and by implication, SOA) acts as a lubrication layer that allows the two models to flex and work together in greater harmony.
By imposing an intervening service layer, the business can focus strongly on defining levels of service rather than how those services are delivered. IT can in turn focus strongly on meeting contract obligations, choosing the best technologies and solutions for the circumstances, without unduly constraining the business process model. SOA naturally breaks down monolithic applications into finer-grained services which are more easily flexed and which can eliminate duplication. They are more easily aligned to business processes and help eradicate silo-based thinking. As a result, IT has to develop a much more outward-looking view. Instead of being led by the business IT strategy is driven by business needs. The promise of SOA is that it will lubricate brittle and static relationships and allow revitalized and agile businesses to gain a strong competitive edge.
Figure 5. Using the Service Model to remove dependencies between the Business and Technology Models
Using a service model facilitates discovery of services—the pieces of functionality implemented by the business—independently of any particular technology.
In Service Oriented Architecture terminology, the business capabilities identified by the business model have a very close correspondence to service contracts defined by the service model. Similarly, the business expectations (expressed as SLEs) translate to SLAs when the services are ultimately built and deployed, and so influences the choice of technology used to implement the services. For more information on the Three Part Model, refer to [SS06].
Describing Business Processes in the Service Model
However, breaking the business model down into a series of services only captures the business capabilities (what the business does), but does not provide information on the business processes that use these capabilities (how the business operates). To capture process information, the service model also needs to encapsulate how information and data flows between the various services. This requires extending the service model to include an orchestration mechanism that concisely and completely describes the way in which services interact, how they perform transactions, and how control passes between them. This in turn demands a mechanism to more richly express the definition of a service contract to include the message exchange patterns and the protocols that define the sequence of messages sent to and from the service.
While the structure and schemas of messages sent to and from the service can be adequately expressed by using WSDL, flow control is outside the scope of WSDL. Modeling this aspect requires either extending WSDL to include these semantics, or developing an additional WSDL-like grammar that can describe this information. This is the purpose of the SOAP Service Description Language—SSDL [SP01].
Like a WSDL contract, an SSDL contract defines schemas for describing data structures, messages, and endpoints. However, SSDL provides the basis for a range of protocol description frameworks extending those available in WSDL, including:
- The Message Exchange Patterns (MEP) framework representing the common, simple message exchange patterns available in WSDL (one-way, request with single response, request with multiple responses, and so forth).
- The Communicating Sequential Processes (CSP) framework, which enables a service contract to define multi-message interactions as a sequential process. CSP can describe systems in terms of processes that operate independently, and interact by passing messages to each other. CSP allows services to be defined both as sequential processes, and as the parallel composition of more primitive processes.
- The Rules-based SSDL Protocol framework, which uses Boolean expressions to specify the messages that a service can send and receive in response to other messages, according to the current state of the service. For example, a merchant service should only expect to receive a payment message after it has sent an invoice message, and not before.
- The Sequencing Constraints Protocol (SC) framework, which can describe complex, multi-party, multi-exchange sequences of messages with flow control, using a notation based on pi-calculus.
SSDL is currently a work-in-progress. The intention is to promote the development of tools such as model checkers that can verify the correctness of protocols defined in an SSDL contract and assess the compatibility of services, and also to enable hosting environments to validate the messages exchanged by services.
The Role of the Conversation Controller
A service host provides an environment for receiving messages and forwarding them to service instances, and for transmitting responses from service instances. The technology used to create the service host depends on the SLA requirements, the underlying network protocols, and a raft of other technological considerations. In addition, conversational services require hosts that can implement and enforce the rules governing the message exchanges defined by the SSDL contracts specified for those services. This leads to the requirement for the service host to incorporate a conversation controller component.
The conversation controller is essentially a state machine that drives the interactions with the services. Current SOA technology, such as ASP.Net and WCF, provide tools that can analyse a WSDL description of a service and automate the generation of code that can send and receive messages to and from a service. The next goal is to extend this notion and add a capability to generate code that automatically controls the flow of messages, according to the semantics defined by an SSDL description.
Automating the Conversation Controller
To briefly recap, to automate the generation of a conversation controller that can automatically handle the desired message exchange pattern required to communicate successfully with a service you need to know two things:
- The schema of the messages sent to and received from the service. This is generally available as WSDL metadata.
- The required conversation protocol. This defines the set and sequence of messages required to communicate with the service. WSDL does not convey this information and a different set of metadata such as that prescribed by SSDL is required.
The availability of tools for generating code from an SSDL description is currently very limited. However, Microsoft Windows Workflow Foundation (WF) and Microsoft Windows Communication Foundation (WCF) provide technologies that we can use to implement an alternative approach to define the conversation protocol. This approach uses a workflow to model the service message interaction rather than an SSDL description. It is possible to introspect the workflow metadata to derive behaviour metadata (also in the form of a workflow) that a client can use to control its conversation with the service.
The high level architecture of a prototype solution based on WF and WCF is shown in Figure 6.
Figure 6. High Level Architecture
The main components of the prototype solution are:
- A state machine WF workflow exposed as a WCF service. The workflow implements the business logic for the solution. The workflow contains custom receive and send message activities in addition to regular activities used to coordinate the service's internal implementation logic. This workflow acts as a substitute for the SSDL description of the service.
- A custom WCF service host called WorkflowServiceHost. The state machine workflow is hosted by a custom WCF service host. This is used to dynamically generate the service implementation based on introspection of the hosted workflow.
- Custom workflow activities to send messages and to receive messages. These activities (SendMessage and ReceiveMessage) are part of the WorkflowServiceHost implementation.
- Auto-generated behaviour metadata that models the required message interaction. The prototype implementation outputs a XOML-based sequential workflow. It consists of the activities, ReceiveMessage and SendMessage, contained in the state machine workflow but does not include any other activity that might be used as part of the service's internal implementation. In this way, the XOML generated workflow is used to model the message interaction behaviour required to successfully communicate with the service.
- A client consumer of the WCF service. The client can use the behaviour metadata (the XOML workflow) emitted by the service to direct the desired sequence of messages that must be sent to and received from the service.
[ Note: I know that the above prototype solution probably ought to be re-implemented in .NET 3.5 using the new Workflow Services. No time on my hands unfortunately. Volunteers always welcomed! ]
References [SS06] A. Sehmi and B. Schwegler, Service Oriented Modeling for Connected Systems, Microsoft Architecture Journal, for Part 1: Issue 7, January 2006 and for Part 2: Issue 8, April 2006.
[SP01] SSDL – The SOAP Service Description Language at http://www.ssdl.org.
I'll develop this topic in more detail in subsequent posts. Please come back or subscribe to my RSS feed.
The Microsoft Office Interactive Developer Map is a Windows Presentation Foundation (WPF) application that helps developers visualize the different programs, servers, services, and tools that will help them build solutions. It allows them to drill down to each product and technology and learn about new features, objects, Web services, namespaces, and schemas required to extend Microsoft Office and build custom Office Business Applications (OBAs).
This is such a useful tool. I wish we (Microsoft) had it too for the rest of the server-side platform stack not part of the Office System! Go get it here.

 | There's been a lot of buzz about Open XML and if you're wondering how to ramp up quickly, then I'd highly recommend reading this excellent concise explanation by Wouter Van Vugt. Quite a number of Microsoft folks have written about the recent Open XML support from IBM and Google and here are some links if you're interested in this topic: - Welcome to the party, IBM! – Doug Mahugh, January 18, 2008
- Speaking of odd contradictions… - Gray Knowlton, January 18, 2008
- Open XML Support By IBM – Jason Matusow, January 21, 2007
- Eric Lai: "Lotusphere: Whoops?! IBM products support Microsoft's Open XML doc format! – Stephen McGibbon, January 20, 2008
- IBM & Google Now Support Open XML(?) – Oliver Bell, January 19, 2008
- IBM and Google Support for Open XML– Craig Kitterman, January 19, 2008
- Développeurs, à vos clavier. IBM, Google et Apple ne peuvent pas tous se tromper: il y a du business Open XML à prendre., Bruno Schroder & Dirk Tombeur [Benelux]
- IBM: Open XML or not Open XML? – OpenXML Blog [France]
- [open xml] Google implementirao Open XML spec - Ratko Mutavdžić DPE/NTO [Croatia]
- Belated Welcome to IBM to the OOXML Party! - Owen Allen
The news section of Open XML Developer website is handy to monitor what's coming up like SDKs, Java libraries, XML Spy support, and accessibility of Open XML. |