tags:

views:

113

answers:

2

Hi,

I'm building a touch screen kiosk application in .NET (C#, WPF). the app itself is pretty trivial, it just collects user information.

But here's where i am getting out of my comfort zone. The kiosk will be set up at remote locations, so with what I know of web development (that's what pays my bills) I can't find the kiosk but if I have a central location (web server) it can find me. When the event the kiosk is used for ends, I need it to upload a list of the users to a central repository. I am guesssing ftp over ssl might work, or since I have control of the app possibly a VPN client on the host machines to tunnel through to the central server, maybe using file sharing. These are just guesses, I am used to the opposite model (request from a central server). Any advice to point me in the right direction would be greatly appreciated. I need to implement this in code with limited user interaction. And I have no idea what the architecture of the networks the kiosk can be set up on will be like.

Thanks in advance, Frank

A: 

Kiosk software can be mapped to HTTP request-response nature very well. Your overall architecture can be comprised of 2 major functions:

  1. Start new user session and wait for user interaction.
  2. Collect user's data.
  3. Issue HTTP(S) request with collected data to central server.
  4. Wait for HTTP response and inform user of its status.
  5. Go to step 0.

You can write UI in WPF and use .NET HTTP client to perform HTTP requests. See class WebClient reference in System.Net assembly.

Haspemulator
I'd suggest using WCF instead of WebClient.
Allon Guralnek
So, it sounds like my choice is a service call (WCF) or a Post (Webclient). Security is a concern because this is user data (nothing too heavy like credit cards, but still any free info can be misused) I've only used WCF in intranet environs. Will any of the ws-security bindings encrypt the data being sent, od do I still need to iplement ssl?
WCF supports security at two layers - the message layer, and the transport layer (or a mix of both), see http://msdn.microsoft.com/library/EN-US/2C243746-45CE-4588-995E-C17126A579A6(VS.100) for a table comparing the different bindings and the security features they support. In addition you can have all communications go through https (SSL) for an additional layer of security, or even forego WS-Security and use only https. See http://msdn.microsoft.com/library/EN-US/F0ECC6F7-F4B5-42A4-9CB1-B02E28E26620(VS.100) for a comprehensive overview of WCF Security.
Allon Guralnek
+1  A: 

I would agree with Allon on using WCF. I've worked previously on a similar kiosk system using silverlight and a WCF service. We used HTTPS throughout and added unique values to the kiosk's user agent string to identify which kiosk the request came from for logging purposes.

Ritik Khatwani
Thanks, that sounds like a great way to identify the machines. I would go with silverlight, but the app is works disconnected until it needs to send the list, and I haven't had much of a chance to look at the ability to create a disconnected client in Silverlight 4.0.