Frequently Asked Questions

What is Casablanca and why should I care about it?

Casablanca is your toolbox for accessing and authoring connected applications using modern C++ features and best practices.

Historically C++ developers have been lacking a basic set of tools that enable them to access and author REST services in a productive, scalable and asynchronous manner. Casablanca aims to alleviate some of the pain felt by developers by providing a cross-platform library that is modeled on simplicity, extensibility and composition.

Casablanca uses tasks in many of the APIs. What are tasks?

The tasks library shipping with Casablanca is a port of the PPL tasks library that’s available with Visual C++ in Visual Studio 2012. We ported it so that it also works with Visual Studio 2010. In order to make it work alongside the existing PPL library, we changed the namespace to “pplx” in the ported library.

Tasks are emerging as the fundamental mechanism to compose asynchronous operations across a variety of APIs and runtime environments. C++ developers writing code for Windows 8 with Visual Studio 2012 can use them, .NET has had them for a while and increasing their use in .NET 4.5, and JavaScript provides the same concept in its promises pattern.

More information on tasks is available at the following locations:

Asynchrony is mentioned a lot in Casablanca. Why should I care?

Asynchrony is about efficiency and responsiveness. If you are writing a graphical user interface client, you want to use an asynchronous operation whenever there is a chance of it taking more than a few milliseconds to execute, or the UI will be jerky and possibly freeze. PPL tasks make it really easy to write this kind of code.

If you are writing server-side code, you are likely doing a lot of I/O: reading files, logging data, using network resources, accessing databases. These activities all involve waiting for potentially long-running operations, and asynchrony helps your code wait efficiently. You are likely to want your services to scale to serve many simultaneous client requests, which can be challenging when using blocking (synchronous) APIs, since each waiting operation holds on to its thread while waiting. Threads are very expensive resources.

Will Casablanca work with Visual Studio 2012 Express?

Yes, using one of the two separate Casablanca MSIs, corresponding to the two versions of Visual Studio 2012 Express. The MSI for the regular Visual Studio 2012 will not work with Express. There is no support for VS 2010 Express.

Can I use Casablanca on iOS, Linux, Android, or other platforms?

The API surface of Casablanca is platform-agnostic, however in this release we are only supporting Windows and Linux. Our goal for future versions is to enable true cross-platform portability of Casablanca-based code.

Should I benchmark Casablanca against other solutions?

If that is useful to you – sure! Please note that we have spent some time on performance, but not enough for it to be meaningful to draw any conclusions about its final performance profile.

What are some of the functional limitations that may impact my use of Casablanca?

There’s no integrated XML parser or writer; the JSON parser does not perform incremental parsing and is not asynchronous.

Not all features are supported on the Linux platform. Visit the wiki to find out more.

You have a JSON library but not an XML library. What’s up with that?

Two things influenced this decision:
  • For many developers of REST services, JSON is the preferred format for exchanging text-serialized data. It’s simpler than XML and it easier to read. Given this preference, we thought it important to prioritize JSON over XML.
  • There are already several good native XML libraries for both Windows and Linux. For example, on WIndows, we’re using XmlLite internally in the Casablanca libraries in a couple of places. That library has a lot of Win32 “jargon” to it, and we may eventually wrap it in something that is thin but looks like standard C++, but XmlLite is a very functional library and has excellent performance. There are also open-source solutions available.

Casablanca supports accessing REST services. Why not SOAP?

To do a good job at supporting SOAP services, you need more tooling than what we could get into this release. If you do need to access SOAP services from native code, there’s Windows Web Services. We may add SOAP as a Casablanca scenario in the future, so please give us feedback on this if it’s important to you.

Previous versions of Casablanca had server-side and Azure support. Where is that now?

The MSDN DevLabs releases of Casablanca had a lot of features of varying degrees of readiness. For the last few months, we have focused our efforts on readying the client-side features for release here on CodePlex. In upcoming releases, the server-side features will be added back in, along with support for socket-level communication.

OK, I’m ready to start with Casablanca. What do I need?

You will need to download and install Casablanca. You will also need a version of Visual Studio 2010 or Visual Studio 2012 for any non-WinRT client development.

To develop Windows 8 App Store-style client code, you will need Windows 8 and Visual Studio 2012 (note that the Desktop Express version does not support App Store development).

You asked for feedback. I have feedback. Where do I provide it?

We would love hear from all of you. For general questions or to give feedback visit the forums

Visit the link to learn how to submit contributions or report a bug.

Last edited Mar 19 at 6:42 PM by stevetgates, version 21