|
|
Marshal libraryOverview |
There are a myriad of ways to connect C++ code over process boundaries, but typically they are not truely native to C++, and most require an intermediate language. If however, you are in control of all the server and all the client code, and it is all written in C++ (regardless of platform) then marshal:: may be a better solution as it provides efficient and natural C++ mechansims.
SOAP uses WDL intermediate language to specify interfaces. C++ callers are limited to using WDL types. On the server side decoding the SOAP messages can be a significant overhead. A proxy stub compiler may be required.
COM is Microsoft specific, C++ callers are limited to using COM compliant types. Interfaces are decribed using IDL. A proxy stub may need to be compiled.
XML RPC. Several libraries are available for implementing XML RPC, but none give a truely natural C++ interface. Interfaces are described in XML.
DCE RPC uses IDL to describe interfaces, requires a proxy stub to be compiled, is widely supported, suitable for LAN (not Internet), targetted at C clients and servers.
All these solutions have a well defined and standardized message format. All are widely supported. All provide a good solution to specific problems.
None are really natural to C++, and all are to some extent heavy weight solutions. If your code needs to operate in an open environment with clients written by third parties in languages other than C++ then marshal:: is not for you. But if all your code is in C++ then the language neutrality offered by the other solutions is of little benefit and marshal:: may be a better solution for you.