Frequently Asked Questions

What is C++ Rest SDK and why should I care about it?

C++ Rest SDK 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. C++ Rest SDK aims to alleviate some of the pain felt by developers by providing a cross-platform library that is modeled on simplicity, extensibility and composition.

C++ Rest SDK uses tasks in many of the APIs. What are tasks?

The tasks library shipping with C++ Rest SDK 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 C++ Rest SDK work with Visual Studio 2012 Express?

Yes, using one of the two separate C++ Rest SDK 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 C++ Rest SDK on iOS, Linux, Android, or other platforms?

The API surface of C++ Rest SDK is platform-agnostic, and it had already supported 7 platforms including Linux and iOS. Please refer to our documentation for the full list of currently supported platforms (The list will be expended in future release).

Should I benchmark C++ Rest SDK 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 C++ Rest SDK?

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 C++ Rest SDK 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.

C++ Rest SDK 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 C++ Rest SDK scenario in the future, so please give us feedback on this if it’s important to you.

Previous versions of C++ Rest SDK had server-side and Azure support. Where is that now?

The MSDN DevLabs releases of C++ Rest SDK 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 C++ REST SDK. What do I need?

You will need to download and install C++ REST SDK. 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 May 21 at 6:31 PM by gbb21, version 23