Help with deceiding on best solution

G

Guest

Hello all,

I am about to embark on a reasonably large project - I operate an energy
management business and need to install remote controls at a large number of
my clients sites.

My plan is to utilise windows CE devices at the clients sites - they should
be low in cost, reliable (as they have no moving parts) and the development
process should be relatively straight forward - it should also make the
communications to the devices simpler and allow me to extend the
functionality well into the future.

The devices will have a number of communication options - these include GPRS
modem, clients internet connection via wireless of RJ45 - or GPS modem.

The area that I still need to finalise is the method of communication and
the technology to use. The following will be true

1. Communications will need to be over the internet
2. The internet connection will often use a clients internet connection
therefore there will be no ability to have a fixed IP address on the devices
3. It must efficient - if the communication is over GPRS the costs of
transmitting data will be high
3. There will be a large number of devices - the system needs to be
scalable to 100,000's of devices
4. The remote devices will need to send information to our office
5. We will need to be able to send info to the devices with a very small
delay
6. Communications must secure - it will be critical that no one can hi-jack
and control the devices

I have investigated the new WSE 3 and this sounds like a good option for
communication?? It appears to have the security requirements and easily
scalable to manage the communications for this many devices - can windows CE
take advantage of the security features of WSE 3.

Any help from those that may have some experience in these matters would be
very appreciated.
 
P

Paul G. Tobey [eMVP]

I'm not familiar with WSE3, but I don't find WSE in the help for Windows CE
5...

Based on your description, it seems to me that a central server, located in
your office and with a registered domain name is the right way for devices
to connect. That is, you have a server whose IP address is resolved from
www.energymanagement101.com. When a device wants to send an update of some
data, it uses DNS to resolve this domain name into an IP address, then
connects a socket to a listening port (known to the devices), on your
server. You might use secure sockets to hide the content of the messages.
In this arrangement, the devices are never contacted by any outside host, so
they're very resistant to attack. As long as there is not a DNS spoof of
some sort, causing www.energymanagement101.com to map to a false server,
there's no way for someone to get in the way. Since the devices are always
acting as clients and never as servers, the lack of a fixed IP address for
each client is irrelevant.

#3 is up to you!

You must define what you mean by #5. What does "a very small delay" mean?
That might mean ms, in which case, I think you're completely out of luck, or
a few seconds, in which case, depending on where the devices are relative to
the server and how loaded the Internet is between the two, should be doable.
In any case, you can *never* count on some sort of deterministic reponse
over the Internet, so you must handle the case of loss of connectivity, slow
data transmission, etc. If you can't handle that, you'll have to lease
dedicated lines from each location to your office to assure that some sort
of denial of service attack can't slow you down.

Paul T.
 
G

Guest

Paul,

Thanks very much for your help.

The problem that I am still having is working out if WebServices can be two
way e.g - the client makes a call to the server and the server responds with
some information - and the server initiates a call to the client and the
client responds with some information - remember that we don't have a fixed
IP address.

Is it possible to get the Client to establish a TCP connection and then use
webservers over this connection?

a very small delay would be up to 5-10 seconds(worst case)

3. Have had allot of trouble with this one - say if I want to transmit 1 10
character string - using webservices I might do this by call a procedure and
sending the character string. How much data would this send over the wire.
If I do this in raw format over TCP I don't believe that it will be much more
than 10 characters.

As another side question - if 2-way coms was possible by establishing a TCP
connection and maintaining it - do you have any idea what the limitations on
a server if for maintain TCP connections - is 10, 100, 10,000???

Thanks for the time you have already taken in answering my questions.
 
P

Paul G. Tobey [eMVP]

No, the client is always establishing the connection. Since you have no
fixed IP address, there's no way that the server, unless the client connects
first and 'registers', can possibly connect to the client; can't be done.

Well, it *will* establish a TCP connection to interact with a Web server.
HTTP is a TCP-based protocol. I'm not sure what you're getting at with
that, however. If you create a socket connection to, say, port 4000 on a
server, then try to talk to a Web server, you have to open another
connection, at the Web server is listening on port 80, not 4000. The
logical connection is between precisely one process on each end.

3. Even with TCP, it *will* be a lot more than 10 characters. The size of
the Ethernet header is 14 bytes, as I recall, and the TCP header layered on
top of that brings the total overhead to something like 48 bytes. So, if
you send 'a' byte, you're wasting a huge amount of bandwidth. This is why
the TCP stacks on every machine try to roll data into the largest packets
they can, delaying transmission of the first batch of data for a while,
unless it's already a big batch, in hopes of combining it with the next
batch into a single packet. You'd be much better off piling up all of the
data that you know you need to send and sending it with a single send()
operation. Yes, though, Web Services has a greater overhead and is a
text-based protocol, which you might not wish to use to minimize total bytes
sent.

That depends on the server's memory, mainly, and processor, I'd say. I've
never tried to maintain that many connections and you wouldn't want to
either, if some of them are GPRS connections. You want the client to
connect, get what it needs to get, transmit whatever data it has, then get
the heck off the network. If you run into a situation where a single
machine can't keep up with the continuous traffic level, you can probably do
some sort of load balancing and plug a couple of machines in. No doubt the
high-traffic Web sites do this.

Paul T.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top