Writing a Web Service from managed C++ is supported by a project type in Visual Studio. This generates all the supporting files to describe and discover your Web Service.
Consuming a Web Service from managed C++ requires only that you add a Web reference to the service, which can be written in any programming language and can run on any operating system.
Writing a Web Service in unmanaged C++ is more difficult than writing one in managed C++ but offers very high performance for those services that need it.
Using a Web Service in unmanaged C++ is only slightly more complex than using one from managed C++, and is very similar to using a COM component.