The Joel on Software Discussion Group (CLOSED)

A place to discuss Joel on Software. Now closed.

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
Fog Creek Copilot

The Old Forum

Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

Customer’s PC provides webservice that'll be consumed from Web

I have a Windows Application and now I want to provide a Web Interface for this application.
This Windows Application is installed mainly on Windows XP and Windows Vista environments.

It would be *impossible* to have my clients to install and maintain IIS. They do not have the technical skills, or they just got the WinXP Home Edition.
The workaround to this is to create a very simple web server that runs on my client’s computer. So the Windows application will provide a web service.

The database is at the customer’s computer.
Every customer’s computer will provide a RESTful web service that will be consumed from my web hosting. If the customer has purchased the web version they will log in at my web site, and my web site will consume the RESTful web service at each customer PC, and display results.

Almost every customer has an ADSL internet connection, but their IP changes, so I will make the main Windows Application to report their IP to my web site so when the customer is out of office can log in at and they can connect to their office’s database, get data, reports, etc.

The goal is to provide both a full ASP.NET site and a simpler ASP.NET version for Blackberry and mobile devices, and charge monthly, yearly to get access to it.

Am I missing something?
Does this sound possible and reliable?
Have you ever seen or done this?

Thanks a lot,

1. Why I don’t just provide the webpage itself from my customer’s PC?  (no web service involved).
- Because they would have to remember their IP or they would need to get a service like . With my “solution” they would just always go to my webpage and my webpage would hold an updated IP to their computer with theirs login/pass.
- With no IIS, there is no asp or or php, so I want to take advantage from ASP.NET from my web page server with IIS, .NET and other useful installed components. (I would have to create HTML on the fly, a little difficult to maintain).
- In the future I could create some other options, like a native Blackberry application, or an iphone app that consumes the webservice and gets the XML o JSON, etc, etc…
JagVb Send private email
Friday, May 08, 2009
Well, you could look at something like this:

However, I think this is a remarkably bad idea - normal PCs should not be exposing any services for incoming connections from the Internet - this is just asking for horrible security problems. There will be significant problems getting this to work through NAT on firewalls - if you think your clients can't install IIS then do you really think that they will be able to configure their firewall correctly?

Get your application to connect to a service on your server - not the other way round.
Arethuza Send private email
Friday, May 08, 2009
The obvious question would be why do you need to do it backwards versus how the rest of the world does it?  The typical way to accomplish what you want to accomplish would be for your app on the customer PC to periodically HTTP post the data to a service running on your server.  Doing it your way, you'll have some serious issues with the software firewall built into Windows, 3rd party software firewalls commonly installed on PCs, and hardware firewalls present in pretty much all consumer-grade routers these days.  Seems like a terrible idea.
Dave76 Send private email
Friday, May 08, 2009
The above 2 posters are right - what you need is your own server to act as a reflector - where your static IP server mediates requests between clients with dynamic IPs, firewalls, and cellphone proxies.

You can use something like Jabber to build out your own protocol. It'll handle client communication and reflection services, and all you have to do is develop a data interchange format.
Ankur Goel Send private email
Saturday, May 09, 2009
And what exactly is the point of all this work??  You have a working desktop app that is not broken.  Why "fix it" by making it a WEB app?  If a few customers need remote access, a VPN would be an easier solution.
psant Send private email
Saturday, May 09, 2009
"VPN would be an easier solution"

Or tell the clients about GoToMyPC or LogMeIn or a similar service.
Arethuza Send private email
Saturday, May 09, 2009
We typically use Remote Desktop to connect to our work PCs from home. (You still have to VPN through the firewall, though.)
Mike Swaim Send private email
Tuesday, May 12, 2009

You are right; if they can’t install IIS then they won’t be able to configure their router and firewall. And there could be situations where they won’t even have access to configure their router (in offices / buildings where they share the network).

>>"VPN would be an easier solution"
>>Or tell the clients about GoToMyPC or LogMeIn or a similar service.
The main goal on doing this is to let customers access their information from mobile devices (iPhone, BlackBerry, etc). And AFAIK GoToMyPC/LogMeIn like services do not work on the majority of these devices, and even if they worked fine, accessing a desktop from a mobile device would drive almost everyone crazy... imagine accessing a 1024x768 in a 200 pixels resolution.

JagVb Send private email
Monday, May 18, 2009

>> The obvious question would be why do you need to do it
>> backwards versus how the rest of the world does it? 

I just had two reasons to do it backwards:
1. Real time data: Having a “custom webserver” on each PC would let customers access their db information in real time, with no delay or waiting/depending on their PC to post data to the webserver.
2. I could save database space on the server: Every once in a blue moon a customer could want to access historical information, having the data stored on the server would require to store a lot of information, but having a “custom webserver” on their PC would let to access any information without having to store it on my server.

You are right about the trouble with firewalls and routers.

So I will have to seriously think about doing it the “normal way”.

Thanks a lot for your comments...
JagVb Send private email
Monday, May 18, 2009
Ankur Goel,
What I understand from Arethuza and Dave76 is that I should have a database at my server for each customer. This database would be filled from periodically HTTP posted data (this way there is no trouble with firewalls, routers). This database could be even modified at my server and then reported back to my customer PC.
Of course, I would have to make a set of rules for “synchronization” to work correctly.
I really haven’t used Jabber so I do not know how I could use it… Do you have any article or reference that uses Jabber to accomplish what I want to do?
JagVb Send private email
Monday, May 18, 2009
To Psant and Mike Swaim:

Actually, remote access is currently available via Terminal Server… But I want to add remote access from mobile devices and a web interface.

Thanks a lot for your suggestions...

JagVb Send private email
Monday, May 18, 2009

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz