What would be the best way when different applications needs to communicate? The back-end software should be C# 4.0.
The case is as follows.
It’s a game that is being played, lets just take soccer as an example. Now our software keeps track of everything that happens on the soccer field. Scores, penalties, scoreboard advertising, timers etc.
The problem is that it’s not just one person sitting collecting stats or keeping track of the timer or showing adverts on the scoreboard, it’s many. So we have developed several apps with different functionality depending on your role. The apps are a mix from different languages both mobile apps, web apps and also windows apps.
Now we want to have one application that acts as a “server” or “database” (should be C# 4.0) and have all other applications connect to this application. What different types of techniques are there? The “server/database” app could perhaps be a web server that is started and scans an IP-address? Use WCF?
What would be the simplest, not just for creating the server but also for the different types of apps to consume?
Update
I might not have expressed myself clearly enough. The “server” will also act as an intermediate layer that both filters, checks and returns data. 2-way communications is needed. More or less i want the server to be able to push updates to the devices as well.
An example would be the game clock. The one responsible will most likely use a mobile app and i want the server to constantly push data to the app regarding the current value of the game clock. (No idea if this is even possible when communicating with Java)
In my opinion WCF is the way to go.
If you develop it using WCF, then you are decoupling your application code from the communication infrastructure.
Design your interface (not the UI), then implement it in a class, and when the need rises to communicate with it, decide on how to expose it over a transport media (Endpoint/Binding) and your done without changing anything in your application logic.
Basically you have your single WCF contract and from it you can build multiple WCF endpoints to communicate.
examples:
If you have client applications that are on the same network as the WCF service, then you can add a WCF endpoint to your existing WCF Service (NetTCPBinding/NetNamedPipeBinding) to gain network performance,
If your client uses web to communicate, simple, just add a new webHttpBinding to your WCF service, and now you can talk with your WCF service from Javascript.
If your client is a web server, simple, just add Basic/WS/WSDual/*HttpBinding*, and gain communication and some nice features like dual channel communication.
The main point here is that you did not change your code a bit, it’s still there functioning. What you simply did was expose communication endpoints to it so that new types of clients can connect to it, or new application/functional requirements are fulfilled.
Also if you develop in WCF, then you will be some sort of future proof, as in when WCF exposes new types of “out of the box” bindings, then you are ready to talk to new types of clients (like web sockets. see upcoming web api)