this is a more \"can it be done\" rather than a \"how is it done\" question. I\'m looking at building a service (middle tier, .net, providing data abstraction and some business
Setting up async operations on your WCF service can be done as Ninja posted by setting AsyncPattern=true or it can be done on the client side by telling svcutil to generate the async end points by setting the correct command line argument or by checking the "Generate asynchronous operations" option in the GUI version of svcutil. Generating async will still generate synchronous operations as well.
The issue with the client async option is you will need to duplicate the code in Java. Svcutil does export VB or C# code as you specify so you could very likely translate the C# code to Java without too much work.
For Pub/Sub, client callbacks are how you want to operate. I am using them and they work very well. At the root level, they are .Net Remoting and use eventing to pass the data to the client (my understanding). I cannot confirm that this could be used cross platform but it should be with some work.