First thing that comes to mind, is I'd consider having a TcpServer on your
client that listens.. have your server connect and send it a command - like
"UPDATE" when there is a change. When your client recieves that, it hits
your web service or uses remoting. Seems like you could use a
publish/subscribe pattern here too - but *how* is the tricky part. Because I
assume you need real-time - and that's what makes it funny. If you are doing
this on a per-security basis, that is going to be BRUTAL, on the server, on
your app and on the network.
But also, I am willing to bet you are using delayed quotes, because
real-time quotes are super-expensive and difficult to get at programatically
(from my experience) but delayed quotes you can get from anywhere, and if
you are a brokerage firm, you even have a few options no doubt.
If that's the case, why not just have a cache of prices locally and just go
get updates every few minutes? That way, you will always have information on
the client machine, and it's never any older than lastcheck +
originaldelay.. so say if you check every 2 minutes and your original quotes
are delayed 20 minutes, the data is never older than 22 minutes, sometimes
less.??
And as far as Java vs. .NET web services - I had the pleasure recently to
see textbook technology at work - we use a vendor, they wrote a web service
that I didn't have access to yet (because of infrastructure issues). They
gave me the .wsdl file for the web service (which was written in Java). So I
mocked up a facade web service on my side in .NET that had this interface
and wrote to it. I developed to that interface for a couple months and the
consumer was all in .NET (C#)!!
On the day when I could finally access thier web service, I literally just
changed the URL from my facade, to point to them and it worked perfectly
right away, and has continued to work ever since.
So having a .NET or Java web service as your back-end should be completely
invisble to you.
Remoting doesn't sound like a reasonable idea because you'd have to have the
remoting dll on each client machine and the stub on the server. The
connection management of Remoting is almost non-existent, so it's very
difficult to manage "what" your application is doing over the wire or over
in the client app. There is also quite a bit of overhead per connection with
Remoting, so you'd also have a practical limit based on CPU and RAM of your
server..
HTH..