Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question

closed as too broad by MichaelT, Snowman, durron597, GlenH7, Kilian Foth Oct 28 '15 at 12:19

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 1 down vote accepted

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.

share|improve this answer
Yes, I think I see what you mean. An important consideration is whether the primary purpose of the application is to access a resource on another computer or to manage another computer. – Mark Rovetta Oct 10 '13 at 23:03

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.

share|improve this answer
Wouldn't appliance be a hardware device specific for this purpose? – JeffO Oct 10 '13 at 20:19
Most computer appliances I know - mostly for storage and firewalls - are actually just servers, usually running some flavor of unix and running the preconfigured custom software. They're a "specific hardware device" in the sense that they're computers custom built for the task, but it's still generic hardware, usually. – Avner Shahar-Kashtan Oct 10 '13 at 20:36
You also have things like the ILO hardware option in a server where a separate network cable provides a hardware based equivalent to the remote desktop access, to hardware (bios/uefi) settings and hard booting/shutdown. – James Snell Oct 10 '13 at 20:40
Would a USB device, having software allowing users to connect their device to any computer on the network and recreate their desktop via a connection to a cloud, then not be considered an appliance? – Mark Rovetta Oct 10 '13 at 21:14
I would see it as a remote desktop application. Just because your software runs from a USB key doesn't change the architectural model. – Avner Shahar-Kashtan Oct 10 '13 at 21:22

Not the answer you're looking for? Browse other questions tagged or ask your own question.