To me the scenario sound so "ideal" that looks like somebody took it from a book as it is and giving the requirements having zero notions about "reality". I don't know how complex the application will be, but will appears several problems to interact C# with C++ throw just XML, unless it can export simple data the recursive object serialization/deserialization will take a good amount of time, especially because C++ doesn't have reflection, so you can't scan the types on the fly, so the data to be interchanged between the layers has to be "hard" defined in the code and every data to be serialized/deserialized in C++ will have to come with a helper function to do the serialization/deserialization. Also if in a future part of the app can run on Linux then also you can’t make like a simple dll for the C++ functionality or you could but then when this portion runs on Linux, the client would not be able to connect to the server portion. So you better think from the very beginning run the C++ as different process but now that brings other problem how to interchange the data. You can’t use remoting because is MS dependant, so you will have to run a TCP pipe between the two process, and what you do? You will have to use a proprietary binary protocol to send the XML transaction back and forth…. Or install a HTTP server and send HTTP request/response from the client application. Mmmm how many problems I see with that requirement. For me those are cases that are so out of the reality that instead discuss everything and lose the battle because "you are against everything" I opt to "Yes, sir" and when asks for a date I reply, I can't give a date for a project where requires to resolve so many "unknown" compatibility issues we will find. So, I'll do it but I'm not responsible for the deadline. The reality is that it is a hypothetical scenario and it can works well, but is far from reality if you want to do it for march, how many people are involved in the project?
-- If you think the chess rules are not fair, first beat Anand, Kasparov and Karpov then you can change them. Moral is, don't question the work of others if you don't know the reason why they did it.