Question

A coworker and I were trying to brainstorm and list the different ways an application developer can write a program enabling a user on one computer to run remotely on another computer while being displayed on their own computer. She suggested all possibilities would fall into only three categories:

  • remote desktop software
  • hosted service
  • appliance

I think I understand how an application developer might approach this using the first model (for example, by writing an application that uses a service on the server via a protocol.) I'm unsure how the second model would be different than the first, and I don't understand what the term 'appliance' would mean in this case.

What I would like to know is how should an application developer compare these alternatives when designing a strategy for a new application - that will be used remotely?

Was it helpful?

Solution

I'm not sure if this would fall into one of the mentioned categories, but a kind of web model is a possibility. Say you have two clients with identical capabilities. They share a datasource though which could reside on either client, both, or completely seperate.

In the case of both, you would need to consider conflicts for operations in which the datasource is hit with a request from one client (with a later timestamp) before being hit by the other client (with an earlier timestamp), but could implement exclusive writing similar to microsoft office products for ease. Or go the google route and have seemingly simultaneous writing.

Just a thought. Web applications seem like a good solution for remotely accessing resources.

OTHER TIPS

The best way to understand what your coworker meant would be to ask her, rather than assuming these names refer to standard concepts shared by others. Ask her.

If I were to try and decipher those terms, I would say that the first is using Terminal Services/Remote Desktop (on Windows) in which a thin client application (the Remote Deskto Client) acts as a window to a process running on the server, where the actual process is executing. A similar concept is the X Windowing System on Unix machines, where the application runs in one process or server (the X Server) and it sends commands (like Open Window, Show UI, etc) to an X Client process which only renders the UI.

The second option, I would guess, is what you suggested for #1. You write an application that runs locally on your machine, but which is relatively thin in logic - it accesses a remote service where the business logic and heavy lifting is performed, getting the results, and displaying them locally. In this scenario there is more work done locally, rather than just being a UI puppet in the hands of the server, the client is responsible for asking for the data and showing it. Still, the brains of the operation is on the remote machine.

And as for #2, the term "appliance" is used mainly to refer to 3rd party software that you buy (say, a Mail server or database) which, instead of having to install yourself on your machines, comes already pre-configured on its own machine (either physical server or virtual machine). I'm not sure how it related to your question.

Licensed under: CC-BY-SA with attribution
scroll top