The hardware you're deploying across your enterprise is capable of powerful and impressive things. The multicore technology available from Intel and AMD lets software run on multiple processors; the mobile devices your IT department supports can do amazing things both locally and with remote connections to enterprise resources; special-purpose equipment with distributed processors can serve custom needs.
Too bad your software doesn't take advantage of most of it.
"Anyone who tries to write multithreaded software discovers that it's just too hard," says Tandy Trower, general manager of the Microsoft Robotics Group. It's not that writing asynchronous applications is so difficult, exactly, he says. But developers (and their code) have to coordinate all the different things going on and orchestrate them to play together. It isn't for the faint of heart, or for the inexperienced developer.
"We want to make this simple enough for every developer," says Trower. That's a necessity as the hardware becomes more complex and distributed. Before long, developers all will need to write for multicore systems, he says.
Microsoft's new CCR and DSS Toolkit (not the sexiest of product names), or Concurrency & Coordination Runtime and Decentralized Software Services Toolkit (that's not much better) is a set of .Net and Compact Framework class libraries. As Trower describes it, the CCR and DSS Toolkit is a small .Net library that helps developers write asynchronous programs. It handles the locks and semaphores, and helps developers avoid creating deadlocks (the dreaded "blue screen of death" for asynchronous applications).
The Microsoft DSS toolkit enables developers to write software that runs across multiple processors--literally distributed across several devices or computers or gizmos. It's based on the REST protocol, expanded with a notification publish/subscribe model.
In addition to the core runtime technology and associated tools, samples and tutorials, the library (available now for US$399) includes a visual programming language. Developers can lay out blocks and link them; the toolkit generates the proper C# code. Developers can also write in a .NET language if they prefer.
Sound useful? Sure. But this isn't exactly a brand-new toolkit. In a way, this is the third release. It's just that, previously, it's been hidden in an unlikely sounding tool: Microsoft's Robotics Studio Platform. Anyone developing robotics software knows that exercise is about parallel computing, concurrency and coordination.
It's just a hard sell to management. (Yeah, boss, we need a robotics library to build the next banking application. Honest.) That hasn't kept Siemens from using the robotics tools (to support artificial intelligence agents and supporting hardware for analyzing and correcting addresses for a postal mail application), and it didn't keep MySpace from adopting it (for their gadzillion distributed servers). But it might be tough to justify on your expense report.
The Microsoft CCR and DSS Toolkit 2008 is an add-on library today. Eventually, says Trower, it will become part of Microsoft's .NET Framework in the future.