With the preview of Lync Server 2013 now available, you may be wondering what's new in the good old Unified Communications Managed API. You may even have located the UCMA 4.0 SDK and downloaded it to check it out yourself. Since the final documentation is not yet available for UCMA 4.0, it may not be immediately clear what's new and what isn't. Functionally, there's not much new to report in the new version. As far as I'm aware, there are no new public classes in the API that were not present in UCMA 3.0. This may come as a disappointment for anyone who was hoping for support for new media types, new ways of handling signaling, or other things of that nature. I definitely sympathize with this feeling, given all the fun new capabilities we got in UCMA 3.0, but there are a couple of things to keep in mind to understand the context.
First of all, back in Lync 2010, UCMA got a lot of attention, and UCMA 3.0 had plenty of new features. Although no one would argue that it meets everyone's needs perfectly, it is certainly a much more mature API than it was in the UCMA 1.0 days. There are also lots of things you can do with it, with a bit of tinkering, that are not totally obvious on the surface.
Second, it's important to realize that a lot of work has been going into other parts of the Lync development platform. This time, with Lync 2013, there is an entirely new API, the Unified Communications Web API. Also, if you go to the download page for the UCMA 4.0 SDK, and scroll down to the "System requirements" section, you will see one of the new developments that I am particularly excited about: UCMA now works with (and, in fact, requires) .NET 4.5!
In case you're not as excited as I am about this, and maybe even a bit baffled as to why I would care, I'll try to explain. The 4.0 version of the .NET Framework introduced the Task Parallel Library (TPL), which is a new and, in many ways, easier method for asynchronous development. In .NET 4.5, there are some improvements on the TPL, including the new async and await keywords which make the TPL a more integral part of the language, and make it quite easy to write code that reads like synchronous code but runs in a parallel fashion. My recent Lync Developer Roundtable session was partly about how this can help with UCMA development. There is a whole host of other new capabilities to support parallel programming in .NET 4.5, and we can now use all of these (or any that are relevant, anyway) with UCMA 4.0. They aren't applicable to every single UCMA application or piece of UCMA code, but they will definitely be useful.
Another change to be aware of is that the UCMA Workflow SDK is no longer a part of UCMA in the new version. There is a short note about this in the article "Comparing Unified Communications APIs" on MSDN, in the last paragraph of the section "Unified Communications Managed API 3.0 Workflow SDK." Workflow applications written using UCMA 3.0 will continue to work just fine against Lync Server 2010, but if you are developing a new application and are considering using the UCMA Workflow SDK, you may want to think seriously about using UCMA Core instead. I'll write more about this in future posts.
If you have any questions or interesting discoveries about UCMA 4.0, feel free to post them here in the comments!