Application Messaging over Sockets
- From: "amdrit" <amdrit@xxxxxxxxxxx>
- Date: Mon, 18 May 2009 11:37:17 -0500
I am not certain where to post my request so I'll start here.
I am looking for guidance in implementing a socket framework for
inter-application communication and then creating a protocol for use
there-in. I do not believe remoting or webservices are viable solutions
here.
I have taken a look a number of articles on the web that relate to my needs,
however none that I have found are broad enough to cover all of my needs.
Each of them were different enough in their implementation that just ended
up adding confusion to my approach.
I have been working with the ALAZ library posted on the codeproject, if for
no other reason than to just get a better understanding. Even still, this
solution doesn't offer the ability for one of my considerations - limiting
bandwidth per connection.
Here is a list of my considerations:
Support Data Encryption - I am unclear on how to implement this
handshaking. Most articles I have seen rely on the developer to code the
encryption so that it is done before any connection is made. It seems to me
that in the case of SMTP - the server reports it's verbs such as StartTLS
and then both the client and the server negotiate the terms of the TLS. I
would very much like for the administrator to configure the server to
support SSL certs and pick the cert, the client then negotiates with the
server the PKI exchange.
Support Data Compression - This might be problematic at least for
performance. It seems that there is no way to get around a predetermined
buffer limit. Because of that, scaling packets and then
encrypting/compressing them tends to muck up the purpose of the buffer. It
just seems to me that there would be a lot of wasted space if the data is
not compressed.
Support Bandwidth Throttling - In some cases, the user base will have less
desirable network infrastructures. It will be important for these
administrators to be able to limit the impact this solutions has on their
bandwidth. Here it seems that the solution is to use a stream and override
the read/write methods in derived class. My issue is that if I am using the
underlying stream in a socket, how then would I limit the bandwidth - this
goes back to the ALAZ framework that I have been looking at.
Support Flexible Protocol - Initially, as a prototype, the protocol will
consist of: serialized commands - I opted for this over text/xml for
simplicity in parsing; file transfers - I break the file into chucks to meet
the buffer size criteria. As needed, we will grow the command listing to
support other areas of the solution that adopt this. I believe I have this
part underwraps, if any of you have input/guidance on this feel free to
share.
Support Framework 2.0 / C# 2005 - I understand that 3.x might have given
us this functionality out of the box, however, this solution is a subset of
a larger solution and the larger piece has set this requirement.
Testability/Diagnostics - The primary goal for this solution was to
replace a legacy solution that has been difficult to debug since inception
with varying results across the customer base. Some things that occur at
client sites simply have never been replicated in our lab environments.
Perhaps this is due to load or infrastructure. This initiative will attempt
to implement unit testing and auto testing. This might just be a weakness
on my part, but it doesn't seem like creating a mock class for testing
database functionality; instead it seems like I need to test the actual
conversation - since the networking code is the piece that should be
suspect.
I am not opposed in looking for complete solutions to purchase over
developing my own, I just haven't seen a product that matches my need.
While the developer in me wants to roll my own solution, it might make sense
to look at mature products.
Thanks in advance
.
- Prev by Date: How to deny access to Remote desktop using GPO in 2003 server
- Next by Date: Re: The process cannot access the file
- Previous by thread: How to deny access to Remote desktop using GPO in 2003 server
- Next by thread: Problems with start menu
- Index(es):
Relevant Pages
|